From 0a0e164f8d12d863b706364f97c73fe3983e0561 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Wojtas?= Date: Thu, 9 Apr 2026 19:43:24 +0200 Subject: [PATCH 1/5] Update settings comment and default permission check --- .../core/feature/home/HomeManager.java | 4 ++- .../core/feature/home/HomesConfig.java | 29 ++++++++++++------- 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/home/HomeManager.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/home/HomeManager.java index 2909214dd..47002dee5 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/home/HomeManager.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/home/HomeManager.java @@ -157,6 +157,8 @@ public int getAmountOfHomes(UUID user) { public int getHomeLimit(Player player) { Map maxHomes = this.homesSettings.maxHomes(); + int defaultHomesLimit = maxHomes.getOrDefault("eternalcore.home.default",0); + return maxHomes.entrySet().stream() .flatMap(entry -> { if (player.hasPermission(entry.getKey())) { @@ -166,6 +168,6 @@ public int getHomeLimit(Player player) { return Stream.empty(); }) .max(Integer::compareTo) - .orElse(0); + .orElse(defaultHomesLimit); } } diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/home/HomesConfig.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/home/HomesConfig.java index 9af1024ae..c12bb674d 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/home/HomesConfig.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/home/HomesConfig.java @@ -27,19 +27,26 @@ public class HomesConfig extends OkaeriConfig implements HomesSettings { public Duration delay = Duration.ofSeconds(5); @Comment({ - "# Maximum number of homes per permission group", - "# Configure how many homes players can set based on their permissions", - "# ", - "# Permission format: 'permission' -> max_homes", - "# Players with higher permissions will get the highest limit they qualify for", - "# ", - "# Default permissions:", - "# - eternalcore.home.default: Basic players (1 home)", + "# Configure how many homes a player can set depending on their permissions.", + "#", + "# Permission format: 'permission.node : max_homes'", + "# If user has multiple permissions from the list the highest number will be taken", + "#", + "# Fallback behavior:", + "# - If a player does not have any of the listed permissions,", + "# the value from 'eternalcore.homes.default' will be used otherwise the limit will be 0.", + "#", + "# Example permissions:", + "# - eternalcore.home.default: All players (1 home)", "# - eternalcore.home.vip: VIP players (2 homes)", "# - eternalcore.home.premium: Premium players (3 homes)", - "# ", - "# You can add custom permission groups and limits as needed", - "# Example: 'eternalcore.home.admin' -> 999" + "# How it works:", + "# If a player has both 'eternalcore.home.vip' and 'eternalcore.home.premium',", + "# they will be able to set 3 homes (highest value wins).", + "# If the player does not have any permission from the group he will be able to set 1 home 'eternalcore.home.default", + "#", + "# You can define additional permissions as needed.", + "# Example: 'eternalcore.home.admin: 999'" }) public Map maxHomes = new LinkedHashMap<>() { { From 9d4b117fc8611d2bb646ea9936e4b474c9127cd9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Wojtas?= Date: Thu, 9 Apr 2026 19:59:11 +0200 Subject: [PATCH 2/5] Add additional configurable variable and update documentation --- .../eternalcode/core/feature/home/HomeManager.java | 4 +--- .../eternalcode/core/feature/home/HomesConfig.java | 11 +++++++---- .../eternalcode/core/feature/home/HomesSettings.java | 1 + 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/home/HomeManager.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/home/HomeManager.java index 47002dee5..c96a929bb 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/home/HomeManager.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/home/HomeManager.java @@ -157,8 +157,6 @@ public int getAmountOfHomes(UUID user) { public int getHomeLimit(Player player) { Map maxHomes = this.homesSettings.maxHomes(); - int defaultHomesLimit = maxHomes.getOrDefault("eternalcore.home.default",0); - return maxHomes.entrySet().stream() .flatMap(entry -> { if (player.hasPermission(entry.getKey())) { @@ -168,6 +166,6 @@ public int getHomeLimit(Player player) { return Stream.empty(); }) .max(Integer::compareTo) - .orElse(defaultHomesLimit); + .orElse(this.homesSettings.defaultLimit()); } } diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/home/HomesConfig.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/home/HomesConfig.java index c12bb674d..dbbd48f31 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/home/HomesConfig.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/home/HomesConfig.java @@ -34,25 +34,28 @@ public class HomesConfig extends OkaeriConfig implements HomesSettings { "#", "# Fallback behavior:", "# - If a player does not have any of the listed permissions,", - "# the value from 'eternalcore.homes.default' will be used otherwise the limit will be 0.", + "# the value from 'defaultLimit' will be used.", "#", "# Example permissions:", - "# - eternalcore.home.default: All players (1 home)", "# - eternalcore.home.vip: VIP players (2 homes)", "# - eternalcore.home.premium: Premium players (3 homes)", "# How it works:", "# If a player has both 'eternalcore.home.vip' and 'eternalcore.home.premium',", "# they will be able to set 3 homes (highest value wins).", - "# If the player does not have any permission from the group he will be able to set 1 home 'eternalcore.home.default", + "# If the player does not have any permission from the list he will be able to set `defaultLimit` of homes.", "#", "# You can define additional permissions as needed.", "# Example: 'eternalcore.home.admin: 999'" }) public Map maxHomes = new LinkedHashMap<>() { { - put("eternalcore.home.default", 1); put("eternalcore.home.vip", 2); put("eternalcore.home.premium", 3); } }; + + @Comment({ + "# Default limit of homes used when the player does not have any permission from the list above." + }) + public Integer defaultLimit = 1; } diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/home/HomesSettings.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/home/HomesSettings.java index 6e1c45bbc..5134ae3d9 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/home/HomesSettings.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/home/HomesSettings.java @@ -7,4 +7,5 @@ public interface HomesSettings { Map maxHomes(); Duration delay(); String defaultName(); + Integer defaultLimit(); } From cdca6e1038f9019f3b5ec2d7dcfcb2b51bcdfd5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Wojtas?= Date: Thu, 9 Apr 2026 20:05:57 +0200 Subject: [PATCH 3/5] gemini review --- .../java/com/eternalcode/core/feature/home/HomesConfig.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/home/HomesConfig.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/home/HomesConfig.java index dbbd48f31..a2fccf8e2 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/home/HomesConfig.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/home/HomesConfig.java @@ -42,7 +42,7 @@ public class HomesConfig extends OkaeriConfig implements HomesSettings { "# How it works:", "# If a player has both 'eternalcore.home.vip' and 'eternalcore.home.premium',", "# they will be able to set 3 homes (highest value wins).", - "# If the player does not have any permission from the list he will be able to set `defaultLimit` of homes.", + "# If the player does not have any permission from the list he will be able to set the limit defined by `defaultLimit`.", "#", "# You can define additional permissions as needed.", "# Example: 'eternalcore.home.admin: 999'" From 29291cf416af47e7b88431eb5ddab051d6ff7c68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Wojtas?= Date: Tue, 14 Apr 2026 15:43:04 +0200 Subject: [PATCH 4/5] Follow @imDMK and @Jakubk15 suggestions --- .../com/eternalcode/core/feature/home/HomesConfig.java | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/home/HomesConfig.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/home/HomesConfig.java index a2fccf8e2..9622b743c 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/home/HomesConfig.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/home/HomesConfig.java @@ -47,12 +47,10 @@ public class HomesConfig extends OkaeriConfig implements HomesSettings { "# You can define additional permissions as needed.", "# Example: 'eternalcore.home.admin: 999'" }) - public Map maxHomes = new LinkedHashMap<>() { - { - put("eternalcore.home.vip", 2); - put("eternalcore.home.premium", 3); - } - }; + public Map maxHomes = Map.of( + "eternalcore.home.vip", 2, + "eternalcore.home.premium", 3 + ); @Comment({ "# Default limit of homes used when the player does not have any permission from the list above." From 6edd7241bb637497a9a55dd40ef70c16c19d3d48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Wojtas?= Date: Tue, 14 Apr 2026 15:43:20 +0200 Subject: [PATCH 5/5] remove import --- .../main/java/com/eternalcode/core/feature/home/HomesConfig.java | 1 - 1 file changed, 1 deletion(-) diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/home/HomesConfig.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/home/HomesConfig.java index 9622b743c..fda6e6136 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/home/HomesConfig.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/home/HomesConfig.java @@ -3,7 +3,6 @@ import eu.okaeri.configs.OkaeriConfig; import eu.okaeri.configs.annotation.Comment; import java.time.Duration; -import java.util.LinkedHashMap; import java.util.Map; import lombok.Getter; import lombok.experimental.Accessors;