BloodMagic/src/main/java/WayofTime/bloodmagic/command/sub/SubCommandBind.java

86 lines
3.2 KiB
Java
Raw Normal View History

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");
}
}