/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package org.arkhamnetwork.arcade.commons.patches;
import java.util.Iterator;
import net.minecraft.server.v1_7_R3.IInventory;
import org.arkhamnetwork.arcade.core.Arcade;
import org.bukkit.World;
import org.bukkit.craftbukkit.v1_7_R3.CraftWorld;
import org.bukkit.craftbukkit.v1_7_R3.entity.CraftPlayer;
import org.bukkit.entity.HumanEntity;
import org.bukkit.scheduler.BukkitRunnable;
/**
*
* @author devan_000
*/
public class TileEntityMemoryLeakFixTask extends BukkitRunnable {
private final Arcade plugin = Arcade.getInstance();
@Override
public synchronized void run() {
for (World world : plugin.getServer().getWorlds()) {
for (final Object tileEntity : ((CraftWorld) world).getHandle().tileEntityList) {
if (tileEntity instanceof IInventory) {
final Iterator<HumanEntity> entityIterator = ((IInventory) tileEntity)
.getViewers().iterator();
while (entityIterator.hasNext()) {
final HumanEntity entity = entityIterator.next();
if (entity instanceof CraftPlayer
&& !((CraftPlayer) entity).isOnline()) {
entityIterator.remove();
}
}
}
}
}
}
}