diff --git a/pom.xml b/pom.xml index e549820f6..34c5a56ed 100644 --- a/pom.xml +++ b/pom.xml @@ -88,7 +88,7 @@ -LOCAL - 2.5.0 + 2.5.1 bentobox-world https://sonarcloud.io ${project.basedir}/lib diff --git a/src/main/java/world/bentobox/bentobox/database/objects/Island.java b/src/main/java/world/bentobox/bentobox/database/objects/Island.java index 848b98863..c9b585a9b 100644 --- a/src/main/java/world/bentobox/bentobox/database/objects/Island.java +++ b/src/main/java/world/bentobox/bentobox/database/objects/Island.java @@ -1747,7 +1747,7 @@ public class Island implements DataObject, MetaDataAble { * @since 1.16.0 */ public void setProtectionCenter(Location location) throws IOException { - if (this.location.equals(location)) { + if (this.getProtectionCenter().equals(location)) { return; // nothing to do } if (!this.inIslandSpace(location)) { diff --git a/src/main/java/world/bentobox/bentobox/listeners/flags/protection/BlockInteractionListener.java b/src/main/java/world/bentobox/bentobox/listeners/flags/protection/BlockInteractionListener.java index 496ae5238..e2db22df3 100644 --- a/src/main/java/world/bentobox/bentobox/listeners/flags/protection/BlockInteractionListener.java +++ b/src/main/java/world/bentobox/bentobox/listeners/flags/protection/BlockInteractionListener.java @@ -123,7 +123,8 @@ public class BlockInteractionListener extends FlagListener case DRAGON_EGG -> this.checkIsland(e, player, loc, Flags.DRAGON_EGG); case END_PORTAL_FRAME, RESPAWN_ANCHOR -> this.checkIsland(e, player, loc, Flags.PLACE_BLOCKS); case GLOW_ITEM_FRAME, ITEM_FRAME -> this.checkIsland(e, player, loc, Flags.ITEM_FRAME); - case SWEET_BERRY_BUSH, CAVE_VINES -> this.checkIsland(e, player, loc, Flags.BREAK_BLOCKS); + case SWEET_BERRY_BUSH -> this.checkIsland(e, player, loc, Flags.HARVEST); + case CAVE_VINES -> this.checkIsland(e, player, loc, Flags.BREAK_BLOCKS); case CAKE -> this.checkIsland(e, player, loc, Flags.CAKE); case CHISELED_BOOKSHELF -> this.checkIsland(e, player, loc, Flags.BOOKSHELF); case LAVA_CAULDRON -> diff --git a/src/main/java/world/bentobox/bentobox/listeners/flags/protection/BreakBlocksListener.java b/src/main/java/world/bentobox/bentobox/listeners/flags/protection/BreakBlocksListener.java index bf8ec1cab..df7acc554 100644 --- a/src/main/java/world/bentobox/bentobox/listeners/flags/protection/BreakBlocksListener.java +++ b/src/main/java/world/bentobox/bentobox/listeners/flags/protection/BreakBlocksListener.java @@ -5,7 +5,6 @@ import org.bukkit.Material; import org.bukkit.Tag; import org.bukkit.block.data.BlockData; import org.bukkit.block.data.type.CaveVinesPlant; -import org.bukkit.entity.AbstractArrow; import org.bukkit.entity.ArmorStand; import org.bukkit.entity.EnderCrystal; import org.bukkit.entity.ItemFrame; @@ -23,6 +22,7 @@ import org.bukkit.event.vehicle.VehicleDamageEvent; import com.google.common.base.Enums; +import world.bentobox.bentobox.BentoBox; import world.bentobox.bentobox.api.flags.FlagListener; import world.bentobox.bentobox.lists.Flags; @@ -38,15 +38,21 @@ public class BreakBlocksListener extends FlagListener { Player p = e.getPlayer(); Location l = e.getBlock().getLocation(); Material m = e.getBlock().getType(); + BentoBox.getInstance().logDebug(m); if (m.equals(Material.MELON) || m.equals(Material.PUMPKIN)) { this.checkIsland(e, p, l, Flags.HARVEST); } else { // Crops - if (Tag.CROPS.isTagged(m) + if ((Tag.CROPS.isTagged(m) && !m.equals(Material.MELON_STEM) && !m.equals(Material.PUMPKIN_STEM) && !m.equals(Material.ATTACHED_MELON_STEM) - && !m.equals(Material.ATTACHED_PUMPKIN_STEM)) { + && !m.equals(Material.ATTACHED_PUMPKIN_STEM)) + || m == Material.COCOA + || m == Material.SWEET_BERRY_BUSH + || m == Material.BAMBOO + || m == Material.NETHER_WART + ) { this.checkIsland(e, p, l, Flags.HARVEST); } else { checkIsland(e, p, l, Flags.BREAK_BLOCKS); diff --git a/src/main/java/world/bentobox/bentobox/listeners/flags/worldsettings/RemoveMobsListener.java b/src/main/java/world/bentobox/bentobox/listeners/flags/worldsettings/RemoveMobsListener.java index 51824aad8..5ccc1fab0 100644 --- a/src/main/java/world/bentobox/bentobox/listeners/flags/worldsettings/RemoveMobsListener.java +++ b/src/main/java/world/bentobox/bentobox/listeners/flags/worldsettings/RemoveMobsListener.java @@ -24,15 +24,20 @@ public class RemoveMobsListener extends FlagListener { || e.getCause().equals(TeleportCause.SPECTATE)) { return; } - // Return if this is a small teleport - if (e.getTo().getWorld().equals(e.getPlayer().getWorld()) && - e.getTo().distanceSquared(e.getPlayer().getLocation()) < getPlugin().getSettings().getClearRadius() * getPlugin().getSettings().getClearRadius()) { - return; - } - // Only process if flag is active - if (getIslands().locationIsOnIsland(e.getPlayer(), e.getTo()) && Flags.REMOVE_MOBS.isSetForWorld(e.getTo().getWorld())) { - Bukkit.getScheduler().runTask(getPlugin(), () -> getIslands().clearArea(e.getTo())); + + if(e.getTo() != null) { + // Return if this is a small teleport + if (e.getTo().getWorld().equals(e.getPlayer().getWorld()) && + e.getTo().distanceSquared(e.getPlayer().getLocation()) < getPlugin().getSettings().getClearRadius() * getPlugin().getSettings().getClearRadius()) { + return; + } + + // Only process if flag is active + if (getIslands().locationIsOnIsland(e.getPlayer(), e.getTo()) && Flags.REMOVE_MOBS.isSetForWorld(e.getTo().getWorld())) { + Bukkit.getScheduler().runTask(getPlugin(), () -> getIslands().clearArea(e.getTo())); + } } + } @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)