aboutsummaryrefslogtreecommitdiff
path: root/src/Java/gtPlusPlus/xmod/thaumcraft/common/tile/TileFastAlchemyFurnace.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/Java/gtPlusPlus/xmod/thaumcraft/common/tile/TileFastAlchemyFurnace.java')
-rw-r--r--src/Java/gtPlusPlus/xmod/thaumcraft/common/tile/TileFastAlchemyFurnace.java427
1 files changed, 0 insertions, 427 deletions
diff --git a/src/Java/gtPlusPlus/xmod/thaumcraft/common/tile/TileFastAlchemyFurnace.java b/src/Java/gtPlusPlus/xmod/thaumcraft/common/tile/TileFastAlchemyFurnace.java
deleted file mode 100644
index 393bfdcbef..0000000000
--- a/src/Java/gtPlusPlus/xmod/thaumcraft/common/tile/TileFastAlchemyFurnace.java
+++ /dev/null
@@ -1,427 +0,0 @@
-package gtPlusPlus.xmod.thaumcraft.common.tile;
-
-import cpw.mods.fml.relauncher.Side;
-import cpw.mods.fml.relauncher.SideOnly;
-
-import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.init.Items;
-import net.minecraft.inventory.ISidedInventory;
-import net.minecraft.item.ItemStack;
-import net.minecraft.nbt.NBTTagCompound;
-import net.minecraft.nbt.NBTTagList;
-import net.minecraft.network.NetworkManager;
-import net.minecraft.network.play.server.S35PacketUpdateTileEntity;
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.tileentity.TileEntityFurnace;
-import net.minecraft.world.EnumSkyBlock;
-
-import net.minecraftforge.common.util.ForgeDirection;
-import thaumcraft.api.TileThaumcraft;
-import thaumcraft.api.aspects.Aspect;
-import thaumcraft.api.aspects.AspectList;
-import thaumcraft.common.config.ConfigItems;
-import thaumcraft.common.lib.crafting.ThaumcraftCraftingManager;
-import thaumcraft.common.tiles.TileAlembic;
-import thaumcraft.common.tiles.TileBellows;
-
-public class TileFastAlchemyFurnace extends TileThaumcraft implements ISidedInventory {
- private static final int[] slots_bottom;
- private static final int[] slots_top;
- private static final int[] slots_sides;
- public AspectList aspects;
- public int vis;
- private final int maxVis;
- public int smeltTime;
- int bellows;
- boolean speedBoost;
- private ItemStack[] furnaceItemStacks;
- public int furnaceBurnTime;
- public int currentItemBurnTime;
- public int furnaceCookTime;
- private String customName;
- int count;
-
- public TileFastAlchemyFurnace() {
- this.aspects = new AspectList();
- this.maxVis = 150;
- this.smeltTime = 100;
- this.bellows = -1;
- this.speedBoost = true;
- this.furnaceItemStacks = new ItemStack[2];
- this.count = 0;
- }
-
- @Override
- public int getSizeInventory() {
- return this.furnaceItemStacks.length;
- }
-
- @Override
- public ItemStack getStackInSlot(final int par1) {
- return this.furnaceItemStacks[par1];
- }
-
- @Override
- public ItemStack decrStackSize(final int par1, final int par2) {
- if (this.furnaceItemStacks[par1] == null) {
- return null;
- }
- if (this.furnaceItemStacks[par1].stackSize <= par2) {
- final ItemStack itemstack = this.furnaceItemStacks[par1];
- this.furnaceItemStacks[par1] = null;
- return itemstack;
- }
- final ItemStack itemstack = this.furnaceItemStacks[par1].splitStack(par2);
- if (this.furnaceItemStacks[par1].stackSize == 0) {
- this.furnaceItemStacks[par1] = null;
- }
- return itemstack;
- }
-
- @Override
- public ItemStack getStackInSlotOnClosing(final int par1) {
- if (this.furnaceItemStacks[par1] != null) {
- final ItemStack itemstack = this.furnaceItemStacks[par1];
- this.furnaceItemStacks[par1] = null;
- return itemstack;
- }
- return null;
- }
-
- @Override
- public void setInventorySlotContents(final int par1, final ItemStack par2ItemStack) {
- this.furnaceItemStacks[par1] = par2ItemStack;
- if ((par2ItemStack != null) && (par2ItemStack.stackSize > this.getInventoryStackLimit())) {
- par2ItemStack.stackSize = this.getInventoryStackLimit();
- }
- }
-
- @Override
- public String getInventoryName() {
- return this.hasCustomInventoryName() ? this.customName : "container.alchemyfurnace";
- }
-
- @Override
- public boolean hasCustomInventoryName() {
- return (this.customName != null) && (this.customName.length() > 0);
- }
-
- public void setGuiDisplayName(final String par1Str) {
- this.customName = par1Str;
- }
-
- @Override
- public void readCustomNBT(final NBTTagCompound nbttagcompound) {
- this.furnaceBurnTime = nbttagcompound.getShort("BurnTime");
- this.vis = nbttagcompound.getShort("Vis");
- }
-
- @Override
- public void writeCustomNBT(final NBTTagCompound nbttagcompound) {
- nbttagcompound.setShort("BurnTime", (short) this.furnaceBurnTime);
- nbttagcompound.setShort("Vis", (short) this.vis);
- }
-
- @Override
- public void readFromNBT(final NBTTagCompound nbtCompound) {
- super.readFromNBT(nbtCompound);
- final NBTTagList nbttaglist = nbtCompound.getTagList("Items", 10);
- this.furnaceItemStacks = new ItemStack[this.getSizeInventory()];
- for (int i = 0; i < nbttaglist.tagCount(); ++i) {
- final NBTTagCompound nbttagcompound1 = nbttaglist.getCompoundTagAt(i);
- final byte b0 = nbttagcompound1.getByte("Slot");
- if ((b0 >= 0) && (b0 < this.furnaceItemStacks.length)) {
- this.furnaceItemStacks[b0] = ItemStack.loadItemStackFromNBT(nbttagcompound1);
- }
- }
- this.speedBoost = nbtCompound.getBoolean("speedBoost");
- this.furnaceCookTime = nbtCompound.getShort("CookTime");
- this.currentItemBurnTime = TileEntityFurnace.getItemBurnTime(this.furnaceItemStacks[1]);
- if (nbtCompound.hasKey("CustomName")) {
- this.customName = nbtCompound.getString("CustomName");
- }
- this.aspects.readFromNBT(nbtCompound);
- this.vis = this.aspects.visSize();
- }
-
- @Override
- public void writeToNBT(final NBTTagCompound nbtCompound) {
- super.writeToNBT(nbtCompound);
- nbtCompound.setBoolean("speedBoost", this.speedBoost);
- nbtCompound.setShort("CookTime", (short) this.furnaceCookTime);
- final NBTTagList nbttaglist = new NBTTagList();
- for (int i = 0; i < this.furnaceItemStacks.length; ++i) {
- if (this.furnaceItemStacks[i] != null) {
- final NBTTagCompound nbttagcompound1 = new NBTTagCompound();
- nbttagcompound1.setByte("Slot", (byte) i);
- this.furnaceItemStacks[i].writeToNBT(nbttagcompound1);
- nbttaglist.appendTag(nbttagcompound1);
- }
- }
- nbtCompound.setTag("Items", nbttaglist);
- if (this.hasCustomInventoryName()) {
- nbtCompound.setString("CustomName", this.customName);
- }
- this.aspects.writeToNBT(nbtCompound);
- }
-
- @Override
- public int getInventoryStackLimit() {
- return 64;
- }
-
- @SideOnly(Side.CLIENT)
- public int getCookProgressScaled(final int par1) {
- if (this.smeltTime <= 0) {
- this.smeltTime = 1;
- }
- return (this.furnaceCookTime * par1) / this.smeltTime;
- }
-
- @SideOnly(Side.CLIENT)
- public int getContentsScaled(final int par1) {
- return (this.vis * par1) / this.maxVis;
- }
-
- @SideOnly(Side.CLIENT)
- public int getBurnTimeRemainingScaled(final int par1) {
- if (this.currentItemBurnTime == 0) {
- this.currentItemBurnTime = 200;
- }
- return (this.furnaceBurnTime * par1) / this.currentItemBurnTime;
- }
-
- public boolean isBurning() {
- return this.furnaceBurnTime > 0;
- }
-
- @Override
- public void onDataPacket(final NetworkManager net, final S35PacketUpdateTileEntity pkt) {
- super.onDataPacket(net, pkt);
- if (this.worldObj != null) {
- this.worldObj.updateLightByType(EnumSkyBlock.Block, this.xCoord, this.yCoord, this.zCoord);
- }
- }
-
- @Override
- public boolean canUpdate() {
- return true;
- }
-
- @Override
- public void updateEntity() {
- final boolean flag = this.furnaceBurnTime > 0;
- boolean flag2 = false;
- ++this.count;
- if (this.furnaceBurnTime > 0) {
- --this.furnaceBurnTime;
- }
- if (!this.worldObj.isRemote) {
- if (this.bellows < 0) {
- this.getBellows();
- }
- if (((this.count % (this.speedBoost ? 10 : 20)) == 0) && (this.aspects.size() > 0)) {
- final AspectList exlude = new AspectList();
- int deep = 0;
- TileEntity tile = null;
- while (deep < 5) {
- ++deep;
- tile = this.worldObj.getTileEntity(this.xCoord, this.yCoord + deep, this.zCoord);
- if (!(tile instanceof TileAlembic) || !(tile instanceof TileFastArcaneAlembic)) {
- break;
- }
-
- final TileAlembic alembic = (TileAlembic) tile;
- if ((alembic.aspect != null) && (alembic.amount < alembic.maxAmount)
- && (this.aspects.getAmount(alembic.aspect) > 0)) {
- this.takeFromContainer(alembic.aspect, 1);
- alembic.addToContainer(alembic.aspect, 1);
- exlude.merge(alembic.aspect, 1);
- this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord);
- this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord + deep, this.zCoord);
- }
- tile = null;
- }
- deep = 0;
- while (deep < 5) {
- ++deep;
- tile = this.worldObj.getTileEntity(this.xCoord, this.yCoord + deep, this.zCoord);
- if (!(tile instanceof TileAlembic)) {
- break;
- }
- final TileAlembic alembic = (TileAlembic) tile;
- if ((alembic.aspect != null) && (alembic.amount != 0)) {
- continue;
- }
- Aspect as = null;
- if (alembic.aspectFilter == null) {
- as = this.takeRandomAspect(exlude);
- } else if (this.takeFromContainer(alembic.aspectFilter, 1)) {
- as = alembic.aspectFilter;
- }
- if (as != null) {
- alembic.addToContainer(as, 1);
- this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord);
- this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord + deep, this.zCoord);
- break;
- }
- }
- }
- if ((this.furnaceBurnTime == 0) && this.canSmelt()) {
- final int itemBurnTime = TileEntityFurnace.getItemBurnTime(this.furnaceItemStacks[1]);
- this.furnaceBurnTime = itemBurnTime;
- this.currentItemBurnTime = itemBurnTime;
- if (this.furnaceBurnTime > 0) {
- flag2 = true;
- this.speedBoost = false;
- if (this.furnaceItemStacks[1] != null) {
- if (this.furnaceItemStacks[1].isItemEqual(new ItemStack(ConfigItems.itemResource, 1, 0))) {
- this.speedBoost = true;
- }
- final ItemStack itemStack = this.furnaceItemStacks[1];
- --itemStack.stackSize;
- if (this.furnaceItemStacks[1].stackSize == 0) {
- this.furnaceItemStacks[1] = this.furnaceItemStacks[1].getItem()
- .getContainerItem(this.furnaceItemStacks[1]);
- }
- }
- }
- }
- if (this.isBurning() && this.canSmelt()) {
- ++this.furnaceCookTime;
- if (this.furnaceCookTime >= this.smeltTime) {
- this.furnaceCookTime = 0;
- this.smeltItem();
- flag2 = true;
- }
- } else {
- this.furnaceCookTime = 0;
- }
- if (flag != (this.furnaceBurnTime > 0)) {
- flag2 = true;
- this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord);
- }
- }
- if (flag2) {
- this.markDirty();
- }
- }
-
- private boolean canSmelt() {
- if (this.furnaceItemStacks[0] == null) {
- return false;
- }
- AspectList al = ThaumcraftCraftingManager.getObjectTags(this.furnaceItemStacks[0]);
- al = ThaumcraftCraftingManager.getBonusTags(this.furnaceItemStacks[0], al);
- if ((al == null) || (al.size() == 0)) {
- return false;
- }
- final int vs = al.visSize();
- if (vs > (this.maxVis - this.vis)) {
- return false;
- }
- this.smeltTime = (int) (vs * 10 * (1.0f - (0.125f * this.bellows)));
- return true;
- }
-
- public void getBellows() {
- this.bellows = TileBellows.getBellows(this.worldObj, this.xCoord, this.yCoord, this.zCoord,
- ForgeDirection.VALID_DIRECTIONS);
- }
-
- public void smeltItem() {
- if (this.canSmelt()) {
- AspectList al = ThaumcraftCraftingManager.getObjectTags(this.furnaceItemStacks[0]);
- al = ThaumcraftCraftingManager.getBonusTags(this.furnaceItemStacks[0], al);
- for (final Aspect a : al.getAspects()) {
- this.aspects.add(a, al.getAmount(a));
- }
- this.vis = this.aspects.visSize();
- final ItemStack itemStack = this.furnaceItemStacks[0];
- --itemStack.stackSize;
- if (this.furnaceItemStacks[0].stackSize <= 0) {
- this.furnaceItemStacks[0] = null;
- }
- }
- }
-
- public static boolean isItemFuel(final ItemStack par0ItemStack) {
- return TileEntityFurnace.getItemBurnTime(par0ItemStack) > 0;
- }
-
- @Override
- public boolean isUseableByPlayer(final EntityPlayer par1EntityPlayer) {
- return (this.worldObj.getTileEntity(this.xCoord, this.yCoord, this.zCoord) == this)
- && (par1EntityPlayer.getDistanceSq(this.xCoord + 0.5, this.yCoord + 0.5, this.zCoord + 0.5) <= 64.0);
- }
-
- @Override
- public void openInventory() {
- }
-
- @Override
- public void closeInventory() {
- }
-
- @Override
- public boolean isItemValidForSlot(final int par1, final ItemStack par2ItemStack) {
- if (par1 == 0) {
- AspectList al = ThaumcraftCraftingManager.getObjectTags(par2ItemStack);
- al = ThaumcraftCraftingManager.getBonusTags(par2ItemStack, al);
- if ((al != null) && (al.size() > 0)) {
- return true;
- }
- }
- return (par1 == 1) && isItemFuel(par2ItemStack);
- }
-
- @Override
- public int[] getAccessibleSlotsFromSide(final int par1) {
- return (par1 == 0)
- ? TileFastAlchemyFurnace.slots_bottom
- : ((par1 == 1) ? TileFastAlchemyFurnace.slots_top : TileFastAlchemyFurnace.slots_sides);
- }
-
- @Override
- public boolean canInsertItem(final int par1, final ItemStack par2ItemStack, final int par3) {
- return (par3 != 1) && this.isItemValidForSlot(par1, par2ItemStack);
- }
-
- @Override
- public boolean canExtractItem(final int par1, final ItemStack par2ItemStack, final int par3) {
- return (par3 != 0) || (par1 != 1) || (par2ItemStack.getItem() == Items.bucket);
- }
-
- public Aspect takeRandomAspect(final AspectList exlude) {
- if (this.aspects.size() > 0) {
- final AspectList temp = this.aspects.copy();
- if (exlude.size() > 0) {
- for (final Aspect a : exlude.getAspects()) {
- temp.remove(a);
- }
- }
- if (temp.size() > 0) {
- final Aspect tag = temp.getAspects()[this.worldObj.rand.nextInt(temp.getAspects().length)];
- this.aspects.remove(tag, 1);
- --this.vis;
- return tag;
- }
- }
- return null;
- }
-
- public boolean takeFromContainer(final Aspect tag, final int amount) {
- if ((this.aspects != null) && (this.aspects.getAmount(tag) >= amount)) {
- this.aspects.remove(tag, amount);
- this.vis -= amount;
- return true;
- }
- return false;
- }
-
- static {
- slots_bottom = new int[]{1};
- slots_top = new int[0];
- slots_sides = new int[]{0};
- }
-} \ No newline at end of file