Fix commands for usage in Command Blocks (#748)

This commit is contained in:
Nicholas Ignoffo 2016-05-28 05:19:50 -07:00
parent a37cf7d60b
commit 439e830105
2 changed files with 155 additions and 154 deletions

View file

@ -53,17 +53,17 @@ public abstract class SubCommandBase implements ISubCommand
return given > low && given < high; return given > low && given < high;
} }
protected void displayHelpString(ICommandSender commandSender, String display, Object... info) public static void displayHelpString(ICommandSender commandSender, String display, Object... info)
{ {
commandSender.addChatMessage(new TextComponentString(TextHelper.localizeEffect(display, info))); commandSender.addChatMessage(new TextComponentString(TextHelper.localizeEffect(display, info)));
} }
protected void displayErrorString(ICommandSender commandSender, String display, Object... info) public static void displayErrorString(ICommandSender commandSender, String display, Object... info)
{ {
commandSender.addChatMessage(new TextComponentString(TextHelper.localizeEffect(display, info))); commandSender.addChatMessage(new TextComponentString(TextHelper.localizeEffect(display, info)));
} }
protected void displaySuccessString(ICommandSender commandSender, String display, Object... info) public static void displaySuccessString(ICommandSender commandSender, String display, Object... info)
{ {
commandSender.addChatMessage(new TextComponentString(TextHelper.localizeEffect(display, info))); commandSender.addChatMessage(new TextComponentString(TextHelper.localizeEffect(display, info)));
} }

View file

@ -10,6 +10,7 @@ import net.minecraft.command.ICommand;
import net.minecraft.command.ICommandSender; import net.minecraft.command.ICommandSender;
import net.minecraft.command.PlayerNotFoundException; import net.minecraft.command.PlayerNotFoundException;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.server.MinecraftServer; import net.minecraft.server.MinecraftServer;
import net.minecraft.util.text.TextComponentString; import net.minecraft.util.text.TextComponentString;
@ -40,174 +41,172 @@ public class SubCommandNetwork extends SubCommandBase
{ {
super.processSubCommand(server, commandSender, args); super.processSubCommand(server, commandSender, args);
if (args.length > 0) if (args.length > 1)
{ {
if (args[0].equalsIgnoreCase("help")) if (args[0].equalsIgnoreCase("help"))
return; return;
try try
{ {
String givenName = commandSender.getName(); EntityPlayer player = CommandBase.getPlayer(server, commandSender, args[1]);
EntityPlayer player = CommandBase.getCommandSenderAsPlayer(commandSender);
if (args.length > 1) try {
{ ValidCommands command = ValidCommands.valueOf(args[0].toUpperCase(Locale.ENGLISH));
givenName = args[1]; command.run(player, commandSender, isBounded(0, 2, args.length), args);
player = CommandBase.getPlayer(server, commandSender, givenName); } catch (IllegalArgumentException e) {
}
SoulNetwork network = NetworkHelper.getSoulNetwork(player);
boolean displayHelp = isBounded(0, 2, args.length);
try
{
switch (ValidCommands.valueOf(args[0].toUpperCase(Locale.ENGLISH)))
{
case SYPHON:
{
if (displayHelp)
{
displayHelpString(commandSender, ValidCommands.SYPHON.help);
break;
}
if (args.length == 3)
{
if (Utils.isInteger(args[2]))
{
int amount = Integer.parseInt(args[2]);
NetworkHelper.syphonAndDamage(NetworkHelper.getSoulNetwork(player), player, amount);
displaySuccessString(commandSender, "commands.network.syphon.success", amount, givenName);
} else
{
displayErrorString(commandSender, "commands.error.arg.invalid");
}
} else
{
displayErrorString(commandSender, "commands.error.arg.missing");
}
break;
}
case ADD:
{
if (displayHelp)
{
displayHelpString(commandSender, ValidCommands.ADD.help);
break;
}
if (args.length == 3)
{
if (Utils.isInteger(args[2]))
{
int amount = Integer.parseInt(args[2]);
int maxOrb = NetworkHelper.getMaximumForTier(network.getOrbTier());
displaySuccessString(commandSender, "commands.network.add.success", network.addLifeEssence(amount, maxOrb), givenName);
} else
{
displayErrorString(commandSender, "commands.error.arg.invalid");
}
} else
{
displayErrorString(commandSender, "commands.error.arg.missing");
}
break;
}
case SET:
{
if (displayHelp)
{
displayHelpString(commandSender, ValidCommands.SET.help);
break;
}
if (args.length == 3)
{
if (Utils.isInteger(args[2]))
{
int amount = Integer.parseInt(args[2]);
network.setCurrentEssence(amount);
displaySuccessString(commandSender, "commands.network.set.success", givenName, amount);
} else
{
displayErrorString(commandSender, "commands.error.arg.invalid");
}
} else
{
displayErrorString(commandSender, "commands.error.arg.missing");
}
break;
}
case GET:
{
if (displayHelp)
{
displayHelpString(commandSender, ValidCommands.GET.help);
break;
}
if (args.length > 1)
commandSender.addChatMessage(new TextComponentString(TextHelper.localizeEffect("message.divinationsigil.currentessence", network.getCurrentEssence())));
break;
}
case FILL:
{
if (displayHelp)
{
displayHelpString(commandSender, ValidCommands.FILL.help, Integer.MAX_VALUE);
break;
}
if (args.length > 1)
{
network.setCurrentEssence(Integer.MAX_VALUE);
displaySuccessString(commandSender, "commands.network.fill.success", givenName);
}
break;
}
case CAP:
{
if (displayHelp)
{
displayHelpString(commandSender, ValidCommands.CAP.help);
break;
}
if (args.length > 1)
{
int maxOrb = NetworkHelper.getMaximumForTier(network.getOrbTier());
network.setCurrentEssence(maxOrb);
displaySuccessString(commandSender, "commands.network.cap.success", givenName);
}
break;
}
}
} catch (IllegalArgumentException e)
{
displayErrorString(commandSender, "commands.error.404");
} }
} catch (PlayerNotFoundException e) } catch (PlayerNotFoundException e)
{ {
displayErrorString(commandSender, "commands.error.404"); displayErrorString(commandSender, e.getLocalizedMessage());
} }
} else {
displayErrorString(commandSender, "commands.error.arg.missing");
} }
} }
private enum ValidCommands private enum ValidCommands
{ {
SYPHON("commands.network.syphon.help"), SYPHON("commands.network.syphon.help") {
ADD("commands.network.add.help"), @Override
SET("commands.network.set.help"), public void run(EntityPlayer player, ICommandSender sender, boolean displayHelp, String... args)
GET("commands.network.get.help"), {
FILL("commands.network.fill.help"), if (displayHelp)
CAP("commands.network.cap.help"); {
displayHelpString(sender, this.help);
return;
}
if (args.length == 3)
{
if (Utils.isInteger(args[2]))
{
int amount = Integer.parseInt(args[2]);
NetworkHelper.syphonAndDamage(NetworkHelper.getSoulNetwork(player), player, amount);
displaySuccessString(sender, "commands.network.syphon.success", amount, player.getDisplayName().getFormattedText());
} else
{
displayErrorString(sender, "commands.error.arg.invalid");
}
} else
{
displayErrorString(sender, "commands.error.arg.missing");
}
}
},
ADD("commands.network.add.help") {
@Override
public void run(EntityPlayer player, ICommandSender sender, boolean displayHelp, String... args)
{
if (displayHelp)
{
displayHelpString(sender, this.help);
return;
}
SoulNetwork network = NetworkHelper.getSoulNetwork(player);
if (args.length == 3)
{
if (Utils.isInteger(args[2]))
{
int amount = Integer.parseInt(args[2]);
int maxOrb = NetworkHelper.getMaximumForTier(network.getOrbTier());
displaySuccessString(sender, "commands.network.add.success", network.addLifeEssence(amount, maxOrb), player.getDisplayName().getFormattedText());
} else
{
displayErrorString(sender, "commands.error.arg.invalid");
}
} else
{
displayErrorString(sender, "commands.error.arg.missing");
}
}
},
SET("commands.network.set.help") {
@Override
public void run(EntityPlayer player, ICommandSender sender, boolean displayHelp, String... args)
{
if (displayHelp)
{
displayHelpString(sender, this.help);
return;
}
SoulNetwork network = NetworkHelper.getSoulNetwork(player);
if (args.length == 3)
{
if (Utils.isInteger(args[2]))
{
int amount = Integer.parseInt(args[2]);
network.setCurrentEssence(amount);
displaySuccessString(sender, "commands.network.set.success", player.getDisplayName().getFormattedText(), amount);
} else
{
displayErrorString(sender, "commands.error.arg.invalid");
}
} else
{
displayErrorString(sender, "commands.error.arg.missing");
}
}
},
GET("commands.network.get.help") {
@Override
public void run(EntityPlayer player, ICommandSender sender, boolean displayHelp, String... args)
{
if (displayHelp)
{
displayHelpString(sender, this.help);
return;
}
SoulNetwork network = NetworkHelper.getSoulNetwork(player);
if (args.length > 1)
sender.addChatMessage(new TextComponentString(TextHelper.localizeEffect("message.divinationsigil.currentessence", network.getCurrentEssence())));
}
},
FILL("commands.network.fill.help") {
@Override
public void run(EntityPlayer player, ICommandSender sender, boolean displayHelp, String... args) {
if (displayHelp)
{
displayHelpString(sender, this.help, Integer.MAX_VALUE);
return;
}
SoulNetwork network = NetworkHelper.getSoulNetwork(player);
if (args.length > 1)
{
network.setCurrentEssence(Integer.MAX_VALUE);
displaySuccessString(sender, "commands.network.fill.success", player.getDisplayName().getFormattedText());
}
}
},
CAP("commands.network.cap.help") {
@Override
public void run(EntityPlayer player, ICommandSender sender, boolean displayHelp, String... args) {
if (displayHelp)
{
displayHelpString(sender, this.help);
return;
}
SoulNetwork network = NetworkHelper.getSoulNetwork(player);
if (args.length > 1)
{
int maxOrb = NetworkHelper.getMaximumForTier(network.getOrbTier());
network.setCurrentEssence(maxOrb);
displaySuccessString(sender, "commands.network.cap.success", player.getDisplayName().getFormattedText());
}
}
},
;
public String help; public String help;
@ -215,5 +214,7 @@ public class SubCommandNetwork extends SubCommandBase
{ {
this.help = help; this.help = help;
} }
public abstract void run(EntityPlayer player, ICommandSender sender, boolean displayHelp, String... args);
} }
} }