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

73 lines
2.3 KiB
Java
Raw Normal View History

2020-06-26 19:52:17 +02:00
package net.minemora.entitytrackerfixer.v1_16_R1.entityTick;
import java.util.Set;
2020-06-26 19:52:17 +02:00
2020-07-08 21:50:57 +02:00
import org.bukkit.craftbukkit.v1_16_R1.entity.CraftEntity;
import org.bukkit.entity.Entity;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.world.ChunkLoadEvent;
import net.minecraft.server.v1_16_R1.EntityInsentient;
import net.minecraft.server.v1_16_R1.MinecraftServer;
2020-07-08 21:50:57 +02:00
import net.minemora.entitytrackerfixer.EntityTrackerFixer;
2020-06-26 19:52:17 +02:00
2020-07-08 21:50:57 +02:00
public class EntityTickManager implements Listener {
2020-06-26 19:52:17 +02:00
private static EntityTickManager instance;
2020-07-08 21:50:57 +02:00
private EntityTickManager() {
EntityTrackerFixer.plugin.getServer().getPluginManager().registerEvents(this, EntityTrackerFixer.plugin);
}
2020-06-26 19:52:17 +02:00
public void disableTicking(net.minecraft.server.v1_16_R1.Entity entity) {
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-06-26 19:52:17 +02:00
}
public void enableTicking(Set<net.minecraft.server.v1_16_R1.Entity> entities) {
for(net.minecraft.server.v1_16_R1.Entity entity : entities) {
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;
}
}
2020-06-26 19:52:17 +02:00
}
2020-07-08 21:50:57 +02:00
@EventHandler
public void onChunkLoad(ChunkLoadEvent event) {
for(Entity entity : event.getChunk().getEntities()) {
net.minecraft.server.v1_16_R1.Entity nms = ((CraftEntity)entity).getHandle();
if(nms instanceof EntityInsentient) {
if(!((EntityInsentient)nms).aware) {
((EntityInsentient)nms).aware = true;
}
}
}
}
2020-06-26 19:52:17 +02:00
public static EntityTickManager getInstance() {
if(instance == null) {
instance = new EntityTickManager();
2020-06-26 19:52:17 +02:00
}
return instance;
}
}