package miscperipherals.tile;
import java.util.Map;
import java.util.WeakHashMap;
import net.minecraft.entity.player.EntityPlayer;
import cpw.mods.fml.common.FMLCommonHandler;
import dan200.computer.api.IComputerAccess;
import dan200.computer.api.IPeripheral;
public class TilePlayerDetector extends Tile implements IPeripheral {
private Map<IComputerAccess, Boolean> computers = new WeakHashMap<IComputerAccess, Boolean>();
public String player;
private int comparatorTicker;
@Override
public String getType() {
return "playerDetector";
}
@Override
public String[] getMethodNames() {
return new String[0];
}
@Override
public Object[] callMethod(IComputerAccess computer, int method, Object[] arguments) throws Exception {
return new Object[0];
}
@Override
public boolean canAttachToSide(int side) {
return true;
}
@Override
public void attach(IComputerAccess computer) {
computers.put(computer, true);
}
@Override
public void detach(IComputerAccess computer) {
computers.remove(computer);
}
@Override
public boolean onBlockActivated(EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
for (IComputerAccess computer : computers.keySet()) {
computer.queueEvent("player", new String[] {player.getEntityName()});
}
comparatorTicker = 10;
worldObj.markBlockForUpdate(xCoord, yCoord, zCoord);
return true;
}
@Override
public int getComparator(int side) {
return comparatorTicker > 0 ? 15 : 0;
}
@Override
public boolean canUpdate() {
return !FMLCommonHandler.instance().getEffectiveSide().isClient();
}
@Override
public void updateEntity() {
if (comparatorTicker > 0 && --comparatorTicker <= 0) worldObj.markBlockForUpdate(xCoord, yCoord, zCoord);
}
}