COWMODSКаталог модов

TwitchRandomizer

a minecraft randomizer challenge controlled by your twitch chat

Автор: exnfachjanTTV2994обновлён 9 авг. 2026 г.
Механики игрыМини-игры

Описание

TwitchRandomizer

Modrinth License: GPL v3

TwitchRandomizer is a powerful Minecraft (Paper 1.21+) plugin that brings interactive, randomized challenges to your server — all controlled by your Twitch viewers! It seamlessly integrates your Minecraft gameplay with Twitch chat, letting your audience influence and trigger in-game events in real time.


📌 Key Features

  • Twitch Chat Integration:
    Twitch viewers can trigger random events by subscribing or donating bits to your channel!

  • Play this Challenge with your Twitch Friends:
    The plugin can read subscriptions and bits from multiple Twitch accounts — including StreamElements and Tipeeestream donations. So you can play this challenge with your Twitch friends!

  • StreamElements & Tipeeestream Donation Integration:
    Donations via StreamElements or Tipeeestream trigger in-game events. Both support multiple streamer accounts simultaneously. Configuration is done exclusively via donations.yml in the plugin folder.

  • Channel Name Display:
    When playing with multiple Twitch channels, the source channel is shown in brackets after every trigger — e.g. exnfachjan (fuxelbau) deals 4 hearts.

  • Twitch Role Colors:
    Viewer names appear color-coded in Minecraft chat — Broadcaster (red), Moderator (green), VIP (pink), Donation (aqua), and regular viewers (white).

  • Event Weighting and Customization:
    Adjust the likelihood of each event — make some more common, some rare, or disable them entirely. Easily reload or adjust settings on the fly. Reset all weights to defaults with one click.

  • Recent Event Cooldown:
    A built-in cooldown system reduces the chance of the same event appearing multiple times in a row, automatically — no configuration needed.

  • Synced Multi-Player Events:
    When playing with multiple players, all random values within an event (duration, item, mob type, etc.) are identical for every player. No more player 1 getting 10 seconds of Floor is Lava while player 2 gets 69.

  • Spectator After Death:
    When a player dies, all players are moved to Spectator mode simultaneously. The timer and queue pause until a new run begins. Configurable per-run as "Tries" (team lives) or classic "Deaths" counter.

  • Death Counter and Statistics:
    Built-in death tracking and player statistics, perfect for challenge runs and community competitions.

  • Queue System:
    Viewer-triggered events can be queued and managed, ensuring smooth pacing and no event spam. The queue persists across server restarts and world resets!

  • Pause System:
    Timer and queue automatically pause when a player is in the death screen or when all players are in spectator mode. Fully configurable.

  • Pause Aura:
    When the timer is paused, a spiral flame particle aura appears around all online players — a clear visual indicator that the challenge is on hold.

  • Graphical Interface (GUI):
    Tweak plugin settings, manage event weights, control the timer, and configure behaviors directly from an in-game GUI. Perfect for easy setup without any OP permissions!

  • Multi-Language Support:
    Full German and English UI with automatic client language detection. Players can override their language in the GUI.

  • Session and World Reset:
    Reset your seed after a death if you want a REAL challenge! Supports BungeeCord fallback servers.


✔️ Main Commands

  • /trgui — Open the graphical config GUI.

Optional commands (not necessary, because you can manage everything seamlessly from the GUI):

  • /timer — Start, stop, pause, or reset the challenge timer.
  • /reset — Initiate a world/session reset with confirmation.
  • /queue add <amount> <username> — Manually add events to the queue.
  • /cleardeath — Clear the death counter.
  • /trconfig — Configure the plugin via command (tab completion supported).

🎉 Events

EventDescription
spawn_mobsSpawn random mobs near the player (hostile mobs chase you!)
potionApply a random potion effect
give_itemGive a random item
clear_inventoryClear random slots from the player's inventory
teleportTeleport to a random location (safe Y-level)
damage_half_heartTake heart damage
fireSet the player on fire
inv_shuffleShuffle the entire inventory
hot_potatoA fast zombie chases you — if it catches you, it explodes!
no_craftingBlock crafting for a random duration (with boss bar countdown)
safe_creepersCreepers surround you clock-style and explode (no damage, no block destruction)
floor_is_lavaThe floor beneath you turns to magma blocks (with block restore)
nasa_callLaunch the player sky-high
slippery_groundThe ground turns to packed ice (with block restore)
hell_is_callingHoming fireballs rain down on you
tnt_rainTNT Minecarts rain from the sky
anvil_rainAnvils fall from the sky
skyblockAll players are teleported together — surrounding chunks get deleted!
fake_totemReceive a Totem of Undying that doesn't actually work
equipment_shuffleAll tiered tools and armor in your inventory are randomly upgraded or downgraded

🛠 Getting Started

You can configure the plugin through the config.yml or without OP permissions directly through the GUI in-game.

  1. Install:
    Place TwitchRandomizer.jar into your server's plugins folder.

  2. Configure Twitch Integration:

    • Open the GUI with /trgui; in the top left, you'll find the "twitch-info" book.
    • Insert your Broadcaster Username by left-clicking on the book, then confirm with done.
      You can enter multiple channels separated by commas, semicolons, or new lines.
    • Insert your Bot OAuth by right-clicking on the book, then confirm with done.
      You can get your OAuth token here: https://twitchtokengenerator.com/quick/1KRFjxyoNE
      Make sure the following scopes are active: bits.read, chat:read, channel:read:subscriptions and user:read:subscriptions.
  3. Configure StreamElements (optional):
    Edit plugins/TwitchRandomizer/donations.yml — this file is created automatically on first start and is never overwritten by the plugin.

    se_enabled: true
    se_accounts: "YOUR_CHANNEL:YOUR_JWT_TOKEN"
    

    For multiple streamers, separate entries with a semicolon:

    se_accounts: "Channel1:JWT1;Channel2:JWT2"
    

    Get your JWT token from: https://streamelements.com/dashboard/account/channels

  4. Configure Tipeeestream (optional):
    In the same donations.yml:

    tipeee_enabled: true
    tipeee_accounts: "YOUR_CHANNEL:YOUR_APIKEY"
    

    Multiple accounts work the same way: "Ch1:KEY1;Ch2:KEY2"
    Get your API key from: https://tipeeestream.com/dashboard/stream

    After editing donations.yml, apply it in-game with /trconfig donations reload — no server restart required.

  5. Reload/Restart:
    If you use the GUI, you don't need to restart the server.

  6. Set up your trigger
    You can test your connection. With the test triggers enabled (find them in the Debug Menu), you can simulate events like a sub (!test), a gift sub (!gift), or a sub gift bomb (!giftbomb [N]).

    MAKE SURE YOUR TIMER IS RUNNING! OTHERWISE, YOU CAN'T ADD EVENTS TO THE QUEUE THROUGH TWITCH!

    If you want to add some events to the queue, you can simply use the command /queue add <AMOUNT> <Username>. This also works when the timer isn't running!


🔍 Permissions for non-OP users (LuckPerms required)

PermissionDescription
twitchrandomizer.guiFull GUI access (super-node)
twitchrandomizer.gui.useUse GUI (basic)
twitchrandomizer.admin.saveSave & hot-reload config
twitchrandomizer.admin.editEdit values via GUI
twitchrandomizer.admin.twitchSet Twitch channel/token
twitchrandomizer.timer.startStart the timer
twitchrandomizer.timer.stopStop/pause the timer
twitchrandomizer.timer.resetReset the timer
twitchrandomizer.resetReset flow
twitchrandomizer.reset.forceForce reset (skip confirmation)

The GUI uses sensible permission checks for each action.

📎 Requirements

  • Minecraft Paper server 1.21+
  • Java 21 or newer
  • Twitch account (at least affiliate) and OAuth token for chat integration

📋 Changelog

v1.5.0

  • Tipeeestream multi-account support — donations.yml now uses tipeee_accounts with the same "Channel:APIKEY;Channel2:APIKEY2" format as StreamElements.
  • Channel tag display — When playing with multiple Twitch channels, the source channel name is shown in brackets after every event trigger.
  • Synced multi-player events — All random values (duration, item, mob type, potion effect, etc.) are now identical for every player in the same event dispatch.
  • Skyblock team fix — All players are now teleported to a single meeting point before chunks are cleared. Prevents players from voiding each other.
  • Spectator-after-death team fix — When a player dies, all online players are now moved to Spectator simultaneously. Timer and queue pause correctly.
  • Tries vs Deaths counter — When Spectator-after-death is enabled, the counter is labeled "Tries/Versuche" and only counts once per team-death. When disabled, it counts individual deaths as before.
  • Euro/Event maximum — The donation value per event is now capped at 5.0€ (the standard price). You can only go lower, not higher.
  • Recent event cooldown — A new anti-repeat algorithm reduces the weight of recently triggered events for the next 2–3 picks, making the event pool feel more varied.
  • Queue pause on all-spectator — Timer and queue now correctly pause as soon as all players are in Spectator mode.

v1.4.0

  • New event: equipment_shuffle — All tiered tools and armor in the inventory are randomly upgraded or downgraded by one tier. Enchantments, display names, and lore are preserved.
  • StreamElements donation integration — Donations via StreamElements now trigger in-game events. Supports multiple streamer accounts simultaneously.
  • Pause aura — A spiral flame particle effect is displayed around all online players while the timer is paused.
  • Weights: small default value changes.

v1.3.1

  • Initial public release.

🗝 Credits

Built by exnfachjan with the help of AI (Claude by Anthropic).
Thanks to the Paper/Spigot communities and Twitch4J for solid foundations.


🔒 License

This project is licensed under the GNU General Public License v3.0 — see LICENSE for details.

License: GPL v3


❤️ Support

Do you like my plugin? Feel free to support my work: https://streamelements.com/exnfachjan/tip

Галерея

Trigger exampleGUI - Event weightsGUI Main Menu

Последние версии

Все версии →
release

1.7.3

1.7.3
9 авг. 2026 г.54Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2paper, spigot
Скачать
Что нового
# Update Notes: v1.7.2 → v1.7.3 ## Nether/End portals no longer send you into the wrong world Bukkit doesn't pair custom-named worlds through portals just because they follow a `challenge_world` / `challenge_world_nether` naming convention - by default it links a portal to *any* world with a matching Environment, which in practice is usually the server's actual default nether/end (the one tied to `level-name` in `server.properties`), not the challenge world's own nether/end. Left unhandled, this meant: walking through a nether portal in `challenge_world` silently sent you into the wrong dimension, and walking back brought you into a **completely different world** - indistinguishable from "the seed changed" even though no reset had happened. A new `PortalLinkListener` now explicitly resolves the correct target world for every nether/end portal use, based on the same `challenge-world` config key the reset logic already uses: - Nether portals: standard 1:8 coordinate scaling, same as vanilla. - End portals: entry always lands on the fixed obsidian platform, exit always returns to the challenge world's spawn (vanilla behavior, not coordinate-scaled). If a portal doesn't yet exist on the other side, one is created automatically (`event.setCanCreatePortal(true)`), same as vanilla. ## Challenge world creation now uses one shared seed `ensureChallengeWorldsExist()` (which creates `challenge_world` + `_nether` + `_the_end` on first server start) called `WorldCreator` without an explicit seed for each of the three worlds, so each dimension rolled its own independent random seed instead of sharing one - same class of bug the `/tr reset` path already avoided by threading a single seed through. Fixed to draw exactly one seed and reuse it for all three dimensions, matching vanilla (where overworld/nether/end always share the same seed) and matching what `/tr reset` already did correctly. Only affects fresh installs / servers where the challenge worlds didn't exist yet - if yours were already created under an older version, this doesn't retroactively fix their seeds; run `/tr reset confirm` once to regenerate them consistently.
release

1.7.2

1.7.2
30 июл. 2026 г.17Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2paper, spigot
Скачать
Что нового
# Update Notes: v1.7.1 → v1.7.2 ## Commands consolidated under `/tr` Every command (`/trgui`, `/gui`, `/timer`, `/reset`, `/trconfig`, `/twitchqueue`, `/queue`, `/cleardeath`, `/zmd`) is replaced by a single `/tr <subcommand>` command (alias `/twitchrandomizer`), with tab completion for every subcommand: ``` /tr gui /tr event [by:<name>] /tr timer <start|stop|resume|reset> /tr reset [confirm|force] /tr config ... /tr queue add <amount> [username] /tr cleardeath /tr zmd reset ``` Permission nodes (`twitchrandomizer.reset`, `.timer`, `.queue`, etc.) are **unchanged** — only the typed command syntax changes. ## Live world reset, no more restarts `/tr reset` (and the GUI reset button) used to delete the world folders on disk and then restart or shut down the server, relying on the next boot to recreate everything from scratch. On Minecraft 26.1+ this silently broke: Paper moved all world data (including custom worlds created via `WorldCreator`) into a `dimensions/` subfolder nested inside the primary world, so the old code was deleting and restoring the wrong paths — a seed-reset would quietly produce an empty new world instead of the prepared one. The reset now happens **live, without touching the server process**: - The plugin creates a separate `challenge_world` (+ `_nether` / `_the_end`) on first start. This is the world that's actually played and reset. - The server's real default world (`level-name` from `server.properties`) is never deleted — Bukkit hard-refuses to unload world index 0 at runtime regardless of version, so it now serves as a permanent "hub" that players are briefly parked in during a reset. - On `/tr reset confirm`, players in the challenge world are teleported to the hub (`teleportAsync`, so the move is guaranteed complete before continuing), the challenge world is unloaded and deleted — its real on-disk folder is read from `World#getWorldFolder()` rather than guessed, so this keeps working whether Minecraft still uses the classic top-level world folders (1.21.x) or the newer nested `dimensions/` layout (26.1+) — then recreated with a fresh seed, and players are teleported back in. ### Player state is now fully reset too Previously only permanent-hearts was reset, so a player who hadn't died kept their inventory, potion effects, and any hunger-clubs cap into the new seed. `/tr reset` now also: - Clears every online player's inventory (main, armor, offhand). - Removes all active potion effects. - Restores max health/hunger back to full (and clears the hunger-clubs cap). - Stops the timer (like a manual `/tr timer stop`) instead of leaving it running — the elapsed time itself is still kept, only cleared manually via the Misc menu, same as before. Timer, queue, and death counts are intentionally left untouched, as before. ### Death screen during reset If a player was still on the death screen when a reset happened, their Respawn button would silently do nothing once their old challenge world got unloaded, forcing them to disconnect and reconnect just to play again — and since vanilla auto-respawns disconnected-while-dead players before `PlayerJoinEvent` even fires, they'd rejoin stuck in Spectator forever (the old code unconditionally re-forced Spectator on every respawn). `/tr reset` now aborts immediately - with a title and a chat message naming the player - if anyone is still on the death screen, instead of touching their world out from under them. Run it again once they've respawned. This check runs both when the command is typed and again right before the actual world teardown, closing the same race for anyone who dies during the confirmation window in between. A reset "epoch" counter (bumped every time a reset completes) also lets the respawn handler tell whether a reset happened since a player died, in case they still manage to disconnect/ reconnect mid-death-screen for some other reason - if so, they're released to Survival instead of being re-spectated. ### Removed - The BungeeCord fallback-server transfer and `restart-on-reset` / `Bukkit.shutdown()` flow — no longer needed since the server never restarts for a reset. - `reset.fallback_server`, `reset.transfer_wait_ticks`, `restart-on-reset`, and the unused `reset.randomize_seed` config keys. - The pre-generation step (`pregenerated_*` worlds created just before a restart) — no longer needed since the new world is generated fresh in place during the reset itself. ### New config key ```yaml reset: confirm_window_seconds: 30 title_lead_ticks: 40 challenge-world: "challenge_world" ``` `challenge-world` sets the base name for the world that gets played and reset. Existing installs upgrading from an older version will have their actual default world (`world`) treated as the challenge world's *old* location — since that world is never deleted by the new code, nothing is lost, but you'll want to move players into the new `challenge_world` once after updating (e.g. via `/tp`) so future resets affect the world they're actually playing in. ## Spectator respawn at death location With `challenge.auto_spectator_on_death` on, dying always respawned you at the world spawn before you got switched to Spectator, instead of somewhere you could actually watch the run from. You now respawn at your own death location instead - unless a reset happened while you were dead, in which case you're still sent to the new challenge world as before. ## Per-player death tracking In addition to the existing total death/tries counter, each online player's own death count is now tracked for the session. Whenever any player dies, a per-player breakdown (e.g. "Deaths PlayerOne: 1", "Deaths PlayerTwo: 0") is posted to chat for everyone, localized per viewer. Cleared together with the total counter via `/tr cleardeath` or on Ender Dragon kill. ## Bug fixes - **Hunger Clubs regen fix** — Removing hunger drumsticks no longer blocks natural health regeneration entirely. Vanilla only regenerates health once `foodLevel >= 18`; a reduced hunger cap below that threshold now drives its own manual regeneration instead of silently disabling healing. - **Timer pause now actually freezes time** — Pausing the timer previously only stopped random block ticks and mob AI; the day/night cycle and weather kept progressing regardless. `doDaylightCycle` and `doWeatherCycle` are now frozen (and restored) alongside it. - **No damage while paused** — The same protection cancelled damage to mobs but explicitly let players still hurt each other (and take fall/ environmental damage) while the timer was paused. Players are now just as invulnerable as everything else while paused. - **Mob spawn spread fix** — The `spawn_mobs` event no longer clusters mobs on top of or inside the player. They now spawn spread in a circle 2.5–5.5 blocks away. - **Skyblock fix** — Only the triggering player was teleported to safety before the surrounding chunks got cleared to air; any other nearby player would fall through when their ground disappeared. All online players in that world are now teleported to the middle of the remaining chunk first. - **TNT Rain warning extended** — The countdown before TNT minecarts start falling is now 10 seconds instead of 5, giving players more time to react. - **Floor is Lava / Slippery Ground shortened** — Both events could previously last up to 3 minutes (`max_seconds: 180`). Default and hard cap are now 60 seconds, regardless of what `max_seconds` is set to in `config.yml`. - **`structure_teleport`/rare End teleport used the wrong world** — Both looked for their destination in the hardcoded hub world names (`world`, `world_nether`, `world_the_end`) left over from before the world-reset rework, instead of the actual `challenge_world` the run happens in. Both now resolve the configured challenge world dynamically. - **Twitch queue dispatch fix** — The Twitch/queue dispatcher enqueues raw command lines (from subs, bits, `!test`, `/tr queue add`, etc.) and runs them via `Bukkit.dispatchCommand`. It still referenced the old standalone `/randomevent` command, which no longer exists after the `/tr` consolidation, so queued events silently vanished instead of triggering. Now dispatches `tr event ...`. - **Plugin version display fix** — `plugin.yml`'s `version` field was a hardcoded literal instead of a build placeholder, so the in-game plugin list always showed an outdated version regardless of what was actually built/released. It now always reflects the real build version.
release

Version 1.7.0

1.7.0
25 апр. 2026 г.38Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11paper, spigot
Скачать
Что нового
# Update Notes: v1.6.0 → v1.7.0 ## New Events ### `structure_teleport` ✨ Teleports all players to a random vanilla structure in any dimension (Overworld, Nether, End). Stronghold is the rarest target. Deduplication prevents landing at the same structure twice in a row. Default weight: 3. ### `hunger_clubs` ✨ Permanently gains or removes 1–2 hunger drumsticks from the player's maximum food bar. The change persists via PersistentDataContainer and is reset when the world is reset. Default weight: 5. ### `player_size` ✨ Randomly shrinks or grows the player for 15–60 seconds. A boss bar counts down the remaining duration. The player always returns to normal scale when the timer expires. Default weight: 7. --- ## Bug Fixes & Improvements ### NASA Call — uninterrupted flight arc The `nasa_call` event no longer teleports the player to Y=300 before applying velocity. Instead, a per-tick task phases the player through any solid blocks below Y=300 so the full flight arc from ground level is visible and uninterrupted. The player now launches from their current position and rises naturally through terrain and structures. ### TNT Rain — 5-second countdown A title-screen warning ("Geh in Deckung!") now appears 5 seconds before TNT minecarts begin to fall, giving players time to react. ### Inventory Shuffle — armor/offhand fix Items stored in armor slots and the offhand slot no longer vanish when the `inv_shuffle` event fires. --- ## Infrastructure Changes ### Single data file (`data.db`) The five separate session files (`timer.yml`, `queue.txt`, `player_locales.yml`, `session.yml`, `stats.yml`) have been replaced by a single SQLite database at `plugins/TwitchRandomizer/data.db`. SQLite's binary format prevents accidental manual edits. All existing data is migrated automatically on the first start after the update — no manual action required. Your plugin folder now looks like this: ``` plugins/TwitchRandomizer/ ├── config.yml ← main configuration ├── donations.yml ← StreamElements & Tipeeestream credentials └── data.db ← all runtime data (SQLite, binary) ``` ### Auto config migration When you drop in a new version of the JAR, any config keys that are new in that version are automatically added to your existing `config.yml` with their default values. You no longer need to manually edit `config.yml` after an update — just restart the server.
release

TwitchRandomizer 1.5.1

1.5.1
17 апр. 2026 г.18Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11paper
Скачать
Что нового
# Update Notes — v1.5.1 ## 🐛 Bugfix: Tipeeestream — Donor Name Not Displayed Correctly ### Problem When a Tipeeestream donation was received, the displayed username in the queue and logs was the **streamer's channel name** instead of the **actual donor's name**. This affected both the in-game queue display and the server log output. ### Cause The Tipeeestream WebSocket event payload contains multiple `"username"` fields. The first occurrence refers to the streamer's channel, while the actual donor name is nested deeper in the `"parameters"` block of the JSON. The parser was always picking up the first match — which was the wrong one. ### Fix The username extraction now follows a prioritized fallback chain: 1. **Primary:** Reads `"username"` from within the `"parameters"` block → the actual donor 2. **Fallback:** Takes the second occurrence of `"username"` in the payload if the parameters block is missing 3. **Last resort:** Falls back to a generic placeholder if both lookups fail Two helper methods were added to support this logic (`extractJsonStringAfter`, `extractJsonStringNth`). No other behavior was changed. ### Impact - Donor names are now correctly shown in the in-game queue and server logs - No configuration changes required - Fully backwards-compatible
release

TwitchRandomizer 1.5.0

1.5.0
14 апр. 2026 г.21Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11paper
Скачать
Что нового
<!--StartFragment--><html><head></head><body><h1>TwitchRandomizer v1.5.0 — Release Notes</h1> <h2>What's New</h2> <h3>🎯 Multi-Player Sync</h3> <p>All random values within an event are now <strong>identical for every player</strong> in the same dispatch. Previously, player 1 could get 10 seconds of Floor is Lava while player 2 got 69 — that's fixed. Duration, item type, mob type, potion effect, fire seconds, heart damage, and more are all rolled once and shared.</p> <h3>🏝️ Skyblock Team Fix</h3> <p>When the Skyblock event fires with multiple players, all players are now <strong>teleported to a single shared meeting point</strong> before surrounding chunks are cleared. This prevents players from voiding or killing each other during the chunk deletion.</p> <h3>👻 Spectator-After-Death Team Fix</h3> <p>When a player dies with <strong>Spectator After Death</strong> enabled, all other online players are now moved to Spectator simultaneously — not just the player who died. The timer and queue pause automatically once everyone is in Spectator mode, and resume correctly for the next attempt.</p> <h3>🔢 Tries vs Deaths Counter</h3> <ul> <li><strong>Spectator After Death ON</strong> → counter shows <strong>"Tries / Versuche"</strong> and counts <strong>once per team-death</strong> (not per individual player death)</li> <li><strong>Spectator After Death OFF</strong> → counter shows <strong>"Deaths / Tode"</strong> and counts every individual player death as before</li> </ul> <h3>📺 Channel Tag Display</h3> <p>When playing with <strong>two or more Twitch channels</strong>, the source channel is now shown in grey brackets after the triggering viewer's name:</p> <pre><code>exnfachjan (fuxelbau) deals 4 hearts! shayla (exnfachjan) turned the floor into lava! (81s) </code></pre> <p>This works for Twitch subscriptions, Bits, StreamElements donations, and Tipeeestream donations.</p> <h3>🔁 Tipeeestream Multi-Account Support</h3> <p><code>donations.yml</code> now uses <code>tipeee_accounts</code> with the same format as StreamElements:</p> <pre><code class="language-yaml">tipeee_accounts: "Channel1:APIKEY1;Channel2:APIKEY2" </code></pre> <p>The old <code>tipeee_api_key</code> field is still recognized for backwards compatibility.</p> <h3>🎲 Recent Event Cooldown</h3> <p>A new anti-repeat system automatically reduces the weight of recently triggered events for the next <strong>2–3 picks</strong>. The most recently triggered event is reduced to ~20% of its normal weight, the previous to ~30%, and the one before that to ~40%. This makes the event pool feel much more varied without changing any configured weights.</p> <h3>💶 Euro/Event Maximum</h3> <p>The donation value per event (in the GUI Trigger menu) is now <strong>capped at 5.0€</strong> — the standard price. You can only lower the value, not raise it above the default.</p> <hr> <h2>Bug Fixes</h2> <ul> <li>Fixed: <code>stop()</code> on <code>TimerManager</code> could silently fail when called from the GUI while the PauseService had the timer paused — the condition now correctly allows stopping regardless of pause state.</li> <li>Fixed: <code>RANDOM_TICK_SPEED</code> deprecation warning now suppressed with <code>@SuppressWarnings({"deprecation","removal"})</code> to prevent compile failure on newer Paper builds.</li> <li>Fixed: <code>DonationsManager.MAX_EURO_PER_EVENT</code> forward-reference compile error resolved by using a literal <code>5.0</code> instead of referencing <code>SUB_VALUE_EURO</code>.</li> <li>Fixed: <code>TwitchIntegrationManager</code> had incorrect imports (<code>pubsub.events.CheerEvent</code> / <code>pubsub.events.SubscriptionEvent</code>) — corrected to <code>chat.events.channel.*</code>.</li> <li>Fixed: <code>RandomEvents.triggerSpawnMobs</code> cast <code>LivingEntity</code> for <code>setTarget</code>/<code>getTarget</code> — corrected to <code>Mob</code>.</li> <li>Fixed: <code>PotionEffect</code> constructor for Safe Creepers used <code>128</code> (int) where a <code>boolean</code> was expected — replaced with <code>false</code>.</li> </ul> <hr>
release

TwitchRandomizer 1.4.0

1.4.0
8 апр. 2026 г.25Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11paper
Скачать
Что нового
### v1.4.0 - **New event: `equipment_shuffle`** — All tiered tools and armor in the inventory are randomly upgraded or downgraded by one tier. Enchantments, display names, and lore are preserved. - **StreamElements donation integration** — Donations via StreamElements now trigger in-game events. Configured exclusively through `streamelements.yml` (never touched by the plugin's auto-save). Supports multiple streamer accounts simultaneously. Reload in-game with `/trconfig se reload` — no restart required. - **Pause aura** — A spiral flame particle effect is displayed around all online players while the timer is paused, making the paused state clearly visible at a glance. - **Weights:** small default value change
release

TwitchRandomizer 1.3.0

1.3.0
5 апр. 2026 г.28Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11paper
Скачать
Что нового
# TwitchRandomizer v1.3.0 — Changelog ## ✨ New Features ### Support for newer Version - This Plugin supports now up to Version 1.21.11! (1.21 - 1.21.11) ### Multi-Language Support - Full **German** and **English** UI — every message, GUI label, boss bar, and event notification is now translated. - **Automatic language detection** based on the player's Minecraft client language. - Players can manually override their language in the new **UI Language** menu in the GUI. - Language preference is saved per-player and persists across sessions. ### Twitch Role Colors - Viewer names now appear color-coded in Minecraft chat based on their Twitch role: - 🔴 **Broadcaster** — Red - 🟢 **Moderator** — Green - 🟣 **VIP** — Pink - ⚪ **Regular Viewer** — White ### Pause System - Timer and queue now **automatically pause** when: - A player is in the death screen - All online players are in spectator mode - Fully configurable via `challenge.pause_on_death` and `challenge.pause_if_all_spectator`. ### Boss Bar Countdowns - **Floor is Lava**, **Slippery Ground**, and **No Crafting** events now display a countdown boss bar so players know exactly how long the event lasts. ### Queue Persistence - The event queue is now saved to `queue.txt` and **survives server restarts and world resets**. ### Simulation Triggers - **`!gift`** — Simulate a gift sub in chat (toggleable in Debug Menu). - **`!giftbomb`** — Simulate a gift bomb of subs, default 5 (toggleable in Debug Menu). ### Reset Improvements - Timer **auto-resets** on world reset. - Queue **auto-clears** on world reset. - **BungeeCord fallback server** support — players get transferred to a lobby instead of kicked. - **Confirmation dialog** with configurable timeout window before reset executes. ## 🔧 Improvements - **Safe Teleport** — Random teleports now find a safe Y-level at the destination instead of using the player's current Y (no more teleporting into solid ground). - **Safe Creepers** — Creeper explosions now deal **no damage**, destroy **no blocks**, and cause **no knockback**. Purely a scare event. - **Ground Event Block Restore** — Floor is Lava and Slippery Ground events now **restore all replaced blocks** to their original material when the event ends. - **Skyblock Performance** — Chunk clearing is now spread across multiple ticks (2 chunks/tick) to prevent TPS drops on large servers. - **Queue Worker Performance** — Runs every 2 ticks instead of every tick, reducing server load. - **Timer Controls in GUI** — Start, Stop, and Reset buttons are now directly accessible from the main GUI menu. - **Unique Event Icons** — Each event in the Weights GUI now has its own unique icon (Spawner for mobs, Ender Pearl for teleport, Magma Block for lava, etc.). ## 🐛 Bug Fixes - Fixed `allOnlineAreSpectator()` always returning `true` regardless of player game modes — this caused the timer/queue to incorrectly pause in all situations. - Fixed potential race condition with concurrent player death/respawn events (now using thread-safe tracking). - Fixed teleport event placing players underground at the destination. ## 📋 New Configuration Options ```yaml # Pause behavior challenge: pause_on_death: true pause_if_all_spectator: true # Reset settings reset: confirm_window_seconds: 30 fallback_server: "lobby" transfer_wait_ticks: 60 title_lead_ticks: 40 # Language language: mode: auto # auto = client language; manual = use default default: en # Fallback: de or en # Simulation triggers (Debug Menu) twitch: triggers: sim_gift: enabled: true sim_giftbomb: enabled: true default_count: 5 ```
release

TwitchRandomizer 1.2.0

1.2.0
1 окт. 2025 г.35Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9paper
Скачать
Что нового
**Full Changelog**: https://github.com/exnfachjan/TwitchRandomizer/compare/1.1.3...1.2.0 ## 🚀 Latest Update ### Multiplayer Support - **Full multiplayer support added** – multiple channels can now run simultaneously. - ⚠️ Shared chat might still be buggy. ### ✨ New Events - **TNT Rain**: Spawns TNT in a **30x30 block radius** around the player. - **Anvil Rain**: Spawns anvils in a **30x30 block radius** around the player. - **Skyblock**: Deletes a **5x5 chunk area**, except for the chunk where the player currently stands, all the way down to the void. - **Fake Totem**: The player receives a totem, but it has no effect when popped. ### 🔧 Changes & Improvements - Neutral mobs now **target players**. - Hostile mobs have an **extended focus** on players. - Complete **GUI overhaul** for better usability. - **Hell is Calling** event: Fireballs now follow the player until they explode. - Fixed an issue where, if a player was dead and a **sub/bit event** came in, no events could be added. - GUI now includes a **“Reset Weights to Default”** option.
release

TwitchRandomizer 1.1.2

1.1.2
29 сент. 2025 г.26Minecraft: 1.21.8paper
Скачать
Что нового
## Patch Notes ### Fixes - **Queue Handling**: Queue now correctly continues or clears after death/death screen. - **Weight Calculation**: Fixed weighting system to correctly use percentages. - **Teleportation Logic**: - Teleportation in the Nether now spawns players at a consistent Y-level. - No longer possible to spawn on top of the Nether roof. - Added a 0.001% chance to spawn in the End dimension. - **Server Shutdown**: Fixed error occurring during server shutdown.