Skip to content

Stope changelog

Mods can color blocks from their own colormap images, which resource packs can replace. Nothing changes in game until a mod uses it. Mods built for 2.0 through 2.2 run on 2.3.0 unchanged.

  • Colormap (experimental, client): read a colormap image and look up colors in it, reloaded whenever resources reload, the same way on Fabric and Forge.

A mod’s creative tab can show the mod’s own icon image. Nothing changes in game until a mod uses it. Mods built for 2.0 and 2.1 run on 2.2.0 unchanged.

  • CreativeTabIcons (experimental, client): draw a creative tab’s icon from a texture, such as the mod’s icon, instead of an item, the same way on Fabric and Forge.

New API for mods that add wood sets, trees, and loot: registration, block behaviors, wood types, signs, boats, worldgen features, loot additions, and client rendering, the same on Fabric and Forge. Nothing changes in game until a mod uses them. Mods built for 2.0 run on 2.1.0 unchanged. The api-sources jar is attached to the Fabric file only; CurseForge rejected the copies attached to both files in 2.0.1 and 2.0.2.

  • Registrar and Registered (experimental): register a mod’s blocks, items, entity types, block entity types, worldgen features, and creative tabs the same way on Fabric and Forge.
  • BlockBehaviors (experimental): make a mod’s blocks flammable, axe-strippable, compostable, and furnace fuel the same way on Fabric and Forge.
  • Registrar.blockSetType and Registrar.woodType: register a wood set’s block set type and wood type on both loaders, with sign materials added on the client.
  • BlockBehaviors.sign: let a mod’s sign and hanging sign blocks use vanilla’s sign block entities.
  • Registrar.boats(), BoatSet, BoatWood, and BoatKind: a mod’s boats and chest boats for any number of woods, with items, dispenser behavior, and rendering on both loaders.
  • BiomeFeatures (experimental): add a mod’s placed feature to the biomes in a tag, switched on or off at server start, on both loaders.
  • LootAdditions (experimental): add a pool to a loot table, or a chance to replace the item brushed from an archaeology table, on both loaders.
  • BlockRendering (experimental, client): set a block’s render layer and register block and item color providers the same way on Fabric and Forge.

The bug-report link in Mod Menu and the Forge Mods screen now opens the GitHub issue tracker (https://github.com/KillenCraft/issues) instead of Discord. No other change: the API is the same as 2.0.1’s.

The Forge file now loads on Minecraft 1.20 (Forge 46.0.14). Stope 2.0.0 required Forge 47, which exists for 1.20.1 only, so on Forge 1.20 it stopped the game at loading. No other change: the API and the Fabric file are the same as 2.0.0’s.

Native Forge: one Stope file per loader, Fabric and Forge, for Minecraft 1.20 and 1.20.1. Forge players no longer need Sinytra Connector or Forgified Fabric API. Also the capabilities that let Strength In Numbers and TrailWright reach Minecraft only through Stope, on both loaders (1.3.0 was never released; its changes are here). Nothing changes in game until a mod uses them. Mods built for Stope 1.x need a new release built against 2.0.0.

  • Every callback’s EVENT field is Stope’s own us.someguy.stope.api.event.Event, not Fabric API’s. Registration reads the same (EVENT.register(listener)); code that names Fabric’s Event type, or calls invoker(), does not compile.
  • Two jars, one per loader (stope-fabric-…, stope-forge-…). Consumers depend on the file for their loader.
  • NetworkChannel, PacketType, ServerPacketHandler, ClientPacketHandler, and client-side ClientNetworking (experimental): versioned network channels. Handlers run on the main thread; malformed packets are dropped and logged once; a client with a different protocol version is refused at login, and one without the mod still joins.
  • ServerStartedCallback, DataPacksReloadedCallback (successful reloads only), LevelTickCallback, CommandRegistrationCallback (experimental): server events on every loader.
  • ClientDisconnectCallback (experimental, client): after the client leaves a world.
  • PlatformInfo (experimental): whether a mod is loaded, its version, and whether this is a development launch.
  • ConfigScreens (experimental, client): one call puts a mod’s settings screen in Mod Menu (Fabric) and in the Mods screen (Forge); consumers drop their own Mod Menu entry point.
  • GameTestFunctions (experimental): GameTests written once in common code, registered on each loader.
  • Every experimental type carries @ApiStatus.Experimental.
  • DataReloaders documents its handler order per loader.
  • ConfigFile, ConfigSpec, ConfigKey, ConfigValues (experimental): a mod’s JSON settings file. Strict parsing: a malformed file logs a warning and runs on defaults; a missing, wrong-typed, or out-of-range key resets alone with a warning naming it. Values are immutable; settings screens edit a copy and save it. ConfigFile.folder gives a mod’s config folder.
  • BlockChangedCallback (experimental): server-side event after Level#setBlock changes a block.
  • BrushStrokeCallback (experimental): server-side event for each brush stroke a player makes on a block.
  • MobOwnership (experimental): whether a mob is tamed, owned, saddled, ridden by a player, leashed, or in a llama caravan.
  • DataReloaders.registerFiles, DataFile (experimental): a reload handler that receives the JSON files of a data-pack directory and a config folder with their sources and pack IDs, in a documented load order.
  • Ids, RegistryLookups (experimental): build and parse IDs; look up entity types, blocks, block tag contents, and tag keys.
  • DebugScreenLinesCallback (experimental, client): append lines to the F3 screen’s right column, with the targeted block. Skipped under reduced debug info.
  • ConfigFile adds missing keys with their defaults, and logs them, when they are a file’s only problem; it never rewrites a file with an invalid value or a malformed one.
  • A listener that throws is logged once and the other listeners still run, for every callback.
  • MobControl.avoid and the avoid and flee reactions: a mob that had left the avoid distance no longer follows its own panic run back toward the threat when it comes inside again.
  • MobControl.attack and the defend and join_attack reactions: a goat whose ram ends without hitting the target, including a ram vanilla ends before the goat moves, rams again while the order lasts. One ram that hits is still the most an order gives.
  • The mod’s homepage link (Mod Menu, Forge’s Mods screen) goes to its CurseForge page, and its issues link to the KillenCraft Discord, where bug reports go.

Mob groups, mob control, and a trigger-to-reaction vocabulary, for Strength In Numbers. Nothing changes in game until a mod uses them.

  • MobHurtCallback, MobKilledCallback, MobTargetChangedCallback, AnimalBredCallback, MobGroupChangedCallback, ReactionStartedCallback (experimental): server-side mob, group, and reaction events.
  • MobGroups, GroupDefinition, MobGroup, LeaderChoice (experimental): same-type mob groups with leaders, centers, and loss tracking; MobGroups.anyInLineOfFire tells whether a grouped mob stands between a shooter and its target.
  • MobControl, TargetVeto (experimental): alarm, avoid, attack, move, hold, and calm any mob, whether it runs goals or a brain; MobControl.isEngaged tells whether a mob has an attack target; MobControl.moveStoppedShort tells whether its last move ended short of an unreachable point; MobControl.leap launches a mob into a hop; alarm can take a speed. A held or moving goal mob does not attack. A move to a point the mob cannot reach ends once it has walked as close as a path gets. Moving orders stop horses eating. An attack order that runs out leaves the target to the mob’s own AI, brain mobs included; calm takes back everything Stope set.
  • ReactionBinding, Reactions, Triggers, Reaction, ReactionContext, ReactionParams, EntityMatcher (experimental): bindings from JSON, reaction and trigger registries, and the primitive reactions flee (with optional speed and direction), avoid, defend and join_attack (with optional release), follow_leader.
  • PlayerGuide (experimental): copies a guide shipped in a mod’s jar to its config folder, refreshed whenever the guide changes.
  • SettingsScreen (experimental, client): a settings screen built from toggles, number fields, and headings, with Done and Cancel; Done can apply changes on the hosted server’s thread. Escape with unsaved changes asks to save, discard, or keep editing. Now suggests Mod Menu.
  • Now requires the Fabric API modules fabric-entity-events-v1 and fabric-lifecycle-events-v1.
  • New api-sources jar holding only the public API sources, published to Maven and attached to the Modrinth upload.
  • check now runs strict Javadoc linting on the API package and a scan for AI-tool references in source files.
  • Complete Javadoc on every public API type and member, including thread and side rules.
  • MobFootfallCallback (experimental): server-side event when a mob’s feet land on a block. Mobs ridden by a player report through PlayerMountFootfallCallback instead.

First release.

  • PlayerFootfallCallback (experimental): server-side event when a player’s feet land on a block.
  • PlayerMountFootfallCallback (experimental): the same for a living mount a player rides.
  • StopeSavedData.getOrCreate (experimental): per-dimension saved data.
  • DataReloaders.register (experimental): data-pack reload handler.
  • VanillaBlocks.shortGrass (experimental): short grass plant across the 1.20.3 rename.