91 lines
4.2 KiB
Diff
91 lines
4.2 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Helvetica Volubi <suisuroru@blue-millennium.fun>
|
|
Date: Sun, 27 Apr 2025 14:26:01 +0800
|
|
Subject: [PATCH] Portal Behavior Modifiers
|
|
|
|
|
|
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
|
|
index 2ea6160492cb23e96271dfbfd3bd35fe03109d6a..36bddc5f5a05044b995e0b87f2c9105a6acfe8fd 100644
|
|
--- a/net/minecraft/world/entity/Entity.java
|
|
+++ b/net/minecraft/world/entity/Entity.java
|
|
@@ -1149,7 +1149,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
|
//Luminol end
|
|
try {
|
|
// Paper end - detailed watchdog information
|
|
- if (this.noPhysics) {
|
|
+ if (this.noPhysics || this.portalProcess != null) { // Luminol - Entity portal-teleport speed fix
|
|
this.setPos(this.getX() + movement.x, this.getY() + movement.y, this.getZ() + movement.z);
|
|
} else {
|
|
this.wasOnFire = this.isOnFire();
|
|
@@ -3829,20 +3829,27 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
|
|
|
EntityTreeNode curr;
|
|
while ((curr = queue.pollFirst()) != null) {
|
|
- EntityTreeNode[] passengers = curr.passengers;
|
|
+ restore(curr); // Luminol - EndGateway Portal Passengers Fix
|
|
+ }
|
|
+ }
|
|
+
|
|
+ // Luminol Start - EndGateway Portal Passengers Fix
|
|
+ private EntityTreeNode[] restore(EntityTreeNode entity) {
|
|
+ EntityTreeNode[] passengers = entity.passengers;
|
|
if (passengers == null) {
|
|
- continue;
|
|
+ return null;
|
|
}
|
|
|
|
List<Entity> newPassengers = new java.util.ArrayList<>();
|
|
for (EntityTreeNode passenger : passengers) {
|
|
+ passenger.passengers = restore(passenger);
|
|
newPassengers.add(passenger.root);
|
|
- passenger.root.vehicle = curr.root;
|
|
+ passenger.root.vehicle = entity.root;
|
|
}
|
|
-
|
|
- curr.root.passengers = ImmutableList.copyOf(newPassengers);
|
|
- }
|
|
+ entity.root.passengers = ImmutableList.copyOf(newPassengers);
|
|
+ return passengers;
|
|
}
|
|
+ // Luminol End - EndGateway Portal Passengers Fix
|
|
|
|
public void addTracker() {
|
|
for (final EntityTreeNode node : this.getFullTree()) {
|
|
@@ -4561,6 +4568,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
|
|
|
}
|
|
|
|
+ // Luminol start - Add afterPortalLogic
|
|
+ protected void afterPortalLogic() {
|
|
+
|
|
+ }
|
|
+ // Luminol end - Add afterPortalLogic
|
|
+
|
|
protected boolean portalToAsync(ServerLevel destination, BlockPos portalPos, boolean takePassengers,
|
|
PortalType type, java.util.function.Consumer<Entity> teleportComplete) {
|
|
ca.spottedleaf.moonrise.common.util.TickThread.ensureTickThread(this, "Cannot portal entity async");
|
|
@@ -4644,6 +4657,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
|
info.postTeleportTransition().onTransition(teleported);
|
|
}
|
|
|
|
+ teleported.afterPortalLogic(); // Luminol - Add afterPortalLogic
|
|
+
|
|
// Kaiiju start - vanilla end teleportation
|
|
/*if (teleportComplete != null) {
|
|
teleportComplete.accept(teleported);
|
|
diff --git a/net/minecraft/world/entity/item/PrimedTnt.java b/net/minecraft/world/entity/item/PrimedTnt.java
|
|
index 88570bb4aa02896545805d7721c45cf9599befea..ad68417c0b17f1fabd5153ff86d5c34618be28bc 100644
|
|
--- a/net/minecraft/world/entity/item/PrimedTnt.java
|
|
+++ b/net/minecraft/world/entity/item/PrimedTnt.java
|
|
@@ -251,4 +251,10 @@ public class PrimedTnt extends Entity implements TraceableEntity {
|
|
return !this.level().paperConfig().fixes.preventTntFromMovingInWater && super.isPushedByFluid();
|
|
}
|
|
// Paper end - Option to prevent TNT from moving in water
|
|
+
|
|
+ // Luminol start - Add afterPortalLogic
|
|
+ protected void afterPortalLogic() {
|
|
+ this.setUsedPortal(true);
|
|
+ }
|
|
+ // Luminol end - Add afterPortalLogic
|
|
}
|