/*
* 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.carts;
import net.minecraft.entity.item.EntityMinecart;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import net.minecraft.world.World;
import net.minecraftforge.common.ForgeChunkManager;
import net.minecraftforge.common.ForgeChunkManager.Type;
import mods.railcraft.api.carts.CartTools;
import mods.railcraft.common.blocks.machine.alpha.EnumMachineAlpha;
import mods.railcraft.common.core.Railcraft;
import mods.railcraft.common.core.RailcraftConfig;
import mods.railcraft.common.core.RailcraftConstants;
import mods.railcraft.common.plugins.forge.LocalizationPlugin;
import mods.railcraft.common.plugins.forge.PlayerPlugin;
import mods.railcraft.common.util.collections.ItemMap;
/**
*
* @author CovertJaguar <http://www.railcraft.info>
*/
public class EntityCartAnchorPersonal extends EntityCartAnchor {
private static final int MINUTES_BEFORE_DISABLE = 5;
private long ticksSincePlayerLogged;
public EntityCartAnchorPersonal(World world) {
super(world);
}
public EntityCartAnchorPersonal(World world, double x, double y, double z) {
super(world, x, y, z);
}
@Override
public void onUpdate() {
if (ticket != null) {
if (PlayerPlugin.isPlayerConnected(CartTools.getCartOwner(this)))
ticksSincePlayerLogged = 0;
else
ticksSincePlayerLogged++;
if (ticksSincePlayerLogged > RailcraftConstants.TICKS_PER_MIN * MINUTES_BEFORE_DISABLE)
releaseTicket();
}
super.onUpdate();
}
@Override
public boolean doesCartMatchFilter(ItemStack stack, EntityMinecart cart) {
return EnumCart.getCartType(stack) == EnumCart.ANCHOR_PERSONAL;
}
@Override
protected ForgeChunkManager.Ticket getTicketFromForge() {
return ForgeChunkManager.requestPlayerTicket(Railcraft.getMod(), CartTools.getCartOwner(this).getName(), worldObj, Type.ENTITY);
}
@Override
public ItemMap<Float> getFuelMap() {
return RailcraftConfig.anchorFuelPersonal;
}
@Override
protected boolean meetsTicketRequirements() {
return PlayerPlugin.isPlayerConnected(CartTools.getCartOwner(this)) && super.meetsTicketRequirements();
}
@Override
public int getDisplayTileData() {
return EnumMachineAlpha.PERSONAL_ANCHOR.ordinal();
}
@Override
public String getInventoryName() {
return LocalizationPlugin.translate(EnumCart.ANCHOR_PERSONAL.getTag());
}
@Override
public IIcon getBlockTextureOnSide(int side) {
if (side < 2 && !getFlag(TICKET_FLAG))
return EnumMachineAlpha.PERSONAL_ANCHOR.getTexture(6);
return EnumMachineAlpha.PERSONAL_ANCHOR.getTexture(side);
}
}