EntityTrackerFixer/EntityTrackerFixer/src/net/minemora/entitytrackerfixer/CheckTask.java

49 lines
1.4 KiB
Java
Raw Normal View History

2019-09-03 01:07:33 +02:00
package net.minemora.entitytrackerfixer;
import java.util.HashSet;
import java.util.Set;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_14_R1.CraftWorld;
2019-09-07 21:22:44 +02:00
import org.bukkit.craftbukkit.v1_14_R1.entity.CraftEntity;
2019-09-03 01:07:33 +02:00
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
import net.minecraft.server.v1_14_R1.ChunkProviderServer;
import net.minecraft.server.v1_14_R1.WorldServer;
import net.minemora.entitytrackerfixer.config.ConfigMain;
public class CheckTask extends BukkitRunnable {
@Override
public void run() {
if(UntrackerTask.isRunning()) {
return;
}
for(String worldName : ConfigMain.getWorlds()) {
if(Bukkit.getWorld(worldName) == null) {
continue;
}
checkWorld(worldName);
}
}
public void checkWorld(String worldName) {
WorldServer ws = ((CraftWorld)Bukkit.getWorld(worldName)).getHandle();
ChunkProviderServer cps = ws.getChunkProvider();
Set<net.minecraft.server.v1_14_R1.Entity> trackAgain = new HashSet<>();
2019-09-07 21:22:44 +02:00
int d = ConfigMain.getTrackingRange();
for(Player player : Bukkit.getWorld(worldName).getPlayers()) {
for(Entity ent : player.getNearbyEntities(d, d, d)) {
if(!cps.playerChunkMap.trackedEntities.containsKey(ent.getEntityId())) {
trackAgain.add(((CraftEntity)ent).getHandle());
2019-09-03 01:07:33 +02:00
}
}
2019-09-07 21:22:44 +02:00
}
2019-09-22 17:25:01 +02:00
NMSEntityTracker.trackEntities(cps, trackAgain);
2019-09-03 01:07:33 +02:00
}
}