From 4ddd0312e49d54ee9b98120bdf0e758409c89a24 Mon Sep 17 00:00:00 2001 From: Stephen Seo Date: Wed, 27 Nov 2019 16:55:48 +0900 Subject: [PATCH] Impl /tbm-edit , some fixes --- .../common/CommandTBMEdit.java | 433 ------------------ .../common/TurnBasedMinecraftMod.java | 324 ++++++++++++- 2 files changed, 322 insertions(+), 435 deletions(-) delete mode 100644 src/main/java/com/burnedkirby/TurnBasedMinecraft/common/CommandTBMEdit.java diff --git a/src/main/java/com/burnedkirby/TurnBasedMinecraft/common/CommandTBMEdit.java b/src/main/java/com/burnedkirby/TurnBasedMinecraft/common/CommandTBMEdit.java deleted file mode 100644 index be66160..0000000 --- a/src/main/java/com/burnedkirby/TurnBasedMinecraft/common/CommandTBMEdit.java +++ /dev/null @@ -1,433 +0,0 @@ -package com.burnedkirby.TurnBasedMinecraft.common; - -import com.burnedkirby.TurnBasedMinecraft.common.networking.PacketEditingMessage; -import com.burnedkirby.TurnBasedMinecraft.common.networking.PacketGeneralMessage; -import net.minecraft.command.CommandBase; -import net.minecraft.command.CommandException; -import net.minecraft.command.ICommandSender; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.server.MinecraftServer; - -public class CommandTBMEdit extends CommandBase -{ - public static final String usage = "/tbm-edit [custom] (Invoke without parameters or with arg \"custom\" to start edit)"; - private Config config; - - public CommandTBMEdit(Config config) - { - this.config = config; - } - - @Override - public String getName() - { - return "tbm-edit"; - } - - @Override - public String getUsage(ICommandSender sender) - { - return usage; - } - - @Override - public void execute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException - { - EntityPlayer senderEntity = null; - EditingInfo editingInfo = null; - try - { - senderEntity = (EntityPlayer) sender.getCommandSenderEntity(); - } catch (ClassCastException e) - { - // if sender is not EntityPlayer, ignore - return; - } - editingInfo = TurnBasedMinecraftMod.proxy.getEditingInfo(senderEntity.getEntityId()); - if(args.length == 0) - { - if(editingInfo != null && !editingInfo.isPendingEntitySelection) - { - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo), (EntityPlayerMP)senderEntity); - } - else if(editingInfo != null) - { - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.ATTACK_ENTITY), (EntityPlayerMP) senderEntity); - } - else - { - TurnBasedMinecraftMod.proxy.setEditingPlayer(senderEntity); - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.ATTACK_ENTITY), (EntityPlayerMP) senderEntity); - TurnBasedMinecraftMod.logger.info("Begin editing TBM Entity for player \"" + senderEntity.getName() + "\""); - } - } - else if(args.length == 1) - { - if(editingInfo != null && !editingInfo.isPendingEntitySelection) - { - if(args[0].toLowerCase().equals("finish")) - { - if(!config.editEntityEntry(editingInfo.entityInfo)) - { - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketGeneralMessage("An error occurred while attempting to save an entry to the config, check the logs"), (EntityPlayerMP) senderEntity); - TurnBasedMinecraftMod.proxy.removeEditingInfo(senderEntity.getEntityId()); - } - else - { - TurnBasedMinecraftMod.proxy.removeEditingInfo(senderEntity.getEntityId()); - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketGeneralMessage("Entity info saved in config and loaded."), (EntityPlayerMP) senderEntity); - } - } - else if(args[0].toLowerCase().equals("cancel")) - { - TurnBasedMinecraftMod.proxy.removeEditingInfo(senderEntity.getEntityId()); - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketGeneralMessage("Cancelled editing entity."), (EntityPlayerMP)senderEntity); - } - else if(args[0].toLowerCase().equals("edit")) - { - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo), (EntityPlayerMP)senderEntity); - } - else - { - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketGeneralMessage("Invalid argument for \"/tbm-edit \"."), (EntityPlayerMP)senderEntity); - } - } - else if(editingInfo != null) - { - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.ATTACK_ENTITY), (EntityPlayerMP)senderEntity); - } - else - { - if(args[0].toLowerCase().equals("custom")) - { - TurnBasedMinecraftMod.proxy.setEditingPlayer(senderEntity); - TurnBasedMinecraftMod.proxy.getEditingInfo(senderEntity.getEntityId()).isEditingCustomName = true; - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.ATTACK_ENTITY), (EntityPlayerMP)senderEntity); - TurnBasedMinecraftMod.logger.info("Begin editing custom TBM Entity for player \"" + senderEntity.getName() + "\""); - } - else - { - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketGeneralMessage("Cannot edit entity without starting editing process (use \"/tbm-edit\")."), (EntityPlayerMP)senderEntity); - } - } - } - else if(args.length == 2) - { - if(editingInfo != null && !editingInfo.isPendingEntitySelection) - { - if(args[0].toLowerCase().equals("edit")) - { - switch(args[1]) - { - case "ignoreBattle": - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.EDIT_IGNORE_BATTLE), (EntityPlayerMP) senderEntity); - break; - case "attackPower": - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.EDIT_ATTACK_POWER), (EntityPlayerMP) senderEntity); - break; - case "attackProbability": - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.EDIT_ATTACK_PROBABILITY), (EntityPlayerMP) senderEntity); - break; - case "attackVariance": - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.EDIT_ATTACK_VARIANCE), (EntityPlayerMP) senderEntity); - break; - case "attackEffect": - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.EDIT_ATTACK_EFFECT), (EntityPlayerMP) senderEntity); - break; - case "attackEffectProbability": - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.EDIT_ATTACK_EFFECT_PROBABILITY), (EntityPlayerMP) senderEntity); - break; - case "defenseDamage": - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.EDIT_DEFENSE_DAMAGE), (EntityPlayerMP) senderEntity); - break; - case "defenseDamageProbability": - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.EDIT_DEFENSE_DAMAGE_PROBABILITY), (EntityPlayerMP) senderEntity); - break; - case "evasion": - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.EDIT_EVASION), (EntityPlayerMP) senderEntity); - break; - case "speed": - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.EDIT_SPEED), (EntityPlayerMP) senderEntity); - break; - case "category": - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.EDIT_CATEGORY), (EntityPlayerMP) senderEntity); - break; - case "decisionAttack": - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.EDIT_DECISION_ATTACK), (EntityPlayerMP) senderEntity); - break; - case "decisionDefend": - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.EDIT_DECISION_DEFEND), (EntityPlayerMP) senderEntity); - break; - case "decisionFlee": - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.EDIT_DECISION_FLEE), (EntityPlayerMP) senderEntity); - break; - default: - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketGeneralMessage("Invalid argument for \"/tbm-edit edit \""), (EntityPlayerMP) senderEntity); - break; - } - } - else - { - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketGeneralMessage("Invalid arguments for \"/tbm-edit \"."), (EntityPlayerMP)senderEntity); - } - } - else if(editingInfo != null) - { - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.ATTACK_ENTITY), (EntityPlayerMP)senderEntity); - } - else - { - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketGeneralMessage("Cannot edit entity without starting editing process (use \"/tbm-edit\")."), (EntityPlayerMP)senderEntity); - } - } - else if(args.length == 3) - { - if(editingInfo != null && !editingInfo.isPendingEntitySelection) - { - if(args[0].toLowerCase().equals("edit")) - { - switch(args[1]) - { - case "ignoreBattle": - if(args[2].toLowerCase().equals("true")) - { - editingInfo.entityInfo.ignoreBattle = true; - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo), (EntityPlayerMP)senderEntity); - } - else if(args[2].toLowerCase().equals("false")) - { - editingInfo.entityInfo.ignoreBattle = false; - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo), (EntityPlayerMP)senderEntity); - } - else - { - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketGeneralMessage("Invalid argument for \"/tbm-edit edit ignoreBattle \""), (EntityPlayerMP)senderEntity); - } - break; - case "attackPower": - try - { - editingInfo.entityInfo.attackPower = Integer.parseInt(args[2]); - if(editingInfo.entityInfo.attackPower < 0) - { - editingInfo.entityInfo.attackPower = 0; - } - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo), (EntityPlayerMP)senderEntity); - } - catch (NumberFormatException e) - { - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketGeneralMessage("Invalid argument for \"/tbm-edit edit attackPower \""), (EntityPlayerMP)senderEntity); - } - break; - case "attackProbability": - try - { - editingInfo.entityInfo.attackProbability = Integer.parseInt(args[2]); - if(editingInfo.entityInfo.attackProbability < 0) - { - editingInfo.entityInfo.attackProbability = 0; - } - else if(editingInfo.entityInfo.attackProbability > 100) - { - editingInfo.entityInfo.attackProbability = 100; - } - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo), (EntityPlayerMP)senderEntity); - } - catch (NumberFormatException e) - { - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketGeneralMessage("Invalid argument for \"/tbm-edit edit attackProbability \""), (EntityPlayerMP)senderEntity); - } - break; - case "attackVariance": - try - { - editingInfo.entityInfo.attackVariance = Integer.parseInt(args[2]); - if(editingInfo.entityInfo.attackVariance < 0) - { - editingInfo.entityInfo.attackVariance = 0; - } - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo), (EntityPlayerMP)senderEntity); - } - catch (NumberFormatException e) - { - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketGeneralMessage("Invalid argument for \"/tbm-edit edit attackVariance \""), (EntityPlayerMP)senderEntity); - } - break; - case "attackEffect": - editingInfo.entityInfo.attackEffect = EntityInfo.Effect.fromString(args[2]); - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo), (EntityPlayerMP)senderEntity); - break; - case "attackEffectProbability": - try - { - editingInfo.entityInfo.attackEffectProbability = Integer.parseInt(args[2]); - if(editingInfo.entityInfo.attackEffectProbability < 0) - { - editingInfo.entityInfo.attackEffectProbability = 0; - } - else if(editingInfo.entityInfo.attackEffectProbability > 100) - { - editingInfo.entityInfo.attackEffectProbability = 100; - } - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo), (EntityPlayerMP)senderEntity); - } - catch (NumberFormatException e) - { - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketGeneralMessage("Invalid argument for \"/tbm-edit edit attackEffectProbability \""), (EntityPlayerMP)senderEntity); - } - break; - case "defenseDamage": - try - { - editingInfo.entityInfo.defenseDamage = Integer.parseInt(args[2]); - if(editingInfo.entityInfo.defenseDamage < 0) - { - editingInfo.entityInfo.defenseDamage = 0; - } - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo), (EntityPlayerMP)senderEntity); - } - catch (NumberFormatException e) - { - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketGeneralMessage("Invalid argument for \"/tbm-edit edit defenseDamage \""), (EntityPlayerMP)senderEntity); - } - break; - case "defenseDamageProbability": - try - { - editingInfo.entityInfo.defenseDamageProbability = Integer.parseInt(args[2]); - if(editingInfo.entityInfo.defenseDamageProbability < 0) - { - editingInfo.entityInfo.defenseDamageProbability = 0; - } - else if(editingInfo.entityInfo.defenseDamageProbability > 100) - { - editingInfo.entityInfo.defenseDamageProbability = 100; - } - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo), (EntityPlayerMP)senderEntity); - } - catch (NumberFormatException e) - { - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketGeneralMessage("Invalid argument for \"/tbm-edit edit defenseDamageProbability \""), (EntityPlayerMP)senderEntity); - } - break; - case "evasion": - try - { - editingInfo.entityInfo.evasion = Integer.parseInt(args[2]); - if(editingInfo.entityInfo.evasion < 0) - { - editingInfo.entityInfo.evasion = 0; - } - else if(editingInfo.entityInfo.evasion > 100) - { - editingInfo.entityInfo.evasion = 100; - } - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo), (EntityPlayerMP)senderEntity); - } - catch (NumberFormatException e) - { - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketGeneralMessage("Invalid argument for \"/tbm-edit edit evasion \""), (EntityPlayerMP)senderEntity); - } - break; - case "speed": - try - { - editingInfo.entityInfo.speed = Integer.parseInt(args[2]); - if(editingInfo.entityInfo.speed < 0) - { - editingInfo.entityInfo.speed = 0; - } - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo), (EntityPlayerMP)senderEntity); - } - catch (NumberFormatException e) - { - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketGeneralMessage("Invalid argument for \"/tbm-edit edit speed \""), (EntityPlayerMP)senderEntity); - } - break; - case "category": - editingInfo.entityInfo.category = args[2]; - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo), (EntityPlayerMP)senderEntity); - break; - case "decisionAttack": - try - { - editingInfo.entityInfo.decisionAttack = Integer.parseInt(args[2]); - if(editingInfo.entityInfo.decisionAttack < 0) - { - editingInfo.entityInfo.decisionAttack = 0; - } - else if(editingInfo.entityInfo.decisionAttack > 100) - { - editingInfo.entityInfo.decisionAttack = 100; - } - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo), (EntityPlayerMP)senderEntity); - } - catch (NumberFormatException e) - { - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketGeneralMessage("Invalid argument for \"/tbm-edit edit decisionAttack \""), (EntityPlayerMP)senderEntity); - } - break; - case "decisionDefend": - try - { - editingInfo.entityInfo.decisionDefend = Integer.parseInt(args[2]); - if(editingInfo.entityInfo.decisionDefend < 0) - { - editingInfo.entityInfo.decisionDefend = 0; - } - else if(editingInfo.entityInfo.decisionDefend > 100) - { - editingInfo.entityInfo.decisionDefend = 100; - } - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo), (EntityPlayerMP)senderEntity); - } - catch (NumberFormatException e) - { - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketGeneralMessage("Invalid argument for \"/tbm-edit edit decisionDefend \""), (EntityPlayerMP)senderEntity); - } - break; - case "decisionFlee": - try - { - editingInfo.entityInfo.decisionFlee = Integer.parseInt(args[2]); - if(editingInfo.entityInfo.decisionFlee < 0) - { - editingInfo.entityInfo.decisionFlee = 0; - } - else if(editingInfo.entityInfo.decisionFlee > 100) - { - editingInfo.entityInfo.decisionFlee = 100; - } - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo), (EntityPlayerMP)senderEntity); - } - catch (NumberFormatException e) - { - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketGeneralMessage("Invalid argument for \"/tbm-edit edit decisionFlee \""), (EntityPlayerMP)senderEntity); - } - break; - default: - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketGeneralMessage("Invalid second argument for \"/tbm-edit edit \""), (EntityPlayerMP)senderEntity); - break; - } - } - else - { - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketGeneralMessage("Invalid arguments for \"/tbm-edit \"."), (EntityPlayerMP)senderEntity); - } - } - else if(editingInfo != null) - { - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.ATTACK_ENTITY), (EntityPlayerMP)senderEntity); - } - else - { - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketGeneralMessage("Cannot edit entity without starting editing process (use \"/tbm-edit\")."), (EntityPlayerMP)senderEntity); - } - } - else - { - TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketGeneralMessage("Invalid arguments for \"/tbm-edit\"."), (EntityPlayerMP)senderEntity); - } - } -} diff --git a/src/main/java/com/burnedkirby/TurnBasedMinecraft/common/TurnBasedMinecraftMod.java b/src/main/java/com/burnedkirby/TurnBasedMinecraft/common/TurnBasedMinecraftMod.java index 1227f7e..a027c75 100644 --- a/src/main/java/com/burnedkirby/TurnBasedMinecraft/common/TurnBasedMinecraftMod.java +++ b/src/main/java/com/burnedkirby/TurnBasedMinecraft/common/TurnBasedMinecraftMod.java @@ -2,6 +2,11 @@ package com.burnedkirby.TurnBasedMinecraft.common; import com.burnedkirby.TurnBasedMinecraft.client.ClientProxy; import com.burnedkirby.TurnBasedMinecraft.common.networking.*; +import com.mojang.brigadier.LiteralMessage; +import com.mojang.brigadier.Message; +import com.mojang.brigadier.arguments.StringArgumentType; +import com.mojang.brigadier.exceptions.CommandSyntaxException; +import com.mojang.brigadier.exceptions.SimpleCommandExceptionType; import net.minecraft.command.Commands; import net.minecraft.command.arguments.EntityArgument; import net.minecraft.entity.player.ServerPlayerEntity; @@ -164,7 +169,7 @@ public class TurnBasedMinecraftMod .requires(c -> !proxy.getConfig().getIfOnlyOPsCanDisableTurnBasedForSelf() || c.hasPermissionLevel(2)) .executes(c -> { proxy.getConfig().removeBattleIgnoringPlayer(c.getSource().asPlayer().getEntityId()); - c.getSource().sendFeedback(new StringTextComponent("Enabled turn-based-combat for current player"), true)); + c.getSource().sendFeedback(new StringTextComponent("Enabled turn-based-combat for current player"), true); return 1; })); // tbm-enable-all @@ -204,7 +209,322 @@ public class TurnBasedMinecraftMod return 1; }))); // tbm-edit - event.registerServerCommand(new CommandTBMEdit(proxy.getConfig())); + event.getServer().getCommandManager().getDispatcher().register( + Commands.literal("tbm-edit") + .requires(c -> c.hasPermissionLevel(2)) + .executes(c -> { + ServerPlayerEntity player = c.getSource().asPlayer(); + EditingInfo editingInfo = proxy.getEditingInfo(player.getEntityId()); + if(editingInfo != null && !editingInfo.isPendingEntitySelection) { + getHandler().send(PacketDistributor.PLAYER.with(() -> player), new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo)); + } else if(editingInfo != null) { + getHandler().send(PacketDistributor.PLAYER.with(() -> player), new PacketEditingMessage(PacketEditingMessage.Type.ATTACK_ENTITY)); + } else { + proxy.setEditingPlayer(c.getSource().asPlayer()); + getHandler().send(PacketDistributor.PLAYER.with(() -> player), new PacketEditingMessage(PacketEditingMessage.Type.ATTACK_ENTITY)); + logger.info("Begin editing TBM Entity for player \"" + player.getDisplayName().getUnformattedComponentText() + "\""); + } + return 1; + }) + .then(Commands.argument("action", StringArgumentType.word()) + .executes(c -> { + String action = StringArgumentType.getString(c, "action").toLowerCase(); + ServerPlayerEntity player = c.getSource().asPlayer(); + EditingInfo editingInfo = TurnBasedMinecraftMod.proxy.getEditingInfo(player.getEntityId()); + if(editingInfo != null && !editingInfo.isPendingEntitySelection) { + if (action.equals("finish")) { + if (!proxy.getConfig().editEntityEntry(editingInfo.entityInfo)) { + getHandler().send(PacketDistributor.PLAYER.with(() -> player), new PacketGeneralMessage("An error occurred while attempting to save an entry to the config")); + proxy.removeEditingInfo(player.getEntityId()); + } else { + proxy.removeEditingInfo(player.getEntityId()); + getHandler().send(PacketDistributor.PLAYER.with(() -> player), new PacketGeneralMessage("Entity info saved in config and loaded.")); + } + } else if (action.equals("cancel")) { + proxy.removeEditingInfo(player.getEntityId()); + getHandler().send(PacketDistributor.PLAYER.with(() -> player), new PacketGeneralMessage("Cancelled editing entry.")); + } else if (action.equals("edit")) { + getHandler().send(PacketDistributor.PLAYER.with(() -> player), new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo)); + } else { + Message exceptionMessage = new LiteralMessage("Invalid action for tbm-edit"); + throw new CommandSyntaxException(new SimpleCommandExceptionType(exceptionMessage), exceptionMessage); + } + } else if(editingInfo != null) { + getHandler().send(PacketDistributor.PLAYER.with(() -> player), new PacketEditingMessage(PacketEditingMessage.Type.ATTACK_ENTITY)); + } else { + if(action.equals("custom")) { + proxy.setEditingPlayer(player); + proxy.getEditingInfo(player.getEntityId()).isEditingCustomName = true; + getHandler().send(PacketDistributor.PLAYER.with(() -> player), new PacketEditingMessage(PacketEditingMessage.Type.ATTACK_ENTITY)); + logger.info("Begin editing custom TBM Entity for player \"" + player.getDisplayName().getUnformattedComponentText() + "\'"); + } else { + Message exceptionMessage = new LiteralMessage("Cannot edit entity without starting editing (use \"/tbm-edit\")."); + throw new CommandSyntaxException(new SimpleCommandExceptionType(exceptionMessage), exceptionMessage); + } + } + return 1; + }) + .then(Commands.argument("category", StringArgumentType.word()) + .executes(c -> { + String action = StringArgumentType.getString(c, "action").toLowerCase(); + String category = StringArgumentType.getString(c, "category"); + ServerPlayerEntity player = c.getSource().asPlayer(); + EditingInfo editingInfo = TurnBasedMinecraftMod.proxy.getEditingInfo(player.getEntityId()); + if(editingInfo != null && !editingInfo.isPendingEntitySelection) { + if (action.equals("edit")) { + switch (category) { + case "ignoreBattle": + getHandler().send(PacketDistributor.PLAYER.with(() -> player), new PacketEditingMessage(PacketEditingMessage.Type.EDIT_IGNORE_BATTLE)); + break; + case "attackPower": + getHandler().send(PacketDistributor.PLAYER.with(() -> player), new PacketEditingMessage(PacketEditingMessage.Type.EDIT_ATTACK_POWER)); + break; + case "attackProbability": + getHandler().send(PacketDistributor.PLAYER.with(() -> player), new PacketEditingMessage(PacketEditingMessage.Type.EDIT_ATTACK_PROBABILITY)); + break; + case "attackVariance": + getHandler().send(PacketDistributor.PLAYER.with(() -> player), new PacketEditingMessage(PacketEditingMessage.Type.EDIT_ATTACK_VARIANCE)); + break; + case "attackEffect": + getHandler().send(PacketDistributor.PLAYER.with(() -> player), new PacketEditingMessage(PacketEditingMessage.Type.EDIT_ATTACK_EFFECT)); + break; + case "attackEffectProbability": + getHandler().send(PacketDistributor.PLAYER.with(() -> player), new PacketEditingMessage(PacketEditingMessage.Type.EDIT_ATTACK_EFFECT_PROBABILITY)); + break; + case "defenseDamage": + getHandler().send(PacketDistributor.PLAYER.with(() -> player), new PacketEditingMessage(PacketEditingMessage.Type.EDIT_DEFENSE_DAMAGE)); + break; + case "defenseDamageProbability": + getHandler().send(PacketDistributor.PLAYER.with(() -> player), new PacketEditingMessage(PacketEditingMessage.Type.EDIT_DEFENSE_DAMAGE_PROBABILITY)); + break; + case "evasion": + getHandler().send(PacketDistributor.PLAYER.with(() -> player), new PacketEditingMessage(PacketEditingMessage.Type.EDIT_EVASION)); + break; + case "speed": + getHandler().send(PacketDistributor.PLAYER.with(() -> player), new PacketEditingMessage(PacketEditingMessage.Type.EDIT_SPEED)); + break; + case "category": + getHandler().send(PacketDistributor.PLAYER.with(() -> player), new PacketEditingMessage(PacketEditingMessage.Type.EDIT_CATEGORY)); + break; + case "decisionAttack": + getHandler().send(PacketDistributor.PLAYER.with(() -> player), new PacketEditingMessage(PacketEditingMessage.Type.EDIT_DECISION_ATTACK)); + break; + case "decisionDefend": + getHandler().send(PacketDistributor.PLAYER.with(() -> player), new PacketEditingMessage(PacketEditingMessage.Type.EDIT_DECISION_DEFEND)); + break; + case "decisionFlee": + getHandler().send(PacketDistributor.PLAYER.with(() -> player), new PacketEditingMessage(PacketEditingMessage.Type.EDIT_DECISION_FLEE)); + break; + default: + Message exceptionMessage = new LiteralMessage("Invalid argument for \"/tbm-edit edit \""); + throw new CommandSyntaxException(new SimpleCommandExceptionType(exceptionMessage), exceptionMessage); + } + } else { + Message exceptionMessage = new LiteralMessage("Invalid argument"); + throw new CommandSyntaxException(new SimpleCommandExceptionType(exceptionMessage), exceptionMessage); + } + } else if(editingInfo != null){ + getHandler().send(PacketDistributor.PLAYER.with(() -> player), new PacketEditingMessage(PacketEditingMessage.Type.ATTACK_ENTITY)); + } else { + Message exceptionMessage = new LiteralMessage("Cannot edit entity without starting editing (use \"/tbm-edit\")."); + throw new CommandSyntaxException(new SimpleCommandExceptionType(exceptionMessage), exceptionMessage); + } + return 1; + }) + .then(Commands.argument("value", StringArgumentType.greedyString())) + .executes(c -> { + String action = StringArgumentType.getString(c, "action").toLowerCase(); + String category = StringArgumentType.getString(c, "category"); + String value = StringArgumentType.getString(c, "value").toLowerCase(); + ServerPlayerEntity player = c.getSource().asPlayer(); + EditingInfo editingInfo = TurnBasedMinecraftMod.proxy.getEditingInfo(player.getEntityId()); + if(editingInfo != null && !editingInfo.isPendingEntitySelection) { + if (action.equals("edit")) { + switch (category) { + case "ignoreBattle": + if (value.equals("true")) { + editingInfo.entityInfo.ignoreBattle = true; + getHandler().send(PacketDistributor.PLAYER.with(() -> player), new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo)); + } else if (value.equals("false")) { + editingInfo.entityInfo.ignoreBattle = false; + getHandler().send(PacketDistributor.PLAYER.with(() -> player), new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo)); + } else { + Message exceptionMessage = new LiteralMessage("Invalid value for \"/tbm-edit edit ignoreBattle \""); + throw new CommandSyntaxException(new SimpleCommandExceptionType(exceptionMessage), exceptionMessage); + } + break; + case "attackPower": + try { + editingInfo.entityInfo.attackPower = Integer.parseInt(value); + if (editingInfo.entityInfo.attackPower < 0) { + editingInfo.entityInfo.attackPower = 0; + } + getHandler().send(PacketDistributor.PLAYER.with(() -> player), new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo)); + } catch (NumberFormatException e) { + Message exceptionMessage = new LiteralMessage("Invalid value for \"/tbm-edit edit attackPower \""); + throw new CommandSyntaxException(new SimpleCommandExceptionType(exceptionMessage), exceptionMessage); + } + break; + case "attackProbability": + try { + editingInfo.entityInfo.attackProbability = Integer.parseInt(value); + if (editingInfo.entityInfo.attackProbability < 0) { + editingInfo.entityInfo.attackProbability = 0; + } else if (editingInfo.entityInfo.attackProbability > 100) { + editingInfo.entityInfo.attackProbability = 100; + } + getHandler().send(PacketDistributor.PLAYER.with(() -> player), new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo)); + } catch (NumberFormatException e) { + Message exceptionMessage = new LiteralMessage("Invalid value for \"/tbm-edit edit attackProbability \""); + throw new CommandSyntaxException(new SimpleCommandExceptionType(exceptionMessage), exceptionMessage); + } + break; + case "attackVariance": + try { + editingInfo.entityInfo.attackVariance = Integer.parseInt(value); + if (editingInfo.entityInfo.attackVariance < 0) { + editingInfo.entityInfo.attackVariance = 0; + } + getHandler().send(PacketDistributor.PLAYER.with(() -> player), new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo)); + } catch (NumberFormatException e) { + Message exceptionMessage = new LiteralMessage("Invalid value for \"/tbm-edit edit attackVariance \""); + throw new CommandSyntaxException(new SimpleCommandExceptionType(exceptionMessage), exceptionMessage); + } + break; + case "attackEffect": + editingInfo.entityInfo.attackEffect = EntityInfo.Effect.fromString(value); + getHandler().send(PacketDistributor.PLAYER.with(() -> player), new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo)); + break; + case "attackEffectProbability": + try { + editingInfo.entityInfo.attackEffectProbability = Integer.parseInt(value); + if (editingInfo.entityInfo.attackEffectProbability < 0) { + editingInfo.entityInfo.attackEffectProbability = 0; + } else if (editingInfo.entityInfo.attackEffectProbability > 100) { + editingInfo.entityInfo.attackEffectProbability = 100; + } + getHandler().send(PacketDistributor.PLAYER.with(() -> player), new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo)); + } catch (NumberFormatException e) { + Message exceptionMessage = new LiteralMessage("Invalid value for \"/tbm-edit edit attackEffectProbability \""); + throw new CommandSyntaxException(new SimpleCommandExceptionType(exceptionMessage), exceptionMessage); + } + break; + case "defenseDamage": + try { + editingInfo.entityInfo.defenseDamage = Integer.parseInt(value); + if (editingInfo.entityInfo.defenseDamage < 0) { + editingInfo.entityInfo.defenseDamage = 0; + } + getHandler().send(PacketDistributor.PLAYER.with(() -> player), new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo)); + } catch (NumberFormatException e) { + Message exceptionMessage = new LiteralMessage("Invalid value for \"/tbm-edit edit defenseDamage \""); + throw new CommandSyntaxException(new SimpleCommandExceptionType(exceptionMessage), exceptionMessage); + } + break; + case "defenseDamageProbability": + try { + editingInfo.entityInfo.defenseDamageProbability = Integer.parseInt(value); + if (editingInfo.entityInfo.defenseDamageProbability < 0) { + editingInfo.entityInfo.defenseDamageProbability = 0; + } else if (editingInfo.entityInfo.defenseDamageProbability > 100) { + editingInfo.entityInfo.defenseDamageProbability = 100; + } + getHandler().send(PacketDistributor.PLAYER.with(() -> player), new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo)); + } catch (NumberFormatException e) { + Message exceptionMessage = new LiteralMessage("Invalid value for \"/tbm-edit edit defenseDamageProbability \""); + throw new CommandSyntaxException(new SimpleCommandExceptionType(exceptionMessage), exceptionMessage); + } + break; + case "evasion": + try { + editingInfo.entityInfo.evasion = Integer.parseInt(value); + if (editingInfo.entityInfo.evasion < 0) { + editingInfo.entityInfo.evasion = 0; + } else if (editingInfo.entityInfo.evasion > 100) { + editingInfo.entityInfo.evasion = 100; + } + getHandler().send(PacketDistributor.PLAYER.with(() -> player), new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo)); + } catch (NumberFormatException e) { + Message exceptionMessage = new LiteralMessage("Invalid value for \"/tbm-edit edit evasion \""); + throw new CommandSyntaxException(new SimpleCommandExceptionType(exceptionMessage), exceptionMessage); + } + break; + case "speed": + try { + editingInfo.entityInfo.speed = Integer.parseInt(value); + if (editingInfo.entityInfo.speed < 0) { + editingInfo.entityInfo.speed = 0; + } + getHandler().send(PacketDistributor.PLAYER.with(() -> player), new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo)); + } catch (NumberFormatException e) { + Message exceptionMessage = new LiteralMessage("Invalid value for \"/tbm-edit edit speed \""); + throw new CommandSyntaxException(new SimpleCommandExceptionType(exceptionMessage), exceptionMessage); + } + break; + case "category": + editingInfo.entityInfo.category = value; + getHandler().send(PacketDistributor.PLAYER.with(() -> player), new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo)); + break; + case "decisionAttack": + try { + editingInfo.entityInfo.decisionAttack = Integer.parseInt(value); + if (editingInfo.entityInfo.decisionAttack < 0) { + editingInfo.entityInfo.decisionAttack = 0; + } else if (editingInfo.entityInfo.decisionAttack > 100) { + editingInfo.entityInfo.decisionAttack = 100; + } + getHandler().send(PacketDistributor.PLAYER.with(() -> player), new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo)); + } catch (NumberFormatException e) { + Message exceptionMessage = new LiteralMessage("Invalid value for \"/tbm-edit edit decisionAttack \""); + throw new CommandSyntaxException(new SimpleCommandExceptionType(exceptionMessage), exceptionMessage); + } + break; + case "decisionDefend": + try { + editingInfo.entityInfo.decisionDefend = Integer.parseInt(value); + if (editingInfo.entityInfo.decisionDefend < 0) { + editingInfo.entityInfo.decisionDefend = 0; + } else if (editingInfo.entityInfo.decisionDefend > 100) { + editingInfo.entityInfo.decisionDefend = 100; + } + getHandler().send(PacketDistributor.PLAYER.with(() -> player), new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo)); + } catch (NumberFormatException e) { + Message exceptionMessage = new LiteralMessage("Invalid value for \"/tbm-edit edit decisionDefend \""); + throw new CommandSyntaxException(new SimpleCommandExceptionType(exceptionMessage), exceptionMessage); + } + break; + case "decisionFlee": + try { + editingInfo.entityInfo.decisionFlee = Integer.parseInt(value); + if (editingInfo.entityInfo.decisionFlee < 0) { + editingInfo.entityInfo.decisionFlee = 0; + } else if (editingInfo.entityInfo.decisionFlee > 100) { + editingInfo.entityInfo.decisionFlee = 100; + } + getHandler().send(PacketDistributor.PLAYER.with(() -> player), new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo)); + } catch (NumberFormatException e) { + Message exceptionMessage = new LiteralMessage("Invalid value for \"/tbm-edit edit decisionFlee \""); + throw new CommandSyntaxException(new SimpleCommandExceptionType(exceptionMessage), exceptionMessage); + } + break; + default: + Message exceptionMessage = new LiteralMessage("Invalid category for \"/tbm-edit edit \""); + throw new CommandSyntaxException(new SimpleCommandExceptionType(exceptionMessage), exceptionMessage); + } + } else { + Message exceptionMessage = new LiteralMessage("Invalid args for \"/tbm-edit \""); + throw new CommandSyntaxException(new SimpleCommandExceptionType(exceptionMessage), exceptionMessage); + } + } else if(editingInfo != null) { + getHandler().send(PacketDistributor.PLAYER.with(() -> player), new PacketEditingMessage(PacketEditingMessage.Type.ATTACK_ENTITY)); + } else { + Message exceptionMessage = new LiteralMessage("Cannot edit entity without starting editing (use \"/tbm-edit\")."); + throw new CommandSyntaxException(new SimpleCommandExceptionType(exceptionMessage), exceptionMessage); + } + return 1; + }) + )) + ); } @SubscribeEvent