All versions
1.2.0
Release
Gamerule Events 1.2.06 months ago 18
Compatibility
Minecraft: Java Edition
26.1.x
Platform
NeoForge
Supported environments
Client and server
Changes
Changelog
Added
- Expanded datapack
whencondition support:not_equals,in,one_of,matches- numeric comparisons:
gt,gte,lt,lte - transition checks:
from_equals,to_equals,changed
- Added rule context model for old/new value matching (
GameruleMatchContext). - Added new action types:
broadcast_chatbroadcast_actionbarrun_command(config-gated)
- Added placeholder expansion in messages/commands:
{gamerule},{old},{new},{player}
- Added rule control fields:
id,priority,cooldown_ticks,stop_after
- Added audience support:
all,ops, object-basedpermission_level,dimension
- Added command:
/gameruleevents list/gameruleevents validate(reports last reload warning/error counts)
Changed
- Refactored rule matching from simple
equals/anyto predicate-based parsing. - Rules are now sorted by
priorityduring reload. - Dispatcher now tracks previous gamerule values and cooldown state.
- Title/sound actions now execute with match context (for placeholders).
- Updated docs and examples to reflect new schema and actions.
Config
- Added
allowCommandActionsto common config (defaultfalse).
Diagnostics and Logging
- Added structured warning logging for invalid audience config:
- unknown audience values/types
- invalid dimension IDs
permission_level > 2limitation warning
- Added reload diagnostics counters:
- warning/error totals captured per reload and exposed via
/gameruleevents validate.
- warning/error totals captured per reload and exposed via
Notes
- Current permission-level audience behavior is conservative for mapping compatibility:
- non-op players are rejected
- op players satisfy up to level
2 - levels above
2are warned and treated as unsupported in this build
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:EC7DlBPJ:gWoOY7XZ"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:EC7DlBPJ:gWoOY7XZ"
}

