Creators
Details
Licensed MIT
Published 8 months ago
Updated 8 months ago
All versions
2.0.0
Release
CRZ:CobblemonFieldMoves 2.0.08 months ago 75
Compatibility
Minecraft: Java Edition
1.21.1
Platform
Fabric
Supported environments
Server-side
Singleplayer
Changes
Bug Fixes
- Memory leak - When players disconnected, some tracking data (particle rate limits, special effect timers) was never cleaned up. Over time on busy servers, this would slowly eat memory. Now everything gets properly cleaned when a player leaves.
- Disabled players could bypass restrictions - If a server admin disabled field moves for a player (e.g. for griefing), the player could just reconnect to get them back. Now the disabled status persists until the server restarts or an admin re-enables it.
- Status effects were always guaranteed - Every fire move would always burn, every ice move would always freeze. In real Pokemon games, these have a chance (not 100%). Now fire has 30% burn chance, ice 20% freeze, electric 25% paralysis, etc.
- Wrong controls shown in help - The /fieldmoves help command said "Left Click = Use move" but the actual controls are Right Click to use and Shift+Right Click to cycle. Fixed the help text to match reality.
- Voice commands could misfire on short words - If speech recognition picked up a short sound like "a", it could accidentally match a move. Now voice input must be at least 3 characters to do a fuzzy match.
- Voice system broke on server restart - In singleplayer, stopping and restarting a world would crash the voice command system because the background worker couldn't be restarted. Now it properly recreates itself.
- Unsafe code that could crash - One spot used a !! (force unwrap) that could theoretically crash the server. Replaced with a proper null safety check.
Performance Improvements
- Particle data is now cached - Every time a Pokemon used a move, the mod was building lists of 40-80 particle names from scratch. Now it builds them once and reuses them. Huge reduction in garbage collection pressure.
- Type chart was rebuilt on every hit - The full Pokemon type effectiveness table (18 types x all matchups) was being recreated as a new object every single time damage was calculated. Now it's created once at startup.
- Move category lookups are now instant - Over 20 sets of move names (mouth moves, hand moves, kick moves, etc.) were being recreated every time a move was used. Now they're pre-built constants.
- Move name normalization is cached - Converting move names like "Ice_Beam" to "icebeam" was happening 8-10 times per single move use. Now it's done once and remembered.
- Config saves are smarter - Changing multiple settings at once (e.g. from a plugin) used to write the config file to disk for each change. Now there's a batch mode that writes once at the end.
- Removed duplicated code - The type-to-color mapping function (Normal=white, Fire=red, Water=blue...) was copy-pasted in two files. Now there's one shared version.
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:mMymctME:oKZM5AwP"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:mMymctME:oKZM5AwP"
}

