From bfd584ad69cdc2f56d9a81fe14e3946879e4d271 Mon Sep 17 00:00:00 2001 From: Stephen Seo Date: Thu, 9 Jun 2022 16:42:21 +0900 Subject: [PATCH] WIP 1.18.3: Impl in-game server config editing --- .../client/ClientProxy.java | 227 +++++++++++++--- .../TurnBasedMinecraft/common/Config.java | 64 +++++ .../common/TurnBasedMinecraftMod.java | 255 ++++++++++++++++-- 3 files changed, 493 insertions(+), 53 deletions(-) diff --git a/src/main/java/com/burnedkirby/TurnBasedMinecraft/client/ClientProxy.java b/src/main/java/com/burnedkirby/TurnBasedMinecraft/client/ClientProxy.java index 80c2ae6..872d8dd 100644 --- a/src/main/java/com/burnedkirby/TurnBasedMinecraft/client/ClientProxy.java +++ b/src/main/java/com/burnedkirby/TurnBasedMinecraft/client/ClientProxy.java @@ -7,6 +7,7 @@ import com.burnedkirby.TurnBasedMinecraft.common.TurnBasedMinecraftMod; import com.burnedkirby.TurnBasedMinecraft.common.networking.PacketBattleMessage; import com.burnedkirby.TurnBasedMinecraft.common.networking.PacketEditingMessage; import com.burnedkirby.TurnBasedMinecraft.common.networking.PacketGeneralMessage; +import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.client.Options; import net.minecraft.network.chat.*; @@ -581,29 +582,28 @@ public class ClientProxy extends CommonProxy { parent.setStyle(parent.getStyle().withColor(TextColor.fromRgb(0xFFFFFFFF)).withBold(false)); TextComponent sub = new TextComponent("leave_battle_cooldown "); - sub.setStyle(sub.getStyle().withColor(0xFFFFFF00).withBold(true)); + sub.setStyle(sub.getStyle().withColor(ChatFormatting.YELLOW).withBold(true)); + parent.append(sub); for (int i = 1; i <= 10; ++i) { - TextComponent value = new TextComponent(String.valueOf(i) + ' '); - value.setStyle( - value.getStyle() - .withColor(0xFF00FF00) + sub = new TextComponent(String.valueOf(i) + ' '); + sub.setStyle( + sub.getStyle() + .withColor(ChatFormatting.GREEN) .withClickEvent(new ClickEvent( ClickEvent.Action.RUN_COMMAND, "/tbm-server-edit leave_battle_cooldown " + i))); - sub.append(value); + parent.append(sub); } - parent.append(sub); - sub = new TextComponent("aggro_start_battle_max_distance "); - sub.setStyle(sub.getStyle().withColor(0xFFFFFF00).withBold(true)); + sub.setStyle(sub.getStyle().withColor(ChatFormatting.YELLOW).withBold(true)); parent.append(sub); sub = new TextComponent("5 "); sub.setStyle( sub.getStyle() - .withColor(0xFF00FF00) + .withColor(ChatFormatting.GREEN) .withClickEvent(new ClickEvent( ClickEvent.Action.RUN_COMMAND, "/tbm-server-edit aggro_start_battle_max_distance 5"))); @@ -612,7 +612,7 @@ public class ClientProxy extends CommonProxy { sub = new TextComponent("8 "); sub.setStyle( sub.getStyle() - .withColor(0xFF00FF00) + .withColor(ChatFormatting.GREEN) .withClickEvent(new ClickEvent( ClickEvent.Action.RUN_COMMAND, "/tbm-server-edit aggro_start_battle_max_distance 8"))); @@ -622,7 +622,7 @@ public class ClientProxy extends CommonProxy { sub = new TextComponent(String.valueOf(i) + ' '); sub.setStyle( sub.getStyle() - .withColor(0xFF00FF00) + .withColor(ChatFormatting.GREEN) .withClickEvent(new ClickEvent( ClickEvent.Action.RUN_COMMAND, "/tbm-server-edit aggro_start_battle_max_distance " + String.valueOf(i)))); @@ -631,7 +631,7 @@ public class ClientProxy extends CommonProxy { sub = new TextComponent("old_battle_behavior "); sub.setStyle(sub.getStyle() - .withColor(0xFFFFFF00) + .withColor(ChatFormatting.YELLOW) .withHoverEvent(new HoverEvent( HoverEvent.Action.SHOW_TEXT, new TextComponent("If enabled, battles only start on a hit, not including mobs targeting players"))) @@ -641,7 +641,7 @@ public class ClientProxy extends CommonProxy { sub = new TextComponent("true "); sub.setStyle( sub.getStyle() - .withColor(0xFF00FF00) + .withColor(ChatFormatting.GREEN) .withClickEvent(new ClickEvent( ClickEvent.Action.RUN_COMMAND, "/tbm-server-edit old_battle_behavior true"))); @@ -650,7 +650,7 @@ public class ClientProxy extends CommonProxy { sub = new TextComponent("false "); sub.setStyle( sub.getStyle() - .withColor(0xFF00FF00) + .withColor(ChatFormatting.GREEN) .withClickEvent(new ClickEvent( ClickEvent.Action.RUN_COMMAND, "/tbm-server-edit old_battle_behavior false"))); @@ -658,7 +658,7 @@ public class ClientProxy extends CommonProxy { sub = new TextComponent("anyone_can_disable_tbm_for_self "); sub.setStyle(sub.getStyle() - .withColor(0xFFFFFF00) + .withColor(ChatFormatting.YELLOW) .withHoverEvent(new HoverEvent( HoverEvent.Action.SHOW_TEXT, new TextComponent("Allows use for /tbm-disable and /tbm-enable for all"))) @@ -668,7 +668,7 @@ public class ClientProxy extends CommonProxy { sub = new TextComponent("true "); sub.setStyle( sub.getStyle() - .withColor(0xFF00FF00) + .withColor(ChatFormatting.GREEN) .withClickEvent(new ClickEvent( ClickEvent.Action.RUN_COMMAND, "/tbm-server-edit anyone_can_disable_tbm_for_self true"))); @@ -677,19 +677,19 @@ public class ClientProxy extends CommonProxy { sub = new TextComponent("false "); sub.setStyle( sub.getStyle() - .withColor(0xFF00FF00) + .withColor(ChatFormatting.GREEN) .withClickEvent(new ClickEvent( ClickEvent.Action.RUN_COMMAND, "/tbm-server-edit anyone_can_disable_tbm_for_self false"))); parent.append(sub); sub = new TextComponent("max_in_battle "); - sub.setStyle(sub.getStyle().withColor(0xFFFFFF00).withBold(true)); + sub.setStyle(sub.getStyle().withColor(ChatFormatting.YELLOW).withBold(true)); parent.append(sub); sub = new TextComponent("2 "); sub.setStyle(sub.getStyle() - .withColor(0xFF00FF00) + .withColor(ChatFormatting.GREEN) .withClickEvent(new ClickEvent( ClickEvent.Action.RUN_COMMAND, "/tbm-server-edit max_in_battle 2"))); @@ -698,7 +698,7 @@ public class ClientProxy extends CommonProxy { for (int i = 5; i < 30; i += 5) { sub = new TextComponent(String.valueOf(i) + ' '); sub.setStyle(sub.getStyle() - .withColor(0xFF00FF00) + .withColor(ChatFormatting.GREEN) .withClickEvent(new ClickEvent( ClickEvent.Action.RUN_COMMAND, "/tbm-server-edit max_in_battle " + String.valueOf(i)))); @@ -706,12 +706,12 @@ public class ClientProxy extends CommonProxy { } sub = new TextComponent("freeze_battle_combatants "); - sub.setStyle(sub.getStyle().withColor(0xFFFFFF00).withBold(true)); + sub.setStyle(sub.getStyle().withColor(ChatFormatting.YELLOW).withBold(true)); parent.append(sub); sub = new TextComponent("true "); sub.setStyle(sub.getStyle() - .withColor(0xFF00FF00) + .withColor(ChatFormatting.GREEN) .withClickEvent(new ClickEvent( ClickEvent.Action.RUN_COMMAND, "/tbm-server-edit freeze_battle_combatants true" @@ -720,7 +720,7 @@ public class ClientProxy extends CommonProxy { sub = new TextComponent("false "); sub.setStyle(sub.getStyle() - .withColor(0xFF00FF00) + .withColor(ChatFormatting.GREEN) .withClickEvent(new ClickEvent( ClickEvent.Action.RUN_COMMAND, "/tbm-server-edit freeze_battle_combatants false" @@ -729,7 +729,7 @@ public class ClientProxy extends CommonProxy { sub = new TextComponent("ignore_battle_types "); sub.setStyle(sub.getStyle() - .withColor(0xFF00FF00) + .withColor(ChatFormatting.DARK_GREEN) .withClickEvent(new ClickEvent( ClickEvent.Action.RUN_COMMAND, "/tbm-server-edit ignore_battle_types")) @@ -742,7 +742,7 @@ public class ClientProxy extends CommonProxy { sub = new TextComponent("player_speed "); sub.setStyle(sub.getStyle() - .withColor(0xFFFFFF00) + .withColor(ChatFormatting.YELLOW) .withBold(true) .withHoverEvent(new HoverEvent( HoverEvent.Action.SHOW_TEXT, @@ -752,7 +752,7 @@ public class ClientProxy extends CommonProxy { for (int i = 0; i <= 100; i += 5) { sub = new TextComponent(String.valueOf(i) + ' '); sub.setStyle(sub.getStyle() - .withColor(0xFF00FF00) + .withColor(ChatFormatting.GREEN) .withClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/tbm-server-edit player_speed " + i))); parent.append(sub); @@ -760,7 +760,7 @@ public class ClientProxy extends CommonProxy { sub = new TextComponent("player_haste_speed "); sub.setStyle(sub.getStyle() - .withColor(0xFFFFFF00) + .withColor(ChatFormatting.YELLOW) .withBold(true) .withHoverEvent(new HoverEvent( HoverEvent.Action.SHOW_TEXT, @@ -771,7 +771,7 @@ public class ClientProxy extends CommonProxy { for (int i = 0; i <= 100; i += 5) { sub = new TextComponent(String.valueOf(i) + ' '); sub.setStyle(sub.getStyle() - .withColor(0xFF00FF00) + .withColor(ChatFormatting.GREEN) .withClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/tbm-server-edit player_haste_speed " + i))); parent.append(sub); @@ -779,7 +779,7 @@ public class ClientProxy extends CommonProxy { sub = new TextComponent("player_slow_speed "); sub.setStyle(sub.getStyle() - .withColor(0xFFFFFF00) + .withColor(ChatFormatting.YELLOW) .withBold(true) .withHoverEvent(new HoverEvent( HoverEvent.Action.SHOW_TEXT, @@ -790,12 +790,177 @@ public class ClientProxy extends CommonProxy { for (int i = 0; i <= 100; i += 5) { sub = new TextComponent(String.valueOf(i) + ' '); sub.setStyle(sub.getStyle() - .withColor(0xFF00FF00) + .withColor(ChatFormatting.GREEN) .withClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/tbm-server-edit player_slow_speed " + i))); parent.append(sub); } + sub = new TextComponent("player_attack_probability "); + sub.setStyle(sub.getStyle() + .withColor(ChatFormatting.YELLOW) + .withBold(true) + .withHoverEvent(new HoverEvent( + HoverEvent.Action.SHOW_TEXT, + new TextComponent("Base Player attack probability in percentage") + ))); + parent.append(sub); + + for (int i = 0; i <= 100; i += 5) { + if (i == 0) { + sub = new TextComponent("1 "); + sub.setStyle(sub.getStyle() + .withColor(ChatFormatting.GREEN) + .withClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, + "/tbm-server-edit player_attack_probability 1"))); + } else { + sub = new TextComponent(String.valueOf(i) + ' '); + sub.setStyle(sub.getStyle() + .withColor(ChatFormatting.GREEN) + .withClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, + "/tbm-server-edit player_attack_probability " + i))); + } + parent.append(sub); + } + + sub = new TextComponent("player_evasion "); + sub.setStyle(sub.getStyle() + .withColor(ChatFormatting.YELLOW) + .withBold(true) + .withHoverEvent(new HoverEvent( + HoverEvent.Action.SHOW_TEXT, + new TextComponent("Base Player evasion rate in percentage") + ))); + parent.append(sub); + + for (int i = 0; i <= 100; i += 5) { + sub = new TextComponent(String.valueOf(i) + ' '); + sub.setStyle(sub.getStyle() + .withColor(ChatFormatting.GREEN) + .withClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, + "/tbm-server-edit player_evasion " + i))); + parent.append(sub); + } + + sub = new TextComponent("defense_duration "); + sub.setStyle(sub.getStyle() + .withColor(ChatFormatting.YELLOW) + .withBold(true) + .withHoverEvent(new HoverEvent( + HoverEvent.Action.SHOW_TEXT, + new TextComponent("Number of attacks that a \"Defend\" move blocks (lasts until next action)") + ))); + parent.append(sub); + + for (int i = 0; i <= 5; ++i) { + sub = new TextComponent(String.valueOf(i) + ' '); + sub.setStyle(sub.getStyle() + .withColor(ChatFormatting.GREEN) + .withClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, + "/tbm-server-edit defense_duration " + i))); + parent.append(sub); + } + + sub = new TextComponent("flee_good_probability "); + sub.setStyle(sub.getStyle() + .withColor(ChatFormatting.YELLOW) + .withBold(true) + .withHoverEvent(new HoverEvent( + HoverEvent.Action.SHOW_TEXT, + new TextComponent("Probability of flee success when Player's speed is higher than the fastest opposing Entity") + ))); + parent.append(sub); + + for (int i = 0; i <= 100; i += 5) { + if (i == 0) { + sub = new TextComponent("1 "); + sub.setStyle(sub.getStyle() + .withColor(ChatFormatting.GREEN) + .withClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, + "/tbm-server-edit flee_good_probability 1"))); + } else { + sub = new TextComponent(String.valueOf(i) + ' '); + sub.setStyle(sub.getStyle() + .withColor(ChatFormatting.GREEN) + .withClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, + "/tbm-server-edit flee_good_probability " + i))); + } + parent.append(sub); + } + + sub = new TextComponent("flee_bad_probability "); + sub.setStyle(sub.getStyle() + .withColor(ChatFormatting.YELLOW) + .withBold(true) + .withHoverEvent(new HoverEvent( + HoverEvent.Action.SHOW_TEXT, + new TextComponent("Probability of flee success when Player's speed is lower than the fastest opposing Entity") + ))); + parent.append(sub); + + for (int i = 0; i <= 100; i += 5) { + if (i == 0) { + sub = new TextComponent("1 "); + sub.setStyle(sub.getStyle() + .withColor(ChatFormatting.GREEN) + .withClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, + "/tbm-server-edit flee_bad_probability 1"))); + } else { + sub = new TextComponent(String.valueOf(i) + ' '); + sub.setStyle(sub.getStyle() + .withColor(ChatFormatting.GREEN) + .withClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, + "/tbm-server-edit flee_bad_probability " + i))); + } + parent.append(sub); + } + + sub = new TextComponent("minimum_hit_percentage "); + sub.setStyle(sub.getStyle() + .withColor(ChatFormatting.YELLOW) + .withBold(true) + .withHoverEvent(new HoverEvent( + HoverEvent.Action.SHOW_TEXT, + new TextComponent("The minimum percentage possible when calculating hit percentage for any attacker") + ))); + parent.append(sub); + + for (int i = 0; i <= 100; i += 5) { + if (i == 0) { + sub = new TextComponent("1 "); + sub.setStyle(sub.getStyle() + .withColor(ChatFormatting.GREEN) + .withClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, + "/tbm-server-edit minimum_hit_percentage 1"))); + } else { + sub = new TextComponent(String.valueOf(i) + ' '); + sub.setStyle(sub.getStyle() + .withColor(ChatFormatting.GREEN) + .withClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, + "/tbm-server-edit minimum_hit_percentage " + i))); + } + parent.append(sub); + } + + sub = new TextComponent("battle_turn_time_seconds "); + sub.setStyle(sub.getStyle() + .withColor(ChatFormatting.YELLOW) + .withBold(true) + .withHoverEvent(new HoverEvent( + HoverEvent.Action.SHOW_TEXT, + new TextComponent("The time in seconds to wait for all Players to choose their move") + ))); + parent.append(sub); + + for (int i = 5; i <= 60; i += 5) { + sub = new TextComponent(String.valueOf(i) + ' '); + sub.setStyle(sub.getStyle() + .withColor(ChatFormatting.GREEN) + .withClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, + "/tbm-server-edit battle_turn_time_seconds " + i))); + parent.append(sub); + } + TurnBasedMinecraftMod.proxy.displayComponent(parent); break; } diff --git a/src/main/java/com/burnedkirby/TurnBasedMinecraft/common/Config.java b/src/main/java/com/burnedkirby/TurnBasedMinecraft/common/Config.java index 8c3431c..9b8cc11 100644 --- a/src/main/java/com/burnedkirby/TurnBasedMinecraft/common/Config.java +++ b/src/main/java/com/burnedkirby/TurnBasedMinecraft/common/Config.java @@ -981,26 +981,72 @@ public class Config return playerAttackProbability; } + public void setPlayerAttackProbability(int probability) { + if (probability < 1) { + probability = 1; + } else if (probability > 100) { + probability = 100; + } + playerAttackProbability = probability; + } + public int getPlayerEvasion() { return playerEvasion; } + public void setPlayerEvasion(int evasion) { + if (evasion < 0) { + evasion = 0; + } else if (evasion > 100) { + evasion = 100; + } + playerEvasion = evasion; + } + public int getDefenseDuration() { return defenseDuration; } + public void setDefenseDuration(int turns) { + if (turns < 0) { + turns = 0; + } else if (turns > 5) { + turns = 5; + } + + defenseDuration = turns; + } + public int getFleeGoodProbability() { return fleeGoodProbability; } + public void setFleeGoodProbability(int probability) { + if (probability < 1) { + probability = 1; + } else if (probability > 100) { + probability = 100; + } + fleeGoodProbability = probability; + } + public int getFleeBadProbability() { return fleeBadProbability; } + public void setFleeBadProbability(int probability) { + if (probability < 1) { + probability = 1; + } else if (probability > 100) { + probability = 100; + } + fleeBadProbability = probability; + } + /** * Returns a clone of an EntityInfo (to prevent editing it). * @param classFullName @@ -1210,6 +1256,15 @@ public class Config return minimumHitPercentage; } + public void setMinimumHitPercentage(int percentage) { + if (percentage < 1) { + percentage = 1; + } else if (percentage > 100) { + percentage = 100; + } + minimumHitPercentage = percentage; + } + public int getMaxInBattle() { return maxInBattle; @@ -1263,6 +1318,15 @@ public class Config return (int)(battleDecisionDurationNanos / 1000000000L); } + public void setDecisionDurationSeconds(long seconds) { + if (seconds < 5) { + seconds = 5; + } else if (seconds > 60) { + seconds = 60; + } + battleDecisionDurationNanos = seconds * 1000000000L; + } + protected void addBattleIgnoringPlayer(int id) { battleIgnoringPlayers.add(id); diff --git a/src/main/java/com/burnedkirby/TurnBasedMinecraft/common/TurnBasedMinecraftMod.java b/src/main/java/com/burnedkirby/TurnBasedMinecraft/common/TurnBasedMinecraftMod.java index db22576..d00c352 100644 --- a/src/main/java/com/burnedkirby/TurnBasedMinecraft/common/TurnBasedMinecraftMod.java +++ b/src/main/java/com/burnedkirby/TurnBasedMinecraft/common/TurnBasedMinecraftMod.java @@ -9,6 +9,7 @@ import com.mojang.brigadier.arguments.IntegerArgumentType; import com.mojang.brigadier.arguments.StringArgumentType; import com.mojang.brigadier.exceptions.CommandSyntaxException; import com.mojang.brigadier.exceptions.SimpleCommandExceptionType; +import net.minecraft.ChatFormatting; import net.minecraft.commands.Commands; import net.minecraft.commands.arguments.EntityArgument; import net.minecraft.network.chat.ClickEvent; @@ -789,7 +790,7 @@ public class TurnBasedMinecraftMod { TextComponent subResponse = new TextComponent("leave_battle_cooldown is currently: "); response.append(subResponse); subResponse = new TextComponent(String.valueOf(TurnBasedMinecraftMod.proxy.getConfig().getLeaveBattleCooldownSeconds())); - subResponse.setStyle(subResponse.getStyle().withColor(0xFF00FF00)); + subResponse.setStyle(subResponse.getStyle().withColor(ChatFormatting.GREEN)); response.append(subResponse); c.getSource().sendSuccess(response, false); return 1; @@ -812,7 +813,7 @@ public class TurnBasedMinecraftMod { } else { TextComponent response = new TextComponent("Successfully set leave_battle_cooldown to: "); TextComponent subResponse = new TextComponent(String.valueOf(cooldown)); - subResponse.setStyle(subResponse.getStyle().withColor(0xFF00FF00)); + subResponse.setStyle(subResponse.getStyle().withColor(ChatFormatting.GREEN)); response.append(subResponse); c.getSource().sendSuccess(response, true); } @@ -824,7 +825,7 @@ public class TurnBasedMinecraftMod { response.append(subResponse); subResponse = new TextComponent(String.valueOf( TurnBasedMinecraftMod.proxy.getConfig().getAggroStartBattleDistance())); - subResponse.setStyle(subResponse.getStyle().withColor(0xFF00FF00)); + subResponse.setStyle(subResponse.getStyle().withColor(ChatFormatting.GREEN)); response.append(subResponse); c.getSource().sendSuccess(response, false); return 1; @@ -847,7 +848,7 @@ public class TurnBasedMinecraftMod { } else { TextComponent response = new TextComponent("Successfully set aggro_start_battle_max_distance to: "); TextComponent subResponse = new TextComponent(String.valueOf(distance)); - subResponse.setStyle(subResponse.getStyle().withColor(0xFF00FF00)); + subResponse.setStyle(subResponse.getStyle().withColor(ChatFormatting.GREEN)); response.append(subResponse); c.getSource().sendSuccess(response, true); } @@ -859,7 +860,7 @@ public class TurnBasedMinecraftMod { response.append(subResponse); subResponse = new TextComponent(String.valueOf( TurnBasedMinecraftMod.proxy.getConfig().isOldBattleBehaviorEnabled())); - subResponse.setStyle(subResponse.getStyle().withColor(0xFF00FF00)); + subResponse.setStyle(subResponse.getStyle().withColor(ChatFormatting.GREEN)); response.append(subResponse); c.getSource().sendSuccess(response, false); return 1; @@ -880,7 +881,7 @@ public class TurnBasedMinecraftMod { } else { TextComponent response = new TextComponent("Successfully set old_battle_behavior to: "); TextComponent subResponse = new TextComponent(String.valueOf(enabled)); - subResponse.setStyle(subResponse.getStyle().withColor(0xFF00FF00)); + subResponse.setStyle(subResponse.getStyle().withColor(ChatFormatting.GREEN)); response.append(subResponse); c.getSource().sendSuccess(response, true); } @@ -892,7 +893,7 @@ public class TurnBasedMinecraftMod { response.append(subResponse); subResponse = new TextComponent(String.valueOf( !TurnBasedMinecraftMod.proxy.getConfig().getIfOnlyOPsCanDisableTurnBasedForSelf())); - subResponse.setStyle(subResponse.getStyle().withColor(0xFF00FF00)); + subResponse.setStyle(subResponse.getStyle().withColor(ChatFormatting.GREEN)); response.append(subResponse); c.getSource().sendSuccess(response, false); return 1; @@ -914,7 +915,7 @@ public class TurnBasedMinecraftMod { } else { TextComponent response = new TextComponent("Successfully set anyone_can_disable_tbm_for_self to: "); TextComponent subResponse = new TextComponent(String.valueOf(enabled_for_all)); - subResponse.setStyle(subResponse.getStyle().withColor(0xFF00FF00)); + subResponse.setStyle(subResponse.getStyle().withColor(ChatFormatting.GREEN)); response.append(subResponse); c.getSource().sendSuccess(response, true); } @@ -926,7 +927,7 @@ public class TurnBasedMinecraftMod { response.append(subResponse); subResponse = new TextComponent(String.valueOf( TurnBasedMinecraftMod.proxy.getConfig().getMaxInBattle())); - subResponse.setStyle(subResponse.getStyle().withColor(0xFF00FF00)); + subResponse.setStyle(subResponse.getStyle().withColor(ChatFormatting.GREEN)); response.append(subResponse); c.getSource().sendSuccess(response, false); return 1; @@ -949,7 +950,7 @@ public class TurnBasedMinecraftMod { } else { TextComponent response = new TextComponent("Successfully set max_in_battle to: "); TextComponent subResponse = new TextComponent(String.valueOf(max_amount)); - subResponse.setStyle(subResponse.getStyle().withColor(0xFF00FF00)); + subResponse.setStyle(subResponse.getStyle().withColor(ChatFormatting.GREEN)); response.append(subResponse); c.getSource().sendSuccess(response, true); } @@ -961,7 +962,7 @@ public class TurnBasedMinecraftMod { response.append(subResponse); subResponse = new TextComponent(String.valueOf( !TurnBasedMinecraftMod.proxy.getConfig().isFreezeCombatantsEnabled())); - subResponse.setStyle(subResponse.getStyle().withColor(0xFF00FF00)); + subResponse.setStyle(subResponse.getStyle().withColor(ChatFormatting.GREEN)); response.append(subResponse); c.getSource().sendSuccess(response, false); return 1; @@ -980,7 +981,7 @@ public class TurnBasedMinecraftMod { } else { TextComponent response = new TextComponent("Successfully set freeze_battle_combatants to: "); TextComponent subResponse = new TextComponent(String.valueOf(enabled)); - subResponse.setStyle(subResponse.getStyle().withColor(0xFF00FF00)); + subResponse.setStyle(subResponse.getStyle().withColor(ChatFormatting.GREEN)); response.append(subResponse); c.getSource().sendSuccess(response, true); } @@ -989,7 +990,7 @@ public class TurnBasedMinecraftMod { .then(Commands.literal("ignore_battle_types").executes(c -> { TextComponent response = new TextComponent("Use "); TextComponent subResponse = new TextComponent("/tbm-server-edit ignore_battle_types add/remove "); - subResponse.setStyle(subResponse.getStyle().withColor(0xFFFFFF00)); + subResponse.setStyle(subResponse.getStyle().withColor(ChatFormatting.YELLOW)); response.append(subResponse); subResponse = new TextComponent("ignore_battle_types is currently: ["); @@ -1002,7 +1003,7 @@ public class TurnBasedMinecraftMod { } subResponse = new TextComponent(category); subResponse.setStyle(subResponse.getStyle() - .withColor(0xFF00FF00) + .withColor(ChatFormatting.GREEN) .withClickEvent(new ClickEvent( ClickEvent.Action.RUN_COMMAND, "/tbm-server-edit ignore_battle_types remove " + category)) @@ -1027,7 +1028,7 @@ public class TurnBasedMinecraftMod { TextComponent response = new TextComponent("Successfully appended category \""); TextComponent sub = new TextComponent(category); - sub.setStyle(sub.getStyle().withColor(0xFF00FF00)); + sub.setStyle(sub.getStyle().withColor(ChatFormatting.GREEN)); response.append(sub); sub = new TextComponent("\" to ignore_battle_types"); @@ -1052,7 +1053,7 @@ public class TurnBasedMinecraftMod { TextComponent response = new TextComponent("Successfully removed category \""); TextComponent sub = new TextComponent(category); - sub.setStyle(sub.getStyle().withColor(0xFF00FF00)); + sub.setStyle(sub.getStyle().withColor(ChatFormatting.GREEN)); response.append(sub); sub = new TextComponent("\" from ignore_battle_types"); @@ -1069,7 +1070,7 @@ public class TurnBasedMinecraftMod { .then(Commands.literal("player_speed").executes(c -> { TextComponent parent = new TextComponent("Use "); TextComponent sub = new TextComponent("/tbm-server-edit player_speed <0-100>"); - sub.setStyle(sub.getStyle().withColor(0xFFFFFF00)); + sub.setStyle(sub.getStyle().withColor(ChatFormatting.YELLOW)); parent.append(sub); c.getSource().sendSuccess(parent, false); @@ -1090,7 +1091,7 @@ public class TurnBasedMinecraftMod { } else { TextComponent response = new TextComponent("Successfully set player_speed to: "); TextComponent subResponse = new TextComponent(String.valueOf(speed)); - subResponse.setStyle(subResponse.getStyle().withColor(0xFF00FF00)); + subResponse.setStyle(subResponse.getStyle().withColor(ChatFormatting.GREEN)); response.append(subResponse); c.getSource().sendSuccess(response, true); } @@ -1099,7 +1100,7 @@ public class TurnBasedMinecraftMod { .then(Commands.literal("player_haste_speed").executes(c -> { TextComponent parent = new TextComponent("Use "); TextComponent sub = new TextComponent("/tbm-server-edit player_haste_speed <0-100>"); - sub.setStyle(sub.getStyle().withColor(0xFFFFFF00)); + sub.setStyle(sub.getStyle().withColor(ChatFormatting.YELLOW)); parent.append(sub); c.getSource().sendSuccess(parent, false); @@ -1120,7 +1121,7 @@ public class TurnBasedMinecraftMod { } else { TextComponent response = new TextComponent("Successfully set player_haste_speed to: "); TextComponent subResponse = new TextComponent(String.valueOf(haste_speed)); - subResponse.setStyle(subResponse.getStyle().withColor(0xFF00FF00)); + subResponse.setStyle(subResponse.getStyle().withColor(ChatFormatting.GREEN)); response.append(subResponse); c.getSource().sendSuccess(response, true); } @@ -1129,7 +1130,7 @@ public class TurnBasedMinecraftMod { .then(Commands.literal("player_slow_speed").executes(c -> { TextComponent parent = new TextComponent("Use "); TextComponent sub = new TextComponent("/tbm-server-edit player_slow_speed <0-100>"); - sub.setStyle(sub.getStyle().withColor(0xFFFFFF00)); + sub.setStyle(sub.getStyle().withColor(ChatFormatting.YELLOW)); parent.append(sub); c.getSource().sendSuccess(parent, false); @@ -1150,7 +1151,217 @@ public class TurnBasedMinecraftMod { } else { TextComponent response = new TextComponent("Successfully set player_slow_speed to: "); TextComponent subResponse = new TextComponent(String.valueOf(slow_speed)); - subResponse.setStyle(subResponse.getStyle().withColor(0xFF00FF00)); + subResponse.setStyle(subResponse.getStyle().withColor(ChatFormatting.GREEN)); + response.append(subResponse); + c.getSource().sendSuccess(response, true); + } + return 1; + }))) + .then(Commands.literal("player_attack_probability").executes(c -> { + TextComponent parent = new TextComponent("Use "); + TextComponent sub = new TextComponent("/tbm-server-edit player_attack_probability <1-100>"); + sub.setStyle(sub.getStyle().withColor(ChatFormatting.YELLOW)); + parent.append(sub); + + c.getSource().sendSuccess(parent, false); + return 1; + }) + .then(Commands.argument("probability", IntegerArgumentType.integer()).executes(c -> { + int probability = IntegerArgumentType.getInteger(c, "probability"); + // setPlayerAttackProbability() in Config validates the value. Set it, then fetch it again. + TurnBasedMinecraftMod.proxy.getConfig().setPlayerAttackProbability(probability); + probability = TurnBasedMinecraftMod.proxy.getConfig().getPlayerAttackProbability(); + if (!TurnBasedMinecraftMod.proxy.getConfig().updateConfig("server_config.player_attack_probability", probability)) { + TurnBasedMinecraftMod.logger.warn( + "Failed to set \"server_config.player_attack_probability\" in config file!"); + c.getSource().sendFailure(new TextComponent( + "Failed to set player_attack_probability to \"" + + probability + + "\" in config file!")); + } else { + TextComponent response = new TextComponent("Successfully set player_attack_probability to: "); + TextComponent subResponse = new TextComponent(String.valueOf(probability)); + subResponse.setStyle(subResponse.getStyle().withColor(ChatFormatting.GREEN)); + response.append(subResponse); + c.getSource().sendSuccess(response, true); + } + return 1; + }))) + .then(Commands.literal("player_evasion").executes(c -> { + TextComponent parent = new TextComponent("Use "); + TextComponent sub = new TextComponent("/tbm-server-edit player_evasion <0-100>"); + sub.setStyle(sub.getStyle().withColor(ChatFormatting.YELLOW)); + parent.append(sub); + + c.getSource().sendSuccess(parent, false); + return 1; + }) + .then(Commands.argument("evasion", IntegerArgumentType.integer()).executes(c -> { + int evasion = IntegerArgumentType.getInteger(c, "evasion"); + // setPlayerEvasion() in Config validates the value. Set it, then fetch it again. + TurnBasedMinecraftMod.proxy.getConfig().setPlayerEvasion(evasion); + evasion = TurnBasedMinecraftMod.proxy.getConfig().getPlayerEvasion(); + if (!TurnBasedMinecraftMod.proxy.getConfig().updateConfig("server_config.player_evasion", evasion)) { + TurnBasedMinecraftMod.logger.warn( + "Failed to set \"server_config.player_evasion\" in config file!"); + c.getSource().sendFailure(new TextComponent( + "Failed to set player_evasion to \"" + + evasion + + "\" in config file!")); + } else { + TextComponent response = new TextComponent("Successfully set player_evasion to: "); + TextComponent subResponse = new TextComponent(String.valueOf(evasion)); + subResponse.setStyle(subResponse.getStyle().withColor(ChatFormatting.GREEN)); + response.append(subResponse); + c.getSource().sendSuccess(response, true); + } + return 1; + }))) + .then(Commands.literal("defense_duration").executes(c -> { + TextComponent parent = new TextComponent("Use "); + TextComponent sub = new TextComponent("/tbm-server-edit defense_duration <0-5>"); + sub.setStyle(sub.getStyle().withColor(ChatFormatting.YELLOW)); + parent.append(sub); + + c.getSource().sendSuccess(parent, false); + return 1; + }) + .then(Commands.argument("defends", IntegerArgumentType.integer()).executes(c -> { + int defends = IntegerArgumentType.getInteger(c, "defends"); + // setDefenseDuration() in Config validates the value. Set it, then fetch it again. + TurnBasedMinecraftMod.proxy.getConfig().setDefenseDuration(defends); + defends = TurnBasedMinecraftMod.proxy.getConfig().getDefenseDuration(); + if (!TurnBasedMinecraftMod.proxy.getConfig().updateConfig("server_config.defense_duration", defends)) { + TurnBasedMinecraftMod.logger.warn( + "Failed to set \"server_config.defense_duration\" in config file!"); + c.getSource().sendFailure(new TextComponent( + "Failed to set defense_druation to \"" + + defends + + "\" in config file!")); + } else { + TextComponent response = new TextComponent("Successfully set defense_duration to: "); + TextComponent subResponse = new TextComponent(String.valueOf(defends)); + subResponse.setStyle(subResponse.getStyle().withColor(ChatFormatting.GREEN)); + response.append(subResponse); + c.getSource().sendSuccess(response, true); + } + return 1; + }))) + .then(Commands.literal("flee_good_probability").executes(c -> { + TextComponent parent = new TextComponent("Use "); + TextComponent sub = new TextComponent("/tbm-server-edit flee_good_probability <1-100>"); + sub.setStyle(sub.getStyle().withColor(ChatFormatting.YELLOW)); + parent.append(sub); + + c.getSource().sendSuccess(parent, false); + return 1; + }) + .then(Commands.argument("probability", IntegerArgumentType.integer()).executes(c -> { + int probability = IntegerArgumentType.getInteger(c, "probability"); + // setFleeGoodProbability() in Config validates the value. Set it, then fetch it again. + TurnBasedMinecraftMod.proxy.getConfig().setFleeGoodProbability(probability); + probability = TurnBasedMinecraftMod.proxy.getConfig().getFleeGoodProbability(); + if (!TurnBasedMinecraftMod.proxy.getConfig().updateConfig("server_config.flee_good_probability", probability)) { + TurnBasedMinecraftMod.logger.warn( + "Failed to set \"server_config.flee_good_probability\" in config file!"); + c.getSource().sendFailure(new TextComponent( + "Failed to set flee_good_probability to \"" + + probability + + "\" in config file!")); + } else { + TextComponent response = new TextComponent("Successfully set flee_good_probability to: "); + TextComponent subResponse = new TextComponent(String.valueOf(probability)); + subResponse.setStyle(subResponse.getStyle().withColor(ChatFormatting.GREEN)); + response.append(subResponse); + c.getSource().sendSuccess(response, true); + } + return 1; + }))) + .then(Commands.literal("flee_bad_probability").executes(c -> { + TextComponent parent = new TextComponent("Use "); + TextComponent sub = new TextComponent("/tbm-server-edit flee_bad_probability <1-100>"); + sub.setStyle(sub.getStyle().withColor(ChatFormatting.YELLOW)); + parent.append(sub); + + c.getSource().sendSuccess(parent, false); + return 1; + }) + .then(Commands.argument("probability", IntegerArgumentType.integer()).executes(c -> { + int probability = IntegerArgumentType.getInteger(c, "probability"); + // setFleeBadProbability() in Config validates the value. Set it, then fetch it again. + TurnBasedMinecraftMod.proxy.getConfig().setFleeBadProbability(probability); + probability = TurnBasedMinecraftMod.proxy.getConfig().getFleeBadProbability(); + if (!TurnBasedMinecraftMod.proxy.getConfig().updateConfig("server_config.flee_bad_probability", probability)) { + TurnBasedMinecraftMod.logger.warn( + "Failed to set \"server_config.flee_bad_probability\" in config file!"); + c.getSource().sendFailure(new TextComponent( + "Failed to set flee_bad_probability to \"" + + probability + + "\" in config file!")); + } else { + TextComponent response = new TextComponent("Successfully set flee_bad_probability to: "); + TextComponent subResponse = new TextComponent(String.valueOf(probability)); + subResponse.setStyle(subResponse.getStyle().withColor(ChatFormatting.GREEN)); + response.append(subResponse); + c.getSource().sendSuccess(response, true); + } + return 1; + }))) + .then(Commands.literal("minimum_hit_percentage").executes(c -> { + TextComponent parent = new TextComponent("Use "); + TextComponent sub = new TextComponent("/tbm-server-edit minimum_hit_percentage <1-100>"); + sub.setStyle(sub.getStyle().withColor(ChatFormatting.YELLOW)); + parent.append(sub); + + c.getSource().sendSuccess(parent, false); + return 1; + }) + .then(Commands.argument("percentage", IntegerArgumentType.integer()).executes(c -> { + int percentage = IntegerArgumentType.getInteger(c, "percentage"); + // setMinimumHitPercentage() in Config validates the value. Set it, then fetch it again. + TurnBasedMinecraftMod.proxy.getConfig().setMinimumHitPercentage(percentage); + percentage = TurnBasedMinecraftMod.proxy.getConfig().getMinimumHitPercentage(); + if (!TurnBasedMinecraftMod.proxy.getConfig().updateConfig("server_config.minimum_hit_percentage", percentage)) { + TurnBasedMinecraftMod.logger.warn( + "Failed to set \"server_config.minimum_hit_percentage\" in config file!"); + c.getSource().sendFailure(new TextComponent( + "Failed to set minimum_hit_percentage to \"" + + percentage + + "\" in config file!")); + } else { + TextComponent response = new TextComponent("Successfully set minimum_hit_percentage to: "); + TextComponent subResponse = new TextComponent(String.valueOf(percentage)); + subResponse.setStyle(subResponse.getStyle().withColor(ChatFormatting.GREEN)); + response.append(subResponse); + c.getSource().sendSuccess(response, true); + } + return 1; + }))) + .then(Commands.literal("battle_turn_time_seconds").executes(c -> { + TextComponent parent = new TextComponent("Use "); + TextComponent sub = new TextComponent("/tbm-server-edit battle_turn_time_seconds <5-60>"); + sub.setStyle(sub.getStyle().withColor(ChatFormatting.YELLOW)); + parent.append(sub); + + c.getSource().sendSuccess(parent, false); + return 1; + }) + .then(Commands.argument("seconds", IntegerArgumentType.integer()).executes(c -> { + int seconds = IntegerArgumentType.getInteger(c, "seconds"); + // setDecisionDurationSeconds() in Config validates the value. Set it, then fetch it again. + TurnBasedMinecraftMod.proxy.getConfig().setDecisionDurationSeconds(seconds); + seconds = TurnBasedMinecraftMod.proxy.getConfig().getDecisionDurationSeconds(); + if (!TurnBasedMinecraftMod.proxy.getConfig().updateConfig("server_config.battle_turn_time_seconds", seconds)) { + TurnBasedMinecraftMod.logger.warn( + "Failed to set \"server_config.battle_turn_time_seconds\" in config file!"); + c.getSource().sendFailure(new TextComponent( + "Failed to set battle_turn_time_seconds to \"" + + seconds + + "\" in config file!")); + } else { + TextComponent response = new TextComponent("Successfully set battle_turn_time_seconds to: "); + TextComponent subResponse = new TextComponent(String.valueOf(seconds)); + subResponse.setStyle(subResponse.getStyle().withColor(ChatFormatting.GREEN)); response.append(subResponse); c.getSource().sendSuccess(response, true); }