123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- package me.km.datatools;
- import me.km.api.GlobalText;
- import me.km.api.Module;
- import me.km.api.ModuleCommand;
- import me.km.api.Utils;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.List;
- import me.km.permissions.Permissions;
- import me.km.utils.EntityInventory;
- import me.km.utils.InventoryUtils;
- import net.minecraft.command.ICommandSender;
- import net.minecraft.entity.passive.EntityVillager;
- import net.minecraft.entity.player.EntityPlayerMP;
- import net.minecraft.server.MinecraftServer;
- import net.minecraft.util.math.BlockPos;
- import net.minecraft.village.MerchantRecipe;
- import net.minecraft.village.MerchantRecipeList;
- import net.minecraft.world.World;
- import net.minecraftforge.fml.common.registry.VillagerRegistry;
- public class CommandVillager extends ModuleCommand
- {
- private final ArrayList<String> vil;
-
- public CommandVillager(Module m)
- {
- super("villager", m);
- super.setDescription("Spezielle Commands für Villager");
- super.setUsage("/villager für die Hilfe");
- super.setPermission(Permissions.VILLAGER);
-
- vil = new ArrayList<>(Arrays.asList(new String[] {"inv", "trades", "spawn", "child"}));
- }
- @Override
- public List<String> getTabCompletions(MinecraftServer server, ICommandSender sender, String[] args, BlockPos targetPos)
- {
- List<String> names = new ArrayList<>();
- if(args.length == 1)
- {
- vil.stream().filter(e -> e.toLowerCase().startsWith(args[0].toLowerCase())).forEach(e ->
- {
- names.add(e);
- });
- return names;
- }
- return names;
- }
- @Override
- public boolean execute(ICommandSender cs, String[] arg)
- {
- if(!(cs instanceof EntityPlayerMP))
- {
- this.getModule().send(cs, GlobalText.onlyPlayer());
- return true;
- }
- EntityPlayerMP p = (EntityPlayerMP) cs;
- Module m = this.getModule();
- if(arg.length >= 1)
- {
- switch (arg[0])
- {
- case "inv":
- {
- EntityVillager v = Utils.getTargetedEntity(p, 3, EntityVillager.class);
- if(v == null)
- {
- m.send(cs, "Du musst auf einen Villager gerichtet sein.");
- return true;
- }
- p.displayGUIChest(InventoryUtils.getInventory(v));
- return true;
- }
- case "trades":
- {
- EntityVillager v = Utils.getTargetedEntity(p, 3, EntityVillager.class);
- if(v == null)
- {
- m.send(cs, "Du musst auf einen Villager gerichtet sein.");
- return true;
- }
- EntityInventory inv = new EntityInventory("ChangeTrades - " + v.getEntityId(), 54, v);
- int i = 0;
- MerchantRecipeList list = v.getRecipes(null);
- if(list != null)
- {
- for(MerchantRecipe mr : list)
- {
- inv.setInventorySlotContents(i, mr.getItemToSell().copy());
- inv.setInventorySlotContents(i + 9, mr.getItemToBuy().copy());
- inv.setInventorySlotContents(i + 18, mr.getSecondItemToBuy().copy());
- i++;
- if(i >= 9)
- {
- i = 27;
- }
- if(i >= 36)
- {
- break;
- }
- }
- }
- p.displayGUIChest(inv);
- return true;
- }
- case "spawn":
- if(arg.length >= 2)
- {
- try
- {
- World w = p.getEntityWorld();
- EntityVillager v = new EntityVillager(w, Integer.parseInt(arg[1]));
- v.setPosition(p.posX, p.posY, p.posZ);
- v.setAIMoveSpeed(0);
- w.spawnEntity(v);
- return true;
- }
- catch(NumberFormatException ex)
- {
- m.send(cs, "Die ID ist ungültig.");
- }
- catch(IllegalArgumentException ex)
- {
- m.send(cs, "Dieser Typ von Villager existiert nicht.");
- }
- }
- break;
- case "child":
- if(arg.length >= 2)
- {
- try
- {
- World w = p.getEntityWorld();
- EntityVillager v = new EntityVillager(w, Integer.parseInt(arg[1]));
- v.setGrowingAge(Integer.MIN_VALUE);
- v.setPosition(p.posX, p.posY, p.posZ);
- v.setAIMoveSpeed(0);
- w.spawnEntity(v);
- return true;
- }
- catch(IllegalArgumentException ex)
- {
- m.send(cs, "Dieser Typ von Villager existiert nicht.");
- }
- }
- break;
- }
- }
-
- m.send(cs, "/villager ...");
- m.sendHelpListElement(cs, "inv", "Öffnet den Inventar eines Villagers");
- m.sendHelpListElement(cs, "trades", "Öffnet die Trades vom Villager");
- m.sendHelpListElement(cs, "spawn <profid>", "Spawnt einen Villager");
- m.sendHelpListElement(cs, "child <profid>", "Spawnt einen Villager");
- return true;
- }
- }
|