From: Stephen Seo Date: Wed, 24 Aug 2022 03:16:36 +0000 (+0900) Subject: Impl. player_only_battles, v1.21.3 X-Git-Tag: 1.21.3 X-Git-Url: https://git.seodisparate.com/stephenseo/static/search/searchdata.js?a=commitdiff_plain;h=e447116e1d8f95776f59ee6c5b3ae1863c92cf2d;p=TurnBasedMinecraftMod Impl. player_only_battles, v1.21.3 A server-side config option was added to enable "player_only_battles" where mobs cannot enter battle. (I haven't actually tested this fully since I am only 1 person, so there may be bugs.) This can be edited via the config, or via the `/tbm-server-edit` command. Version bumped to 1.21.3 . --- diff --git a/Changelog.md b/Changelog.md index 6a838d9..ef90a8c 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,5 +1,11 @@ # Upcoming changes +# Version 1.21.3 + +Implemented "player-only" battles, which can be enabled in the server-side +config or set using `/tbm-server-edit`. (Somewhat untested because I am only 1 +person.) + # Version 1.21.2 Refactored checking-if-in-battle code from `O(n)` to `O(1)` complexity. diff --git a/build.gradle b/build.gradle index 15c0aeb..00d5ea0 100644 --- a/build.gradle +++ b/build.gradle @@ -14,7 +14,7 @@ apply plugin: 'net.minecraftforge.gradle' //apply plugin: 'eclipse' //apply plugin: 'maven-publish' -version = "1.21.2" +version = "1.21.3" group = "com.burnedkirby.TurnBasedMinecraft" archivesBaseName = "TurnBasedMinecraft" diff --git a/src/main/java/com/burnedkirby/TurnBasedMinecraft/client/ClientProxy.java b/src/main/java/com/burnedkirby/TurnBasedMinecraft/client/ClientProxy.java index a5763f6..34ff24b 100644 --- a/src/main/java/com/burnedkirby/TurnBasedMinecraft/client/ClientProxy.java +++ b/src/main/java/com/burnedkirby/TurnBasedMinecraft/client/ClientProxy.java @@ -1062,6 +1062,34 @@ public class ClientProxy extends CommonProxy { .withBold(true)); parent.getSiblings().add(sub); + sub = Component.literal("player_only_battles "); + sub.setStyle(sub.getStyle() + .withColor(ChatFormatting.YELLOW) + .withBold(true) + .withHoverEvent(new HoverEvent( + HoverEvent.Action.SHOW_TEXT, + Component.literal("Disables battle for non-player entities") + ))); + parent.getSiblings().add(sub); + + sub = Component.literal("enable "); + sub.setStyle(sub.getStyle() + .withColor(ChatFormatting.GREEN) + .withClickEvent(new ClickEvent( + ClickEvent.Action.RUN_COMMAND, + "/tbm-server-edit player_only_battles true" + ))); + parent.getSiblings().add(sub); + + sub = Component.literal("disable "); + sub.setStyle(sub.getStyle() + .withColor(ChatFormatting.GREEN) + .withClickEvent(new ClickEvent( + ClickEvent.Action.RUN_COMMAND, + "/tbm-server-edit player_only_battles false" + ))); + parent.getSiblings().add(sub); + TurnBasedMinecraftMod.proxy.displayComponent(parent); break; } diff --git a/src/main/java/com/burnedkirby/TurnBasedMinecraft/common/BattleManager.java b/src/main/java/com/burnedkirby/TurnBasedMinecraft/common/BattleManager.java index a9cac7f..28978de 100644 --- a/src/main/java/com/burnedkirby/TurnBasedMinecraft/common/BattleManager.java +++ b/src/main/java/com/burnedkirby/TurnBasedMinecraft/common/BattleManager.java @@ -66,11 +66,14 @@ public class BattleManager attackerCustomName = null; } - // verify that both entities are EntityPlayer and not in creative or has a corresponding EntityInfo + // Verify that both entities are EntityPlayer and not in creative or has a corresponding EntityInfo. + // Also check if "player_only_battles" is enabled and both entities are players. if(!((event.getEntity() instanceof Player && !((Player)event.getEntity()).isCreative()) || (config.getEntityInfoReference(receiverClassName) != null || config.getCustomEntityInfoReference(receiverCustomName) != null)) || !((event.getSource().getEntity() instanceof Player && !((Player)event.getSource().getEntity()).isCreative()) - || (config.getEntityInfoReference(attackerClassName) != null || config.getCustomEntityInfoReference(attackerCustomName) != null))) + || (config.getEntityInfoReference(attackerClassName) != null || config.getCustomEntityInfoReference(attackerCustomName) != null)) + || (TurnBasedMinecraftMod.proxy.getConfig().isPlayerOnlyBattlesEnabled() && + (!(event.getEntity() instanceof Player) || !(event.getSource().getEntity() instanceof Player)))) { // logger.debug("BattleManager: Failed first check, attacker is \"" + attackerClassName + "\", defender is \"" + receiverClassName + "\""); return false; @@ -176,6 +179,12 @@ public class BattleManager public void checkTargeted(LivingSetAttackTargetEvent event) { + // Check if "player_only_battles" is enabled and if both entities are players. + if (TurnBasedMinecraftMod.proxy.getConfig().isPlayerOnlyBattlesEnabled() && + (!(event.getEntity() instanceof Player) || !(event.getTarget() instanceof Player))) { + return; + } + String targetedCustomName; try { targetedCustomName = event.getTarget().getCustomName().getString(); diff --git a/src/main/java/com/burnedkirby/TurnBasedMinecraft/common/Config.java b/src/main/java/com/burnedkirby/TurnBasedMinecraft/common/Config.java index 496f273..5a12f2e 100644 --- a/src/main/java/com/burnedkirby/TurnBasedMinecraft/common/Config.java +++ b/src/main/java/com/burnedkirby/TurnBasedMinecraft/common/Config.java @@ -53,6 +53,8 @@ public class Config private Set possibleIgnoreHurtDamageSources; private Set ignoreHurtDamageSources; + private boolean playerOnlyBattles = false; + public Config(Logger logger) { entityInfoMap = new HashMap(); @@ -548,6 +550,19 @@ public class Config logTOMLInvalidValue("server_config.ignore_damage_sources"); } + try { + Boolean is_only_player_battles_enabled = conf.get("server_config.player_only_battles"); + if (is_only_player_battles_enabled != null) { + playerOnlyBattles = is_only_player_battles_enabled; + } else { + playerOnlyBattles = false; + logNotFound("server_config.player_only_battles", "false"); + } + } catch (ClassCastException e) { + playerOnlyBattles = false; + logTOMLInvalidValue("server_config.player_only_battles", "false"); + } + Collection entities = null; try { entities = conf.get("server_config.entity"); @@ -1513,4 +1528,12 @@ public class Config public boolean removeIgnoreHurtDamageSource(String source) { return ignoreHurtDamageSources.remove(source); } + + public boolean isPlayerOnlyBattlesEnabled() { + return playerOnlyBattles; + } + + public void setIsPlayerOnlyBattles(boolean enabled) { + playerOnlyBattles = enabled; + } } \ No newline at end of file diff --git a/src/main/java/com/burnedkirby/TurnBasedMinecraft/common/TurnBasedMinecraftMod.java b/src/main/java/com/burnedkirby/TurnBasedMinecraft/common/TurnBasedMinecraftMod.java index 305a0cc..115125f 100644 --- a/src/main/java/com/burnedkirby/TurnBasedMinecraft/common/TurnBasedMinecraftMod.java +++ b/src/main/java/com/burnedkirby/TurnBasedMinecraft/common/TurnBasedMinecraftMod.java @@ -39,7 +39,7 @@ import org.apache.logging.log4j.Logger; public class TurnBasedMinecraftMod { public static final String MODID = "com_burnedkirby_turnbasedminecraft"; public static final String NAME = "Turn Based Minecraft Mod"; - public static final String VERSION = "1.21.2"; + public static final String VERSION = "1.21.3"; public static final String CONFIG_FILENAME = "TBM_Config.toml"; public static final String DEFAULT_CONFIG_FILENAME = "TBM_Config_DEFAULT.toml"; public static final String CONFIG_DIRECTORY = "config/TurnBasedMinecraft/"; @@ -1589,6 +1589,30 @@ public class TurnBasedMinecraftMod { c.getSource().sendFailure(Component.literal("Failed to remove type \"" + type + "\" from ignore_damage_sources")); return 1; })))) + .then(Commands.literal("player_only_battles").executes(c -> { + MutableComponent parent = Component.literal("Use "); + MutableComponent sub = Component.literal("/tbm-server-edit player_only_battles "); + sub.setStyle(sub.getStyle().withColor(ChatFormatting.YELLOW)); + parent.getSiblings().add(sub); + + c.getSource().sendSuccess(parent, false); + return 1; + }) + .then(Commands.argument("player_only_battles", BoolArgumentType.bool()).executes(c -> { + boolean player_only_battles = BoolArgumentType.getBool(c, "player_only_battles"); + TurnBasedMinecraftMod.proxy.getConfig().setIsPlayerOnlyBattles(player_only_battles); + if (!TurnBasedMinecraftMod.proxy.getConfig().updateConfig("server_config.player_only_battles", player_only_battles)) { + TurnBasedMinecraftMod.logger.warn("Failed to set \"server_config.player_only_battles\" in config file!"); + c.getSource().sendFailure(Component.literal("Failed to set player_only_battles to \"" + player_only_battles + "\" in config file")); + } else { + MutableComponent response = Component.literal("Successfully set player_only_battles to: "); + MutableComponent sub = Component.literal(String.valueOf(player_only_battles)); + sub.setStyle(sub.getStyle().withColor(ChatFormatting.GREEN)); + response.getSiblings().add(sub); + c.getSource().sendSuccess(response, true); + } + return 1; + }))) ); } diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml index 3780f3e..847c738 100644 --- a/src/main/resources/META-INF/mods.toml +++ b/src/main/resources/META-INF/mods.toml @@ -15,7 +15,7 @@ license="MIT" # The modid of the mod modId="com_burnedkirby_turnbasedminecraft" #mandatory # The version number of the mod - there's a few well known ${} variables useable here or just hardcode it -version="1.21.2" #mandatory +version="1.21.3" #mandatory # A display name for the mod displayName="TurnBasedMinecraftMod" #mandatory # A URL to query for updates for this mod. See the JSON update specification diff --git a/src/main/resources/assets/com_burnedkirby_turnbasedminecraft/TBM_Config.toml b/src/main/resources/assets/com_burnedkirby_turnbasedminecraft/TBM_Config.toml index 9dc6720..5231401 100644 --- a/src/main/resources/assets/com_burnedkirby_turnbasedminecraft/TBM_Config.toml +++ b/src/main/resources/assets/com_burnedkirby_turnbasedminecraft/TBM_Config.toml @@ -100,6 +100,9 @@ ignore_damage_sources = [ "sweetBerryBush" ] +# If this is set to true, only players can enter battle. +player_only_battles = false + # Each "server_config.entity" entry uses the following options: # name: full class name of the entity, cannot also have option "custom_name" diff --git a/src/main/resources/mcmod.info b/src/main/resources/mcmod.info index 5b9cfd0..9060789 100644 --- a/src/main/resources/mcmod.info +++ b/src/main/resources/mcmod.info @@ -3,7 +3,7 @@ "modid": "com_burnedkirby_turnbasedminecraft", "name": "Turn Based Minecraft", "description": "Changes battles to be turn-based.", - "version": "1.21.2", + "version": "1.21.3", "mcversion": "1.18.2", "url": "", "updateUrl": "",