EntityTrackerFixer/EntityTrackerFixer/src/net/minemora/entitytrackerfixer/v1_16_R3/entityTick/EntityTickManager.java

73 lines
2.3 KiB
Java
Raw Normal View History

2020-11-16 05:30:36 +01:00
package net.minemora.entitytrackerfixer.v1_16_R3.entityTick;
2020-08-25 18:50:57 +02:00
import java.util.Set;
2020-11-16 05:30:36 +01:00
import org.bukkit.craftbukkit.v1_16_R3.entity.CraftEntity;
2020-08-25 18:50:57 +02:00
import org.bukkit.entity.Entity;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.world.ChunkLoadEvent;
2020-11-16 05:30:36 +01:00
import net.minecraft.server.v1_16_R3.EntityInsentient;
import net.minecraft.server.v1_16_R3.MinecraftServer;
2020-08-25 18:50:57 +02:00
import net.minemora.entitytrackerfixer.EntityTrackerFixer;
public class EntityTickManager implements Listener {
private static EntityTickManager instance;
private EntityTickManager() {
EntityTrackerFixer.plugin.getServer().getPluginManager().registerEvents(this, EntityTrackerFixer.plugin);
}
2020-11-16 05:30:36 +01:00
public void disableTicking(net.minecraft.server.v1_16_R3.Entity entity) {
2020-08-25 18:50:57 +02:00
if(entity == null) {
return;
}
if(!entity.valid) {
return;
}
entity.activatedTick = -2147483648L;
if(entity instanceof EntityInsentient) {
//System.out.println("disable tick for insentient entity currently aware is = " + ((EntityInsentient)entity).aware + " should be true");
((EntityInsentient)entity).aware = false;
}
}
2020-11-16 05:30:36 +01:00
public void enableTicking(Set<net.minecraft.server.v1_16_R3.Entity> entities) {
for(net.minecraft.server.v1_16_R3.Entity entity : entities) {
2020-08-25 18:50:57 +02:00
if(entity == null) {
continue;
}
if(!entity.valid) {
continue;
}
entity.activatedTick = MinecraftServer.currentTick;
if(entity instanceof EntityInsentient) {
//System.out.println("enabling tick for insentient entity currently aware is = " + ((EntityInsentient)entity).aware + " should be false");
((EntityInsentient)entity).aware = true;
}
}
}
@EventHandler
public void onChunkLoad(ChunkLoadEvent event) {
for(Entity entity : event.getChunk().getEntities()) {
2020-11-16 05:30:36 +01:00
net.minecraft.server.v1_16_R3.Entity nms = ((CraftEntity)entity).getHandle();
2020-08-25 18:50:57 +02:00
if(nms instanceof EntityInsentient) {
if(!((EntityInsentient)nms).aware) {
((EntityInsentient)nms).aware = true;
}
}
}
}
public static EntityTickManager getInstance() {
if(instance == null) {
instance = new EntityTickManager();
}
return instance;
}
}