diff --git a/pom.xml b/pom.xml
index af5d5d9..67ab25f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -54,14 +54,14 @@
2.0.9
- 1.21.3-R0.1-SNAPSHOT
- 2.7.1-SNAPSHOT
+ 1.21.10-R0.1-SNAPSHOT
+ 3.3.1
${build.version}-SNAPSHOT
-LOCAL
- 2.2.2
+ 2.2.3
BentoBoxWorld_SkyGrid
bentobox-world
diff --git a/src/main/java/world/bentobox/skygrid/Settings.java b/src/main/java/world/bentobox/skygrid/Settings.java
index f010115..0649be2 100644
--- a/src/main/java/world/bentobox/skygrid/Settings.java
+++ b/src/main/java/world/bentobox/skygrid/Settings.java
@@ -111,9 +111,6 @@ public class Settings implements WorldSettings {
@ConfigEntry(path = "world.end.blocks")
private Map endBlocks = new EnumMap<>(Material.class);
- @ConfigComment("This option indicates if obsidian platform in the end should be generated")
- @ConfigComment("when player enters the end world.")
- @ConfigEntry(path = "world.end.create-obsidian-platform", since = "1.16")
private boolean makeEndPortals = true;
/* SkyGrid */
diff --git a/src/main/java/world/bentobox/skygrid/SkyGrid.java b/src/main/java/world/bentobox/skygrid/SkyGrid.java
index 44a2af6..e15d5dc 100644
--- a/src/main/java/world/bentobox/skygrid/SkyGrid.java
+++ b/src/main/java/world/bentobox/skygrid/SkyGrid.java
@@ -16,6 +16,7 @@
import world.bentobox.skygrid.generators.SkyGridBiomeProvider;
import world.bentobox.skygrid.generators.SkyGridGen;
import world.bentobox.skygrid.generators.WorldStyles;
+import world.bentobox.skygrid.listeners.EndPortalListener;
/**
* Main SkyGrid class - provides skygrid
@@ -65,6 +66,8 @@ private void loadSettings() {
public void onEnable() {
// Set default protection flags for world to allow everything
Flags.values().stream().filter(f -> f.getType().equals(Type.PROTECTION)).forEach(f -> f.setDefaultSetting(getOverWorld(), true));
+ // Listen for end portals
+ this.registerListener(new EndPortalListener(this));
}
@Override
diff --git a/src/main/java/world/bentobox/skygrid/generators/SkyGridPop.java b/src/main/java/world/bentobox/skygrid/generators/SkyGridPop.java
index 182abe7..6a26083 100644
--- a/src/main/java/world/bentobox/skygrid/generators/SkyGridPop.java
+++ b/src/main/java/world/bentobox/skygrid/generators/SkyGridPop.java
@@ -1,12 +1,12 @@
package world.bentobox.skygrid.generators;
-import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.NavigableMap;
import java.util.Random;
import java.util.TreeMap;
import java.util.UUID;
+import java.util.concurrent.ConcurrentHashMap;
import org.bukkit.Bukkit;
import org.bukkit.Location;
@@ -40,7 +40,7 @@ public class SkyGridPop extends BlockPopulator {
private int worldTotal;
private int netherTotal;
private int endTotal;
- private Map rand = new HashMap<>();
+ private Map rand = new ConcurrentHashMap<>();
private Random random = new Random();
private static final Material[] SAPLING_TYPE = {
diff --git a/src/main/java/world/bentobox/skygrid/listeners/EndPortalListener.java b/src/main/java/world/bentobox/skygrid/listeners/EndPortalListener.java
new file mode 100644
index 0000000..2aab035
--- /dev/null
+++ b/src/main/java/world/bentobox/skygrid/listeners/EndPortalListener.java
@@ -0,0 +1,38 @@
+package world.bentobox.skygrid.listeners;
+
+import org.bukkit.Bukkit;
+import org.bukkit.Location;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.EventPriority;
+import org.bukkit.event.Listener;
+import org.bukkit.event.player.PlayerPortalEvent;
+import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
+
+import world.bentobox.bentobox.util.teleport.SafeSpotTeleport;
+import world.bentobox.skygrid.SkyGrid;
+
+/**
+ * Listens to player's teleporting to the End and puts an obsidian platform under them.
+ */
+public class EndPortalListener implements Listener {
+ private SkyGrid addon;
+
+ public EndPortalListener(SkyGrid addon) {
+ super();
+ this.addon = addon;
+ }
+
+ @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
+ public void onPlayerTeleport(PlayerPortalEvent e) {
+ if (addon.getEndWorld() == null ||
+ e.getCause() != TeleportCause.END_PORTAL || !addon.inWorld(e.getFrom())) {
+ return;
+ }
+ Location to = e.getPlayer().getLocation().toVector().toLocation(addon.getEndWorld());
+ to.setY(addon.getSettings().getIslandHeight());
+ Bukkit.getScheduler().runTask(addon.getPlugin(), () ->
+ new SafeSpotTeleport.Builder(addon.getPlugin()).portal().entity(e.getPlayer()).location(to).build());
+ e.setCancelled(true);
+
+ }
+}