Fix entity tracker onTick no longer being handled on new Paper, causing bugs

Signed-off-by: Irmo van den Berge <irmo.vandenberge@ziggo.nl>
This commit is contained in:
Irmo van den Berge committed 2024-07-12 22:36:06 +02:00
1 parent 356de838ad
commit babbbe699a
3 files changed
+14 -6

No files matched your search

@@ -44,6 +44,7 @@ public abstract class EntityHandle extends Template.Handle {
/* ============================================================================== */
public abstract void setTrackerEntry(EntityTrackerEntryHandle tracker);
public abstract List<EntityHandle> getPassengers();
public abstract boolean isVehicle();
public abstract boolean isPassenger();
@@ -278,8 +279,6 @@ public abstract class EntityHandle extends Template.Handle {
public final Template.StaticField.Converted<Key<Boolean>> DATA_NO_GRAVITY = new Template.StaticField.Converted<Key<Boolean>>();
public final Template.Field.Converted<Entity> bukkitEntityField = new Template.Field.Converted<Entity>();
@Template.Optional
public final Template.Field.Converted<EntityTrackerEntryHandle> tracker = new Template.Field.Converted<EntityTrackerEntryHandle>();
public final Template.Field.Integer idField = new Template.Field.Integer();
public final Template.Field.Boolean preventBlockPlace = new Template.Field.Boolean();
public final Template.Field.Converted<EntityHandle> vehicle = new Template.Field.Converted<EntityHandle>();
@@ -315,6 +314,7 @@ public abstract class EntityHandle extends Template.Handle {
public final Template.Field.Long move_SomeState = new Template.Field.Long();
public final Template.Field.Boolean valid = new Template.Field.Boolean();
public final Template.Method.Converted<Void> setTrackerEntry = new Template.Method.Converted<Void>();
public final Template.Method.Converted<List<EntityHandle>> getPassengers = new Template.Method.Converted<List<EntityHandle>>();
public final Template.Method<Boolean> isVehicle = new Template.Method<Boolean>();
public final Template.Method<Boolean> isPassenger = new Template.Method<Boolean>();
@@ -106,9 +106,7 @@ public class EntityTracker extends BasicWrapper<EntityTrackerHandle> {
*/
public EntityTrackerEntryHandle setEntry(Entity entity, EntityTrackerEntryHandle entityTrackerEntry) {
// On Paper, the entry is also stored in the entity itself
if (EntityHandle.T.tracker.isAvailable()) {
EntityHandle.T.tracker.set(HandleConversion.toEntityHandle(entity), entityTrackerEntry);
}
EntityHandle.T.setTrackerEntry.invoke(HandleConversion.toEntityHandle(entity), entityTrackerEntry);
return handle.putEntry(entity.getEntityId(), entityTrackerEntry);
}
@@ -44,7 +44,17 @@ class Entity {
protected (org.bukkit.entity.Entity) CraftEntity bukkitEntityField:bukkitEntity;
#endif
optional (EntityTrackerEntryHandle) net.minecraft.server.level.EntityTrackerEntry tracker;
public void setTrackerEntry((EntityTrackerEntryHandle) net.minecraft.server.level.EntityTrackerEntry tracker) {
System.out.println("Set tracker entry");
#if exists net.minecraft.world.entity.Entity net.minecraft.server.level.EntityTrackerEntry tracker;
#require Entity net.minecraft.server.level.EntityTrackerEntry tracker;
instance#tracker = tracker;
#endif
#if exists net.minecraft.world.entity.Entity public final void moonrise$setTrackedEntity(net.minecraft.server.level.EntityTrackerEntry trackedEntity);
instance.moonrise$setTrackedEntity(tracker);
#endif
}
#if version >= 1.17
private static optional java.util.concurrent.atomic.AtomicInteger opt_atomic_entityCount:ENTITY_COUNTER;