diff --git a/src/main/java/world/bentobox/limits/Settings.java b/src/main/java/world/bentobox/limits/Settings.java index 5732ad0..d243264 100644 --- a/src/main/java/world/bentobox/limits/Settings.java +++ b/src/main/java/world/bentobox/limits/Settings.java @@ -51,6 +51,7 @@ enum GeneralGroup { private final boolean asyncGolums; private final boolean showLimitMessages; private final boolean stackedPlantsCountAsOne; + private final boolean applyMemberLimitPerms; private static final List DISALLOWED = Arrays.asList( EntityType.TNT, EntityType.EVOKER_FANGS, @@ -99,6 +100,8 @@ public Settings(Limits addon) { showLimitMessages = addon.getConfig().getBoolean("show-limit-messages", true); // Count a stackable plant column (sugar cane, bamboo) as a single plant stackedPlantsCountAsOne = addon.getConfig().getBoolean("stacked-plants-count-as-one", false); + // Apply team members' limit permissions, not just the owner's + applyMemberLimitPerms = addon.getConfig().getBoolean("apply-member-limit-perms", false); addon.log("Entity limits:"); envLimits.forEach((env, m) -> m.entrySet().stream() @@ -277,6 +280,13 @@ public boolean isStackedPlantsCountAsOne() { return stackedPlantsCountAsOne; } + /** + * @return true if team members' limit permissions are applied to the island, not just the owner's + */ + public boolean isApplyMemberLimitPerms() { + return applyMemberLimitPerms; + } + public Map getGeneral() { return general; } diff --git a/src/main/java/world/bentobox/limits/listeners/JoinListener.java b/src/main/java/world/bentobox/limits/listeners/JoinListener.java index 1fcafa2..1ec5384 100644 --- a/src/main/java/world/bentobox/limits/listeners/JoinListener.java +++ b/src/main/java/world/bentobox/limits/listeners/JoinListener.java @@ -20,6 +20,7 @@ import org.bukkit.permissions.PermissionAttachmentInfo; import org.eclipse.jdt.annotation.NonNull; +import world.bentobox.bentobox.api.addons.GameModeAddon; import world.bentobox.bentobox.api.events.island.IslandEvent; import world.bentobox.bentobox.api.events.island.IslandEvent.Reason; import world.bentobox.bentobox.api.events.team.TeamSetownerEvent; @@ -34,6 +35,12 @@ /** * Applies permission-based block, entity, and entity-group limits to islands. * + *

By default only the island owner's permissions count. When + * {@code apply-member-limit-perms} is enabled in the config, team members' permissions + * are merged in as well: a member's login merges their limits on top (highest value + * wins), and the owner's login recalculates from scratch and then merges the + * permissions of all online members. + * *

Permission format: *