Commits

md_5 authored 5da21f87d6b
SPIGOT-6152: End exit gates in custom ends do not send back to overworld
No tags

nms-patches/BlockEnderPortal.patch

Modified
4 4 package net.minecraft.server;
5 5
6 6 +// CraftBukkit start
7 7 +import org.bukkit.event.entity.EntityPortalEnterEvent;
8 8 +import org.bukkit.event.player.PlayerTeleportEvent;
9 9 +// CraftBukkit end
10 10 +
11 11 public class BlockEnderPortal extends BlockTileEntity {
12 12
13 13 protected static final VoxelShape a = Block.a(0.0D, 0.0D, 0.0D, 16.0D, 12.0D, 16.0D);
14 -@@ -25,9 +30,18 @@
14 +@@ -21,13 +26,22 @@
15 + @Override
16 + public void a(IBlockData iblockdata, World world, BlockPosition blockposition, Entity entity) {
17 + if (world instanceof WorldServer && !entity.isPassenger() && !entity.isVehicle() && entity.canPortal() && VoxelShapes.c(VoxelShapes.a(entity.getBoundingBox().d((double) (-blockposition.getX()), (double) (-blockposition.getY()), (double) (-blockposition.getZ()))), iblockdata.getShape(world, blockposition), OperatorBoolean.AND)) {
18 +- ResourceKey<World> resourcekey = world.getDimensionKey() == World.THE_END ? World.OVERWORLD : World.THE_END;
19 ++ ResourceKey<World> resourcekey = world.getTypeKey() == DimensionManager.THE_END ? World.OVERWORLD : World.THE_END; // CraftBukkit - SPIGOT-6152: send back to main overworld in custom ends
15 20 WorldServer worldserver = ((WorldServer) world).getMinecraftServer().getWorldServer(resourcekey);
16 21
17 22 if (worldserver == null) {
18 23 - return;
19 24 + // return; // CraftBukkit - always fire event in case plugins wish to change it
20 25 }
21 26
22 27 + // CraftBukkit start - Entity in portal
23 28 + EntityPortalEnterEvent event = new EntityPortalEnterEvent(entity.getBukkitEntity(), new org.bukkit.Location(world.getWorld(), blockposition.getX(), blockposition.getY(), blockposition.getZ()));
24 29 + world.getServer().getPluginManager().callEvent(event);

Everything looks good. We'll let you know here if there's anything you should know about.

Add shortcut