ModuleCommand.java 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. package me.km.api;
  2. import java.util.ArrayList;
  3. import java.util.Collections;
  4. import java.util.List;
  5. import javax.annotation.Nullable;
  6. import me.km.KajetansMod;
  7. import me.km.permissions.Permissions;
  8. import net.minecraft.command.CommandBase;
  9. import net.minecraft.command.CommandException;
  10. import net.minecraft.command.ICommandSender;
  11. import net.minecraft.server.MinecraftServer;
  12. import net.minecraft.util.math.BlockPos;
  13. public abstract class ModuleCommand extends CommandBase
  14. {
  15. private final Module m;
  16. private final String name;
  17. private String usage;
  18. private String description;
  19. private String perm;
  20. private List<String> aliases;
  21. public ModuleCommand(String name, Module m)
  22. {
  23. this.name = name;
  24. this.m = m;
  25. this.usage = "";
  26. this.perm = null;
  27. this.aliases = Collections.<String>emptyList();
  28. }
  29. @Override
  30. public List<String> getAliases()
  31. {
  32. return aliases;
  33. }
  34. public void addAlias(String s)
  35. {
  36. if(aliases.isEmpty())
  37. {
  38. aliases = new ArrayList<>();
  39. }
  40. aliases.add(s);
  41. }
  42. public Module getModule()
  43. {
  44. return m;
  45. }
  46. @Override
  47. public String getName()
  48. {
  49. return name;
  50. }
  51. public void setUsage(String s)
  52. {
  53. usage = s;
  54. }
  55. @Override
  56. public String getUsage(ICommandSender sender)
  57. {
  58. return usage;
  59. }
  60. public void setDescription(String s)
  61. {
  62. description = s;
  63. }
  64. public String getDescription()
  65. {
  66. return description;
  67. }
  68. public void setPermission(String perm)
  69. {
  70. this.perm = perm;
  71. }
  72. public String getPermission()
  73. {
  74. return perm;
  75. }
  76. public abstract boolean execute(ICommandSender cs, String[] arg);
  77. @Override
  78. public void execute(MinecraftServer server, ICommandSender cs, String[] args) throws CommandException
  79. {
  80. try
  81. {
  82. if(!execute(cs, args))
  83. {
  84. m.send(cs, this.getUsage(cs));
  85. }
  86. }
  87. catch(Exception ex)
  88. {
  89. ex.printStackTrace();
  90. if(KajetansMod.singlePlayer)
  91. {
  92. m.send(cs, "Dieser Command sollte nicht im SinglePlayer benutzt werden.");
  93. }
  94. }
  95. }
  96. @Override
  97. public boolean checkPermission(MinecraftServer server, ICommandSender cs)
  98. {
  99. return KajetansMod.perms.hasPermission(cs, perm);
  100. }
  101. @Override
  102. public List<String> getTabCompletions(MinecraftServer server, ICommandSender sender, String[] args, @Nullable BlockPos targetPos)
  103. {
  104. return getListOfStringsMatchingLastWord(args, server.getOnlinePlayerNames());
  105. }
  106. }