CommandVillager.java 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. package me.km.datatools;
  2. import me.km.api.GlobalText;
  3. import me.km.api.Module;
  4. import me.km.api.ModuleCommand;
  5. import me.km.api.Utils;
  6. import java.util.ArrayList;
  7. import java.util.Arrays;
  8. import java.util.List;
  9. import me.km.permissions.Permissions;
  10. import me.km.utils.EntityInventory;
  11. import me.km.utils.InventoryUtils;
  12. import net.minecraft.command.ICommandSender;
  13. import net.minecraft.entity.passive.EntityVillager;
  14. import net.minecraft.entity.player.EntityPlayerMP;
  15. import net.minecraft.server.MinecraftServer;
  16. import net.minecraft.util.math.BlockPos;
  17. import net.minecraft.village.MerchantRecipe;
  18. import net.minecraft.village.MerchantRecipeList;
  19. import net.minecraft.world.World;
  20. import net.minecraftforge.fml.common.registry.VillagerRegistry;
  21. public class CommandVillager extends ModuleCommand
  22. {
  23. private final ArrayList<String> vil;
  24. public CommandVillager(Module m)
  25. {
  26. super("villager", m);
  27. super.setDescription("Spezielle Commands für Villager");
  28. super.setUsage("/villager für die Hilfe");
  29. super.setPermission(Permissions.VILLAGER);
  30. vil = new ArrayList<>(Arrays.asList(new String[] {"inv", "trades", "spawn", "child"}));
  31. }
  32. @Override
  33. public List<String> getTabCompletions(MinecraftServer server, ICommandSender sender, String[] args, BlockPos targetPos)
  34. {
  35. List<String> names = new ArrayList<>();
  36. if(args.length == 1)
  37. {
  38. vil.stream().filter(e -> e.toLowerCase().startsWith(args[0].toLowerCase())).forEach(e ->
  39. {
  40. names.add(e);
  41. });
  42. return names;
  43. }
  44. return names;
  45. }
  46. @Override
  47. public boolean execute(ICommandSender cs, String[] arg)
  48. {
  49. if(!(cs instanceof EntityPlayerMP))
  50. {
  51. this.getModule().send(cs, GlobalText.onlyPlayer());
  52. return true;
  53. }
  54. EntityPlayerMP p = (EntityPlayerMP) cs;
  55. Module m = this.getModule();
  56. if(arg.length >= 1)
  57. {
  58. switch (arg[0])
  59. {
  60. case "inv":
  61. {
  62. EntityVillager v = Utils.getTargetedEntity(p, 3, EntityVillager.class);
  63. if(v == null)
  64. {
  65. m.send(cs, "Du musst auf einen Villager gerichtet sein.");
  66. return true;
  67. }
  68. p.displayGUIChest(InventoryUtils.getInventory(v));
  69. return true;
  70. }
  71. case "trades":
  72. {
  73. EntityVillager v = Utils.getTargetedEntity(p, 3, EntityVillager.class);
  74. if(v == null)
  75. {
  76. m.send(cs, "Du musst auf einen Villager gerichtet sein.");
  77. return true;
  78. }
  79. EntityInventory inv = new EntityInventory("ChangeTrades - " + v.getEntityId(), 54, v);
  80. int i = 0;
  81. MerchantRecipeList list = v.getRecipes(null);
  82. if(list != null)
  83. {
  84. for(MerchantRecipe mr : list)
  85. {
  86. inv.setInventorySlotContents(i, mr.getItemToSell().copy());
  87. inv.setInventorySlotContents(i + 9, mr.getItemToBuy().copy());
  88. inv.setInventorySlotContents(i + 18, mr.getSecondItemToBuy().copy());
  89. i++;
  90. if(i >= 9)
  91. {
  92. i = 27;
  93. }
  94. if(i >= 36)
  95. {
  96. break;
  97. }
  98. }
  99. }
  100. p.displayGUIChest(inv);
  101. return true;
  102. }
  103. case "spawn":
  104. if(arg.length >= 2)
  105. {
  106. try
  107. {
  108. World w = p.getEntityWorld();
  109. EntityVillager v = new EntityVillager(w, Integer.parseInt(arg[1]));
  110. v.setPosition(p.posX, p.posY, p.posZ);
  111. v.setAIMoveSpeed(0);
  112. w.spawnEntity(v);
  113. return true;
  114. }
  115. catch(NumberFormatException ex)
  116. {
  117. m.send(cs, "Die ID ist ungültig.");
  118. }
  119. catch(IllegalArgumentException ex)
  120. {
  121. m.send(cs, "Dieser Typ von Villager existiert nicht.");
  122. }
  123. }
  124. break;
  125. case "child":
  126. if(arg.length >= 2)
  127. {
  128. try
  129. {
  130. World w = p.getEntityWorld();
  131. EntityVillager v = new EntityVillager(w, Integer.parseInt(arg[1]));
  132. v.setGrowingAge(Integer.MIN_VALUE);
  133. v.setPosition(p.posX, p.posY, p.posZ);
  134. v.setAIMoveSpeed(0);
  135. w.spawnEntity(v);
  136. return true;
  137. }
  138. catch(IllegalArgumentException ex)
  139. {
  140. m.send(cs, "Dieser Typ von Villager existiert nicht.");
  141. }
  142. }
  143. break;
  144. }
  145. }
  146. // Help Menu
  147. m.send(cs, "/villager ...");
  148. m.sendHelpListElement(cs, "inv", "Öffnet den Inventar eines Villagers");
  149. m.sendHelpListElement(cs, "trades", "Öffnet die Trades vom Villager");
  150. m.sendHelpListElement(cs, "spawn <profid>", "Spawnt einen Villager");
  151. m.sendHelpListElement(cs, "child <profid>", "Spawnt einen Villager");
  152. return true;
  153. }
  154. }