Files
Purpur/patches/server/0046-Add-EntityPortalReadyEvent.patch
William Blake Galbreath d085a5b222 Updated Upstream (Paper)
Upstream has released updates that appears to apply and compile correctly

Paper Changes:
cb15cfa4 Improve Async Login so pending connections dont get exposed
f275e9cb Optimize Hoppers - Major Boost - Got2GoFast!
0106485c Improvements to watchdog changes
65934b1f Fix build for last commit. 5am commits are great
3f436029 Don't process watchdog until server has fully started and ticked.
938bd972 Don't fire BlockFade on worldgen threads - Fixes #3208
509a828e Fix loading spawn chunks when async chunks is off
8a91bfd2 Improvements to async login
bf698865 Revert "Re-track players that dismount from other players"
82b98418 Fix some issues with async login as well another source of sync loads
aa241d2b Allow multiple callbacks to schedule for Callback Executor
a2064a41 Add PlayerAttackEntityCooldownResetEvent This event is called when processing a player's attack on an entity right before their attack strength cd is reset, there are no existing events that fire within this period of time so it was impossible to capture the players attack strength via API prior to this commit.
f48d4299 Allow sleeping players to float
eeb2f67d Fix Bed respawn deviating too far from vanilla (#3195)
68a7b9fe Move player to spawn point if spawn in unloaded world
2020-04-24 08:22:02 -05:00

159 lines
8.5 KiB
Diff

From 23c78ca9813b04abf15dc7020eb3ace7e1245505 Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
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 09c7c131..6880cdd7 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<org.bukkit.block.BlockState> blocks = new java.util.ArrayList<org.bukkit.block.BlockState>(); // 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 9ff3e68e..1f48643e 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;
@@ -2267,6 +2267,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 f84dd6d9..f50e9670 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 9b873948..e1387ddc 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -75,7 +75,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<Block> nextTickListBlock;
private final TickListServer<FluidType> nextTickListFluid;
private final Set<NavigationAbstract> navigators;
--
2.24.0