package WayofTime.bloodmagic.command.sub; import WayofTime.bloodmagic.api.Constants; import WayofTime.bloodmagic.api.iface.IBindable; import WayofTime.bloodmagic.api.util.helper.BindableHelper; import WayofTime.bloodmagic.api.util.helper.PlayerHelper; import WayofTime.bloodmagic.command.SubCommandBase; import WayofTime.bloodmagic.util.helper.TextHelper; import com.google.common.base.Strings; import net.minecraft.command.ICommand; import net.minecraft.command.ICommandSender; import net.minecraft.command.PlayerNotFoundException; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.ChatComponentText; import net.minecraft.util.ChatComponentTranslation; public class SubCommandBind extends SubCommandBase { public SubCommandBind(ICommand parent) { super(parent, "bind"); } @Override public String getArgUsage(ICommandSender commandSender) { return TextHelper.localizeEffect("commands.bind.usage"); } @Override public String getHelpText() { return TextHelper.localizeEffect("commands.bind.help"); } @Override public void processSubCommand(ICommandSender commandSender, String[] args) { super.processSubCommand(commandSender, args); if (commandSender.getEntityWorld().isRemote) return; try { EntityPlayer player = getCommandSenderAsPlayer(commandSender); String playerName = player.getName(); String uuid = PlayerHelper.getUUIDFromPlayer(player).toString(); ItemStack held = player.getHeldItem(); boolean bind = true; if (held != null && held.getItem() instanceof IBindable) { if (args.length > 0) { if (args[0].equalsIgnoreCase("help")) return; if (isBoolean(args[0])) { bind = Boolean.parseBoolean(args[0]); if (args.length > 2) playerName = args[1]; } else { playerName = args[0]; uuid = PlayerHelper.getUUIDFromPlayer(getPlayer(commandSender, playerName)).toString(); } } if (bind) { BindableHelper.setItemOwnerName(held, playerName); BindableHelper.setItemOwnerUUID(held, uuid); commandSender.addChatMessage(new ChatComponentTranslation("commands.bind.success")); } else { if (!Strings.isNullOrEmpty(((IBindable) held.getItem()).getOwnerUUID(held))) { held.getTagCompound().removeTag(Constants.NBT.OWNER_UUID); held.getTagCompound().removeTag(Constants.NBT.OWNER_NAME); commandSender.addChatMessage(new ChatComponentTranslation("commands.bind.remove.success")); } } } } catch (PlayerNotFoundException e) { commandSender.addChatMessage(new ChatComponentText(TextHelper.localizeEffect("commands.error.404"))); } } private boolean isBoolean(String string) { return string.equalsIgnoreCase("true") || string.equalsIgnoreCase("false"); } }