CommandGameRule.java 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. package me.km.commands;
  2. import java.util.Collections;
  3. import java.util.List;
  4. import javax.annotation.Nullable;
  5. import me.km.api.Module;
  6. import me.km.api.ModuleCommand;
  7. import me.km.dimensions.ModDimensions;
  8. import me.km.permissions.Permissions;
  9. import net.minecraft.command.ICommandSender;
  10. import net.minecraft.entity.player.EntityPlayer;
  11. import net.minecraft.server.MinecraftServer;
  12. import net.minecraft.util.math.BlockPos;
  13. import net.minecraft.world.GameRules;
  14. import net.minecraftforge.common.DimensionManager;
  15. public class CommandGameRule extends ModuleCommand
  16. {
  17. public CommandGameRule(Module m)
  18. {
  19. super("gamerule", m);
  20. super.setDescription("Setzt GameRules einer Welt");
  21. super.setUsage("/gamerule <name> [value]");
  22. super.setPermission(Permissions.GAMERULE);
  23. }
  24. private GameRules getOverWorldGameRules()
  25. {
  26. return DimensionManager.getWorld(0).getGameRules();
  27. }
  28. @Override
  29. public List<String> getTabCompletions(MinecraftServer server, ICommandSender sender, String[] args, @Nullable BlockPos targetPos)
  30. {
  31. if(args.length == 1)
  32. {
  33. return getListOfStringsMatchingLastWord(args, getOverWorldGameRules().getRules());
  34. }
  35. else
  36. {
  37. if(args.length == 2)
  38. {
  39. GameRules gamerules = getOverWorldGameRules();
  40. if(gamerules.areSameType(args[0], GameRules.ValueType.BOOLEAN_VALUE))
  41. {
  42. return getListOfStringsMatchingLastWord(args, new String[] {"true", "false"});
  43. }
  44. else if(gamerules.areSameType(args[0], GameRules.ValueType.FUNCTION))
  45. {
  46. return getListOfStringsMatchingLastWord(args, server.getFunctionManager().getFunctions().keySet());
  47. }
  48. }
  49. return Collections.<String>emptyList();
  50. }
  51. }
  52. @Override
  53. public boolean execute(ICommandSender cs, String[] arg)
  54. {
  55. GameRules rules;
  56. if(cs instanceof EntityPlayer)
  57. {
  58. rules = ((EntityPlayer) cs).world.getGameRules();
  59. }
  60. else
  61. {
  62. rules = getOverWorldGameRules();
  63. }
  64. String rule = arg.length > 0 ? arg[0] : "";
  65. String value = arg.length > 1 ? buildString(arg, 1) : "";
  66. switch(arg.length)
  67. {
  68. case 0:
  69. this.getModule().send(cs, joinNiceString(rules.getRules()));
  70. return true;
  71. case 1:
  72. if(!rules.hasRule(rule))
  73. {
  74. this.getModule().send(cs, "'" + rule + "' ist keine gültige GameRule.");
  75. return true;
  76. }
  77. this.getModule().send(cs, rule + " = " + rules.getString(rule));
  78. return true;
  79. default:
  80. if(rules.areSameType(rule, GameRules.ValueType.BOOLEAN_VALUE) &&
  81. !"true".equals(value) && !"false".equals(value))
  82. {
  83. this.getModule().send(cs, "Es wird 'true' oder 'false' erwartet.");
  84. return true;
  85. }
  86. rules.setOrCreateGameRule(rule, value);
  87. this.getModule().send(cs, "'" + rule + "' wurde auf '" + value + "' gesetzt.");
  88. }
  89. return true;
  90. }
  91. }