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)