1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- package me.km.commands;
- import java.util.Collections;
- import java.util.List;
- import javax.annotation.Nullable;
- import me.km.api.Module;
- import me.km.api.ModuleCommand;
- import me.km.dimensions.ModDimensions;
- import me.km.permissions.Permissions;
- import net.minecraft.command.ICommandSender;
- import net.minecraft.entity.player.EntityPlayer;
- import net.minecraft.server.MinecraftServer;
- import net.minecraft.util.math.BlockPos;
- import net.minecraft.world.GameRules;
- import net.minecraftforge.common.DimensionManager;
- public class CommandGameRule extends ModuleCommand
- {
- public CommandGameRule(Module m)
- {
- super("gamerule", m);
- super.setDescription("Setzt GameRules einer Welt");
- super.setUsage("/gamerule <name> [value]");
- super.setPermission(Permissions.GAMERULE);
- }
-
- private GameRules getOverWorldGameRules()
- {
- return DimensionManager.getWorld(0).getGameRules();
- }
-
- @Override
- public List<String> getTabCompletions(MinecraftServer server, ICommandSender sender, String[] args, @Nullable BlockPos targetPos)
- {
- if(args.length == 1)
- {
- return getListOfStringsMatchingLastWord(args, getOverWorldGameRules().getRules());
- }
- else
- {
- if(args.length == 2)
- {
- GameRules gamerules = getOverWorldGameRules();
- if(gamerules.areSameType(args[0], GameRules.ValueType.BOOLEAN_VALUE))
- {
- return getListOfStringsMatchingLastWord(args, new String[] {"true", "false"});
- }
- else if(gamerules.areSameType(args[0], GameRules.ValueType.FUNCTION))
- {
- return getListOfStringsMatchingLastWord(args, server.getFunctionManager().getFunctions().keySet());
- }
- }
- return Collections.<String>emptyList();
- }
- }
- @Override
- public boolean execute(ICommandSender cs, String[] arg)
- {
- GameRules rules;
- if(cs instanceof EntityPlayer)
- {
- rules = ((EntityPlayer) cs).world.getGameRules();
- }
- else
- {
- rules = getOverWorldGameRules();
- }
-
- String rule = arg.length > 0 ? arg[0] : "";
- String value = arg.length > 1 ? buildString(arg, 1) : "";
- switch(arg.length)
- {
- case 0:
- this.getModule().send(cs, joinNiceString(rules.getRules()));
- return true;
- case 1:
- if(!rules.hasRule(rule))
- {
- this.getModule().send(cs, "'" + rule + "' ist keine gültige GameRule.");
- return true;
- }
- this.getModule().send(cs, rule + " = " + rules.getString(rule));
- return true;
- default:
- if(rules.areSameType(rule, GameRules.ValueType.BOOLEAN_VALUE) &&
- !"true".equals(value) && !"false".equals(value))
- {
- this.getModule().send(cs, "Es wird 'true' oder 'false' erwartet.");
- return true;
- }
- rules.setOrCreateGameRule(rule, value);
- this.getModule().send(cs, "'" + rule + "' wurde auf '" + value + "' gesetzt.");
- }
- return true;
- }
- }
|