2021-06-11 14:02:28 +02:00
|
|
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
|
|
From: AJMFactsheets <AJMFactsheets@gmail.com>
|
|
|
|
Date: Fri, 17 Jan 2020 17:17:54 -0600
|
|
|
|
Subject: [PATCH] Fix items not falling correctly
|
|
|
|
|
|
|
|
Since 1.14, Mojang has added an optimization which skips checking if
|
|
|
|
an item should fall every fourth tick.
|
|
|
|
|
|
|
|
However, Spigot's entity activation range class also has an
|
|
|
|
optimization which skips ticking active entities every fourth tick.
|
|
|
|
This can result in a state where an item will never properly fall
|
|
|
|
due to its move method never being called.
|
|
|
|
|
2022-01-19 20:18:24 +01:00
|
|
|
This patch resolves the conflict by offsetting checking Spigot's entity
|
|
|
|
activation range check from an item's move method.
|
2021-06-11 14:02:28 +02:00
|
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java
|
2024-10-23 15:54:09 +02:00
|
|
|
index 75ebf09777e19645eee296a9edabac39c858ffb9..c390d8b3a706d0177b9f3105a7b9a84265688ece 100644
|
2021-06-11 14:02:28 +02:00
|
|
|
--- a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java
|
|
|
|
+++ b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java
|
2024-09-19 16:36:07 +02:00
|
|
|
@@ -175,7 +175,7 @@ public class ItemEntity extends Entity implements TraceableEntity {
|
2021-06-11 14:02:28 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-06-07 23:14:56 +02:00
|
|
|
- if (!this.onGround() || this.getDeltaMovement().horizontalDistanceSqr() > 9.999999747378752E-6D || (this.tickCount + this.getId()) % 4 == 0) {
|
|
|
|
+ if (!this.onGround() || this.getDeltaMovement().horizontalDistanceSqr() > 9.999999747378752E-6D || (this.tickCount + this.getId()) % 4 == 0) { // Paper - Diff on change
|
2021-06-11 14:02:28 +02:00
|
|
|
this.move(MoverType.SELF, this.getDeltaMovement());
|
2024-10-23 15:54:09 +02:00
|
|
|
this.applyEffectsFromBlocks();
|
2024-04-24 08:05:14 +02:00
|
|
|
float f = 0.98F;
|
2022-01-19 20:18:24 +01:00
|
|
|
diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java
|
2024-10-27 18:11:15 +01:00
|
|
|
index dd1c5bc7522a4710cbfdd4764f6431e1e28d63cc..f8387277d915460d755bdd35198d2547d1a49bde 100644
|
2022-01-19 20:18:24 +01:00
|
|
|
--- a/src/main/java/org/spigotmc/ActivationRange.java
|
|
|
|
+++ b/src/main/java/org/spigotmc/ActivationRange.java
|
2024-10-27 18:11:15 +01:00
|
|
|
@@ -253,7 +253,7 @@ public class ActivationRange
|
2022-01-19 20:18:24 +01:00
|
|
|
isActive = true;
|
|
|
|
}
|
|
|
|
// Add a little performance juice to active entities. Skip 1/4 if not immune.
|
|
|
|
- } else if ( !entity.defaultActivationState && entity.tickCount % 4 == 0 && !ActivationRange.checkEntityImmunities( entity ) )
|
2023-01-07 13:05:13 +01:00
|
|
|
+ } else if ( !entity.defaultActivationState && (entity.tickCount + entity.getId()) % 4 == 0 && !ActivationRange.checkEntityImmunities( entity ) ) // Paper - Ensure checking item movement is offset from Spigot's entity activation range check
|
2022-01-19 20:18:24 +01:00
|
|
|
{
|
|
|
|
isActive = false;
|
|
|
|
}
|