File tree Expand file tree Collapse file tree 4 files changed +43
-5
lines changed
src/main/java/world/bentobox/skygrid Expand file tree Collapse file tree 4 files changed +43
-5
lines changed Original file line number Diff line number Diff line change @@ -111,9 +111,6 @@ public class Settings implements WorldSettings {
111111 @ ConfigEntry (path = "world.end.blocks" )
112112 private Map <Material , Integer > endBlocks = new EnumMap <>(Material .class );
113113
114- @ ConfigComment ("This option indicates if obsidian platform in the end should be generated" )
115- @ ConfigComment ("when player enters the end world." )
116- @ ConfigEntry (path = "world.end.create-obsidian-platform" , since = "1.16" )
117114 private boolean makeEndPortals = true ;
118115
119116 /* SkyGrid */
Original file line number Diff line number Diff line change 1616import world .bentobox .skygrid .generators .SkyGridBiomeProvider ;
1717import world .bentobox .skygrid .generators .SkyGridGen ;
1818import world .bentobox .skygrid .generators .WorldStyles ;
19+ import world .bentobox .skygrid .listeners .EndPortalListener ;
1920
2021/**
2122 * Main SkyGrid class - provides skygrid
@@ -65,6 +66,8 @@ private void loadSettings() {
6566 public void onEnable () {
6667 // Set default protection flags for world to allow everything
6768 Flags .values ().stream ().filter (f -> f .getType ().equals (Type .PROTECTION )).forEach (f -> f .setDefaultSetting (getOverWorld (), true ));
69+ // Listen for end portals
70+ this .registerListener (new EndPortalListener (this ));
6871 }
6972
7073 @ Override
Original file line number Diff line number Diff line change 11package world .bentobox .skygrid .generators ;
22
3- import java .util .HashMap ;
43import java .util .Map ;
54import java .util .Map .Entry ;
65import java .util .NavigableMap ;
76import java .util .Random ;
87import java .util .TreeMap ;
98import java .util .UUID ;
9+ import java .util .concurrent .ConcurrentHashMap ;
1010
1111import org .bukkit .Bukkit ;
1212import org .bukkit .Location ;
@@ -40,7 +40,7 @@ public class SkyGridPop extends BlockPopulator {
4040 private int worldTotal ;
4141 private int netherTotal ;
4242 private int endTotal ;
43- private Map <UUID , Random > rand = new HashMap <>();
43+ private Map <UUID , Random > rand = new ConcurrentHashMap <>();
4444 private Random random = new Random ();
4545
4646 private static final Material [] SAPLING_TYPE = {
Original file line number Diff line number Diff line change 1+ package world .bentobox .skygrid .listeners ;
2+
3+ import org .bukkit .Bukkit ;
4+ import org .bukkit .Location ;
5+ import org .bukkit .event .EventHandler ;
6+ import org .bukkit .event .EventPriority ;
7+ import org .bukkit .event .Listener ;
8+ import org .bukkit .event .player .PlayerPortalEvent ;
9+ import org .bukkit .event .player .PlayerTeleportEvent .TeleportCause ;
10+
11+ import world .bentobox .bentobox .util .teleport .SafeSpotTeleport ;
12+ import world .bentobox .skygrid .SkyGrid ;
13+
14+ /**
15+ * Listens to player's teleporting to the End and puts an obsidian platform under them.
16+ */
17+ public class EndPortalListener implements Listener {
18+ private SkyGrid addon ;
19+
20+ public EndPortalListener (SkyGrid addon ) {
21+ super ();
22+ this .addon = addon ;
23+ }
24+
25+ @ EventHandler (priority = EventPriority .HIGH , ignoreCancelled = true )
26+ public void onPlayerTeleport (PlayerPortalEvent e ) {
27+ if (addon .getEndWorld () == null ||
28+ e .getCause () != TeleportCause .END_PORTAL || !addon .inWorld (e .getFrom ())) {
29+ return ;
30+ }
31+ Location to = e .getPlayer ().getLocation ().toVector ().toLocation (addon .getEndWorld ());
32+ to .setY (addon .getSettings ().getIslandHeight ());
33+ Bukkit .getScheduler ().runTask (addon .getPlugin (), () ->
34+ new SafeSpotTeleport .Builder (addon .getPlugin ()).portal ().entity (e .getPlayer ()).location (to ).build ());
35+ e .setCancelled (true );
36+
37+ }
38+ }
You can’t perform that action at this time.
0 commit comments