diff --git a/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/util/TalismanChecks.java b/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/util/TalismanChecks.java index beac473..c7621f2 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/util/TalismanChecks.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/util/TalismanChecks.java @@ -172,6 +172,10 @@ public class TalismanChecks { continue; } + if (found.size() >= TalismanUtils.getLimit(player)) { + break; + } + found.add(talisman); } diff --git a/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/util/TalismanUtils.java b/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/util/TalismanUtils.java index efdd581..7ed7cdb 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/util/TalismanUtils.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/util/TalismanUtils.java @@ -8,6 +8,8 @@ import com.willfp.eco.util.integrations.placeholder.PlaceholderManager; import com.willfp.talismans.talismans.Talisman; import com.willfp.talismans.talismans.Talismans; import lombok.experimental.UtilityClass; +import org.bukkit.entity.Player; +import org.bukkit.permissions.PermissionAttachmentInfo; import org.jetbrains.annotations.NotNull; @UtilityClass @@ -71,4 +73,22 @@ public class TalismanUtils { ); } } + + /** + * Get limit for talisman reading. + * + * @param player The player to check. + * @return The limit. + */ + public static int getLimit(@NotNull final Player player) { + String prefix = "talismans.limit."; + for (PermissionAttachmentInfo permissionAttachmentInfo : player.getEffectivePermissions()) { + String permission = permissionAttachmentInfo.getPermission(); + if (permission.startsWith(prefix)) { + return Integer.parseInt(permission.substring(permission.lastIndexOf(".") + 1)); + } + } + + return 100000; + } }