/*
* Copyright (c) CovertJaguar, 2014 http://railcraft.info
*
* This code is the property of CovertJaguar
* and may only be used with explicit written
* permission unless otherwise specified on the
* license page at http://railcraft.info/wiki/info:license.
*/
package mods.railcraft.common.blocks.machine.alpha;
import mods.railcraft.common.blocks.machine.IEnumMachine;
import mods.railcraft.common.core.Railcraft;
import mods.railcraft.common.core.RailcraftConfig;
import mods.railcraft.common.core.RailcraftConstants;
import mods.railcraft.common.plugins.forge.PlayerPlugin;
import mods.railcraft.common.util.collections.ItemMap;
import mods.railcraft.common.util.misc.Game;
import net.minecraftforge.common.ForgeChunkManager;
import net.minecraftforge.common.ForgeChunkManager.Ticket;
import net.minecraftforge.common.ForgeChunkManager.Type;
/**
* @author CovertJaguar <http://www.railcraft.info>
*/
public class TileAnchorPersonal extends TileAnchorWorld {
private static final int MINUTES_BEFORE_DISABLE = 5;
private long ticksSincePlayerLogged;
@Override
public IEnumMachine getMachineType() {
return EnumMachineAlpha.PERSONAL_ANCHOR;
}
@Override
protected Ticket getTicketFromForge() {
return ForgeChunkManager.requestPlayerTicket(Railcraft.getMod(), PlayerPlugin.getUsername(worldObj, getOwner()), worldObj, Type.NORMAL);
}
@Override
public ItemMap<Float> getFuelMap() {
return RailcraftConfig.anchorFuelPersonal;
}
@Override
protected boolean meetsTicketRequirements() {
return PlayerPlugin.isPlayerConnected(getOwner()) && super.meetsTicketRequirements();
}
@Override
public void updateEntity() {
if (Game.isHost(worldObj) && hasActiveTicket()) {
if (PlayerPlugin.isPlayerConnected(getOwner()))
ticksSincePlayerLogged = 0;
else
ticksSincePlayerLogged++;
if (ticksSincePlayerLogged > RailcraftConstants.TICKS_PER_MIN * MINUTES_BEFORE_DISABLE)
releaseTicket();
}
super.updateEntity();
}
}