Fixed crash caused by delayed block registration.

Added Callback section for the Model Registry event to the builder setup.
Moved the State Mapper section to the Model Registry Callback section.
This commit is contained in:
Gunther De Wachter
2017-07-06 14:05:54 +02:00
parent d8c5e6a5fa
commit 198ea9f16e
8 changed files with 58 additions and 46 deletions
@@ -36,9 +36,6 @@ import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import net.minecraft.item.ItemBlock;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.gui.ForgeGuiFactory;
import net.minecraftforge.fml.common.registry.ForgeRegistries;
import net.minecraftforge.fml.common.registry.GameRegistry;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
@@ -71,6 +68,8 @@ class BlockDefinitionBuilder implements IBlockBuilder
private final List<BiConsumer<Block, Item>> initCallbacks = new ArrayList<>();
private final List<BiConsumer<Block, Item>> modelRegCallbacks = new ArrayList<>();
private final List<BiConsumer<Block, Item>> postInitCallbacks = new ArrayList<>();
private final EnumSet<AEFeature> features = EnumSet.noneOf( AEFeature.class );
@@ -116,6 +115,13 @@ class BlockDefinitionBuilder implements IBlockBuilder
return this;
}
@Override
public BlockDefinitionBuilder modelRegInit( BiConsumer<Block, Item> callback )
{
modelRegCallbacks.add( callback );
return this;
}
@Override
public BlockDefinitionBuilder postInit( BiConsumer<Block, Item> callback )
{
@@ -215,13 +221,10 @@ class BlockDefinitionBuilder implements IBlockBuilder
// Register the item and block with the game
factory.addPreInit( side -> {
// GameRegistry.register( block );
Registration.addBlockToRegister( block );
// ForgeRegistries.BLOCKS.register(block);
if( item != null )
{
Registration.addItemToRegister( item );
// ForgeRegistries.ITEMS.register(item);
}
} );
@@ -231,6 +234,7 @@ class BlockDefinitionBuilder implements IBlockBuilder
// Register all extra handlers
preInitCallbacks.forEach( consumer -> factory.addPreInit( side -> consumer.accept( block, item ) ) );
initCallbacks.forEach( consumer -> factory.addInit( side -> consumer.accept( block, item ) ) );
modelRegCallbacks.forEach(consumer -> factory.addModelReg(side -> consumer.accept( block, item ) ) );
postInitCallbacks.forEach( consumer -> factory.addPostInit( side -> consumer.accept( block, item ) ) );