@@ -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);
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user