summaryrefslogtreecommitdiffstats
path: root/nms-patches/PortalTravelAgent.patch
diff options
context:
space:
mode:
Diffstat (limited to 'nms-patches/PortalTravelAgent.patch')
-rw-r--r--nms-patches/PortalTravelAgent.patch45
1 files changed, 23 insertions, 22 deletions
diff --git a/nms-patches/PortalTravelAgent.patch b/nms-patches/PortalTravelAgent.patch
index 8094e731..d44c9470 100644
--- a/nms-patches/PortalTravelAgent.patch
+++ b/nms-patches/PortalTravelAgent.patch
@@ -1,17 +1,18 @@
--- a/net/minecraft/server/PortalTravelAgent.java
+++ b/net/minecraft/server/PortalTravelAgent.java
-@@ -1,6 +1,10 @@
- package net.minecraft.server;
-
- import com.google.common.collect.Lists;
+@@ -4,6 +4,11 @@
+ import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap;
+ import it.unimi.dsi.fastutil.objects.ObjectIterator;
+ import java.util.Random;
++// CraftBukkit start
+import org.bukkit.Location;
+import org.bukkit.event.entity.EntityPortalExitEvent;
+import org.bukkit.util.Vector;
-+
- import java.util.Iterator;
- import java.util.List;
- import java.util.Random;
-@@ -27,6 +31,19 @@
++// CraftBukkit end
+
+ public class PortalTravelAgent {
+
+@@ -26,6 +31,19 @@
int i = MathHelper.floor(entity.locX);
int j = MathHelper.floor(entity.locY) - 1;
int k = MathHelper.floor(entity.locZ);
@@ -31,7 +32,7 @@
byte b0 = 1;
byte b1 = 0;
-@@ -43,16 +60,63 @@
+@@ -42,16 +60,63 @@
}
}
@@ -100,8 +101,8 @@
boolean flag1 = true;
Object object = BlockPosition.ZERO;
long k = ChunkCoordIntPair.a(i, j);
-@@ -65,12 +129,12 @@
- portaltravelagent_chunkcoordinatesportal.c = this.world.getTime();
+@@ -64,12 +129,12 @@
+ portaltravelagent_chunkcoordinatesportal.b = this.world.getTime();
flag1 = false;
} else {
- BlockPosition blockposition = new BlockPosition(entity);
@@ -116,9 +117,9 @@
for (BlockPosition blockposition2 = blockposition.a(l, this.world.Z() - 1 - blockposition.getY(), i1); blockposition2.getY() >= 0; blockposition2 = blockposition1) {
blockposition1 = blockposition2.down();
if (this.world.getType(blockposition2).getBlock() == Blocks.PORTAL) {
-@@ -95,6 +159,29 @@
+@@ -93,6 +158,29 @@
+ if (flag1) {
this.c.put(k, new PortalTravelAgent.ChunkCoordinatesPortal((BlockPosition) object, this.world.getTime()));
- this.d.add(Long.valueOf(k));
}
+ // CraftBukkit start - Move entity teleportation logic into exit
+ return (BlockPosition) object;
@@ -146,7 +147,7 @@
double d2 = (double) ((BlockPosition) object).getX() + 0.5D;
double d3 = (double) ((BlockPosition) object).getY() + 0.5D;
-@@ -133,30 +220,59 @@
+@@ -131,30 +219,59 @@
f4 = 1.0F;
}
@@ -224,7 +225,7 @@
int l = i;
int i1 = j;
int j1 = k;
-@@ -181,10 +297,10 @@
+@@ -179,10 +296,10 @@
double d4;
for (i2 = i - b0; i2 <= i + b0; ++i2) {
@@ -237,7 +238,7 @@
label271:
for (k2 = this.world.Z() - 1; k2 >= 0; --k2) {
-@@ -216,7 +332,7 @@
+@@ -214,7 +331,7 @@
}
}
@@ -246,7 +247,7 @@
d4 = d1 * d1 + d3 * d3 + d2 * d2;
if (d0 < 0.0D || d4 < d0) {
d0 = d4;
-@@ -233,10 +349,10 @@
+@@ -231,10 +348,10 @@
if (d0 < 0.0D) {
for (i2 = i - b0; i2 <= i + b0; ++i2) {
@@ -259,7 +260,7 @@
label219:
for (k2 = this.world.Z() - 1; k2 >= 0; --k2) {
-@@ -261,7 +377,7 @@
+@@ -259,7 +376,7 @@
}
}
@@ -268,14 +269,14 @@
d4 = d1 * d1 + d3 * d3 + d2 * d2;
if (d0 < 0.0D || d4 < d0) {
d0 = d4;
-@@ -362,5 +478,10 @@
+@@ -358,5 +475,10 @@
super(blockposition.getX(), blockposition.getY(), blockposition.getZ());
- this.c = i;
+ this.b = i;
}
+
+ @Override
+ public int compareTo(BaseBlockPosition o) {
-+ return this.i(o);
++ return this.l(o);
+ }
}
}