diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/config/Settings.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/config/Settings.java index 013b8165..3f3a0551 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/config/Settings.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/config/Settings.java @@ -44,6 +44,7 @@ public class Settings { private static final String COSMETIC_EMOTE_INVINCIBLE_PATH = "emote-invincible"; private static final String COSMETIC_EMOTE_CAMERA_PATH = "emote-camera"; private static final String COSMETIC_EMOTE_MOVE_CHECK_PATH = "emote-move"; + private static final String COSMETIC_DISABLED_WORLDS_PATH = "disabled-worlds"; private static final String COSMETIC_PACKET_ENTITY_TELEPORT_COOLDOWN_PATH = "entity-cooldown-teleport-packet"; private static final String COSMETIC_BACKPACK_FORCE_RIDING_PACKET_PATH = "backpack-force-riding-packet"; private static final String COSMETIC_FORCE_OFFHAND_COSMETIC_SHOW_PATH = "offhand-always-show"; @@ -118,6 +119,8 @@ public class Settings { @Getter private static List disabledGamemodes; @Getter + private static List disabledWorlds; + @Getter private static int viewDistance; @Getter private static int tickPeriod; @@ -176,8 +179,10 @@ public class Settings { disabledGamemodesEnabled = disabledGamemodeSettings.node(ENABLED_PATH).getBoolean(true); try { disabledGamemodes = disabledGamemodeSettings.node(DISABLED_GAMEMODE_GAMEMODES_PATH).getList(String.class); + disabledWorlds = cosmeticSettings.node(COSMETIC_DISABLED_WORLDS_PATH).getList(String.class); } catch (Exception e) { disabledGamemodes = new ArrayList<>(); + disabledWorlds = new ArrayList<>(); } unapplyOnDeath = cosmeticSettings.node(UNAPPLY_DEATH_PATH).getBoolean(false); diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/listener/PlayerGameListener.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/listener/PlayerGameListener.java index 2e8238ab..25cbca1a 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/listener/PlayerGameListener.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/listener/PlayerGameListener.java @@ -131,6 +131,13 @@ public class PlayerGameListener implements Listener { Bukkit.getScheduler().runTaskLater(HMCCosmeticsPlugin.getInstance(), () -> { if (user.getEntity() == null || user.isInWardrobe()) return; // fixes disconnecting when in wardrobe (the entity stuff) + if (Settings.getDisabledWorlds().contains(user.getEntity().getLocation().getWorld().getName())) { + user.hideCosmetics(CosmeticUser.HiddenReason.WORLD); + } else { + if (user.getHiddenReason() != null && user.getHiddenReason().equals(CosmeticUser.HiddenReason.WORLD)) { + user.showCosmetics(); + } + } if (user.hasCosmeticInSlot(CosmeticSlot.BACKPACK) && user.getUserBackpackManager() != null) { user.respawnBackpack(); } diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/user/CosmeticUser.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/user/CosmeticUser.java index 00fd4bd8..de76ba87 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/user/CosmeticUser.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/user/CosmeticUser.java @@ -560,6 +560,7 @@ public class CosmeticUser { ACTION, COMMAND, EMOTE, - GAMEMODE + GAMEMODE, + WORLD } } diff --git a/common/src/main/resources/config.yml b/common/src/main/resources/config.yml index 214a5c61..110b8f41 100644 --- a/common/src/main/resources/config.yml +++ b/common/src/main/resources/config.yml @@ -24,6 +24,10 @@ cosmetic-settings: force-permission-join: true # Checks a player permission if they can have a cosmetic when they join the server. force-show-join: false # If the plugin should force show a player's cosmetics when they join the server. + # This is a list of worlds that cosmetics are hidden in. When a player enters one of these worlds, their cosmetics will be hidden. + disabled-worlds: + - "disabledworld" + disabled-gamemode: enabled: true # Which gamemodes should cosmetics be disabled for. This is useful for servers that have a creative world. All options are here, https://hub.spigotmc.org/javadocs/spigot/org/bukkit/GameMode.html