From 7d514b718a0886d852ff21647a0a2a23f5a83858 Mon Sep 17 00:00:00 2001
From: modmuss50 <modmuss50@gmail.com>
Date: Sat, 5 Mar 2016 11:37:29 +0000
Subject: [PATCH] Fixes #369 and fixes rubber tree spikes not decaying

---
 .../ContainerImplosionCompressor.java         | 35 ++++++++++++++++++-
 .../client/gui/GuiImplosionCompressor.java    |  2 +-
 .../techreborn/world/RubberTreeGenerator.java |  3 +-
 3 files changed, 37 insertions(+), 3 deletions(-)

diff --git a/src/main/java/techreborn/client/container/ContainerImplosionCompressor.java b/src/main/java/techreborn/client/container/ContainerImplosionCompressor.java
index ac3ac36ae..8c5ebe9fc 100644
--- a/src/main/java/techreborn/client/container/ContainerImplosionCompressor.java
+++ b/src/main/java/techreborn/client/container/ContainerImplosionCompressor.java
@@ -1,7 +1,10 @@
 package techreborn.client.container;
 
 import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.ICrafting;
 import net.minecraft.inventory.Slot;
+import net.minecraftforge.fml.relauncher.Side;
+import net.minecraftforge.fml.relauncher.SideOnly;
 import reborncore.client.gui.SlotOutput;
 import techreborn.tiles.TileImplosionCompressor;
 
@@ -11,8 +14,8 @@ public class ContainerImplosionCompressor extends ContainerCrafting {
 
     TileImplosionCompressor tile;
 
-
     public int tickTime;
+    public int multiblockstate = 0;
 
     public ContainerImplosionCompressor(TileImplosionCompressor tilecompressor,
                                         EntityPlayer player) {
@@ -48,4 +51,34 @@ public class ContainerImplosionCompressor extends ContainerCrafting {
         return true;
     }
 
+    @Override
+    public void detectAndSendChanges() {
+        super.detectAndSendChanges();
+        for (int i = 0; i < this.crafters.size(); i++) {
+            ICrafting icrafting = (ICrafting) this.crafters.get(i);
+            if (this.multiblockstate != getMultiblockstateint()) {
+                icrafting.sendProgressBarUpdate(this, 3, getMultiblockstateint());
+            }
+        }
+    }
+
+    @Override
+    public void onCraftGuiOpened(ICrafting crafting) {
+        super.onCraftGuiOpened(crafting);
+        crafting.sendProgressBarUpdate(this, 3, getMultiblockstateint());
+    }
+
+    @SideOnly(Side.CLIENT)
+    @Override
+    public void updateProgressBar(int id, int value) {
+        if (id == 3) {
+            this.multiblockstate = value;
+        }
+    }
+
+    public int getMultiblockstateint(){
+        return tile.getMutliBlock() ? 1 : 0;
+    }
+
+
 }
diff --git a/src/main/java/techreborn/client/gui/GuiImplosionCompressor.java b/src/main/java/techreborn/client/gui/GuiImplosionCompressor.java
index 89d9a397f..d49fbdda3 100644
--- a/src/main/java/techreborn/client/gui/GuiImplosionCompressor.java
+++ b/src/main/java/techreborn/client/gui/GuiImplosionCompressor.java
@@ -39,7 +39,7 @@ public class GuiImplosionCompressor extends GuiContainer {
         int l = (this.height - this.ySize) / 2;
         this.drawTexturedModalRect(k, l, 0, 0, this.xSize, this.ySize);
 
-        if (compresser.getMutliBlock() != true) {
+        if (containerImplosionCompressor.multiblockstate == 0) {
           //  GuiDraw.drawTooltipBox(k + 30, l + 50 + 12 - 0, 114, 10);
             this.fontRendererObj.drawString(StatCollector.translateToLocal("techreborn.message.missingmultiblock"), k + 38, l + 52 + 12 - 0, -1);
         }
diff --git a/src/main/java/techreborn/world/RubberTreeGenerator.java b/src/main/java/techreborn/world/RubberTreeGenerator.java
index 6a1b6eff8..6868b72fb 100644
--- a/src/main/java/techreborn/world/RubberTreeGenerator.java
+++ b/src/main/java/techreborn/world/RubberTreeGenerator.java
@@ -9,6 +9,7 @@ import net.minecraft.util.EnumFacing;
 import net.minecraft.world.World;
 import net.minecraft.world.gen.feature.WorldGenerator;
 import net.minecraftforge.common.IPlantable;
+import techreborn.blocks.BlockRubberLeaves;
 import techreborn.blocks.BlockRubberLog;
 import techreborn.init.ModBlocks;
 
@@ -132,7 +133,7 @@ public class RubberTreeGenerator extends WorldGenerator {
                 if(topLogPos != null){
                     for (int i = 0; i < 4; i++) {
                         BlockPos spikePos = topLogPos.up(i);
-                        this.setBlockAndNotifyAdequately(world, spikePos, ModBlocks.rubberLeaves.getDefaultState());
+                        this.setBlockAndNotifyAdequately(world, spikePos, ModBlocks.rubberLeaves.getDefaultState().withProperty(BlockRubberLeaves.DECAYABLE, true));
                     }
                 }
             }