More progress

This commit is contained in:
Nicholas Ignoffo 2017-01-01 21:43:34 -08:00
parent 00d6f8eb46
commit d80afb18f0
64 changed files with 410 additions and 976 deletions

View file

@ -1,77 +1,46 @@
package WayofTime.bloodmagic.command;
import WayofTime.bloodmagic.command.sub.SubCommandBind;
import WayofTime.bloodmagic.command.sub.SubCommandHelp;
import WayofTime.bloodmagic.command.sub.SubCommandNetwork;
import WayofTime.bloodmagic.command.sub.SubCommandOrb;
import WayofTime.bloodmagic.util.helper.TextHelper;
import net.minecraft.command.CommandBase;
import net.minecraft.command.ICommandSender;
import net.minecraft.server.MinecraftServer;
import net.minecraft.util.text.TextComponentString;
import net.minecraftforge.server.command.CommandTreeBase;
import java.util.*;
public class CommandBloodMagic extends CommandBase
public class CommandBloodMagic extends CommandTreeBase
{
// TODO - Move this and sub commands to CommandTreeBase in 1.11. Much cleaner impl
private final List<String> aliases = new ArrayList<String>();
private final Map<String, ISubCommand> subCommands = new HashMap<String, ISubCommand>();
public CommandBloodMagic()
{
aliases.add("BloodMagic");
aliases.add("bloodmagic");
aliases.add("bloodMagic");
aliases.add("bm");
subCommands.put("help", new SubCommandHelp(this));
subCommands.put("network", new SubCommandNetwork(this));
subCommands.put("bind", new SubCommandBind(this));
subCommands.put("orb", new SubCommandOrb(this));
addSubcommand(new SubCommandBind());
addSubcommand(new SubCommandNetwork());
addSubcommand(new SubCommandOrb());
}
@Override
public String getCommandName()
public String getName()
{
return "/bloodmagic";
return "bloodmagic";
}
@Override
public int getRequiredPermissionLevel()
public String getUsage(ICommandSender sender)
{
return 2;
return "/bloodmagic help";
}
@Override
public String getCommandUsage(ICommandSender commandSender)
public static void displayHelpString(ICommandSender commandSender, String display, Object... info)
{
return getCommandName() + " help";
commandSender.sendMessage(new TextComponentString(TextHelper.localizeEffect(display, info)));
}
@Override
public List<String> getCommandAliases()
public static void displayErrorString(ICommandSender commandSender, String display, Object... info)
{
return aliases;
commandSender.sendMessage(new TextComponentString(TextHelper.localizeEffect(display, info)));
}
@Override
public void execute(MinecraftServer server, ICommandSender commandSender, String[] args)
public static void displaySuccessString(ICommandSender commandSender, String display, Object... info)
{
if (args.length > 0 && subCommands.containsKey(args[0]))
{
ISubCommand subCommand = subCommands.get(args[0]);
String[] subArgs = Arrays.copyOfRange(args, 1, args.length);
subCommand.processSubCommand(server, commandSender, subArgs);
} else
{
commandSender.addChatMessage(new TextComponentString(TextHelper.localizeEffect("commands.error.unknown")));
}
}
public Map<String, ISubCommand> getSubCommands()
{
return subCommands;
commandSender.sendMessage(new TextComponentString(TextHelper.localizeEffect(display, info)));
}
}

View file

@ -1,19 +0,0 @@
package WayofTime.bloodmagic.command;
import net.minecraft.command.ICommand;
import net.minecraft.command.ICommandSender;
import net.minecraft.server.MinecraftServer;
public interface ISubCommand
{
String getSubCommandName();
ICommand getParentCommand();
String getArgUsage(ICommandSender commandSender);
String getHelpText();
void processSubCommand(MinecraftServer server, ICommandSender commandSender, String[] args);
}

View file

@ -1,70 +0,0 @@
package WayofTime.bloodmagic.command;
import WayofTime.bloodmagic.util.helper.TextHelper;
import net.minecraft.command.ICommand;
import net.minecraft.command.ICommandSender;
import net.minecraft.server.MinecraftServer;
import net.minecraft.util.text.TextComponentString;
import java.util.Locale;
public abstract class SubCommandBase implements ISubCommand
{
private ICommand parent;
private String name;
public SubCommandBase(ICommand parent, String name)
{
this.parent = parent;
this.name = name;
}
@Override
public String getSubCommandName()
{
return name;
}
@Override
public ICommand getParentCommand()
{
return parent;
}
@Override
public void processSubCommand(MinecraftServer server, ICommandSender commandSender, String[] args)
{
if (args.length == 0 && !getSubCommandName().equals("help"))
displayErrorString(commandSender, String.format(TextHelper.localizeEffect("commands.format.error"), capitalizeFirstLetter(getSubCommandName()), getArgUsage(commandSender)));
if (isBounded(0, 2, args.length) && args[0].equals("help"))
displayHelpString(commandSender, String.format(TextHelper.localizeEffect("commands.format.help"), capitalizeFirstLetter(getSubCommandName()), getHelpText()));
}
protected String capitalizeFirstLetter(String toCapital)
{
return String.valueOf(toCapital.charAt(0)).toUpperCase(Locale.ENGLISH) + toCapital.substring(1);
}
protected boolean isBounded(int low, int high, int given)
{
return given > low && given < high;
}
public static void displayHelpString(ICommandSender commandSender, String display, Object... info)
{
commandSender.addChatMessage(new TextComponentString(TextHelper.localizeEffect(display, info)));
}
public static void displayErrorString(ICommandSender commandSender, String display, Object... info)
{
commandSender.addChatMessage(new TextComponentString(TextHelper.localizeEffect(display, info)));
}
public static void displaySuccessString(ICommandSender commandSender, String display, Object... info)
{
commandSender.addChatMessage(new TextComponentString(TextHelper.localizeEffect(display, info)));
}
}

View file

@ -1,7 +0,0 @@
@ParametersAreNonnullByDefault
@MethodsReturnNonnullByDefault
package WayofTime.bloodmagic.command;
import mcp.MethodsReturnNonnullByDefault;
import javax.annotation.ParametersAreNonnullByDefault;

View file

@ -4,43 +4,31 @@ 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.CommandBase;
import net.minecraft.command.ICommand;
import net.minecraft.command.ICommandSender;
import net.minecraft.command.PlayerNotFoundException;
import net.minecraft.command.*;
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 SubCommandBase
public class SubCommandBind extends CommandBase
{
public SubCommandBind(ICommand parent)
@Override
public String getName()
{
super(parent, "bind");
return "bind";
}
@Override
public String getArgUsage(ICommandSender commandSender)
public String getUsage(ICommandSender commandSender)
{
return TextHelper.localizeEffect("commands.bind.usage");
}
@Override
public String getHelpText()
public void execute(MinecraftServer server, ICommandSender commandSender, String[] args) throws CommandException
{
return TextHelper.localizeEffect("commands.bind.help");
}
@Override
public void processSubCommand(MinecraftServer server, ICommandSender commandSender, String[] args)
{
super.processSubCommand(server, commandSender, args);
if (commandSender.getEntityWorld().isRemote)
return;
@ -52,7 +40,7 @@ public class SubCommandBind extends SubCommandBase
ItemStack held = player.getHeldItemMainhand();
boolean bind = true;
if (held != null && held.getItem() instanceof IBindable)
if (held.getItem() instanceof IBindable)
{
if (args.length > 0)
{
@ -77,20 +65,20 @@ public class SubCommandBind extends SubCommandBase
{
BindableHelper.setItemOwnerName(held, playerName);
BindableHelper.setItemOwnerUUID(held, uuid);
commandSender.addChatMessage(new TextComponentTranslation("commands.bind.success"));
commandSender.sendMessage(new TextComponentTranslation("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 TextComponentTranslation("commands.bind.remove.success"));
commandSender.sendMessage(new TextComponentTranslation("commands.bind.remove.success"));
}
}
}
} catch (PlayerNotFoundException e)
{
commandSender.addChatMessage(new TextComponentTranslation(TextHelper.localizeEffect("commands.error.404")));
commandSender.sendMessage(new TextComponentTranslation(TextHelper.localizeEffect("commands.error.404")));
}
}

View file

@ -1,43 +0,0 @@
package WayofTime.bloodmagic.command.sub;
import WayofTime.bloodmagic.command.CommandBloodMagic;
import WayofTime.bloodmagic.command.ISubCommand;
import WayofTime.bloodmagic.command.SubCommandBase;
import WayofTime.bloodmagic.util.helper.TextHelper;
import net.minecraft.command.ICommand;
import net.minecraft.command.ICommandSender;
import net.minecraft.server.MinecraftServer;
import net.minecraft.util.text.TextComponentString;
public class SubCommandHelp extends SubCommandBase
{
public SubCommandHelp(ICommand parent)
{
super(parent, "help");
}
@Override
public String getArgUsage(ICommandSender commandSender)
{
return TextHelper.localize("commands.help.usage");
}
@Override
public String getHelpText()
{
return TextHelper.localizeEffect("commands.help.help");
}
@Override
public void processSubCommand(MinecraftServer server, ICommandSender commandSender, String[] args)
{
super.processSubCommand(server, commandSender, args);
if (args.length > 0)
return;
for (ISubCommand subCommand : ((CommandBloodMagic) getParentCommand()).getSubCommands().values())
commandSender.addChatMessage(new TextComponentString(TextHelper.localizeEffect("commands.format.help", capitalizeFirstLetter(subCommand.getSubCommandName()), subCommand.getArgUsage(commandSender))));
}
}

View file

@ -2,45 +2,32 @@ package WayofTime.bloodmagic.command.sub;
import WayofTime.bloodmagic.api.saving.SoulNetwork;
import WayofTime.bloodmagic.api.util.helper.NetworkHelper;
import WayofTime.bloodmagic.command.SubCommandBase;
import WayofTime.bloodmagic.command.CommandBloodMagic;
import WayofTime.bloodmagic.util.Utils;
import WayofTime.bloodmagic.util.helper.TextHelper;
import net.minecraft.command.CommandBase;
import net.minecraft.command.ICommand;
import net.minecraft.command.ICommandSender;
import net.minecraft.command.PlayerNotFoundException;
import net.minecraft.command.*;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.server.MinecraftServer;
import net.minecraft.util.text.TextComponentString;
import java.util.Locale;
public class SubCommandNetwork extends SubCommandBase
public class SubCommandNetwork extends CommandBase
{
public SubCommandNetwork(ICommand parent)
{
super(parent, "network");
@Override
public String getName() {
return "network";
}
@Override
public String getArgUsage(ICommandSender commandSender)
public String getUsage(ICommandSender commandSender)
{
return TextHelper.localizeEffect("commands.network.usage");
}
@Override
public String getHelpText()
public void execute(MinecraftServer server, ICommandSender commandSender, String[] args) throws CommandException
{
return TextHelper.localizeEffect("commands.network.help");
}
@Override
public void processSubCommand(MinecraftServer server, ICommandSender commandSender, String[] args)
{
super.processSubCommand(server, commandSender, args);
if (args.length > 1)
{
if (args[0].equalsIgnoreCase("help"))
@ -53,18 +40,18 @@ public class SubCommandNetwork extends SubCommandBase
try
{
ValidCommands command = ValidCommands.valueOf(args[0].toUpperCase(Locale.ENGLISH));
command.run(player, commandSender, isBounded(0, 2, args.length), args);
command.run(player, commandSender, args.length > 0 && args.length < 2, args);
} catch (IllegalArgumentException e)
{
}
} catch (PlayerNotFoundException e)
{
displayErrorString(commandSender, e.getLocalizedMessage());
CommandBloodMagic.displayErrorString(commandSender, e.getLocalizedMessage());
}
} else
{
displayErrorString(commandSender, "commands.error.arg.missing");
CommandBloodMagic.displayErrorString(commandSender, "commands.error.arg.missing");
}
}
@ -77,7 +64,7 @@ public class SubCommandNetwork extends SubCommandBase
{
if (displayHelp)
{
displayHelpString(sender, this.help);
CommandBloodMagic.displayHelpString(sender, this.help);
return;
}
@ -87,14 +74,14 @@ public class SubCommandNetwork extends SubCommandBase
{
int amount = Integer.parseInt(args[2]);
NetworkHelper.syphonAndDamage(NetworkHelper.getSoulNetwork(player), player, amount);
displaySuccessString(sender, "commands.network.syphon.success", amount, player.getDisplayName().getFormattedText());
CommandBloodMagic.displaySuccessString(sender, "commands.network.syphon.success", amount, player.getDisplayName().getFormattedText());
} else
{
displayErrorString(sender, "commands.error.arg.invalid");
CommandBloodMagic.displayErrorString(sender, "commands.error.arg.invalid");
}
} else
{
displayErrorString(sender, "commands.error.arg.missing");
CommandBloodMagic.displayErrorString(sender, "commands.error.arg.missing");
}
}
},
@ -105,7 +92,7 @@ public class SubCommandNetwork extends SubCommandBase
{
if (displayHelp)
{
displayHelpString(sender, this.help);
CommandBloodMagic.displayHelpString(sender, this.help);
return;
}
@ -117,14 +104,14 @@ public class SubCommandNetwork extends SubCommandBase
{
int amount = Integer.parseInt(args[2]);
int maxOrb = NetworkHelper.getMaximumForTier(network.getOrbTier());
displaySuccessString(sender, "commands.network.add.success", network.add(amount, maxOrb), player.getDisplayName().getFormattedText());
CommandBloodMagic.displaySuccessString(sender, "commands.network.add.success", network.add(amount, maxOrb), player.getDisplayName().getFormattedText());
} else
{
displayErrorString(sender, "commands.error.arg.invalid");
CommandBloodMagic.displayErrorString(sender, "commands.error.arg.invalid");
}
} else
{
displayErrorString(sender, "commands.error.arg.missing");
CommandBloodMagic.displayErrorString(sender, "commands.error.arg.missing");
}
}
},
@ -135,7 +122,7 @@ public class SubCommandNetwork extends SubCommandBase
{
if (displayHelp)
{
displayHelpString(sender, this.help);
CommandBloodMagic.displayHelpString(sender, this.help);
return;
}
@ -147,14 +134,14 @@ public class SubCommandNetwork extends SubCommandBase
{
int amount = Integer.parseInt(args[2]);
network.setCurrentEssence(amount);
displaySuccessString(sender, "commands.network.set.success", player.getDisplayName().getFormattedText(), amount);
CommandBloodMagic.displaySuccessString(sender, "commands.network.set.success", player.getDisplayName().getFormattedText(), amount);
} else
{
displayErrorString(sender, "commands.error.arg.invalid");
CommandBloodMagic.displayErrorString(sender, "commands.error.arg.invalid");
}
} else
{
displayErrorString(sender, "commands.error.arg.missing");
CommandBloodMagic.displayErrorString(sender, "commands.error.arg.missing");
}
}
},
@ -165,14 +152,14 @@ public class SubCommandNetwork extends SubCommandBase
{
if (displayHelp)
{
displayHelpString(sender, this.help);
CommandBloodMagic.displayHelpString(sender, this.help);
return;
}
SoulNetwork network = NetworkHelper.getSoulNetwork(player);
if (args.length > 1)
sender.addChatMessage(new TextComponentString(TextHelper.localizeEffect("tooltip.BloodMagic.sigil.divination.currentEssence", network.getCurrentEssence())));
sender.sendMessage(new TextComponentString(TextHelper.localizeEffect("tooltip.BloodMagic.sigil.divination.currentEssence", network.getCurrentEssence())));
}
},
@ -183,7 +170,7 @@ public class SubCommandNetwork extends SubCommandBase
{
if (displayHelp)
{
displayHelpString(sender, this.help, Integer.MAX_VALUE);
CommandBloodMagic.displayHelpString(sender, this.help, Integer.MAX_VALUE);
return;
}
@ -192,7 +179,7 @@ public class SubCommandNetwork extends SubCommandBase
if (args.length > 1)
{
network.setCurrentEssence(Integer.MAX_VALUE);
displaySuccessString(sender, "commands.network.fill.success", player.getDisplayName().getFormattedText());
CommandBloodMagic.displaySuccessString(sender, "commands.network.fill.success", player.getDisplayName().getFormattedText());
}
}
},
@ -203,7 +190,7 @@ public class SubCommandNetwork extends SubCommandBase
{
if (displayHelp)
{
displayHelpString(sender, this.help);
CommandBloodMagic.displayHelpString(sender, this.help);
return;
}
@ -213,7 +200,7 @@ public class SubCommandNetwork extends SubCommandBase
{
int maxOrb = NetworkHelper.getMaximumForTier(network.getOrbTier());
network.setCurrentEssence(maxOrb);
displaySuccessString(sender, "commands.network.cap.success", player.getDisplayName().getFormattedText());
CommandBloodMagic.displaySuccessString(sender, "commands.network.cap.success", player.getDisplayName().getFormattedText());
}
}
},

View file

@ -3,44 +3,32 @@ package WayofTime.bloodmagic.command.sub;
import WayofTime.bloodmagic.api.saving.SoulNetwork;
import WayofTime.bloodmagic.api.util.helper.NetworkHelper;
import WayofTime.bloodmagic.api.util.helper.PlayerHelper;
import WayofTime.bloodmagic.command.SubCommandBase;
import WayofTime.bloodmagic.command.CommandBloodMagic;
import WayofTime.bloodmagic.util.Utils;
import WayofTime.bloodmagic.util.helper.TextHelper;
import net.minecraft.command.CommandBase;
import net.minecraft.command.ICommand;
import net.minecraft.command.ICommandSender;
import net.minecraft.command.PlayerNotFoundException;
import net.minecraft.command.*;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.server.MinecraftServer;
import net.minecraft.util.text.TextComponentString;
import java.util.Locale;
public class SubCommandOrb extends SubCommandBase
public class SubCommandOrb extends CommandBase
{
public SubCommandOrb(ICommand parent)
{
super(parent, "orb");
@Override
public String getName() {
return "orb";
}
@Override
public String getArgUsage(ICommandSender commandSender)
public String getUsage(ICommandSender commandSender)
{
return TextHelper.localizeEffect("commands.orb.usage");
}
@Override
public String getHelpText()
public void execute(MinecraftServer server, ICommandSender commandSender, String[] args) throws CommandException
{
return TextHelper.localizeEffect("commands.orb.help");
}
@Override
public void processSubCommand(MinecraftServer server, ICommandSender commandSender, String[] args)
{
super.processSubCommand(server, commandSender, args);
if (args.length > 0)
{
@ -58,7 +46,7 @@ public class SubCommandOrb extends SubCommandBase
String uuid = PlayerHelper.getUUIDFromPlayer(player).toString();
SoulNetwork network = NetworkHelper.getSoulNetwork(uuid);
boolean displayHelp = isBounded(0, 2, args.length);
boolean displayHelp = args.length > 0 && args.length < 2;
try
{
@ -68,7 +56,7 @@ public class SubCommandOrb extends SubCommandBase
{
if (displayHelp)
{
displayHelpString(commandSender, ValidCommands.SET.help);
CommandBloodMagic.displayHelpString(commandSender, ValidCommands.SET.help);
break;
}
@ -78,14 +66,14 @@ public class SubCommandOrb extends SubCommandBase
{
int amount = Integer.parseInt(args[2]);
network.setOrbTier(amount);
displaySuccessString(commandSender, "commands.success");
CommandBloodMagic.displaySuccessString(commandSender, "commands.success");
} else
{
displayErrorString(commandSender, "commands.error.arg.invalid");
CommandBloodMagic.displayErrorString(commandSender, "commands.error.arg.invalid");
}
} else
{
displayErrorString(commandSender, "commands.error.arg.missing");
CommandBloodMagic.displayErrorString(commandSender, "commands.error.arg.missing");
}
break;
@ -94,23 +82,23 @@ public class SubCommandOrb extends SubCommandBase
{
if (displayHelp)
{
displayHelpString(commandSender, ValidCommands.GET.help);
CommandBloodMagic.displayHelpString(commandSender, ValidCommands.GET.help);
break;
}
if (args.length > 1)
commandSender.addChatMessage(new TextComponentString(TextHelper.localizeEffect("message.orb.currenttier", network.getOrbTier())));
commandSender.sendMessage(new TextComponentString(TextHelper.localizeEffect("message.orb.currenttier", network.getOrbTier())));
break;
}
}
} catch (IllegalArgumentException e)
{
displayErrorString(commandSender, "commands.error.404");
CommandBloodMagic.displayErrorString(commandSender, "commands.error.404");
}
} catch (PlayerNotFoundException e)
{
displayErrorString(commandSender, "commands.error.404");
CommandBloodMagic.displayErrorString(commandSender, "commands.error.404");
}
}
}