Custom Model Loader

This commit is contained in:
Sebastian Hartte
2020-06-01 04:02:37 +02:00
parent 077ff17078
commit 5cdeff01be
202 changed files with 942 additions and 1017 deletions
@@ -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 );
}
}