]> git.seodisparate.com - TurnBasedMinecraftMod/commitdiff
Impl in-game server config editing
authorStephen Seo <seo.disparate@gmail.com>
Fri, 10 Jun 2022 03:05:19 +0000 (12:05 +0900)
committerStephen Seo <seo.disparate@gmail.com>
Fri, 10 Jun 2022 03:05:19 +0000 (12:05 +0900)
src/main/java/com/burnedkirby/TurnBasedMinecraft/client/ClientProxy.java
src/main/java/com/burnedkirby/TurnBasedMinecraft/common/Config.java
src/main/java/com/burnedkirby/TurnBasedMinecraft/common/TurnBasedMinecraftMod.java

index 872d8ddec2325b7bbb77d1b0e6b5fc6cfb278f71..d480579651b2ee1e578fecaa468d37d7dab2dc8d 100644 (file)
@@ -961,6 +961,73 @@ public class ClientProxy extends CommonProxy {
                         parent.append(sub);
                     }
 
+                    sub = new TextComponent("creeper_explode_turn ");
+                    sub.setStyle(sub.getStyle()
+                        .withColor(ChatFormatting.YELLOW)
+                        .withBold(true)
+                        .withHoverEvent(new HoverEvent(
+                            HoverEvent.Action.SHOW_TEXT,
+                            new TextComponent("The number of turns it takes for a creeper to explode")
+                        )));
+                    parent.append(sub);
+
+                    for (int i = 1; i <= 10; ++i) {
+                        sub = new TextComponent(String.valueOf(i) + ' ');
+                        sub.setStyle(sub.getStyle()
+                            .withColor(ChatFormatting.GREEN)
+                            .withClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND,
+                                "/tbm-server-edit creeper_explode_turn " + i)));
+                        parent.append(sub);
+                    }
+
+                    sub = new TextComponent("creeper_stop_explode_on_leave_battle ");
+                    sub.setStyle(sub.getStyle()
+                        .withColor(ChatFormatting.YELLOW)
+                        .withBold(true)
+                        .withHoverEvent(new HoverEvent(
+                            HoverEvent.Action.SHOW_TEXT,
+                            new TextComponent("Stops creepers from exploding when they leave battle (during leave battle cooldown)")
+                        )));
+                    parent.append(sub);
+
+                    sub = new TextComponent("true ");
+                    sub.setStyle(sub.getStyle()
+                        .withColor(ChatFormatting.GREEN)
+                        .withClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND,
+                            "/tbm-server-edit creeper_stop_explode_on_leave_battle true")));
+                    parent.append(sub);
+
+                    sub = new TextComponent("false ");
+                    sub.setStyle(sub.getStyle()
+                        .withColor(ChatFormatting.GREEN)
+                        .withClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND,
+                            "/tbm-server-edit creeper_stop_explode_on_leave_battle false")));
+                    parent.append(sub);
+
+                    sub = new TextComponent("creeper_always_allow_damage ");
+                    sub.setStyle(sub.getStyle()
+                        .withColor(ChatFormatting.YELLOW)
+                        .withBold(true)
+                        .withHoverEvent(new HoverEvent(
+                            HoverEvent.Action.SHOW_TEXT,
+                            new TextComponent("Allows creepers to damage anyone who just left battle (in cooldown)")
+                        )));
+                    parent.append(sub);
+
+                    sub = new TextComponent("true ");
+                    sub.setStyle(sub.getStyle()
+                        .withColor(ChatFormatting.GREEN)
+                        .withClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND,
+                            "/tbm-server-edit creeper_always_allow_damage true")));
+                    parent.append(sub);
+
+                    sub = new TextComponent("false ");
+                    sub.setStyle(sub.getStyle()
+                        .withColor(ChatFormatting.GREEN)
+                        .withClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND,
+                            "/tbm-server-edit creeper_always_allow_damage false")));
+                    parent.append(sub);
+
                     TurnBasedMinecraftMod.proxy.displayComponent(parent);
                     break;
                 }
index 9b8cc113d6eb416fb5cc1ce73b5abb15ed11fa07..5169436ab5cd864ed8d4dab7f73c033a6989c49c 100644 (file)
@@ -1410,7 +1410,24 @@ public class Config
 
     public int getCreeperExplodeTurn() { return creeperExplodeTurn; }
 
+    public void setCreeperExplodeTurn(int turns) {
+        if (turns < 1) {
+            turns = 1;
+        } else if (turns > 10) {
+            turns = 10;
+        }
+        creeperExplodeTurn = turns;
+    }
+
     public boolean getCreeperStopExplodeOnLeaveBattle() { return creeperStopExplodeOnLeaveBattle; }
 
+    public void setCreeperStopExplodeOnLeaveBattle(boolean stop_explode_on_leave_battle) {
+        creeperStopExplodeOnLeaveBattle = stop_explode_on_leave_battle;
+    }
+
     public boolean getCreeperAlwaysAllowDamage() { return creeperAlwaysAllowDamage; }
+
+    public void setCreeperAlwaysAllowDamage(boolean allow_damage) {
+        creeperAlwaysAllowDamage = allow_damage;
+    }
 }
index d00c352684a8a33b4ce2ee1a91a0a84ee5d375cd..a8daded404ebf92f43810aeddb6abdb324c5ba04 100644 (file)
@@ -1098,14 +1098,14 @@ public class TurnBasedMinecraftMod {
                         return 1;
                     })))
                 .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(ChatFormatting.YELLOW));
-                    parent.append(sub);
+                        TextComponent parent = new TextComponent("Use ");
+                        TextComponent sub = new TextComponent("/tbm-server-edit player_haste_speed <0-100>");
+                        sub.setStyle(sub.getStyle().withColor(ChatFormatting.YELLOW));
+                        parent.append(sub);
 
-                    c.getSource().sendSuccess(parent, false);
-                    return 1;
-                })
+                        c.getSource().sendSuccess(parent, false);
+                        return 1;
+                    })
                     .then(Commands.argument("haste_speed", IntegerArgumentType.integer()).executes(c -> {
                         int haste_speed = IntegerArgumentType.getInteger(c, "haste_speed");
                         // setPlayerHasteSpeed() in Config validates the value. Set it, then fetch it again.
@@ -1128,14 +1128,14 @@ public class TurnBasedMinecraftMod {
                         return 1;
                     })))
                 .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(ChatFormatting.YELLOW));
-                    parent.append(sub);
+                        TextComponent parent = new TextComponent("Use ");
+                        TextComponent sub = new TextComponent("/tbm-server-edit player_slow_speed <0-100>");
+                        sub.setStyle(sub.getStyle().withColor(ChatFormatting.YELLOW));
+                        parent.append(sub);
 
-                    c.getSource().sendSuccess(parent, false);
-                    return 1;
-                })
+                        c.getSource().sendSuccess(parent, false);
+                        return 1;
+                    })
                     .then(Commands.argument("slow_speed", IntegerArgumentType.integer()).executes(c -> {
                         int slow_speed = IntegerArgumentType.getInteger(c, "slow_speed");
                         // setPlayerSlowSpeed() in Config validates the value. Set it, then fetch it again.
@@ -1158,14 +1158,14 @@ public class TurnBasedMinecraftMod {
                         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);
+                        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;
-                })
+                        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.
@@ -1188,14 +1188,14 @@ public class TurnBasedMinecraftMod {
                         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);
+                        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;
-                })
+                        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.
@@ -1218,14 +1218,14 @@ public class TurnBasedMinecraftMod {
                         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);
+                        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;
-                })
+                        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.
@@ -1248,14 +1248,14 @@ public class TurnBasedMinecraftMod {
                         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);
+                        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;
-                })
+                        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.
@@ -1308,14 +1308,14 @@ public class TurnBasedMinecraftMod {
                         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);
+                        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;
-                })
+                        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.
@@ -1338,14 +1338,14 @@ public class TurnBasedMinecraftMod {
                         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);
+                        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;
-                })
+                        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.
@@ -1367,6 +1367,96 @@ public class TurnBasedMinecraftMod {
                         }
                         return 1;
                     })))
+                .then(Commands.literal("creeper_explode_turn").executes(c -> {
+                        TextComponent parent = new TextComponent("Use ");
+                        TextComponent sub = new TextComponent("/tbm-server-edit creeper_explode_turn <1-10>");
+                        sub.setStyle(sub.getStyle().withColor(ChatFormatting.YELLOW));
+                        parent.append(sub);
+
+                        c.getSource().sendSuccess(parent, false);
+                        return 1;
+                    })
+                    .then(Commands.argument("turns", IntegerArgumentType.integer()).executes(c -> {
+                        int turns = IntegerArgumentType.getInteger(c, "turns");
+                        // setCreeperExplodeTurn() in Config validates the value. Set it, then fetch it again.
+                        TurnBasedMinecraftMod.proxy.getConfig().setCreeperExplodeTurn(turns);
+                        turns = TurnBasedMinecraftMod.proxy.getConfig().getCreeperExplodeTurn();
+                        if (!TurnBasedMinecraftMod.proxy.getConfig().updateConfig("server_config.creeper_explode_turn", turns)) {
+                            TurnBasedMinecraftMod.logger.warn(
+                                "Failed to set \"server_config.creeper_explode_turn\" in config file!");
+                            c.getSource().sendFailure(new TextComponent(
+                                "Failed to set creeper_explode_turn to \""
+                                    + turns
+                                    + "\" in config file!"));
+                        } else {
+                            TextComponent response = new TextComponent("Successfully set creeper_explode_turn to: ");
+                            TextComponent subResponse = new TextComponent(String.valueOf(turns));
+                            subResponse.setStyle(subResponse.getStyle().withColor(ChatFormatting.GREEN));
+                            response.append(subResponse);
+                            c.getSource().sendSuccess(response, true);
+                        }
+                        return 1;
+                    })))
+                .then(Commands.literal("creeper_stop_explode_on_leave_battle").executes(c -> {
+                        TextComponent parent = new TextComponent("Use ");
+                        TextComponent sub = new TextComponent("/tbm-server-edit creeper_stop_explode_on_leave_battle <true/false>");
+                        sub.setStyle(sub.getStyle().withColor(ChatFormatting.YELLOW));
+                        parent.append(sub);
+
+                        c.getSource().sendSuccess(parent, false);
+                        return 1;
+                    })
+                    .then(Commands.argument("stop_explode_on_leave", BoolArgumentType.bool()).executes(c -> {
+                        boolean stop_explode_on_leave = BoolArgumentType.getBool(c, "stop_explode_on_leave");
+                        TurnBasedMinecraftMod.proxy.getConfig().setCreeperStopExplodeOnLeaveBattle(stop_explode_on_leave);
+                        if (!TurnBasedMinecraftMod.proxy.getConfig().updateConfig("server_config.creeper_stop_explode_on_leave_battle", stop_explode_on_leave)) {
+                            TurnBasedMinecraftMod.logger.warn(
+                                "Failed to set \"server_config.creeper_stop_explode_on_leave_battle\" in config file!"
+                            );
+                            c.getSource().sendFailure(new TextComponent(
+                                "Failed to set creeper_stop_explode_on_leave_battle to \""
+                                    + stop_explode_on_leave
+                                    + "\" in config file!"
+                            ));
+                        } else {
+                            TextComponent response = new TextComponent("Successfully set creeper_stop_explode_on_leave_battle to: ");
+                            TextComponent subResponse = new TextComponent(String.valueOf(stop_explode_on_leave));
+                            subResponse.setStyle(subResponse.getStyle().withColor(ChatFormatting.GREEN));
+                            response.append(subResponse);
+                            c.getSource().sendSuccess(response, true);
+                        }
+                        return 1;
+                    })))
+                .then(Commands.literal("creeper_always_allow_damage").executes(c -> {
+                        TextComponent parent = new TextComponent("Use ");
+                        TextComponent sub = new TextComponent("/tbm-server-edit creeper_always_allow_damage <true/false>");
+                        sub.setStyle(sub.getStyle().withColor(ChatFormatting.YELLOW));
+                        parent.append(sub);
+
+                        c.getSource().sendSuccess(parent, false);
+                        return 1;
+                    })
+                    .then(Commands.argument("allow_damage", BoolArgumentType.bool()).executes(c -> {
+                        boolean allow_damage = BoolArgumentType.getBool(c, "allow_damage");
+                        TurnBasedMinecraftMod.proxy.getConfig().setCreeperAlwaysAllowDamage(allow_damage);
+                        if (!TurnBasedMinecraftMod.proxy.getConfig().updateConfig("server_config.creeper_always_allow_damage", allow_damage)) {
+                            TurnBasedMinecraftMod.logger.warn(
+                                "Failed to set \"server_config.creeper_always_allow_damage\" in config file!"
+                            );
+                            c.getSource().sendFailure(new TextComponent(
+                                "Failed to set creeper_always_allow_damage to \""
+                                    + allow_damage
+                                    + "\" in config file!"
+                            ));
+                        } else {
+                            TextComponent response = new TextComponent("Successfully set creeper_always_allow_damage to: ");
+                            TextComponent subResponse = new TextComponent(String.valueOf(allow_damage));
+                            subResponse.setStyle(subResponse.getStyle().withColor(ChatFormatting.GREEN));
+                            response.append(subResponse);
+                            c.getSource().sendSuccess(response, true);
+                        }
+                        return 1;
+                    })))
         );
     }