diff --git a/pom.xml b/pom.xml
index df2b6ef..93856af 100644
--- a/pom.xml
+++ b/pom.xml
@@ -59,7 +59,7 @@
2.0.2
1.16.5-R0.1-SNAPSHOT
- 1.15.5
+ 1.16.0-SNAPSHOT
${build.version}-SNAPSHOT
diff --git a/src/main/java/world/bentobox/boxed/Boxed.java b/src/main/java/world/bentobox/boxed/Boxed.java
index b52a928..f78673a 100644
--- a/src/main/java/world/bentobox/boxed/Boxed.java
+++ b/src/main/java/world/bentobox/boxed/Boxed.java
@@ -18,6 +18,7 @@ import world.bentobox.bentobox.api.configuration.WorldSettings;
import world.bentobox.boxed.generators.BasicWorldGenerator;
import world.bentobox.boxed.generators.DeleteGen;
import world.bentobox.boxed.listeners.AdvancementListener;
+import world.bentobox.boxed.listeners.EnderPearlListener;
/**
* Main BSkyBlock class - provides an island minigame in the sky
@@ -66,6 +67,7 @@ public class Boxed extends GameModeAddon {
// Register listeners
this.registerListener(new AdvancementListener(this));
+ this.registerListener(new EnderPearlListener(this));
//this.registerListener(new JoinListener(this));
}
diff --git a/src/main/java/world/bentobox/boxed/listeners/AdvancementListener.java b/src/main/java/world/bentobox/boxed/listeners/AdvancementListener.java
index da86373..25022f2 100644
--- a/src/main/java/world/bentobox/boxed/listeners/AdvancementListener.java
+++ b/src/main/java/world/bentobox/boxed/listeners/AdvancementListener.java
@@ -2,6 +2,7 @@ package world.bentobox.boxed.listeners;
import org.bukkit.Sound;
import org.bukkit.event.EventHandler;
+import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerAdvancementDoneEvent;
@@ -27,7 +28,7 @@ public class AdvancementListener implements Listener {
}
- @EventHandler
+ @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
public void onAdvancement(PlayerAdvancementDoneEvent e) {
if (e.getPlayer().getWorld().equals(addon.getOverWorld())) {
int score = addon.getAdvManager().addAvancement(e.getPlayer(), e.getAdvancement());
diff --git a/src/main/java/world/bentobox/boxed/listeners/EnderPearlListener.java b/src/main/java/world/bentobox/boxed/listeners/EnderPearlListener.java
new file mode 100644
index 0000000..0185c9e
--- /dev/null
+++ b/src/main/java/world/bentobox/boxed/listeners/EnderPearlListener.java
@@ -0,0 +1,70 @@
+package world.bentobox.boxed.listeners;
+
+import java.io.IOException;
+
+import org.bukkit.Location;
+import org.bukkit.Sound;
+import org.bukkit.entity.EnderPearl;
+import org.bukkit.entity.EntityType;
+import org.bukkit.entity.Player;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.EventPriority;
+import org.bukkit.event.Listener;
+import org.bukkit.event.entity.ProjectileHitEvent;
+
+import world.bentobox.bentobox.api.user.User;
+import world.bentobox.bentobox.managers.RanksManager;
+import world.bentobox.boxed.Boxed;
+
+/**
+ * Listens for Ender Pearl throws and moves the island center
+ * @author tastybento
+ *
+ */
+public class EnderPearlListener implements Listener {
+
+ private final Boxed addon;
+
+ /**
+ * @param addon
+ */
+ public EnderPearlListener(Boxed addon) {
+ this.addon = addon;
+ }
+
+
+
+ @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
+ public void onEnderPearlLand(ProjectileHitEvent e) {
+ if (!e.getEntityType().equals(EntityType.ENDER_PEARL)
+ || e.getHitBlock() == null
+ || !addon.getPlugin().getIWM().inWorld(e.getHitBlock().getLocation())) {
+ return;
+ }
+ Location l = e.getHitBlock().getLocation();
+ EnderPearl ep = (EnderPearl)e.getEntity();
+ if (ep.getShooter() instanceof Player) {
+ User u = User.getInstance((Player)ep.getShooter());
+ addon.getIslands().getIslandAt(l).ifPresent(i -> {
+ // TODO make this a flag
+ if (i.getMemberSet(RanksManager.OWNER_RANK).contains(u.getUniqueId())
+ && addon.getIslands().isSafeLocation(l)) {
+ // Reset home locations
+ i.getMemberSet().forEach(uuid -> {
+ addon.getPlayers().getPlayer(uuid).clearHomeLocations(l.getWorld());
+ addon.getPlayers().getPlayer(uuid).setHomeLocation(l);
+ });
+ try {
+ i.setProtectionCenter(l);
+ u.sendRawMessage("Moving Box!");
+ u.getPlayer().playSound(u.getLocation(), Sound.ENTITY_GENERIC_EXPLODE, 2F, 2F);
+ } catch (IOException e1) {
+ // TODO Auto-generated catch block
+ e1.printStackTrace();
+ }
+ }
+ });
+ }
+ }
+
+}
diff --git a/src/main/java/world/bentobox/boxed/listeners/JoinListener.java b/src/main/java/world/bentobox/boxed/listeners/JoinListener.java
index 87739b9..003c827 100644
--- a/src/main/java/world/bentobox/boxed/listeners/JoinListener.java
+++ b/src/main/java/world/bentobox/boxed/listeners/JoinListener.java
@@ -6,6 +6,7 @@ import org.bukkit.Bukkit;
import org.bukkit.advancement.Advancement;
import org.bukkit.advancement.AdvancementProgress;
import org.bukkit.event.EventHandler;
+import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
@@ -25,7 +26,7 @@ public class JoinListener implements Listener {
this.addon = addon;
}
- @EventHandler
+ @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
public void onJoinEvent(PlayerJoinEvent e) {
Iterator it = Bukkit.advancementIterator();
while (it.hasNext()) {