From caf6dea52cfe39de2b21bb01716fc0db505fec0d Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Sat, 11 Jan 2020 23:12:52 -0600 Subject: [PATCH] Add EntityPortalReadyEvent --- .../java/net/minecraft/server/BlockPortal.java | 16 +++++++++------- src/main/java/net/minecraft/server/Entity.java | 7 ++++--- .../net/minecraft/server/PortalTravelAgent.java | 5 +++-- .../java/net/minecraft/server/WorldServer.java | 2 +- 4 files changed, 17 insertions(+), 13 deletions(-) diff --git a/src/main/java/net/minecraft/server/BlockPortal.java b/src/main/java/net/minecraft/server/BlockPortal.java index 09c7c13183..6880cdd7f9 100644 --- a/src/main/java/net/minecraft/server/BlockPortal.java +++ b/src/main/java/net/minecraft/server/BlockPortal.java @@ -54,6 +54,7 @@ public class BlockPortal extends Block { } + public boolean createPortal(GeneratorAccess generatoraccess, BlockPosition blockposition) { return a(generatoraccess, blockposition); } // Purpur - OBFHELPER public boolean a(GeneratorAccess generatoraccess, BlockPosition blockposition) { BlockPortal.Shape blockportal_shape = this.b(generatoraccess, blockposition); @@ -67,8 +68,8 @@ public class BlockPortal extends Block { } } - @Nullable - public BlockPortal.Shape b(GeneratorAccess generatoraccess, BlockPosition blockposition) { + public BlockPortal.Shape createShape(GeneratorAccess generatoraccess, BlockPosition blockposition) { return b(generatoraccess, blockposition); } // Purpur - OBFHELPER + @Nullable public BlockPortal.Shape b(GeneratorAccess generatoraccess, BlockPosition blockposition) { BlockPortal.Shape blockportal_shape = new BlockPortal.Shape(generatoraccess, blockposition, EnumDirection.EnumAxis.X); if (blockportal_shape.d() && blockportal_shape.e == 0) { @@ -189,6 +190,7 @@ public class BlockPortal extends Block { private int height; private int width; java.util.List blocks = new java.util.ArrayList(); // CraftBukkit - add field + public static Block FRAME_BLOCK = Blocks.OBSIDIAN; // Purpur public Shape(GeneratorAccess generatoraccess, BlockPosition blockposition, EnumDirection.EnumAxis enumdirection_enumaxis) { this.a = generatoraccess; @@ -228,14 +230,14 @@ public class BlockPortal extends Block { for (i = 0; i < 22; ++i) { BlockPosition blockposition1 = blockposition.shift(enumdirection, i); - if (!this.a(this.a.getType(blockposition1)) || this.a.getType(blockposition1.down()).getBlock() != Blocks.OBSIDIAN) { + if (!this.a(this.a.getType(blockposition1)) || this.a.getType(blockposition1.down()).getBlock() != FRAME_BLOCK) { // Purpur break; } } Block block = this.a.getType(blockposition.shift(enumdirection, i)).getBlock(); - return block == Blocks.OBSIDIAN ? i : 0; + return block == FRAME_BLOCK ? i : 0; // Purpur } public int a() { @@ -270,7 +272,7 @@ public class BlockPortal extends Block { if (i == 0) { block = this.a.getType(blockposition.shift(this.d)).getBlock(); - if (block != Blocks.OBSIDIAN) { + if (block != FRAME_BLOCK) { // Purpur break label56; // CraftBukkit start - add the block to our list } else { @@ -280,7 +282,7 @@ public class BlockPortal extends Block { } } else if (i == this.width - 1) { block = this.a.getType(blockposition.shift(this.c)).getBlock(); - if (block != Blocks.OBSIDIAN) { + if (block != FRAME_BLOCK) { // Purpur break label56; // CraftBukkit start - add the block to our list } else { @@ -293,7 +295,7 @@ public class BlockPortal extends Block { } for (i = 0; i < this.width; ++i) { - if (this.a.getType(this.position.shift(this.c, i).up(this.height)).getBlock() != Blocks.OBSIDIAN) { + if (this.a.getType(this.position.shift(this.c, i).up(this.height)).getBlock() != FRAME_BLOCK) { // Purpur this.height = 0; break; // CraftBukkit start - add the block to our list diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java index 9239f83e74..d90b01a7ee 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java @@ -169,9 +169,9 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke protected boolean af; public final boolean inPortal() { return this.af; } // Paper - OBFHELPER protected int ag; public DimensionManager dimension; - protected BlockPosition ai; - protected Vec3D aj; - protected EnumDirection ak; + public BlockPosition ai; // Purpur - protected -> public + public Vec3D aj; // Purpur - protected -> public + public EnumDirection ak; // Purpur - protected -> public private boolean invulnerable; protected UUID uniqueID; protected String am; @@ -2230,6 +2230,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke this.world.getMethodProfiler().enter("portal"); this.ag = i; this.portalCooldown = this.ba(); + if (new net.pl3x.purpur.event.entity.EntityPortalReadyEvent(getBukkitEntity()).callEvent()) // Purpur // CraftBukkit start if (this instanceof EntityPlayer) { ((EntityPlayer) this).a(this.world.worldProvider.getDimensionManager().getType() == DimensionManager.NETHER ? DimensionManager.OVERWORLD : DimensionManager.NETHER, PlayerTeleportEvent.TeleportCause.NETHER_PORTAL); diff --git a/src/main/java/net/minecraft/server/PortalTravelAgent.java b/src/main/java/net/minecraft/server/PortalTravelAgent.java index f84dd6d9be..f50e9670bc 100644 --- a/src/main/java/net/minecraft/server/PortalTravelAgent.java +++ b/src/main/java/net/minecraft/server/PortalTravelAgent.java @@ -11,6 +11,7 @@ public class PortalTravelAgent { private final WorldServer world; private final Random b; + public Block FRAME_BLOCK = Blocks.OBSIDIAN; // Purpur public PortalTravelAgent(WorldServer worldserver) { this.world = worldserver; @@ -233,7 +234,7 @@ public class PortalTravelAgent { boolean flag1 = l2 < 0; blockposition_mutableblockposition.d(j3, l3, i4); - blockList.setTypeAndData(blockposition_mutableblockposition, flag1 ? Blocks.OBSIDIAN.getBlockData() : Blocks.AIR.getBlockData(), 3); // CraftBukkit + blockList.setTypeAndData(blockposition_mutableblockposition, flag1 ? FRAME_BLOCK.getBlockData() : Blocks.AIR.getBlockData(), 3); // CraftBukkit // Purpur } } } @@ -243,7 +244,7 @@ public class PortalTravelAgent { for (i3 = -1; i3 < 4; ++i3) { if (k2 == -1 || k2 == 2 || i3 == -1 || i3 == 3) { blockposition_mutableblockposition.d(i5 + k2 * k5, j5 + i3, j2 + k2 * l5); - blockList.setTypeAndData(blockposition_mutableblockposition, Blocks.OBSIDIAN.getBlockData(), 3); // CraftBukkit + blockList.setTypeAndData(blockposition_mutableblockposition, FRAME_BLOCK.getBlockData(), 3); // CraftBukkit // Purpur } } } diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java index 0eca6f42d9..6c95497ee1 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -65,7 +65,7 @@ public class WorldServer extends World { public boolean savingDisabled; private boolean everyoneSleeping; private int emptyTime; - private final PortalTravelAgent portalTravelAgent; + public PortalTravelAgent portalTravelAgent; // Purpur - private final -> public non-final private final TickListServer nextTickListBlock; private final TickListServer nextTickListFluid; private final Set navigators; -- 2.24.0