Stope 2.0.0 for Fabric (1.20-1.20.1)
Curse Maven Snippet
What's new
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.
Breaking
- Every callback's
EVENTfield is Stope's ownus.someguy.stope.api.event.Event, not Fabric API's. Registration reads the same (EVENT.register(listener)); code that names Fabric'sEventtype, or callsinvoker(), does not compile. - Two jars, one per loader (
stope-fabric-…,stope-forge-…). Consumers depend on the file for their loader.
API
NetworkChannel,PacketType,ServerPacketHandler,ClientPacketHandler, and client-sideClientNetworking(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. DataReloadersdocuments 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.foldergives a mod's config folder.BlockChangedCallback(experimental): server-side event afterLevel#setBlockchanges 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.ConfigFileadds 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.
Fixes
MobControl.avoidand theavoidandfleereactions: 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.attackand thedefendandjoin_attackreactions: 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.
Links
- 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.

