
GameRule-Extensions
[1.7.10] Rewrites Minecraft's gamerules to be more accessible and extensible for mod authors
About this Mod
GameRule-Extensions
An extension library to allow mod developers to more easily add custom gamerules, with additional datatype support.
Usage (Mod Developers Only)
Adding a new game rule
- Add the API jar as a dependency to your project.
- Call
dev.rndmorris.gameruleexts.api.GameRulesApi.registerGameRule(...)to add a new gamerule for your mod. Theapi.rulespackage contains basic implementations for declaring boolean, numerical, and string gamerules. - If necessary, write your own
IGameRuleimplementation.
Reading a game rule
- Call
dev.rndmorris.gameruleexts.api.GameRulesApi.getGameRules(...). - The returned
IGameRulesobject can be used to retrieve and update gamerules by their name.
Examples
Creating and reading a gamerule
public class CommonProxy {
// ...
public void postInit(FMLPostInitializationEvent event) {
GameRulesApi.registerGameRule(new FloatGameRule("grassCuttingSwordDamage", 90F));
}
// ...
}
public class SwordGrassCutting extends ItemSword {
// ...
public boolean hitEntity(ItemStack stack, EntityLivingBase target, EntityLivingBase player) {
final var gameRules = GameRulesApi.getGameRules(player.worldObj);
target.attackEntityFrom(DamageSource.causePlayerDamage(player).setMagicDamage(), gameRules.getFloat("grassCuttingSwordDamage"));
return super.hitEntity(stack, target, player);
}
// ...
}
Creating a custom gamerule implementation
Here's an example custom gamerule that maps enums to bytes.
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;
import net.minecraft.command.ICommandSender;
import net.minecraft.nbt.NBTTagCompound;
import dev.rndmorris.gameruleexts.api.IGameRule;
import dev.rndmorris.gameruleexts.api.IRuleValue;
import dev.rndmorris.gameruleexts.api.values.EnumValue;
public class ExampleCustomGameRule implements IGameRule {
public enum ModDifficulty {
EASY,
MEDIUM,
HARD;
public static ModDifficulty fromByte(int val, ModDifficulty defaultValue) {
return switch (val) {
case 0 -> ModDifficulty.EASY;
case 1 -> ModDifficulty.MEDIUM;
case 2 -> ModDifficulty.HARD;
default -> defaultValue;
};
}
public byte toByte() {
return switch (this) {
case EASY -> 0;
case MEDIUM -> 1;
case HARD -> 2;
};
}
}
private final String name = "modDifficulty";
private final ModDifficulty defaultValue;
private List<String> tabCompletionValues;
public ExampleCustomGameRule(ModDifficulty defaultValue) {
this.defaultValue = defaultValue;
}
@Override
public String getName() {
return name;
}
@Override
public IRuleValue getDefaultValue() {
return new EnumValue<>(defaultValue, ModDifficulty.class);
}
@Override
public IRuleValue readValueFromNBT(NBTTagCompound tag) {
if (!tag.hasKey(name)) {
return getDefaultValue();
}
final var value = ModDifficulty.fromByte(tag.getByte(name), defaultValue);
return new EnumValue<>(value, ModDifficulty.class);
}
@Override
public void writeValueToNBT(NBTTagCompound tag, IRuleValue value) {
if (value instanceof EnumValue storedVal && storedVal.getValue() instanceof ModDifficulty enumVal) {
tag.setByte(name, enumVal.toByte());
}
}
@Override
public Collection<String> tabCompletionValues(ICommandSender commandSender) {
if (tabCompletionValues == null) {
tabCompletionValues = Arrays.stream(ModDifficulty.values())
.map(ModDifficulty::toString)
.collect(Collectors.toList());
}
return tabCompletionValues;
}
}
Credits
- rndmorris (primary author)
- The GTNH team, for the project template
Available Versions
How to Install GameRule-Extensions on Your Server
Order Server
Order a Minecraft Java server with at least 3 GB RAM (4 GB recommended).
Set forge Loader
In the panel under "Egg", select the forge loader and matching Minecraft version (1.7.10).
Install Mod
Open the mod browser in the dashboard and search for "GameRule-Extensions". Click "Install" – done! Alternatively, upload the .jar via SFTP to the /mods folder.
Compatibility
Mod Loaders
Minecraft Versions
1.7.10
Server-side
✓ RequiredRecommended RAM
4 GB(min. 3 GB)Frequently Asked Questions
GameRule-Extensions server crashes on startup – what to do?
Most common cause: wrong forge version or insufficient RAM. Check the server log (latest.log) for "OutOfMemoryError" or "Mixin" errors. With Mado Hosting: ensure at least 3 GB RAM is allocated and the loader matches the mod version (1.7.10). You can switch loaders with one click in the panel.
Is GameRule-Extensions compatible with forge?
GameRule-Extensions officially supports forge for Minecraft 1.7.10. The Mado dashboard automatically detects incompatible loader combinations.
Server lagging with GameRule-Extensions – how to optimize performance?
Recommended RAM: 4 GB (per 8 players). Use /spark profiler to check if GameRule-Extensions consumes the most tick time. Common fixes: reduce server view-distance to 8-10, install "performant" or "starlight" as supplementary mods on Forge. With Mado Hosting, your server runs on NVMe SSDs with dedicated CPU cores for minimal latency.
Similar Mods
Rent Modded Server
Install GameRule-Extensions with just one click on your server.