Custom Model Loader
This commit is contained in:
@@ -78,7 +78,7 @@ class BlockDefinitionBuilder implements IBlockBuilder
|
||||
|
||||
private boolean disableItem = false;
|
||||
|
||||
private Function<Block, BlockItem> itemFactory;
|
||||
private BiFunction<Block, Item.Properties, BlockItem> itemFactory;
|
||||
|
||||
@OnlyIn( Dist.CLIENT )
|
||||
private BlockRendering blockRendering;
|
||||
@@ -157,7 +157,7 @@ class BlockDefinitionBuilder implements IBlockBuilder
|
||||
}
|
||||
|
||||
@Override
|
||||
public IBlockBuilder item( Function<Block, BlockItem> factory )
|
||||
public IBlockBuilder item( BiFunction<Block, Item.Properties, BlockItem> factory )
|
||||
{
|
||||
this.itemFactory = factory;
|
||||
return this;
|
||||
@@ -258,17 +258,24 @@ class BlockDefinitionBuilder implements IBlockBuilder
|
||||
return null;
|
||||
}
|
||||
|
||||
Item.Properties itemProperties = new Item.Properties();
|
||||
|
||||
if (itemGroup != null) {
|
||||
itemProperties.group(itemGroup);
|
||||
}
|
||||
// FIXME: Allow more/all item properties
|
||||
|
||||
if( this.itemFactory != null )
|
||||
{
|
||||
return this.itemFactory.apply( block );
|
||||
return this.itemFactory.apply( block, itemProperties );
|
||||
}
|
||||
else if( block instanceof AEBaseBlock )
|
||||
{
|
||||
return new AEBaseBlockItem( block, new Item.Properties() /* FIXME THIS IS THE IMPORTANT BIT */ );
|
||||
return new AEBaseBlockItem( block, itemProperties );
|
||||
}
|
||||
else
|
||||
{
|
||||
return new BlockItem( block, null );
|
||||
return new BlockItem( block, itemProperties );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,6 +27,7 @@ import net.minecraft.client.renderer.model.IBakedModel;
|
||||
import net.minecraft.client.renderer.model.IUnbakedModel;
|
||||
import net.minecraft.client.renderer.model.ModelResourceLocation;
|
||||
import net.minecraft.client.renderer.tileentity.TileEntityRenderer;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
|
||||
@@ -39,7 +40,7 @@ class BlockRendering implements IBlockRendering
|
||||
{
|
||||
|
||||
@OnlyIn( Dist.CLIENT )
|
||||
private BiFunction<ModelResourceLocation, IBakedModel, IBakedModel> modelCustomizer;
|
||||
private BiFunction<ResourceLocation, IBakedModel, IBakedModel> modelCustomizer;
|
||||
|
||||
@OnlyIn( Dist.CLIENT )
|
||||
private IBlockColor blockColor;
|
||||
@@ -55,7 +56,7 @@ class BlockRendering implements IBlockRendering
|
||||
|
||||
@Override
|
||||
@OnlyIn( Dist.CLIENT )
|
||||
public IBlockRendering modelCustomizer( BiFunction<ModelResourceLocation, IBakedModel, IBakedModel> customizer )
|
||||
public IBlockRendering modelCustomizer( BiFunction<ResourceLocation, IBakedModel, IBakedModel> customizer )
|
||||
{
|
||||
this.modelCustomizer = customizer;
|
||||
return this;
|
||||
|
||||
@@ -29,11 +29,14 @@ import java.util.Map;
|
||||
import java.util.function.BiFunction;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
import appeng.bootstrap.components.BuiltInModelComponent;
|
||||
import appeng.bootstrap.components.ModelOverrideComponent;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.client.renderer.model.IBakedModel;
|
||||
import net.minecraft.client.renderer.model.IUnbakedModel;
|
||||
import net.minecraft.client.renderer.model.ModelResourceLocation;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
|
||||
@@ -55,11 +58,11 @@ public class FeatureFactory
|
||||
|
||||
private final Map<Class<? extends IBootstrapComponent>, List<IBootstrapComponent>> bootstrapComponents;
|
||||
|
||||
//FIXME @OnlyIn( Dist.CLIENT )
|
||||
//FIXME private ModelOverrideComponent modelOverrideComponent;
|
||||
@OnlyIn( Dist.CLIENT )
|
||||
private ModelOverrideComponent modelOverrideComponent;
|
||||
|
||||
//FIXME @OnlyIn( Dist.CLIENT )
|
||||
//FIXME private BuiltInModelComponent builtInModelComponent;
|
||||
@OnlyIn( Dist.CLIENT )
|
||||
private BuiltInModelComponent builtInModelComponent;
|
||||
|
||||
public final TileEntityComponent tileEntityComponent;
|
||||
|
||||
@@ -73,10 +76,10 @@ public class FeatureFactory
|
||||
|
||||
if( Platform.isClient() )
|
||||
{
|
||||
// FIXME this.modelOverrideComponent = new ModelOverrideComponent();
|
||||
// FIXME this.addBootstrapComponent( this.modelOverrideComponent );
|
||||
// FIXME this.builtInModelComponent = new BuiltInModelComponent();
|
||||
// FIXME this.addBootstrapComponent( this.builtInModelComponent );
|
||||
this.modelOverrideComponent = new ModelOverrideComponent();
|
||||
this.addBootstrapComponent( this.modelOverrideComponent );
|
||||
this.builtInModelComponent = new BuiltInModelComponent();
|
||||
this.addBootstrapComponent( this.builtInModelComponent );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -87,8 +90,8 @@ public class FeatureFactory
|
||||
this.tileEntityComponent = parent.tileEntityComponent;
|
||||
if( Platform.isClient() )
|
||||
{
|
||||
// FIXME this.modelOverrideComponent = parent.modelOverrideComponent;
|
||||
// FIXME this.builtInModelComponent = parent.builtInModelComponent;
|
||||
this.modelOverrideComponent = parent.modelOverrideComponent;
|
||||
this.builtInModelComponent = parent.builtInModelComponent;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -139,13 +142,13 @@ public class FeatureFactory
|
||||
@OnlyIn( Dist.CLIENT )
|
||||
void addBuiltInModel( String path, IUnbakedModel model )
|
||||
{
|
||||
// FIXME this.builtInModelComponent.addModel( path, model );
|
||||
this.builtInModelComponent.addModel( path, model );
|
||||
}
|
||||
|
||||
@OnlyIn( Dist.CLIENT )
|
||||
void addModelOverride( String resourcePath, BiFunction<ModelResourceLocation, IBakedModel, IBakedModel> customizer )
|
||||
void addModelOverride( String resourcePath, BiFunction<ResourceLocation, IBakedModel, IBakedModel> customizer )
|
||||
{
|
||||
// FIXME this.modelOverrideComponent.addOverride( resourcePath, customizer );
|
||||
this.modelOverrideComponent.addOverride( resourcePath, customizer );
|
||||
}
|
||||
|
||||
public <T extends IBootstrapComponent> Iterator<T> getBootstrapComponents( Class<T> eventType )
|
||||
|
||||
@@ -54,7 +54,7 @@ public interface IBlockBuilder
|
||||
*/
|
||||
IBlockBuilder useCustomItemModel();
|
||||
|
||||
IBlockBuilder item( Function<Block, BlockItem> factory );
|
||||
IBlockBuilder item( BiFunction<Block, Item.Properties, BlockItem> factory );
|
||||
|
||||
<T extends IBlockDefinition> T build();
|
||||
}
|
||||
|
||||
@@ -26,6 +26,7 @@ import net.minecraft.client.renderer.model.IBakedModel;
|
||||
import net.minecraft.client.renderer.model.IUnbakedModel;
|
||||
import net.minecraft.client.renderer.model.ModelResourceLocation;
|
||||
import net.minecraft.client.renderer.tileentity.TileEntityRenderer;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
|
||||
@@ -37,7 +38,7 @@ public interface IBlockRendering
|
||||
{
|
||||
|
||||
@OnlyIn( Dist.CLIENT )
|
||||
IBlockRendering modelCustomizer( BiFunction<ModelResourceLocation, IBakedModel, IBakedModel> customizer );
|
||||
IBlockRendering modelCustomizer( BiFunction<ResourceLocation, IBakedModel, IBakedModel> customizer );
|
||||
|
||||
@OnlyIn( Dist.CLIENT )
|
||||
IBlockRendering blockColor( IBlockColor blockColor );
|
||||
|
||||
@@ -131,11 +131,6 @@ class ItemDefinitionBuilder implements IItemBuilder
|
||||
@Override
|
||||
public ItemDefinition build()
|
||||
{
|
||||
if( !AEConfig.instance().areFeaturesEnabled( this.features ) )
|
||||
{
|
||||
return new ItemDefinition( this.registryName, null );
|
||||
}
|
||||
|
||||
Item item = this.itemSupplier.get();
|
||||
item.setRegistryName( AppEng.MOD_ID, this.registryName );
|
||||
|
||||
|
||||
@@ -19,16 +19,13 @@
|
||||
package appeng.bootstrap.components;
|
||||
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import com.google.common.base.Preconditions;
|
||||
|
||||
import net.minecraft.client.renderer.model.IUnbakedModel;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
import net.minecraftforge.client.model.ModelLoaderRegistry;
|
||||
import net.minecraftforge.registries.ForgeRegistries;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
@OnlyIn( Dist.CLIENT )
|
||||
public class BuiltInModelComponent implements IPreInitComponent
|
||||
@@ -48,8 +45,8 @@ public class BuiltInModelComponent implements IPreInitComponent
|
||||
public void preInitialize( Dist dist )
|
||||
{
|
||||
this.hasInitialized = true;
|
||||
|
||||
// FIXME BuiltInModelLoader loader = new BuiltInModelLoader( this.builtInModels );
|
||||
// FIXME ModelLoaderRegistry.registerLoader( loader );
|
||||
//
|
||||
// BuiltInModelLoader loader = new BuiltInModelLoader( this.builtInModels );
|
||||
// ModelLoaderRegistry.registerLoader( loader );
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user