Allow Glow panels to be placed and stay in hollow covers again.

This commit is contained in:
Ben Spiers 2014-06-15 20:26:22 +01:00
parent 366a51e770
commit 2663be0f5a
2 changed files with 26 additions and 3 deletions

View file

@ -13,8 +13,11 @@ import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
import codechicken.lib.vec.BlockCoord; import codechicken.lib.vec.BlockCoord;
import codechicken.lib.vec.Vector3; import codechicken.lib.vec.Vector3;
import codechicken.microblock.HollowMicroblock;
import codechicken.multipart.JItemMultiPart; import codechicken.multipart.JItemMultiPart;
import codechicken.multipart.TMultiPart; import codechicken.multipart.TMultiPart;
import codechicken.multipart.TileMultipart;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
@ -44,6 +47,11 @@ public class ItemGlowPanel extends JItemMultiPart
return new PartGlowPanel(col, orientation); 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; return null;
} }

View file

@ -18,6 +18,7 @@ import codechicken.lib.vec.Cuboid6;
import codechicken.lib.vec.Rotation; import codechicken.lib.vec.Rotation;
import codechicken.lib.vec.Translation; import codechicken.lib.vec.Translation;
import codechicken.lib.vec.Vector3; import codechicken.lib.vec.Vector3;
import codechicken.microblock.HollowMicroblock;
import codechicken.multipart.IconHitEffects; import codechicken.multipart.IconHitEffects;
import codechicken.multipart.JCuboidPart; import codechicken.multipart.JCuboidPart;
import codechicken.multipart.JIconHitEffects; import codechicken.multipart.JIconHitEffects;
@ -84,9 +85,17 @@ public class PartGlowPanel extends JCuboidPart implements JNormalOcclusion, JIco
@Override @Override
public void onNeighborChanged() public void onNeighborChanged()
{ {
Coord4D adj = Coord4D.get(tile()).getFromSide(side); if(!world().isRemote && !canStay())
{
TileMultipart.dropItem(new ItemStack(Mekanism.GlowPanel, 1, colour.getMetaValue()), world(), Vector3.fromTileEntityCenter(tile()));
tile().remPart(this);
}
}
if(!world().isRemote && !world().isSideSolid(adj.xCoord, adj.yCoord, adj.zCoord, side.getOpposite())) @Override
public void onPartChanged(TMultiPart other)
{
if(!world().isRemote && !canStay())
{ {
TileMultipart.dropItem(new ItemStack(Mekanism.GlowPanel, 1, colour.getMetaValue()), world(), Vector3.fromTileEntityCenter(tile())); TileMultipart.dropItem(new ItemStack(Mekanism.GlowPanel, 1, colour.getMetaValue()), world(), Vector3.fromTileEntityCenter(tile()));
tile().remPart(this); tile().remPart(this);
@ -193,4 +202,10 @@ public class PartGlowPanel extends JCuboidPart implements JNormalOcclusion, JIco
{ {
return false; 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;
}
} }