summaryrefslogtreecommitdiffstats
path: root/src/main/java/net/minecraft/server/PortalTravelAgent.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/net/minecraft/server/PortalTravelAgent.java')
-rw-r--r--src/main/java/net/minecraft/server/PortalTravelAgent.java50
1 files changed, 34 insertions, 16 deletions
diff --git a/src/main/java/net/minecraft/server/PortalTravelAgent.java b/src/main/java/net/minecraft/server/PortalTravelAgent.java
index 5d8c833c..e7864ea0 100644
--- a/src/main/java/net/minecraft/server/PortalTravelAgent.java
+++ b/src/main/java/net/minecraft/server/PortalTravelAgent.java
@@ -14,9 +14,33 @@ public class PortalTravelAgent {
public PortalTravelAgent() {}
public void a(World world, Entity entity) {
- if (!this.b(world, entity)) {
- this.c(world, entity);
- this.b(world, entity);
+ if (world.worldProvider.dimension != 1) {
+ if (!this.b(world, entity)) {
+ this.c(world, entity);
+ this.b(world, entity);
+ }
+ } else {
+ int i = MathHelper.floor(entity.locX);
+ int j = MathHelper.floor(entity.locY) - 1;
+ int k = MathHelper.floor(entity.locZ);
+ byte b0 = 1;
+ byte b1 = 0;
+
+ for (int l = -2; l <= 2; ++l) {
+ for (int i1 = -2; i1 <= 2; ++i1) {
+ for (int j1 = -1; j1 < 3; ++j1) {
+ int k1 = i + i1 * b0 + l * b1;
+ int l1 = j + j1;
+ int i2 = k + i1 * b1 - l * b0;
+ boolean flag = j1 < 0;
+
+ world.setTypeId(k1, l1, i2, flag ? Block.OBSIDIAN.id : 0);
+ }
+ }
+ }
+
+ entity.setPositionRotation((double) i, (double) j, (double) k, entity.yaw, 0.0F);
+ entity.motX = entity.motY = entity.motZ = 0.0D;
}
}
@@ -37,9 +61,7 @@ public class PortalTravelAgent {
for (int k1 = i1 - short1; k1 <= i1 + short1; ++k1) {
double d3 = (double) k1 + 0.5D - entity.locZ;
- world.getClass();
-
- for (int l1 = 128 - 1; l1 >= 0; --l1) {
+ for (int l1 = world.height - 1; l1 >= 0; --l1) {
if (world.getTypeId(j1, l1, k1) == Block.PORTAL.id) {
while (world.getTypeId(j1, l1 - 1, k1) == Block.PORTAL.id) {
--l1;
@@ -121,10 +143,9 @@ public class PortalTravelAgent {
for (j2 = k - b0; j2 <= k + b0; ++j2) {
d2 = (double) j2 + 0.5D - entity.locZ;
- world.getClass();
label274:
- for (l2 = 128 - 1; l2 >= 0; --l2) {
+ for (l2 = world.height - 1; l2 >= 0; --l2) {
if (world.isEmpty(i2, l2, j2)) {
while (l2 > 0 && world.isEmpty(i2, l2 - 1, j2)) {
--l2;
@@ -173,10 +194,9 @@ public class PortalTravelAgent {
for (j2 = k - b0; j2 <= k + b0; ++j2) {
d2 = (double) j2 + 0.5D - entity.locZ;
- world.getClass();
label222:
- for (l2 = 128 - 1; l2 >= 0; --l2) {
+ for (l2 = world.height - 1; l2 >= 0; --l2) {
if (world.isEmpty(i2, l2, j2)) {
while (l2 > 0 && world.isEmpty(i2, l2 - 1, j2)) {
--l2;
@@ -237,8 +257,8 @@ public class PortalTravelAgent {
i1 = 70;
}
- if (i1 > 118) {
- i1 = 118;
+ if (i1 > world.height - 10) {
+ i1 = world.height - 10;
}
j5 = i1;
@@ -279,10 +299,8 @@ public class PortalTravelAgent {
i1 = 70;
}
- world.getClass();
- if (i1 > 128 - 10) {
- world.getClass();
- i1 = 128 - 10;
+ if (i1 > world.height - 10) {
+ i1 = world.height - 10;
}
j5 = i1;