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)
{
Block block = ((ItemBlock) stack.getItem()).getBlock();
IBlockState mimicState = block.getStateFromMeta(mimic.metaOfReplacedBlock);
IBlockState mimicState = block.getStateFromMeta(stack.getItemDamage());
if (block != this)
{
if (block.getRenderType(mimicState) == EnumBlockRenderType.ENTITYBLOCK_ANIMATED)

View file

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

View file

@ -19,8 +19,10 @@ public class DataProviderMimic implements IWailaDataProvider
@Override
public ItemStack getWailaStack(IWailaDataAccessor accessor, IWailaConfigHandler config)
{
TileMimic mimic = (TileMimic) accessor.getTileEntity();
return mimic != null && mimic.getStackInSlot(0) != null ? mimic.getStackInSlot(0) : accessor.getStack();
if (accessor.getNBTData().getBoolean("hasItem"))
return ItemStack.loadItemStackFromNBT(accessor.getNBTData());
return new ItemStack(accessor.getBlock(), 1, accessor.getMetadata());
}
@Override
@ -44,6 +46,11 @@ public class DataProviderMimic implements IWailaDataProvider
@Override
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;
}
}