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
@@ -20,7 +20,6 @@ package appeng.items.parts;
import java.util.ArrayList;
import java.util.EnumSet;
import java.util.List;
import net.minecraft.block.Block;
@@ -47,7 +46,6 @@ import appeng.api.exceptions.MissingDefinition;
import appeng.api.parts.IAlphaPassItem;
import appeng.api.util.AEPartLocation;
import appeng.core.FacadeConfig;
import appeng.core.features.AEFeature;
import appeng.facade.FacadePart;
import appeng.facade.IFacadeItem;
import appeng.items.AEBaseItem;
@@ -60,7 +58,6 @@ public class ItemFacade extends AEBaseItem implements IFacadeItem, IAlphaPassIte
public ItemFacade()
{
this.setFeature( EnumSet.of( AEFeature.Facades ) );
this.setHasSubtypes( true );
}
@@ -23,20 +23,16 @@ import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.EnumSet;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import com.google.common.base.Preconditions;
import net.minecraft.client.renderer.ItemMeshDefinition;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
@@ -75,20 +71,13 @@ public final class ItemMultiPart extends AEBaseItem implements IPartItem, IItemG
{
Preconditions.checkNotNull( partHelper );
this.registered = new HashMap<Integer, PartTypeWithVariant>( INITIAL_REGISTERED_CAPACITY );
this.registered = new HashMap<>( INITIAL_REGISTERED_CAPACITY );
this.setFeature( EnumSet.of( AEFeature.Core ) );
this.setHasSubtypes( true );
instance = this;
}
@Override
public ItemMeshDefinition getItemMeshDefinition()
{
return itemstack -> new ModelResourceLocation( getTypeByStack( itemstack ).getModel(), null );
}
@Nonnull
public final ItemStackSrc createPart( final PartType mat )
{
@@ -0,0 +1,33 @@
package appeng.items.parts;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.item.ItemStack;
import appeng.bootstrap.IItemRendering;
import appeng.bootstrap.ItemRenderingCustomizer;
public class ItemMultipartRendering extends ItemRenderingCustomizer
{
private final ItemMultiPart item;
public ItemMultipartRendering( ItemMultiPart item )
{
this.item = item;
}
@Override
public void customize( IItemRendering rendering )
{
rendering.meshDefinition( this::getItemMeshDefinition );
}
private ModelResourceLocation getItemMeshDefinition( ItemStack is )
{
// TODO: Avoid object creation here. This happens every frame
return new ModelResourceLocation( item.getTypeByStack( is ).getModel(), null );
}
}