Fix Mimic render ignoring meta (#965)

Also re-implements Waila handler correctly
This commit is contained in:
Nicholas Ignoffo 2016-11-11 16:50:44 -08:00
parent 3956c9f7dd
commit 1f31268669
3 changed files with 12 additions and 4 deletions

View file

@ -168,7 +168,7 @@ public class BlockMimic extends BlockEnumContainer<EnumMimic> implements IVarian
if (stack != null && stack.getItem() instanceof ItemBlock) if (stack != null && stack.getItem() instanceof ItemBlock)
{ {
Block block = ((ItemBlock) stack.getItem()).getBlock(); Block block = ((ItemBlock) stack.getItem()).getBlock();
IBlockState mimicState = block.getStateFromMeta(mimic.metaOfReplacedBlock); IBlockState mimicState = block.getStateFromMeta(stack.getItemDamage());
if (block != this) if (block != this)
{ {
if (block.getRenderType(mimicState) == EnumBlockRenderType.ENTITYBLOCK_ANIMATED) if (block.getRenderType(mimicState) == EnumBlockRenderType.ENTITYBLOCK_ANIMATED)

View file

@ -28,6 +28,7 @@ public class WailaCallbackHandler
registrar.registerBodyProvider(new DataProviderAlchemyArray(), BlockAlchemyArray.class); registrar.registerBodyProvider(new DataProviderAlchemyArray(), BlockAlchemyArray.class);
registrar.registerStackProvider(new DataProviderAlchemyArray(), BlockAlchemyArray.class); registrar.registerStackProvider(new DataProviderAlchemyArray(), BlockAlchemyArray.class);
registrar.registerStackProvider(new DataProviderMimic(), BlockMimic.class); registrar.registerStackProvider(new DataProviderMimic(), BlockMimic.class);
registrar.registerNBTProvider(new DataProviderMimic(), BlockMimic.class);
registrar.registerStackProvider(DataProviderPillar.INSTANCE, BlockEnumPillarCap.class); registrar.registerStackProvider(DataProviderPillar.INSTANCE, BlockEnumPillarCap.class);
registrar.registerStackProvider(DataProviderPillar.INSTANCE, BlockEnumPillar.class); registrar.registerStackProvider(DataProviderPillar.INSTANCE, BlockEnumPillar.class);
registrar.registerStackProvider(DataProviderPillar.INSTANCE, BlockEnumStairs.class); registrar.registerStackProvider(DataProviderPillar.INSTANCE, BlockEnumStairs.class);

View file

@ -19,8 +19,10 @@ public class DataProviderMimic implements IWailaDataProvider
@Override @Override
public ItemStack getWailaStack(IWailaDataAccessor accessor, IWailaConfigHandler config) public ItemStack getWailaStack(IWailaDataAccessor accessor, IWailaConfigHandler config)
{ {
TileMimic mimic = (TileMimic) accessor.getTileEntity(); if (accessor.getNBTData().getBoolean("hasItem"))
return mimic != null && mimic.getStackInSlot(0) != null ? mimic.getStackInSlot(0) : accessor.getStack(); return ItemStack.loadItemStackFromNBT(accessor.getNBTData());
return new ItemStack(accessor.getBlock(), 1, accessor.getMetadata());
} }
@Override @Override
@ -44,6 +46,11 @@ public class DataProviderMimic implements IWailaDataProvider
@Override @Override
public NBTTagCompound getNBTData(EntityPlayerMP player, TileEntity te, NBTTagCompound tag, World world, BlockPos pos) public NBTTagCompound getNBTData(EntityPlayerMP player, TileEntity te, NBTTagCompound tag, World world, BlockPos pos)
{ {
return null; if (te instanceof TileMimic && ((TileMimic) te).getStackInSlot(0) != null)
{
tag.setBoolean("hasItem", true);
((TileMimic) te).getStackInSlot(0).writeToNBT(tag);
}
return tag;
} }
} }