51 lines
3.2 KiB
Diff
51 lines
3.2 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: "Sofiane H. Djerbi" <46628754+kugge@users.noreply.github.com>
|
|
Date: Fri, 19 May 2023 03:38:03 +0300
|
|
Subject: [PATCH] Vanilla end portal teleportation
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
|
index 4f8abe7cc8a687e7b55108a9b78b12a1f3deecd3..7c57675adc33d7c5525cdf8ebfd696a0e756c9a7 100644
|
|
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
|
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
|
@@ -4030,12 +4030,17 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
|
|
targetPos, 16, // load 16 blocks to be safe from block physics
|
|
ca.spottedleaf.concurrentutil.executor.standard.PrioritisedExecutor.Priority.HIGH,
|
|
(chunks) -> {
|
|
- ServerLevel.makeObsidianPlatform(destination, null, targetPos);
|
|
+ //ServerLevel.makeObsidianPlatform(destination, null, targetPos); // Kaiiju - Vanilla end teleportation - moved down
|
|
|
|
+ // Kaiiju start - Vanilla end teleportation
|
|
+ Vec3 finalPos;
|
|
+ if (this instanceof Player) finalPos = Vec3.atBottomCenterOf(targetPos.below());
|
|
+ else finalPos = Vec3.atBottomCenterOf(targetPos);
|
|
+ // Kaiiju end
|
|
// the portal obsidian is placed at targetPos.y - 2, so if we want to place the entity
|
|
// on the obsidian, we need to spawn at targetPos.y - 1
|
|
portalInfoCompletable.complete(
|
|
- new PortalInfo(Vec3.atBottomCenterOf(targetPos.below()), Vec3.ZERO, 90.0f, 0.0f, destination, null)
|
|
+ new PortalInfo(finalPos, this.getDeltaMovement(), 90.0f, 0.0f, destination, null) // Kaiiju - Vanilla end teleportation
|
|
);
|
|
}
|
|
);
|
|
@@ -4222,6 +4227,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
|
|
if (!this.canPortalAsync(takePassengers)) {
|
|
return false;
|
|
}
|
|
+ // Kaiiju start - sync end platform spawning & entity teleportation
|
|
+ final java.util.function.Consumer<Entity> tpComplete = type == PortalType.END && destination.getTypeKey() == LevelStem.END ?
|
|
+ e -> ServerLevel.makeObsidianPlatform(destination, null, ServerLevel.END_SPAWN_POINT) : teleportComplete;
|
|
+ // Kaiiju end
|
|
|
|
Vec3 initialPosition = this.position();
|
|
ChunkPos initialPositionChunk = new ChunkPos(
|
|
@@ -4280,7 +4289,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
|
|
// place
|
|
passengerTree.root.placeInAsync(
|
|
originWorld, destination, Entity.TELEPORT_FLAG_LOAD_CHUNK | (takePassengers ? Entity.TELEPORT_FLAG_TELEPORT_PASSENGERS : 0L),
|
|
- passengerTree, teleportComplete
|
|
+ passengerTree, tpComplete // Kaiiju - vanilla end teleportation
|
|
);
|
|
});
|
|
|