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:
@@ -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 ) ) );
|
||||
|
||||
|
||||
|
||||
@@ -120,7 +120,7 @@ class BlockRendering implements IBlockRendering
|
||||
}
|
||||
|
||||
// TODO : 1.12
|
||||
builtInModels.forEach( factory::addBuiltInModel );
|
||||
builtInModels.forEach( factory::addBuiltInModel );
|
||||
|
||||
if( blockColor != null )
|
||||
{
|
||||
|
||||
@@ -23,6 +23,7 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
import appeng.bootstrap.components.ModelRegComponent;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraftforge.client.model.IModel;
|
||||
@@ -129,6 +130,11 @@ public class FeatureFactory
|
||||
this.bootstrapComponents.add( component );
|
||||
}
|
||||
|
||||
void addModelReg( ModelRegComponent component )
|
||||
{
|
||||
this.bootstrapComponents.add( component );
|
||||
}
|
||||
|
||||
void addPostInit( PostInitComponent component )
|
||||
{
|
||||
this.bootstrapComponents.add( component );
|
||||
|
||||
@@ -38,6 +38,8 @@ public interface IBlockBuilder
|
||||
|
||||
IBlockBuilder init( BiConsumer<Block, Item> callback );
|
||||
|
||||
IBlockBuilder modelRegInit( BiConsumer<Block, Item> callback );
|
||||
|
||||
IBlockBuilder postInit( BiConsumer<Block, Item> callback );
|
||||
|
||||
IBlockBuilder features( AEFeature... features );
|
||||
|
||||
@@ -32,6 +32,10 @@ public interface IBootstrapComponent
|
||||
{
|
||||
}
|
||||
|
||||
default void modelLoader( Side side )
|
||||
{
|
||||
}
|
||||
|
||||
default void initialize( Side side )
|
||||
{
|
||||
}
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
package appeng.bootstrap.components;
|
||||
|
||||
import appeng.bootstrap.IBootstrapComponent;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
|
||||
/**
|
||||
* @author GuntherDW
|
||||
*/
|
||||
|
||||
@FunctionalInterface
|
||||
public interface ModelRegComponent extends IBootstrapComponent {
|
||||
|
||||
void modelReg(Side side);
|
||||
|
||||
}
|
||||
@@ -31,7 +31,7 @@ import net.minecraftforge.fml.relauncher.Side;
|
||||
/**
|
||||
* Registers a custom state mapper for a given block.
|
||||
*/
|
||||
public class StateMapperComponent implements PreInitComponent
|
||||
public class StateMapperComponent implements ModelRegComponent
|
||||
{
|
||||
|
||||
private final Block block;
|
||||
@@ -45,7 +45,7 @@ public class StateMapperComponent implements PreInitComponent
|
||||
}
|
||||
|
||||
@Override
|
||||
public void preInitialize( Side side )
|
||||
public void modelReg( Side side )
|
||||
{
|
||||
ModelLoader.setCustomStateMapper( block, stateMapper );
|
||||
if( stateMapper instanceof IResourceManagerReloadListener )
|
||||
|
||||
Reference in New Issue
Block a user