CommandScroll.java 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. package me.km.scrolls;
  2. import java.util.Arrays;
  3. import java.util.stream.Collectors;
  4. import me.km.api.GlobalText;
  5. import me.km.api.Module;
  6. import me.km.api.ModuleTabCommand;
  7. import me.km.effects.Effect;
  8. import me.km.items.ModItems;
  9. import me.km.permissions.Permissions;
  10. import net.minecraft.block.Block;
  11. import net.minecraft.command.ICommandSender;
  12. import net.minecraft.entity.player.EntityPlayer;
  13. import net.minecraft.item.ItemStack;
  14. public class CommandScroll extends ModuleTabCommand
  15. {
  16. public CommandScroll(Module m)
  17. {
  18. super("magicscroll", m, Arrays.stream(Effect.values())
  19. .filter(n -> n.isActive())
  20. .map(n -> n.toString())
  21. .collect(Collectors.toList()), 0);
  22. super.setDescription("Erstellt Schriftrollen, Unterstriche bei <dname> werden zu Leerzeichen");
  23. super.setUsage("/magicscroll <name> <dname> [level] [amount]");
  24. super.setPermission(Permissions.SCROLL);
  25. super.addAlias("msc");
  26. }
  27. @Override
  28. public boolean execute(ICommandSender cs, String[] arg)
  29. {
  30. if(arg.length < 2)
  31. {
  32. return false;
  33. }
  34. if(!(cs instanceof EntityPlayer))
  35. {
  36. this.getModule().send(cs, GlobalText.onlyPlayer());
  37. return true;
  38. }
  39. EntityPlayer p = (EntityPlayer) cs;
  40. Effect eff = Effect.valueOf(arg[0]);
  41. if(eff == null || !eff.isActive())
  42. {
  43. this.getModule().send(cs, "Dieser aktive Effekt existiert nicht.");
  44. return true;
  45. }
  46. int level;
  47. try
  48. {
  49. level = Integer.parseInt(arg[2]);
  50. if(level <= 0)
  51. {
  52. this.getModule().send(cs, GlobalText.noPositiveNaturalNumber());
  53. return true;
  54. }
  55. }
  56. catch(NumberFormatException | ArrayIndexOutOfBoundsException ex)
  57. {
  58. level = 1;
  59. }
  60. int amount;
  61. try
  62. {
  63. amount = Integer.parseInt(arg[3]);
  64. if(amount <= 0)
  65. {
  66. this.getModule().send(cs, GlobalText.noPositiveNaturalNumber());
  67. return true;
  68. }
  69. }
  70. catch(NumberFormatException | ArrayIndexOutOfBoundsException ex)
  71. {
  72. amount = 1;
  73. }
  74. ItemStack stack = new ItemStack(ModItems.scroll, amount);
  75. ModItems.scroll.setEffect(stack, eff.ordinal(), level, arg[1].replace('_', ' '));
  76. Block.spawnAsEntity(p.world, p.getPosition(), stack);
  77. return true;
  78. }
  79. }