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.server.MinecraftServer;
import net.minecraft.util.text.TextFormatting;
import net.minecraft.util.text.translation.I18n;
public class CommandModule extends CommandBase implements ICommand {
private List<String> nicknames;
public CommandModule() {
this.nicknames = new ArrayList<String>();
this.nicknames.add("module");
}
@Override
public int getRequiredPermissionLevel()
{
return 0;
}
@Override
public String getCommandName() {
return "module";
}
@Override
public List<String> getCommandAliases() {
return this.nicknames;
}
@Override
public String getCommandUsage(ICommandSender p_71518_1_) {
return I18n.translateToLocal("messages.command.module.usage");
}
@Override
public boolean checkPermission(MinecraftServer server, ICommandSender sender) {
return true;
}
@Override
public void execute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException{
if(args.length == 1){
if(args[0].matches("copy")){
EntityPlayer player = PlayerUtils.getPlayerFromName(sender.getName());
if(player.inventory.getCurrentItem() != null && player.inventory.getCurrentItem().getItem() instanceof ItemModule && ((ItemModule) player.inventory.getCurrentItem().getItem()).canNBTBeModified()){
mod_SecurityCraft.instance.setSavedModule(player.inventory.getCurrentItem().getTagCompound());
PlayerUtils.sendMessageToPlayer(player, I18n.translateToLocal("messages.module.manager"), I18n.translateToLocal("messages.module.saved"), TextFormatting.GREEN);
}else{
PlayerUtils.sendMessageToPlayer(player, I18n.translateToLocal("messages.module.manager"), I18n.translateToLocal("messages.module.notHoldingForData"), TextFormatting.RED);
}
return;
}else if(args[0].matches("paste")){
EntityPlayer player = PlayerUtils.getPlayerFromName(sender.getName());
if(mod_SecurityCraft.instance.getSavedModule() == null){
PlayerUtils.sendMessageToPlayer(player, I18n.translateToLocal("messages.module.manager"), I18n.translateToLocal("messages.module.nothingSaved"), TextFormatting.RED);
return;
}
if(player.inventory.getCurrentItem() != null && player.inventory.getCurrentItem().getItem() instanceof ItemModule && ((ItemModule) player.inventory.getCurrentItem().getItem()).canNBTBeModified()){
player.inventory.getCurrentItem().setTagCompound(mod_SecurityCraft.instance.getSavedModule());
mod_SecurityCraft.instance.setSavedModule(null);
PlayerUtils.sendMessageToPlayer(player, I18n.translateToLocal("messages.module.manager"), I18n.translateToLocal("messages.module.saved"), TextFormatting.GREEN);
}
return;
}
}else if(args.length == 2){
if(args[0].matches("add")){
EntityPlayer player = PlayerUtils.getPlayerFromName(sender.getName());
if(player.inventory.getCurrentItem() != null && player.inventory.getCurrentItem().getItem() instanceof ItemModule && ((ItemModule) player.inventory.getCurrentItem().getItem()).canNBTBeModified()){
if(player.inventory.getCurrentItem().getTagCompound() == null){
player.inventory.getCurrentItem().setTagCompound(new NBTTagCompound());
}
for(int i = 1; i <= 10; i++){
if(player.inventory.getCurrentItem().getTagCompound().hasKey("Player" + i) && player.inventory.getCurrentItem().getTagCompound().getString("Player" + i).matches(args[1])){
PlayerUtils.sendMessageToPlayer(player, I18n.translateToLocal("messages.module.manager"), I18n.translateToLocal("messages.module.alreadyContained").replace("#", args[1]), TextFormatting.RED);
return;
}
}
player.inventory.getCurrentItem().getTagCompound().setString("Player" + getNextSlot(player.inventory.getCurrentItem().getTagCompound()), args[1]);
PlayerUtils.sendMessageToPlayer(player, I18n.translateToLocal("messages.module.manager"), I18n.translateToLocal("messages.module.added").replace("#", args[1]), TextFormatting.GREEN);
return;
}else{
PlayerUtils.sendMessageToPlayer(player, I18n.translateToLocal("messages.module.manager"), I18n.translateToLocal("messages.module.notHoldingForModify"), TextFormatting.RED);
return;
}
}else if(args[0].matches("remove")){
EntityPlayer player = PlayerUtils.getPlayerFromName(sender.getName());
if(player.inventory.getCurrentItem() != null && player.inventory.getCurrentItem().getItem() instanceof ItemModule && ((ItemModule) player.inventory.getCurrentItem().getItem()).canNBTBeModified()){
if(player.inventory.getCurrentItem().getTagCompound() == null){
player.inventory.getCurrentItem().setTagCompound(new NBTTagCompound());
}
for(int i = 1; i <= 10; i++){
if(player.inventory.getCurrentItem().getTagCompound().hasKey("Player" + i) && player.inventory.getCurrentItem().getTagCompound().getString("Player" + i).matches(args[1])){
player.inventory.getCurrentItem().getTagCompound().removeTag("Player" + i);
}
}
PlayerUtils.sendMessageToPlayer(player, I18n.translateToLocal("messages.module.manager"), I18n.translateToLocal("messages.module.removed").replace("#", args[1]), TextFormatting.GREEN);
return;
}else{
PlayerUtils.sendMessageToPlayer(player, I18n.translateToLocal("messages.module.manager"), I18n.translateToLocal("messages.module.notHoldingForModify"), TextFormatting.RED);
return;
}
}
}
throw new WrongUsageException(I18n.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;
}
}