diff --git a/src/main/java/mekanism/common/multipart/ItemGlowPanel.java b/src/main/java/mekanism/common/multipart/ItemGlowPanel.java index 873cfa739..051834121 100644 --- a/src/main/java/mekanism/common/multipart/ItemGlowPanel.java +++ b/src/main/java/mekanism/common/multipart/ItemGlowPanel.java @@ -13,8 +13,11 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; import codechicken.lib.vec.BlockCoord; import codechicken.lib.vec.Vector3; +import codechicken.microblock.HollowMicroblock; import codechicken.multipart.JItemMultiPart; import codechicken.multipart.TMultiPart; +import codechicken.multipart.TileMultipart; + import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -44,6 +47,11 @@ public class ItemGlowPanel extends JItemMultiPart return new PartGlowPanel(col, orientation); } + if(world.getTileEntity(pos.x, pos.y, pos.z) instanceof TileMultipart && ((TileMultipart) world.getTileEntity(pos.x, pos.y, pos.z)).partMap(orientation.ordinal()) instanceof HollowMicroblock) + { + return new PartGlowPanel(col, orientation); + } + return null; } diff --git a/src/main/java/mekanism/common/multipart/PartGlowPanel.java b/src/main/java/mekanism/common/multipart/PartGlowPanel.java index c0875752d..4a58aaf17 100644 --- a/src/main/java/mekanism/common/multipart/PartGlowPanel.java +++ b/src/main/java/mekanism/common/multipart/PartGlowPanel.java @@ -18,6 +18,7 @@ import codechicken.lib.vec.Cuboid6; import codechicken.lib.vec.Rotation; import codechicken.lib.vec.Translation; import codechicken.lib.vec.Vector3; +import codechicken.microblock.HollowMicroblock; import codechicken.multipart.IconHitEffects; import codechicken.multipart.JCuboidPart; import codechicken.multipart.JIconHitEffects; @@ -84,9 +85,17 @@ public class PartGlowPanel extends JCuboidPart implements JNormalOcclusion, JIco @Override public void onNeighborChanged() { - Coord4D adj = Coord4D.get(tile()).getFromSide(side); - - if(!world().isRemote && !world().isSideSolid(adj.xCoord, adj.yCoord, adj.zCoord, side.getOpposite())) + if(!world().isRemote && !canStay()) + { + TileMultipart.dropItem(new ItemStack(Mekanism.GlowPanel, 1, colour.getMetaValue()), world(), Vector3.fromTileEntityCenter(tile())); + tile().remPart(this); + } + } + + @Override + public void onPartChanged(TMultiPart other) + { + if(!world().isRemote && !canStay()) { TileMultipart.dropItem(new ItemStack(Mekanism.GlowPanel, 1, colour.getMetaValue()), world(), Vector3.fromTileEntityCenter(tile())); tile().remPart(this); @@ -193,4 +202,10 @@ public class PartGlowPanel extends JCuboidPart implements JNormalOcclusion, JIco { return false; } + + public boolean canStay() + { + Coord4D adj = Coord4D.get(tile()).getFromSide(side); + return world().isSideSolid(adj.xCoord, adj.yCoord, adj.zCoord, side.getOpposite()) || tile().partMap(side.ordinal()) instanceof HollowMicroblock; + } }