Commits
md_5 authored 5da21f87d6b
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 - | |
14 + | |
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); |