Bug fixes

Fixes https://github.com/BentoBoxWorld/Limits/issues/62
This commit is contained in:
tastybento 2020-01-11 09:38:45 -08:00
parent 2b6377fee7
commit 8fa551ff7c
3 changed files with 8 additions and 2 deletions

View File

@ -107,7 +107,7 @@ public class LimitPanel {
// Entity limits
Map<EntityType, Integer> map = addon.getSettings().getLimits();
// Merge in any permission-based limits
ibc.getEntityLimits().forEach(map::put);
if (ibc != null) ibc.getEntityLimits().forEach(map::put);
map.forEach((k,v) -> {
PanelItemBuilder pib = new PanelItemBuilder();
pib.name(Util.prettifyText(k.toString()));

View File

@ -36,6 +36,7 @@ import org.bukkit.event.block.LeavesDecayEvent;
import org.bukkit.event.entity.EntityChangeBlockEvent;
import org.bukkit.event.entity.EntityExplodeEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.eclipse.jdt.annotation.Nullable;
import world.bentobox.bentobox.api.events.island.IslandEvent.IslandDeleteEvent;
import world.bentobox.bentobox.api.localization.TextVariables;
@ -436,6 +437,7 @@ public class BlockLimitsListener implements Listener {
* @param islandId - island unique id
* @return island block count or null if there is none yet
*/
@Nullable
public IslandBlockCount getIsland(String islandId) {
return islandCountMap.get(islandId);
}

View File

@ -168,11 +168,15 @@ public class EntityLimitListener implements Listener {
.filter(e -> e.getType().equals(ent.getType()))
.filter(e -> island.inIslandSpace(e.getLocation())).count();
// Check island settings first
int limitAmount = addon.getBlockLimitListener().getIsland(island.getUniqueId()).getEntityLimit(ent.getType());
int limitAmount = -1;
if (addon.getBlockLimitListener().getIsland(island.getUniqueId()) != null) {
limitAmount = addon.getBlockLimitListener().getIsland(island.getUniqueId()).getEntityLimit(ent.getType());
}
// If no island settings then try global settings
if (limitAmount < 0 && addon.getSettings().getLimits().containsKey(ent.getType())) {
limitAmount = addon.getSettings().getLimits().get(ent.getType());
}
if (limitAmount == -1) return false;
return count >= limitAmount;
}
}