/*
* 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.aesthetics.post;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import mods.railcraft.common.blocks.RailcraftTileEntity;
import mods.railcraft.common.util.misc.EnumColor;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.common.util.ForgeDirection;
/**
*
* @author CovertJaguar <http://www.railcraft.info/>
*/
public class TilePostEmblem extends RailcraftTileEntity {
private ForgeDirection facing = ForgeDirection.NORTH;
private String emblem = "";
private EnumColor color = null;
public void setFacing(ForgeDirection f) {
switch (f) {
case UP:
case DOWN:
case UNKNOWN:
return;
}
if (f != facing) {
facing = f;
markBlockForUpdate();
}
}
public ForgeDirection getFacing() {
return facing;
}
public void setEmblem(String identifier) {
if (!emblem.equals(identifier)) {
emblem = identifier;
sendUpdateToClient();
}
}
public String getEmblem() {
return emblem;
}
public void setColor(EnumColor color) {
if (this.color != color) {
this.color = color;
sendUpdateToClient();
}
}
public EnumColor getColor() {
return color;
}
@Override
public boolean canUpdate() {
return false;
}
@Override
public void writeToNBT(NBTTagCompound data) {
super.writeToNBT(data);
data.setString("emblem", emblem);
data.setByte("facing", (byte) facing.ordinal());
if (color != null)
data.setByte("color", (byte) color.ordinal());
}
@Override
public void readFromNBT(NBTTagCompound data) {
super.readFromNBT(data);
emblem = data.getString("emblem");
facing = ForgeDirection.getOrientation(data.getByte("facing"));
if (data.hasKey("color"))
color = EnumColor.fromId(data.getByte("color"));
}
@Override
public void writePacketData(DataOutputStream data) throws IOException {
super.writePacketData(data);
data.writeByte((byte) facing.ordinal());
data.writeByte((byte) (color != null ? color.ordinal() : -1));
data.writeUTF(emblem);
}
@Override
public void readPacketData(DataInputStream data) throws IOException {
super.readPacketData(data);
boolean needsUpdate = false;
ForgeDirection f = ForgeDirection.getOrientation(data.readByte());
if (facing != f) {
facing = f;
needsUpdate = true;
}
byte cByte = data.readByte();
if (cByte < 0) {
if (color != null) {
color = null;
needsUpdate = true;
}
} else {
EnumColor c = EnumColor.fromId(cByte);
if (color != c) {
color = c;
needsUpdate = true;
}
}
emblem = data.readUTF();
if (needsUpdate)
markBlockForUpdate();
}
@Override
public String getName() {
return "Emblem Post";
}
@Override
public short getId() {
return (short) EnumPost.EMBLEM.ordinal();
}
}