diff --git a/leaf-server/minecraft-patches/features/0141-SparklyPaper-Parallel-world-ticking.patch b/leaf-server/minecraft-patches/features/0141-SparklyPaper-Parallel-world-ticking.patch index e3befac8..204eea07 100644 --- a/leaf-server/minecraft-patches/features/0141-SparklyPaper-Parallel-world-ticking.patch +++ b/leaf-server/minecraft-patches/features/0141-SparklyPaper-Parallel-world-ticking.patch @@ -686,7 +686,7 @@ index f59662da0bbfe0e768c4ac5c7491d13263ac5cac..1643b3af9b33931277c03dbfa2f85e36 serverPlayer.connection = player.connection; serverPlayer.restoreFrom(player, keepInventory); diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 9bc978ca290ca772b0367e89b69fe16b502b0cd2..db9864a55f6f28aaec0054b054bdabf58f76ce0f 100644 +index 9bc978ca290ca772b0367e89b69fe16b502b0cd2..c64ee2b79273eed8bba04f792cc07cc5876c1b8b 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java @@ -83,10 +83,15 @@ import net.minecraft.world.InteractionResult; @@ -735,7 +735,7 @@ index 9bc978ca290ca772b0367e89b69fe16b502b0cd2..db9864a55f6f28aaec0054b054bdabf5 this.handlePortal(); } } -@@ -3370,14 +3389,22 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3370,14 +3389,24 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess if (this.portalProcess != null) { if (this.portalProcess.processPortalTeleportation(serverLevel, this, this.canUsePortal(false))) { this.setPortalCooldown(); @@ -750,12 +750,14 @@ index 9bc978ca290ca772b0367e89b69fe16b502b0cd2..db9864a55f6f28aaec0054b054bdabf5 + // TCRF SparklyPaper (Pathothingi) start - parallel world ticking + getBukkitEntity().taskScheduler.schedule( + entity -> { -+ TeleportTransition portalDestination = entity.portalProcess.getPortalDestination(serverLevel, entity); -+ if (portalDestination != null) { -+ ServerLevel level = portalDestination.newLevel(); -+ if (entity instanceof ServerPlayer // CraftBukkit - always call event for players -+ || (level != null && (level.dimension() == serverLevel.dimension() || entity.canTeleport(serverLevel, level)))) { // CraftBukkit -+ entity.teleport(portalDestination); ++ if (entity.portalProcess != null) { // Check if portalProcess is not null ++ TeleportTransition portalDestination = entity.portalProcess.getPortalDestination(serverLevel, entity); ++ if (portalDestination != null) { ++ ServerLevel level = portalDestination.newLevel(); ++ if (entity instanceof ServerPlayer // CraftBukkit - always call event for players ++ || (level != null && (level.dimension() == serverLevel.dimension() || entity.canTeleport(serverLevel, level)))) { // CraftBukkit ++ entity.teleport(portalDestination); ++ } + } + } + }, @@ -766,7 +768,7 @@ index 9bc978ca290ca772b0367e89b69fe16b502b0cd2..db9864a55f6f28aaec0054b054bdabf5 } else if (this.portalProcess.hasExpired()) { this.portalProcess = null; -@@ -3908,6 +3935,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3908,6 +3937,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } private Entity teleportCrossDimension(ServerLevel level, TeleportTransition teleportTransition) { @@ -811,7 +813,7 @@ index 0b4c4707139c9c72929799818ec1a1b25575d70e..e7d11397701c7f8c7f1602572382373d }); } diff --git a/net/minecraft/world/inventory/AbstractContainerMenu.java b/net/minecraft/world/inventory/AbstractContainerMenu.java -index d42f30a7ccdc10bc1f2bfc4b8d93821aa0a25679..4e82d3e714c39bf0a614e8692aca6364b76138a2 100644 +index 8a0d1aebad1f92c43112e279b9c5922fdd1fd432..1fc83d18ab8c6d7a65fcd314f00414e638a417e9 100644 --- a/net/minecraft/world/inventory/AbstractContainerMenu.java +++ b/net/minecraft/world/inventory/AbstractContainerMenu.java @@ -33,6 +33,7 @@ import net.minecraft.world.item.BundleItem;