/* * 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.tracks; import mods.railcraft.api.tracks.ITrackPowered; import mods.railcraft.common.carts.CartUtils; import net.minecraft.block.Block; import net.minecraft.entity.item.EntityMinecart; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.IIcon; import net.minecraft.world.World; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; public class TrackDisposal extends TrackSuspended implements ITrackPowered { private static final int TIME_TILL_NEXT_MOUNT = 40; private boolean powered = false; @Override public EnumTrack getTrackType() { return EnumTrack.DISPOSAL; } @Override public boolean canMakeSlopes() { return false; } @Override public void onMinecartPass(EntityMinecart cart) { if (!isPowered() && cart.canBeRidden()) { if (cart.riddenByEntity != null) { CartUtils.dismount(cart, cart.posX, cart.posY - 2, cart.posZ); } cart.getEntityData().setInteger("MountPrevention", TIME_TILL_NEXT_MOUNT); } } @Override public boolean canPlaceRailAt(World world, int x, int y, int z) { if (!world.isAirBlock(x, y - 1, z)) return false; return super.canPlaceRailAt(world, x, y, z); } @Override public void onNeighborBlockChange(Block block) { super.onNeighborBlockChange(block); testPower(); } @Override public IIcon getIcon() { if (isPowered()) { return getIcon(1); } return getIcon(0); } @Override public boolean isPowered() { return powered; } @Override public void setPowered(boolean powered) { this.powered = powered; } @Override public void writeToNBT(NBTTagCompound nbttagcompound) { super.writeToNBT(nbttagcompound); nbttagcompound.setBoolean("powered", powered); } @Override public void readFromNBT(NBTTagCompound nbttagcompound) { super.readFromNBT(nbttagcompound); powered = nbttagcompound.getBoolean("powered"); } @Override public void writePacketData(DataOutputStream data) throws IOException { super.writePacketData(data); data.writeBoolean(powered); } @Override public void readPacketData(DataInputStream data) throws IOException { super.readPacketData(data); boolean p = data.readBoolean(); if (p != powered) { powered = p; markBlockNeedsUpdate(); } } }