Skip to content

Releases: Ninja6-MC/AntiSpeedrun

AntiSpeedrun v0.2.0

AntiSpeedrun v0.2.0 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 04 Oct 21:15
499254b

Added

  • config.yml carries a config-version (1). On start and on /asr reload an older file, including the unversioned v0.1.x shape, is migrated forward: missing keys are added with their shipped off defaults, comments are kept, and the old file is saved to backups/ first. The upgrade from the unversioned shape also sets anti-cheese.block-bed-anchor-boss-damage, block-exit-portal-crystal-place and block-gateway-pre-dragon from true to false, once, with a WARNING per key: v0.1.x shipped them true without enforcing them, so false keeps what the server did. Set one back to true to turn it on. No other value is changed. A newer or unreadable version stops startup with the file untouched. State files are not versioned yet.
  • anti-cheese.block-bed-anchor-boss-damage, off by default, cancels bed and Respawn Anchor explosion damage to the Ender Dragon (including its parts) and the Wither, detected by DamageType.BAD_RESPAWN_POINT. TNT, arrows and melee are not affected. Its shipped default changes from true to false; it was parsed only until now.
  • anti-cheese.block-exit-portal-crystal-place, off by default, refuses an End Crystal placed on the exit portal's centre column. The four resummon ritual positions are not affected. Its shipped default changes from true to false; it was parsed only until now.
  • anti-cheese.cap-single-hit-boss-damage, off by default, enforces
    max-single-hit-boss-damage against the Ender Dragon and the Wither. The cap applies to final
    damage after armour and resistance, including hits on the dragon's parts, so stacked TNT
    minecarts and Mace smashes cannot skip the fight.
  • Outer-End boundary (anti-cheese.block-gateway-pre-dragon, outer-end-radius, outer-end-poll-seconds) holds players within the radius until the world's first dragon is killed. It is off by default, including in every bundled profile.

Upgrading from 0.1.x

  • Every new anti-cheese rule ships off. Enable the ones you want in config.yml under
    anti-cheese, then run /asr reload.
  • On first start the config migration adds config-version: 1, saves the old file to
    plugins/AntiSpeedrun/backups/, and switches block-gateway-pre-dragon,
    block-exit-portal-crystal-place and block-bed-anchor-boss-damage from true to
    false, once, because in 0.1.x they did nothing. Set one back to true to enforce it.
  • A clean install also works: back up plugins/AntiSpeedrun/ and playerdata, delete
    config.yml, install the jar and restart. Deleting config.yml loses every local edit
    and any preset applied with /asr profile apply; the regenerated file is the default
    SMP_STANDARD. State files carry over.

AntiSpeedrun v0.1.1

AntiSpeedrun v0.1.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 02 Oct 06:54
c2b7ce1

Fixed

  • Journey Guide Book delivery on first join and through /journeybook or /asr book
    no longer fails with a NoSuchMethodError on Paper 26.2. The compatible Paper
    1.21.4 API baseline is retained.

AntiSpeedrun v0.1.0

AntiSpeedrun v0.1.0 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 30 Sep 12:55
4d63044

Added

  • Resummoned dragon fights keep the exit portal sealed in its bedrock basin until
    victory, with a configurable inactivity escape. Repeat victories award a
    configurable Dragon Egg trophy, and each dragon can drop a Dragon Head.
  • boss-scaling.multi-dragon.balanced-xp now awards 1,000 XP per extra dragon when enabled.
    Turning it off retains the previous 500 XP cap. The original dragon keeps vanilla's
    first-kill or resummon reward, and doMobLoot still prevents XP drops.
  • boss-scaling.scale-resummoned-dragons, which until now was parsed and read by nothing, scales
    fights resummoned with four End crystals. The resummoned dragon opens its own
    battle-prep-seconds window when it appears, and the party on the main island is counted and
    reinforced exactly as for the first fight. /summon, spawn eggs and other plugins' dragons do not
    open one.
  • boss-scaling.multi-dragon.rounding-mode, which until now was parsed and read by nothing, sets
    how the party's players * multiplier rounds to a dragon count: HALF_UP (the default), CEIL
    or FLOOR. The product is exact, so 10 * 0.7 is seven under CEIL. A party of one still
    fights one dragon under every mode, and an unknown mode warns and falls back to HALF_UP.
  • One victory for a multi-dragon fight. The original Ender Dragon cannot die while an extra dragon
    lives, so the exit portal, the egg, the 12,000 XP award and the "dragon killed" flag wait for the
    last dragon. Extra dragons do not heal from End crystals. A resolved
    reinforcement window is recorded in dragon-fights.yml, so a restart mid-fight no longer spawns
    a second set of extra dragons.
  • The multi-dragon reinforcement window. The first player to enter an End whose dragon has never
    been killed starts a boss-scaling.battle-prep-seconds countdown, shown to everyone in the End;
    the dragon fights from the start, so a solo player is never kept waiting. When it ends, survival
    and adventure players within 300 blocks of the centre are counted and the extra dragons the
    party earns under multi-dragon.multiplier and max-dragons spawn above the main island.
    Resummoned fights can now lock their existing exit portal.
  • Handing a tier-gated item to an Allay, or taking one back from it, is refused for a player who
    has not earned the tier. Allays collecting and delivering items on their own are unaffected, so
    sorters keep working. Bottling Dragon's Breath is refused until the player meets the End gate's
    requirement; it follows dimension-gates.the-end.enabled and is waived by the End waivers and
    the item bypass. Mobs picking up items are not gated.
  • Taking a tier-gated item off an armor stand or out of an item frame is refused for a player who
    has not earned the tier. Swapping an item onto an armor stand slot that holds a gated piece counts
    as taking it, and a framed item knocked out by the player's punch or projectile stays in the frame.
    Placing items and rotating a framed item are unaffected. Follows item-progression.enabled, the
    tier table and the item bypass.
  • item-progression.gate-nested-bundles, which until now was parsed and read by nothing, gates
    bundle contents. Taking an item out of a bundle is refused while the bundle holds a stack the
    player has not earned, wherever the bundle sits: in a container, or in the player's own hotbar,
    main inventory or off hand. Using such a bundle in either hand to spray its contents onto the
    ground is refused too, without blocking the block that was clicked. Every stack in the bundle is
    checked, because the item the client selects is not visible to the server, so a bundle holding
    only ungated or earned items is untouched. Shulker box contents were already covered: a placed
    shulker box is a container like any other.
  • A dispenser firing tier-gated armour onto a player who has not earned that tier is now cancelled, so
    the armour stays in the dispenser and the player gets the usual item-gate rejection line. It follows
    item-progression.gate-dispensers (default on), item-progression.enabled, the tier table and the item bypass, and only players are gated.
  • anti-cheese.block-early-eye-throwing, which until now was parsed and read by nothing, refuses an
    Eye of Ender throw until the player has earned minecraft:nether/find_fortress. The item use is
    denied at the interaction, so the eye stays in the hand and no Eye of Ender entity spawns; setting
    an eye into an empty End Portal frame is not a throw and is left alone. Waived by
    antispeedrun.bypass.anticheese, an /asr bypass grant, or /asr unlock the_end. The refusal
    line is the new anti-cheese.early-eye-rejection-message, validated as MiniMessage at load like
    every other rejection message.
  • The Journey Guide Book. /journeybook (alias /rulesbook) and /asr book hand the player a
    written book generated from the live configuration: the dimension gates and what each requires,
    the item tiers with their hints, and the Eye of Ender and Mending rules while they are on.
    Vanilla advancements are named by their in-game titles in the reader's own language. With
    journey-book.give-on-first-join on, a player who has never received the book is given one a
    tick after joining — including players who joined before the plugin was installed, since
    delivery is decided by the plugin's own persisted flag rather than hasPlayedBefore(). Both
    spellings of the command are gated on antispeedrun.book and refuse while the player already
    carries a copy or has no room for one.
  • Brand vector master (docs/assets/icon-master.svg) and automated multi-resolution icon suite
    (scripts/export-icons.mjs) featuring the Progression Crown and Tri-Realm Apex, with CI drift
    gate enforcement (.github/workflows/icons.yml).
  • /progress, and /asr progress which delegates to it, both gated on antispeedrun.progress
    (default true). It draws the player their own progression card: every dimension gate in
    configured order with a completed, in-progress or locked mark, what each one is still waiting on,
    and a highlighted NEXT STEP line. That next step is the same string the idle reminder puts in
    {NEXT_STEP} — one implementation, so the two cannot drift apart and tell a player different
    things. The new progress-card.simple-card setting chooses the shape: AUTO (the default) draws
    a plain-ASCII card for a Bedrock client and the full one for a Java client, and ALWAYS and
    NEVER force one or the other. Bedrock's font carries none of the marks the full card uses, so
    without this a Geyser player saw a column of replacement boxes; the plain card is asserted
    character by character rather than described as "renders cleanly". AUTO recognises a Bedrock
    client only on a server actually running Floodgate, which stays a softdepend — nothing here
    compiles against it. Milestone display names and advancement keys read from config.yml reach
    the player as text, never as markup.
  • Idle reminders, implementing the idle-reminder section, which until now was parsed and read by
    nothing. A player who stands still for stand-still-seconds is shown their next progression goal
    on the action bar, as a title, or in chat, at most once per cooldown-minutes. Standing still is
    detected by a poll on the player's own region scheduler, one per player and only while the feature
    is enabled — there is no PlayerMoveEvent handler anywhere in the plugin and no global tick loop,
    and a build that introduces either fails the test suite. An action bar reminder is re-sent while it
    is up so that display-duration-seconds is honoured past the client's own three-second fade. A
    player who has cleared every gate is told nothing.
  • Item tier gates are now enforced. The compiled item-progression.gated-items table was
    previously built on every reload and read by nothing; three channels now consult it. A player who
    has not met a tier's requirements cannot pick a gated item up off the ground, take one out of a
    container by an ordinary, shift, hotbar-swap, off-hand-swap, double-click-gather or drop click,
    or buy one from a villager or wandering trader. The gate is waived by
    antispeedrun.bypass.items, by an unexpired /asr bypass grant, or by setting
    item-progression.enabled: false. Putting gated items into a container is never blocked,
    including onto a slot that already holds a matching stack, and neither is moving them around
    inside your own inventory — dragging included, since a drag only moves items out of the cursor
    and the clicks that would load the cursor from a container are refused. Views that hand a
    player's own item straight back — the crafting grid, a crafting table, and the anvil, smithing
    table, grindstone, enchanting table, cartography table, loom and stonecutter — are untouched;
    furnaces, brewing stands, Crafters and storage blocks are containers and are gated.
  • villager-progression.gate-mending-trade is now enforced. With it switched on, a player who has
    not earned villager-progression.required-advancement (Zombie Doctor by default) cannot select a
    villager or wandering trader offer whose result carries Mending, and cannot take that result out
    of the merchant window if an offer was already selected when they filled the ingredient slots.
    The gate is keyed on the enchantment, so a Mending book is told apart from any other enchanted
    book — something the material-keyed item tier table cannot do — and it reads both an item's
    ordinary and its stored enchantments, so an already-enchanted tool offered by a datapack or a
    plugin merchant is covered as well as a librarian's book. It is off by default, costs nothing on
    the trade path while it is off, and is waived by antispeedrun.bypass.items or an unexpired
    /asr bypass grant. A result that is both above its item tier and enchanted with Mending is
    refused once, not twice. The refusal is worded by `vi...
Read more