/*
* 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.blocks.machine.TileMachineBase;
import mods.railcraft.common.plugins.forge.PowerPlugin;
import mods.railcraft.common.plugins.forge.WorldPlugin;
import mods.railcraft.common.util.effects.EffectManager;
import mods.railcraft.common.util.misc.Game;
import mods.railcraft.common.util.misc.MiscTools;
import net.minecraft.block.Block;
import net.minecraft.init.Blocks;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.IIcon;
import net.minecraftforge.common.util.ForgeDirection;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.util.Random;
/**
* @author CovertJaguar <http://www.railcraft.info>
*/
public class TileSmoker extends TileMachineBase {
private static final int SNOW_MELT_INTERVAL = 32;
private static final Random rand = MiscTools.getRand();
private boolean powered;
@Override
public IEnumMachine getMachineType() {
return EnumMachineAlpha.SMOKER;
}
@Override
public IIcon getIcon(int side) {
return getMachineType().getTexture(side);
}
@Override
public void updateEntity() {
super.updateEntity();
if (!powered) {
if (Game.isHost(worldObj)) {
if (clock % SNOW_MELT_INTERVAL == 0) {
Block blockAbove = WorldPlugin.getBlock(worldObj, xCoord, yCoord + 1, zCoord);
if (blockAbove == Blocks.snow_layer)
WorldPlugin.setBlockToAir(worldObj, xCoord, yCoord + 1, zCoord);
}
} else {
if (!WorldPlugin.blockIsAir(worldObj, xCoord, yCoord + 1, zCoord)) return;
double px = xCoord + rand.nextFloat();
double py = yCoord + rand.nextFloat() * 0.5F + 1;
double pz = zCoord + rand.nextFloat();
EffectManager.instance.chimneyEffect(worldObj, px, py, pz);
}
}
}
@Override
public void onNeighborBlockChange(Block block) {
super.onNeighborBlockChange(block);
powered = PowerPlugin.isBlockBeingPowered(worldObj, xCoord, yCoord, zCoord);
sendUpdateToClient();
}
@Override
public boolean isSideSolid(ForgeDirection side) {
return side != ForgeDirection.UP;
}
@Override
public void readFromNBT(NBTTagCompound data) {
super.readFromNBT(data);
powered = data.getBoolean("powered");
}
@Override
public void writeToNBT(NBTTagCompound data) {
super.writeToNBT(data);
data.setBoolean("powered", 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);
powered = data.readBoolean();
}
// @Override
// public int getLightValue() {
// return 12;
// }
}