2014-09-19 04:38:14 +02:00
|
|
|
package com.pahimar.ee3.tileentity;
|
|
|
|
|
2014-10-03 21:55:22 +02:00
|
|
|
import com.pahimar.ee3.api.AlchemyArray;
|
|
|
|
import com.pahimar.ee3.api.Glyph;
|
|
|
|
import com.pahimar.ee3.network.PacketHandler;
|
|
|
|
import com.pahimar.ee3.network.message.MessageTileEntityAlchemyArray;
|
2014-09-25 22:23:45 +02:00
|
|
|
import cpw.mods.fml.relauncher.Side;
|
|
|
|
import cpw.mods.fml.relauncher.SideOnly;
|
2014-10-03 21:55:22 +02:00
|
|
|
import net.minecraft.nbt.NBTTagCompound;
|
|
|
|
import net.minecraft.network.Packet;
|
2014-09-25 22:23:45 +02:00
|
|
|
import net.minecraft.util.AxisAlignedBB;
|
2014-10-15 03:11:54 +02:00
|
|
|
import net.minecraftforge.common.util.ForgeDirection;
|
2014-09-24 22:02:45 +02:00
|
|
|
|
2014-10-15 21:51:23 +02:00
|
|
|
public class TileEntityAlchemyArray extends TileEntityEE
|
|
|
|
{
|
2014-10-03 21:55:22 +02:00
|
|
|
private AlchemyArray alchemyArray;
|
2014-10-15 03:11:54 +02:00
|
|
|
private ForgeDirection rotation;
|
2014-09-24 22:02:45 +02:00
|
|
|
|
2014-10-15 21:51:23 +02:00
|
|
|
public TileEntityAlchemyArray()
|
|
|
|
{
|
2014-09-24 22:02:45 +02:00
|
|
|
super();
|
2014-10-03 21:55:22 +02:00
|
|
|
alchemyArray = new AlchemyArray();
|
2014-10-15 03:11:54 +02:00
|
|
|
rotation = ForgeDirection.UNKNOWN;
|
2014-09-24 22:02:45 +02:00
|
|
|
}
|
|
|
|
|
2014-10-15 21:51:23 +02:00
|
|
|
public AlchemyArray getAlchemyArray()
|
|
|
|
{
|
2014-10-03 21:55:22 +02:00
|
|
|
return alchemyArray;
|
2014-09-25 22:23:45 +02:00
|
|
|
}
|
|
|
|
|
2014-10-15 21:51:23 +02:00
|
|
|
public boolean addGlyphToAlchemyArray(Glyph glyph)
|
|
|
|
{
|
2014-10-14 22:08:12 +02:00
|
|
|
return alchemyArray.addGlyph(glyph);
|
|
|
|
}
|
|
|
|
|
2014-10-15 21:51:23 +02:00
|
|
|
public boolean addGlyphToAlchemyArray(Glyph glyph, int size)
|
|
|
|
{
|
2014-10-14 22:08:12 +02:00
|
|
|
return addGlyphToAlchemyArray(new Glyph(glyph, size));
|
2014-10-03 21:55:22 +02:00
|
|
|
}
|
|
|
|
|
2014-10-15 21:51:23 +02:00
|
|
|
public ForgeDirection getRotation()
|
|
|
|
{
|
2014-10-10 20:54:07 +02:00
|
|
|
return rotation;
|
|
|
|
}
|
|
|
|
|
2014-10-15 21:51:23 +02:00
|
|
|
public void setRotation(int rotation, int facing)
|
|
|
|
{
|
|
|
|
if (this.orientation == ForgeDirection.UP)
|
|
|
|
{
|
|
|
|
if ((rotation + facing) % 4 == 0)
|
|
|
|
{
|
|
|
|
this.rotation = ForgeDirection.NORTH;
|
|
|
|
}
|
|
|
|
else if ((rotation + facing) % 4 == 1)
|
|
|
|
{
|
|
|
|
this.rotation = ForgeDirection.EAST;
|
|
|
|
}
|
|
|
|
else if ((rotation + facing) % 4 == 2)
|
|
|
|
{
|
|
|
|
this.rotation = ForgeDirection.SOUTH;
|
|
|
|
}
|
|
|
|
else if ((rotation + facing) % 4 == 3)
|
|
|
|
{
|
|
|
|
this.rotation = ForgeDirection.WEST;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
else if (this.orientation == ForgeDirection.DOWN)
|
|
|
|
{
|
|
|
|
if ((rotation + facing) % 4 == 0)
|
|
|
|
{
|
|
|
|
this.rotation = ForgeDirection.NORTH;
|
|
|
|
}
|
|
|
|
else if ((rotation + facing) % 4 == 1)
|
|
|
|
{
|
|
|
|
this.rotation = ForgeDirection.EAST;
|
|
|
|
}
|
|
|
|
else if ((rotation + facing) % 4 == 2)
|
|
|
|
{
|
|
|
|
this.rotation = ForgeDirection.SOUTH;
|
|
|
|
}
|
|
|
|
else if ((rotation + facing) % 4 == 3)
|
|
|
|
{
|
|
|
|
this.rotation = ForgeDirection.WEST;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (this.orientation == ForgeDirection.NORTH)
|
|
|
|
{
|
|
|
|
if ((rotation + facing) % 4 == 0)
|
|
|
|
{
|
|
|
|
this.rotation = ForgeDirection.UP;
|
|
|
|
}
|
|
|
|
else if ((rotation + facing) % 4 == 1)
|
|
|
|
{
|
|
|
|
this.rotation = ForgeDirection.EAST;
|
|
|
|
}
|
|
|
|
else if ((rotation + facing) % 4 == 2)
|
|
|
|
{
|
|
|
|
this.rotation = ForgeDirection.DOWN;
|
|
|
|
}
|
|
|
|
else if ((rotation + facing) % 4 == 3)
|
|
|
|
{
|
|
|
|
this.rotation = ForgeDirection.WEST;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (this.orientation == ForgeDirection.SOUTH)
|
|
|
|
{
|
|
|
|
if ((rotation + facing) % 4 == 0)
|
|
|
|
{
|
|
|
|
this.rotation = ForgeDirection.DOWN;
|
|
|
|
}
|
|
|
|
else if ((rotation + facing) % 4 == 1)
|
|
|
|
{
|
|
|
|
this.rotation = ForgeDirection.EAST;
|
|
|
|
}
|
|
|
|
else if ((rotation + facing) % 4 == 2)
|
|
|
|
{
|
|
|
|
this.rotation = ForgeDirection.UP;
|
|
|
|
}
|
|
|
|
else if ((rotation + facing) % 4 == 3)
|
|
|
|
{
|
|
|
|
this.rotation = ForgeDirection.WEST;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (this.orientation == ForgeDirection.EAST)
|
|
|
|
{
|
|
|
|
if ((rotation + facing) % 4 == 0)
|
|
|
|
{
|
|
|
|
this.rotation = ForgeDirection.NORTH;
|
|
|
|
}
|
|
|
|
else if ((rotation + facing) % 4 == 1)
|
|
|
|
{
|
|
|
|
this.rotation = ForgeDirection.UP;
|
|
|
|
}
|
|
|
|
else if ((rotation + facing) % 4 == 2)
|
|
|
|
{
|
|
|
|
this.rotation = ForgeDirection.SOUTH;
|
|
|
|
}
|
|
|
|
else if ((rotation + facing) % 4 == 3)
|
|
|
|
{
|
|
|
|
this.rotation = ForgeDirection.DOWN;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (this.orientation == ForgeDirection.WEST)
|
|
|
|
{
|
|
|
|
if ((rotation + facing) % 4 == 0)
|
|
|
|
{
|
|
|
|
this.rotation = ForgeDirection.NORTH;
|
|
|
|
}
|
|
|
|
else if ((rotation + facing) % 4 == 1)
|
|
|
|
{
|
|
|
|
this.rotation = ForgeDirection.DOWN;
|
|
|
|
}
|
|
|
|
else if ((rotation + facing) % 4 == 2)
|
|
|
|
{
|
|
|
|
this.rotation = ForgeDirection.SOUTH;
|
|
|
|
}
|
|
|
|
else if ((rotation + facing) % 4 == 3)
|
|
|
|
{
|
|
|
|
this.rotation = ForgeDirection.UP;
|
|
|
|
}
|
|
|
|
}
|
2014-10-07 22:20:41 +02:00
|
|
|
}
|
|
|
|
|
2014-09-25 22:23:45 +02:00
|
|
|
@Override
|
|
|
|
@SideOnly(Side.CLIENT)
|
2014-10-15 21:51:23 +02:00
|
|
|
public AxisAlignedBB getRenderBoundingBox()
|
|
|
|
{
|
2014-10-07 22:20:41 +02:00
|
|
|
// TODO: Make this glyph size and orientation sensitive
|
|
|
|
return AxisAlignedBB.getBoundingBox(xCoord - alchemyArray.getLargestGlyphSize(), yCoord - alchemyArray.getLargestGlyphSize(), zCoord - alchemyArray.getLargestGlyphSize(), xCoord + alchemyArray.getLargestGlyphSize(), yCoord + alchemyArray.getLargestGlyphSize(), zCoord + alchemyArray.getLargestGlyphSize());
|
2014-10-03 21:55:22 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2014-10-15 21:51:23 +02:00
|
|
|
public Packet getDescriptionPacket()
|
|
|
|
{
|
2014-10-03 21:55:22 +02:00
|
|
|
return PacketHandler.INSTANCE.getPacketFrom(new MessageTileEntityAlchemyArray(this));
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2014-10-15 21:51:23 +02:00
|
|
|
public void readFromNBT(NBTTagCompound nbtTagCompound)
|
|
|
|
{
|
2014-10-03 21:55:22 +02:00
|
|
|
super.readFromNBT(nbtTagCompound);
|
|
|
|
|
|
|
|
NBTTagCompound alchemyArrayTagCompound = nbtTagCompound.getCompoundTag("alchemyArray");
|
|
|
|
alchemyArray = AlchemyArray.readAlchemyArrayFromNBT(alchemyArrayTagCompound);
|
2014-10-10 20:54:07 +02:00
|
|
|
|
2014-10-15 03:11:54 +02:00
|
|
|
rotation = ForgeDirection.getOrientation(nbtTagCompound.getInteger("rotation"));
|
2014-10-03 21:55:22 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2014-10-15 21:51:23 +02:00
|
|
|
public void writeToNBT(NBTTagCompound nbtTagCompound)
|
|
|
|
{
|
2014-10-03 21:55:22 +02:00
|
|
|
super.writeToNBT(nbtTagCompound);
|
|
|
|
|
|
|
|
NBTTagCompound alchemyArrayTagCompound = new NBTTagCompound();
|
|
|
|
alchemyArray.writeToNBT(alchemyArrayTagCompound);
|
|
|
|
|
2014-10-15 03:11:54 +02:00
|
|
|
nbtTagCompound.setInteger("rotation", rotation.ordinal());
|
2014-10-10 20:54:07 +02:00
|
|
|
|
2014-10-03 21:55:22 +02:00
|
|
|
nbtTagCompound.setTag("alchemyArray", alchemyArrayTagCompound);
|
2014-09-24 22:02:45 +02:00
|
|
|
}
|
2014-09-19 04:38:14 +02:00
|
|
|
}
|