package net.geforcemods.securitycraft.commands; import java.util.ArrayList; import java.util.List; import net.geforcemods.securitycraft.items.ItemModule; import net.geforcemods.securitycraft.main.mod_SecurityCraft; import net.geforcemods.securitycraft.util.PlayerUtils; import net.minecraft.command.CommandBase; import net.minecraft.command.CommandException; import net.minecraft.command.ICommand; import net.minecraft.command.ICommandSender; import net.minecraft.command.WrongUsageException; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.StatCollector; public class CommandModule extends CommandBase implements ICommand { private List<String> nicknames; public CommandModule() { this.nicknames = new ArrayList<String>(); this.nicknames.add("module"); } public int getRequiredPermissionLevel() { return 0; } public String getName() { return "module"; } public List<String> getAliases() { return this.nicknames; } public String getCommandUsage(ICommandSender p_71518_1_) { return StatCollector.translateToLocal("messages.command.module.usage"); } public boolean canCommandSenderUse(ICommandSender p_71519_1_) { return true; } public void execute(ICommandSender par1ICommandSender, String[] par2String) throws CommandException{ if(par2String.length == 1){ if(par2String[0].matches("copy")){ EntityPlayer player = PlayerUtils.getPlayerFromName(par1ICommandSender.getName()); if(player.getCurrentEquippedItem() != null && player.getCurrentEquippedItem().getItem() instanceof ItemModule && ((ItemModule) player.getCurrentEquippedItem().getItem()).canNBTBeModified()){ mod_SecurityCraft.instance.setSavedModule(player.getCurrentEquippedItem().getTagCompound()); PlayerUtils.sendMessageToPlayer(player, StatCollector.translateToLocal("messages.module.manager"), StatCollector.translateToLocal("messages.module.saved"), EnumChatFormatting.GREEN); }else{ PlayerUtils.sendMessageToPlayer(player, StatCollector.translateToLocal("messages.module.manager"), StatCollector.translateToLocal("messages.module.notHoldingForData"), EnumChatFormatting.RED); } return; }else if(par2String[0].matches("paste")){ EntityPlayer player = PlayerUtils.getPlayerFromName(par1ICommandSender.getName()); if(mod_SecurityCraft.instance.getSavedModule() == null){ PlayerUtils.sendMessageToPlayer(player, StatCollector.translateToLocal("messages.module.manager"), StatCollector.translateToLocal("messages.module.nothingSaved"), EnumChatFormatting.RED); return; } if(player.getCurrentEquippedItem() != null && player.getCurrentEquippedItem().getItem() instanceof ItemModule && ((ItemModule) player.getCurrentEquippedItem().getItem()).canNBTBeModified()){ player.getCurrentEquippedItem().setTagCompound(mod_SecurityCraft.instance.getSavedModule()); mod_SecurityCraft.instance.setSavedModule(null); PlayerUtils.sendMessageToPlayer(player, StatCollector.translateToLocal("messages.module.manager"), StatCollector.translateToLocal("messages.module.saved"), EnumChatFormatting.GREEN); } return; } }else if(par2String.length == 2){ if(par2String[0].matches("add")){ EntityPlayer player = PlayerUtils.getPlayerFromName(par1ICommandSender.getName()); if(player.getCurrentEquippedItem() != null && player.getCurrentEquippedItem().getItem() instanceof ItemModule && ((ItemModule) player.getCurrentEquippedItem().getItem()).canNBTBeModified()){ if(player.getCurrentEquippedItem().getTagCompound() == null){ player.getCurrentEquippedItem().setTagCompound(new NBTTagCompound()); } for(int i = 1; i <= 10; i++){ if(player.getCurrentEquippedItem().getTagCompound().hasKey("Player" + i) && player.getCurrentEquippedItem().getTagCompound().getString("Player" + i).matches(par2String[1])){ PlayerUtils.sendMessageToPlayer(player, StatCollector.translateToLocal("messages.module.manager"), StatCollector.translateToLocal("messages.module.alreadyContained").replace("#", par2String[1]), EnumChatFormatting.RED); return; } } player.getCurrentEquippedItem().getTagCompound().setString("Player" + getNextSlot(player.getCurrentEquippedItem().getTagCompound()), par2String[1]); PlayerUtils.sendMessageToPlayer(player, StatCollector.translateToLocal("messages.module.manager"), StatCollector.translateToLocal("messages.module.added").replace("#", par2String[1]), EnumChatFormatting.GREEN); return; }else{ PlayerUtils.sendMessageToPlayer(player, StatCollector.translateToLocal("messages.module.manager"), StatCollector.translateToLocal("messages.module.notHoldingForModify"), EnumChatFormatting.RED); return; } }else if(par2String[0].matches("remove")){ EntityPlayer player = PlayerUtils.getPlayerFromName(par1ICommandSender.getName()); if(player.getCurrentEquippedItem() != null && player.getCurrentEquippedItem().getItem() instanceof ItemModule && ((ItemModule) player.getCurrentEquippedItem().getItem()).canNBTBeModified()){ if(player.getCurrentEquippedItem().getTagCompound() == null){ player.getCurrentEquippedItem().setTagCompound(new NBTTagCompound()); } for(int i = 1; i <= 10; i++){ if(player.getCurrentEquippedItem().getTagCompound().hasKey("Player" + i) && player.getCurrentEquippedItem().getTagCompound().getString("Player" + i).matches(par2String[1])){ player.getCurrentEquippedItem().getTagCompound().removeTag("Player" + i); } } PlayerUtils.sendMessageToPlayer(player, StatCollector.translateToLocal("messages.module.manager"), StatCollector.translateToLocal("messages.module.removed").replace("#", par2String[1]), EnumChatFormatting.GREEN); return; }else{ PlayerUtils.sendMessageToPlayer(player, StatCollector.translateToLocal("messages.module.manager"), StatCollector.translateToLocal("messages.module.notHoldingForModify"), EnumChatFormatting.RED); return; } } } throw new WrongUsageException(StatCollector.translateToLocal("messages.command.module.usage")); } private int getNextSlot(NBTTagCompound stackTagCompound) { for(int i = 1; i <= 10; i++){ if(stackTagCompound.getString("Player" + i) != null && !stackTagCompound.getString("Player" + i).isEmpty()){ continue; }else{ return i; } } return 0; } public int compareTo(Object par1Obj) { return this.compareTo((ICommand)par1Obj); } }