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

84 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.util.helper.TextHelper;
import com.google.common.base.Strings;
2017-08-15 21:30:48 -07:00
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;
2017-08-15 21:30:48 -07:00
public class SubCommandBind extends CommandBase {
@Override
2017-08-15 21:30:48 -07:00
public String getName() {
2017-01-01 21:43:34 -08:00
return "bind";
}
@Override
2017-08-15 21:30:48 -07:00
public String getUsage(ICommandSender commandSender) {
2017-01-01 21:43:34 -08:00
return TextHelper.localizeEffect("commands.bind.usage");
}
@Override
2017-08-15 21:30:48 -07:00
public int getRequiredPermissionLevel() {
return 2;
}
@Override
2017-08-15 21:30:48 -07:00
public void execute(MinecraftServer server, ICommandSender commandSender, String[] args) throws CommandException {
if (commandSender.getEntityWorld().isRemote)
return;
2017-08-15 21:30:48 -07:00
try {
EntityPlayer player = CommandBase.getCommandSenderAsPlayer(commandSender);
String playerName = player.getName();
String uuid = PlayerHelper.getUUIDFromPlayer(player).toString();
ItemStack held = player.getHeldItemMainhand();
boolean bind = true;
2017-08-15 21:30:48 -07:00
if (held.getItem() instanceof IBindable) {
if (args.length > 0) {
if (args[0].equalsIgnoreCase("help"))
return;
2017-08-15 21:30:48 -07:00
if (isBoolean(args[0])) {
bind = Boolean.parseBoolean(args[0]);
if (args.length > 2)
playerName = args[1];
2017-08-15 21:30:48 -07:00
} else {
playerName = args[0];
uuid = PlayerHelper.getUUIDFromPlayer(CommandBase.getPlayer(server, commandSender, playerName)).toString();
}
}
2017-08-15 21:30:48 -07:00
if (bind) {
BindableHelper.setItemOwnerName(held, playerName);
BindableHelper.setItemOwnerUUID(held, uuid);
2017-01-01 21:43:34 -08:00
commandSender.sendMessage(new TextComponentTranslation("commands.bind.success"));
2017-08-15 21:30:48 -07:00
} else {
if (!Strings.isNullOrEmpty(((IBindable) held.getItem()).getOwnerUUID(held))) {
held.getTagCompound().removeTag(Constants.NBT.OWNER_UUID);
held.getTagCompound().removeTag(Constants.NBT.OWNER_NAME);
2017-01-01 21:43:34 -08:00
commandSender.sendMessage(new TextComponentTranslation("commands.bind.remove.success"));
}
}
}
2017-08-15 21:30:48 -07:00
} catch (PlayerNotFoundException e) {
2017-01-01 21:43:34 -08:00
commandSender.sendMessage(new TextComponentTranslation(TextHelper.localizeEffect("commands.error.404")));
}
}
2017-08-15 21:30:48 -07:00
private boolean isBoolean(String string) {
return string.equalsIgnoreCase("true") || string.equalsIgnoreCase("false");
}
}