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

82 lines
3 KiB
Java

package WayofTime.bloodmagic.command.sub;
import WayofTime.bloodmagic.core.data.Binding;
import WayofTime.bloodmagic.util.Constants;
import WayofTime.bloodmagic.iface.IBindable;
import WayofTime.bloodmagic.util.helper.BindableHelper;
import WayofTime.bloodmagic.util.helper.PlayerHelper;
import WayofTime.bloodmagic.util.helper.TextHelper;
import com.google.common.base.Strings;
import net.minecraft.command.CommandBase;
import net.minecraft.command.CommandException;
import net.minecraft.command.ICommandSender;
import net.minecraft.command.PlayerNotFoundException;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.server.MinecraftServer;
import net.minecraft.util.text.TextComponentTranslation;
public class SubCommandBind extends CommandBase {
@Override
public String getName() {
return "bind";
}
@Override
public String getUsage(ICommandSender commandSender) {
return TextHelper.localizeEffect("commands.bind.usage");
}
@Override
public int getRequiredPermissionLevel() {
return 2;
}
@Override
public void execute(MinecraftServer server, ICommandSender commandSender, String[] args) throws CommandException {
if (commandSender.getEntityWorld().isRemote)
return;
try {
EntityPlayer player = CommandBase.getCommandSenderAsPlayer(commandSender);
ItemStack held = player.getHeldItemMainhand();
boolean bind = true;
if (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)
player = CommandBase.getPlayer(server, commandSender, args[1]);
} else {
player = CommandBase.getPlayer(server, commandSender, args[0]);
}
}
if (bind) {
Binding binding = new Binding(player.getGameProfile().getId(), player.getGameProfile().getName());
BindableHelper.applyBinding(held, binding);
commandSender.sendMessage(new TextComponentTranslation("commands.bind.success"));
} else {
Binding binding = ((IBindable) held.getItem()).getBinding(held);
if (binding != null) {
held.getTagCompound().removeTag("binding");
commandSender.sendMessage(new TextComponentTranslation("commands.bind.remove.success"));
}
}
}
} catch (PlayerNotFoundException e) {
commandSender.sendMessage(new TextComponentTranslation(TextHelper.localizeEffect("commands.error.404")));
}
}
private boolean isBoolean(String string) {
return string.equalsIgnoreCase("true") || string.equalsIgnoreCase("false");
}
}