diff options
Diffstat (limited to 'src/main/java/darkknight/jewelrycraft/tileentity/TileEntityJewelrsCraftingTable.java')
| -rw-r--r-- | src/main/java/darkknight/jewelrycraft/tileentity/TileEntityJewelrsCraftingTable.java | 141 |
1 files changed, 141 insertions, 0 deletions
diff --git a/src/main/java/darkknight/jewelrycraft/tileentity/TileEntityJewelrsCraftingTable.java b/src/main/java/darkknight/jewelrycraft/tileentity/TileEntityJewelrsCraftingTable.java new file mode 100644 index 0000000..13b689d --- /dev/null +++ b/src/main/java/darkknight/jewelrycraft/tileentity/TileEntityJewelrsCraftingTable.java @@ -0,0 +1,141 @@ +package darkknight.jewelrycraft.tileentity; + +import net.minecraft.init.Items; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.NetworkManager; +import net.minecraft.network.Packet; +import net.minecraft.network.play.server.S35PacketUpdateTileEntity; +import net.minecraft.tileentity.TileEntity; +import darkknight.jewelrycraft.config.ConfigHandler; +import darkknight.jewelrycraft.util.JewelryNBT; + +public class TileEntityJewelrsCraftingTable extends TileEntity +{ + public boolean hasJewelry, hasModifier, hasEndItem, isDirty, hasJewel; + public ItemStack jewelry, modifier, endItem, jewel; + public int timer, effect; + public float angle; + + public TileEntityJewelrsCraftingTable() + { + this.jewelry = new ItemStack(Item.getItemById(0), 0, 0); + this.modifier = new ItemStack(Item.getItemById(0), 0, 0); + this.endItem = new ItemStack(Item.getItemById(0), 0, 0); + this.jewel = new ItemStack(Item.getItemById(0), 0, 0); + this.hasJewelry = false; + this.hasModifier = false; + this.hasEndItem = false; + this.hasJewel = false; + this.timer = 0; + this.effect = 0; + this.angle = 0; + this.isDirty = false; + } + + @Override + public void writeToNBT(NBTTagCompound nbt) + { + super.writeToNBT(nbt); + nbt.setBoolean("hasJewelry", hasJewelry); + nbt.setBoolean("hasModifier", hasModifier); + nbt.setBoolean("hasEndItem", hasEndItem); + nbt.setBoolean("hasJewel", hasJewel); + nbt.setInteger("timer", timer); + nbt.setInteger("effect", effect); + nbt.setFloat("angle", angle); + + NBTTagCompound tag = new NBTTagCompound(); + NBTTagCompound tag1 = new NBTTagCompound(); + NBTTagCompound tag2 = new NBTTagCompound(); + NBTTagCompound tag3 = new NBTTagCompound(); + + this.jewelry.writeToNBT(tag); + nbt.setTag("jewelry", tag); + this.modifier.writeToNBT(tag1); + nbt.setTag("modifier", tag1); + this.endItem.writeToNBT(tag2); + nbt.setTag("endItem", tag2); + this.jewel.writeToNBT(tag3); + nbt.setTag("jewel", tag3); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) + { + super.readFromNBT(nbt); + this.hasJewelry = nbt.getBoolean("hasJewelry"); + this.hasModifier = nbt.getBoolean("hasModifier"); + this.hasEndItem = nbt.getBoolean("hasEndItem"); + this.hasJewel = nbt.getBoolean("hasJewel"); + + this.timer = nbt.getInteger("timer"); + this.effect = nbt.getInteger("effect"); + this.angle = nbt.getFloat("angle"); + this.jewelry = new ItemStack(Item.getItemById(0), 0, 0); + this.jewelry.readFromNBT(nbt.getCompoundTag("jewelry")); + this.modifier = new ItemStack(Item.getItemById(0), 0, 0); + this.modifier.readFromNBT(nbt.getCompoundTag("modifier")); + this.endItem = new ItemStack(Item.getItemById(0), 0, 0); + this.endItem.readFromNBT(nbt.getCompoundTag("endItem")); + this.jewel = new ItemStack(Item.getItemById(0), 0, 0); + this.jewel.readFromNBT(nbt.getCompoundTag("jewel")); + } + + @Override + public void updateEntity() + { + super.updateEntity(); + if(isDirty){ + worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); + isDirty = false; + } + if(angle<360F)angle+=3F; + else angle=0F; + if (this.hasJewelry && (this.hasModifier || this.hasJewel) && !this.hasEndItem) + { + if (timer > 0) + { + timer--; + for (int l = 0; l < ConfigHandler.jewelryCraftingTime/(timer + 2); ++l) + { + if(this.getBlockMetadata() == 0) this.worldObj.spawnParticle("witchMagic", xCoord + 0.5F, (double) yCoord + 0.8F, zCoord + 0.2F, 0.0D, 0.0D, 0.0D); + if(this.getBlockMetadata() == 1) this.worldObj.spawnParticle("witchMagic", xCoord + 0.8F, (double) yCoord + 0.8F, zCoord + 0.5F, 0.0D, 0.0D, 0.0D); + if(this.getBlockMetadata() == 2) this.worldObj.spawnParticle("witchMagic", xCoord + 0.5F, (double) yCoord + 0.8F, zCoord + 0.8F, 0.0D, 0.0D, 0.0D); + if(this.getBlockMetadata() == 3) this.worldObj.spawnParticle("witchMagic", xCoord + 0.2F, (double) yCoord + 0.8F, zCoord + 0.5F, 0.0D, 0.0D, 0.0D); + } + } + if (timer == 0) + { + this.hasEndItem = true; + this.endItem = jewelry.copy(); + if (hasModifier && modifier != new ItemStack(Item.getItemById(0), 0, 0)) JewelryNBT.addModifier(endItem, modifier); + if (hasJewel && jewel != new ItemStack(Item.getItemById(0), 0, 0)) JewelryNBT.addJewel(endItem, jewel); + if (hasJewel && hasModifier && JewelryNBT.isJewelX(endItem, new ItemStack(Items.nether_star)) && JewelryNBT.isModifierX(endItem, new ItemStack(Items.book))) JewelryNBT.addMode(endItem, "Disenchant"); + if (hasModifier && JewelryNBT.isModifierEffectType(endItem)) JewelryNBT.addMode(endItem, "Activated"); + this.hasJewelry = false; + this.jewelry = new ItemStack(Item.getItemById(0), 0, 0); + this.hasModifier = false; + this.modifier = new ItemStack(Item.getItemById(0), 0, 0); + this.hasJewel = false; + this.jewel = new ItemStack(Item.getItemById(0), 0, 0); + timer = -1; + } + } + } + + public Packet getDescriptionPacket() + { + NBTTagCompound nbttagcompound = new NBTTagCompound(); + this.writeToNBT(nbttagcompound); + return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 1, nbttagcompound); + } + + @Override + public void onDataPacket (NetworkManager net, S35PacketUpdateTileEntity packet) + { + readFromNBT(packet.func_148857_g()); + worldObj.func_147479_m(xCoord, yCoord, zCoord); + } +} |
