How about this?
if(worldIn.getBlockState(pos).getBlock().equals(Blocks.LOG) || worldIn.getBlockState(pos).getBlock().equals(Blocks.LOG2))
I would personally just use Ore Dictionary to support even modded logs but that should work for all vanilla logs.
IYes. I believe that what happens is that each registry event happens across all mods, then all the objectholder annotations for that type of object are processed. So the injection does happen after all mods are registered. In fact if you look at the link the example shows exactly how to do this. You just need the modid in the domain of the annotation. Either the entire class annotation or the individual field annotation can specify the domain.
Cool. See that is progress! Once you have observability pretty much every programming problem is easy to solve.
Just keep working back and testing your assumptions on how things are working.
With regards to creating too many of something, just check out every where the constructor is called and ask whether it is really needed. You'll find that either you do need that many references but maybe instead of creating a new one you can retain one for reuse. Or you'll find that the whole section of code that is constructing it is being called unnecessarily.
Sounds like you're on track. But keep the thread posted. And if you get truly stuck of course we'll pitch in to help.
After dding the doesSideBlockRendering function:
@Override
public boolean doesSideBlockRendering(IBlockAccess world, BlockPos pos, EnumFacing face)
{
// The stairs are transparent. Always render the adjacent faces.
return false;
}
the ground remains visible.
Thanks for all the support!