Major Refactoring of Bootstrap Code (#75)

- Refactored boostrap code:
  * Completely reworked item/block/tile registration.
  * Fixed server side startup.
  * Fixed server side startup.
  * More documentation.
  * More heavy cleanup
  * More cleanups.
  * Major refactoring of state mapping and fixes a lot of other issue related to item rendering.
  * Fixes sky chest item models (no item TESR).
  * Only use CachingRotatingBakedModel for tile entities automatically.
  Fix default rotation of quartz pillar for item model.
  * Used method reference instead of lambda for ItemMeshDefinition for multiparts.
  * Removed unnecessary IHasSpecialItemModel
  * Removed unused IconReg class.
  * Updated resource pack version.
This commit is contained in:
shartte
2016-08-22 14:25:10 +02:00
committed by Sebastian Hartte
parent 66df324ef0
commit 6f2bbfab4c
172 changed files with 2289 additions and 2863 deletions
+14 -23
View File
@@ -22,7 +22,6 @@ package appeng.core;
import java.io.File;
import java.util.HashSet;
import java.util.Set;
import javax.annotation.Nonnull;
import com.google.common.base.Preconditions;
@@ -32,7 +31,6 @@ import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.world.DimensionType;
import net.minecraft.world.biome.Biome;
import net.minecraftforge.common.DimensionManager;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fml.common.FMLCommonHandler;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
@@ -42,11 +40,8 @@ import net.minecraftforge.fml.common.registry.GameRegistry;
import net.minecraftforge.oredict.RecipeSorter;
import net.minecraftforge.oredict.RecipeSorter.Category;
import appeng.api.AEApi;
import appeng.api.IAppEngApi;
import appeng.api.config.Upgrades;
import appeng.api.definitions.IBlocks;
import appeng.api.definitions.IDefinitions;
import appeng.api.definitions.IItems;
import appeng.api.definitions.IParts;
import appeng.api.features.IRecipeHandlerRegistry;
@@ -65,8 +60,6 @@ import appeng.api.networking.ticking.ITickManager;
import appeng.api.parts.IPartHelper;
import appeng.block.networking.BlockCableBus;
import appeng.core.features.AEFeature;
import appeng.core.features.IAEFeature;
import appeng.core.features.IFeatureHandler;
import appeng.core.features.registries.P2PTunnelRegistry;
import appeng.core.features.registries.entries.BasicCellHandler;
import appeng.core.features.registries.entries.CreativeCellHandler;
@@ -150,18 +143,11 @@ public final class Registration
MinecraftForge.EVENT_BUS.register( OreDictionaryHandler.INSTANCE );
final ApiDefinitions definitions = api.definitions();
ApiDefinitions definitions = api.definitions();
// Register all detected handlers and features (items, blocks) in pre-init
for( final IFeatureHandler handler : definitions.getFeatureHandlerRegistry().getRegisteredFeatureHandlers() )
{
handler.register( event.getSide() );
}
definitions.getRegistry().getBootstrapComponents().forEach( b -> b.preInitialize( event.getSide() ) );
for( final IAEFeature feature : definitions.getFeatureRegistry().getRegisteredFeatures() )
{
feature.postInit();
}
}
private void registerSpatial( final boolean force )
@@ -247,10 +233,13 @@ public final class Registration
Preconditions.checkArgument( !recipeDirectory.isFile() );
Preconditions.checkNotNull( customRecipeConfig );
final IAppEngApi api = AEApi.instance();
final Api api = Api.INSTANCE;
final IPartHelper partHelper = api.partHelper();
final IRegistryContainer registries = api.registries();
ApiDefinitions definitions = api.definitions();
definitions.getRegistry().getBootstrapComponents().forEach( b -> b.initialize( event.getSide() ) );
// Perform ore camouflage!
ItemMultiItem.instance.makeUnique();
@@ -338,9 +327,9 @@ public final class Registration
{
this.registerSpatial( true );
final IAppEngApi api = AEApi.instance();
final Api api = Api.INSTANCE;
final IRegistryContainer registries = api.registries();
final IDefinitions definitions = api.definitions();
ApiDefinitions definitions = api.definitions();
final IParts parts = definitions.parts();
final IBlocks blocks = definitions.blocks();
final IItems items = definitions.items();
@@ -358,6 +347,8 @@ public final class Registration
( (BlockCableBus) block ).setupTile();
}
definitions.getRegistry().getBootstrapComponents().forEach( b -> b.postInitialize( event.getSide() ) );
// Interface
Upgrades.CRAFTING.registerItem( parts.iface(), 1 );
Upgrades.CRAFTING.registerItem( blocks.iface(), 1 );
@@ -447,7 +438,7 @@ public final class Registration
final IMovableRegistry mr = registries.movable();
/**
/*
* You can't move bed rock.
*/
mr.blacklistBlock( net.minecraft.init.Blocks.BEDROCK );
@@ -475,12 +466,12 @@ public final class Registration
mr.whiteListTileEntity( net.minecraft.tileentity.TileEntityNote.class );
mr.whiteListTileEntity( net.minecraft.tileentity.TileEntityHopper.class );
/**
/*
* Whitelist AE2
*/
mr.whiteListTileEntity( AEBaseTile.class );
/**
/*
* world gen
*/
for( final WorldGenType type : WorldGenType.values() )
@@ -500,7 +491,7 @@ public final class Registration
registries.worldgen().enableWorldGenForDimension( WorldGenType.Meteorites, dimension );
}
/**
/*
* initial recipe bake, if ore dictionary changes after this it re-bakes.
*/
OreDictionaryHandler.INSTANCE.bakeRecipes();