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 63cf694e..de486752 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/config/Settings.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/config/Settings.java @@ -34,6 +34,7 @@ public class Settings { private static final String TICK_PERIOD_PATH = "tick-period"; private static final String UNAPPLY_DEATH_PATH = "unapply-on-death"; private static final String FORCE_PERMISSION_JOIN_PATH = "force-permission-join"; + private static final String FORCE_SHOW_COSMETICS_PATH = "force-show-join"; private static final String EMOTE_DISTANCE_PATH = "emote-distance"; private static final String HOOK_SETTING_PATH = "hook-settings"; private static final String HOOK_ITEMADDER_PATH = "itemsadder"; @@ -64,6 +65,7 @@ public class Settings { private static boolean debugMode; private static boolean unapplyOnDeath; private static boolean forcePermissionJoin; + private static boolean forceShowOnJoin; private static boolean itemsAdderChangeReload; private static boolean worldGuardMoveCheck; private static boolean cosmeticEmoteBlockCheck; @@ -105,6 +107,7 @@ public static void load(ConfigurationNode source) { requireEmptyBoots = cosmeticSettings.node(REQUIRE_EMPTY_BOOTS_PATH).getBoolean(); unapplyOnDeath = cosmeticSettings.node(UNAPPLY_DEATH_PATH).getBoolean(false); forcePermissionJoin = cosmeticSettings.node(FORCE_PERMISSION_JOIN_PATH).getBoolean(false); + forceShowOnJoin = cosmeticSettings.node(FORCE_SHOW_COSMETICS_PATH).getBoolean(false); emoteDistance = cosmeticSettings.node(EMOTE_DISTANCE_PATH).getDouble(-3); cosmeticEmoteBlockCheck = cosmeticSettings.node(COSMETIC_EMOTE_CHECK_PATH).getBoolean(true); emoteAirCheck = cosmeticSettings.node(COSMETIC_EMOTE_AIR_CHECK_PATH).getBoolean(true); @@ -254,6 +257,10 @@ public static boolean getForcePermissionJoin() { return forcePermissionJoin; } + public static boolean isForceShowOnJoin() { + return forceShowOnJoin; + } + public static boolean getDebugMode() { return debugMode; } diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/database/types/Data.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/database/types/Data.java index 17a5ee27..44da5a60 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/database/types/Data.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/database/types/Data.java @@ -55,7 +55,7 @@ public final Map> deserializeData(CosmeticUse } @NotNull - public final Map> deserializeData(CosmeticUser user, @NotNull String raw, boolean checkpermissions) { + public final Map> deserializeData(CosmeticUser user, @NotNull String raw, boolean permissionCheck) { Map> cosmetics = new HashMap<>(); String[] rawData = raw.split(","); @@ -67,6 +67,7 @@ public final Map> deserializeData(CosmeticUse MessagesUtil.sendDebugMessages("First split (suppose slot) " + splitData[0]); if (splitData[0].equalsIgnoreCase("HIDDEN")) { if (EnumUtils.isValidEnum(CosmeticUser.HiddenReason.class, splitData[1])) { + if (Settings.isForceShowOnJoin()) continue; Bukkit.getScheduler().runTask(HMCCosmeticsPlugin.getInstance(), () -> { user.hideCosmetics(CosmeticUser.HiddenReason.valueOf(splitData[1])); }); @@ -78,7 +79,7 @@ public final Map> deserializeData(CosmeticUse String[] colorSplitData = splitData[1].split("&"); if (Cosmetics.hasCosmetic(colorSplitData[0])) cosmetic = Cosmetics.getCosmetic(colorSplitData[0]); if (slot == null || cosmetic == null) continue; - if (checkpermissions && cosmetic.requiresPermission()) { + if (permissionCheck && cosmetic.requiresPermission()) { if (user.getPlayer() != null && !user.getPlayer().hasPermission(cosmetic.getPermission())) { continue; } @@ -87,7 +88,7 @@ public final Map> deserializeData(CosmeticUse } else { if (Cosmetics.hasCosmetic(splitData[1])) cosmetic = Cosmetics.getCosmetic(splitData[1]); if (slot == null || cosmetic == null) continue; - if (checkpermissions && cosmetic.requiresPermission()) { + if (permissionCheck && cosmetic.requiresPermission()) { if (user.getPlayer() != null && !user.getPlayer().hasPermission(cosmetic.getPermission())) { continue; } diff --git a/common/src/main/resources/config.yml b/common/src/main/resources/config.yml index 305c654c..915ef271 100644 --- a/common/src/main/resources/config.yml +++ b/common/src/main/resources/config.yml @@ -22,6 +22,7 @@ cosmetic-settings: unapply-on-death: false # If when a player dies, their cosmetics should be unapplied. If this is true, use hmccosmetics.unapplydeath.bypass to bypass 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. emote-distance: -3 # This shows how far away the camera should be while a player is doing an emote. Negative is behind player. emote-block-check: true # If the server should check if the block is open where the camera is placed (prevents players viewing through blocks)