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
@@ -22,7 +22,6 @@ package appeng.items.materials;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.EnumSet;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
@@ -30,12 +29,10 @@ import java.util.Map;
import java.util.Map.Entry;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableSet;
import net.minecraft.client.renderer.ItemMeshDefinition;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity;
import net.minecraft.entity.item.EntityItem;
@@ -48,12 +45,9 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumActionResult;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Vec3d;
import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import net.minecraftforge.oredict.OreDictionary;
import appeng.api.config.Upgrades;
@@ -79,11 +73,10 @@ public final class ItemMultiItem extends AEBaseItem implements IStorageComponent
private static final int KILO_SCALAR = 1024;
private final Map<Integer, MaterialType> dmgToMaterial = new HashMap<Integer, MaterialType>();
private final Map<Integer, MaterialType> dmgToMaterial = new HashMap<>();
public ItemMultiItem()
{
this.setFeature( EnumSet.of( AEFeature.Core ) );
this.setHasSubtypes( true );
instance = this;
}
@@ -446,22 +439,4 @@ public final class ItemMultiItem extends AEBaseItem implements IStorageComponent
}
}
@Override
@SideOnly( Side.CLIENT )
public List<ResourceLocation> getItemVariants()
{
// Register a resource location for every material type
return Arrays.stream( MaterialType.values() )
.map( MaterialType::getModel )
.collect( Collectors.toList() );
}
@Override
@SideOnly( Side.CLIENT )
public ItemMeshDefinition getItemMeshDefinition()
{
return is -> getTypeByStack( is ).getModel();
}
}
@@ -25,6 +25,7 @@ import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.entity.Entity;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fml.common.registry.EntityRegistry;
import appeng.core.AppEng;
@@ -37,86 +38,86 @@ import appeng.entity.EntitySingularity;
public enum MaterialType
{
InvalidType( -1, AEFeature.Core ),
InvalidType( -1, "material_invalid_type", AEFeature.Core ),
CertusQuartzCrystal( 0, AEFeature.Core, "crystalCertusQuartz" ),
CertusQuartzCrystalCharged( 1, AEFeature.Core, EntityChargedQuartz.class ),
CertusQuartzCrystal( 0, "material_certus_quartz_crystal", AEFeature.Core, "crystalCertusQuartz" ),
CertusQuartzCrystalCharged( 1, "material_certus_quartz_crystal_charged", AEFeature.Core, EntityChargedQuartz.class ),
CertusQuartzDust( 2, AEFeature.Core, "dustCertusQuartz" ),
NetherQuartzDust( 3, AEFeature.Core, "dustNetherQuartz" ),
Flour( 4, AEFeature.Flour, "dustWheat" ),
GoldDust( 51, AEFeature.Core, "dustGold" ),
IronDust( 49, AEFeature.Core, "dustIron" ),
IronNugget( 50, AEFeature.Core, "nuggetIron" ),
CertusQuartzDust( 2, "material_certus_quartz_dust", AEFeature.Core, "dustCertusQuartz" ),
NetherQuartzDust( 3, "material_nether_quartz_dust", AEFeature.Core, "dustNetherQuartz" ),
Flour( 4, "material_flour", AEFeature.Flour, "dustWheat" ),
GoldDust( 51, "material_gold_dust", AEFeature.Core, "dustGold" ),
IronDust( 49, "material_iron_dust", AEFeature.Core, "dustIron" ),
IronNugget( 50, "material_iron_nugget", AEFeature.Core, "nuggetIron" ),
Silicon( 5, AEFeature.Core, "itemSilicon" ),
MatterBall( 6 ),
Silicon( 5, "material_silicon", AEFeature.Core, "itemSilicon" ),
MatterBall( 6, "material_matter_ball" ),
FluixCrystal( 7, AEFeature.Core, "crystalFluix" ),
FluixDust( 8, AEFeature.Core, "dustFluix" ),
FluixPearl( 9, AEFeature.Core, "pearlFluix" ),
FluixCrystal( 7, "material_fluix_crystal", AEFeature.Core, "crystalFluix" ),
FluixDust( 8, "material_fluix_dust", AEFeature.Core, "dustFluix" ),
FluixPearl( 9, "material_fluix_pearl", AEFeature.Core, "pearlFluix" ),
PurifiedCertusQuartzCrystal( 10 ),
PurifiedNetherQuartzCrystal( 11 ),
PurifiedFluixCrystal( 12 ),
PurifiedCertusQuartzCrystal( 10, "material_purified_certus_quartz_crystal" ),
PurifiedNetherQuartzCrystal( 11, "material_purified_nether_quartz_crystal" ),
PurifiedFluixCrystal( 12, "material_purified_fluix_crystal" ),
CalcProcessorPress( 13 ),
EngProcessorPress( 14 ),
LogicProcessorPress( 15 ),
CalcProcessorPress( 13, "material_calc_processor_press" ),
EngProcessorPress( 14, "material_eng_processor_press" ),
LogicProcessorPress( 15, "material_logic_processor_press" ),
CalcProcessorPrint( 16 ),
EngProcessorPrint( 17 ),
LogicProcessorPrint( 18 ),
CalcProcessorPrint( 16, "material_calc_processor_print" ),
EngProcessorPrint( 17, "material_eng_processor_print" ),
LogicProcessorPrint( 18, "material_logic_processor_print" ),
SiliconPress( 19 ),
SiliconPrint( 20 ),
SiliconPress( 19, "material_silicon_press" ),
SiliconPrint( 20, "material_silicon_print" ),
NamePress( 21 ),
NamePress( 21, "material_name_press" ),
LogicProcessor( 22 ),
CalcProcessor( 23 ),
EngProcessor( 24 ),
LogicProcessor( 22, "material_logic_processor" ),
CalcProcessor( 23, "material_calc_processor" ),
EngProcessor( 24, "material_eng_processor" ),
// Basic Cards
BasicCard( 25 ),
CardRedstone( 26 ),
CardCapacity( 27 ),
BasicCard( 25, "material_basic_card" ),
CardRedstone( 26, "material_card_redstone" ),
CardCapacity( 27, "material_card_capacity" ),
// Adv Cards
AdvCard( 28 ),
CardFuzzy( 29 ),
CardSpeed( 30 ),
CardInverter( 31 ),
AdvCard( 28, "material_adv_card" ),
CardFuzzy( 29, "material_card_fuzzy" ),
CardSpeed( 30, "material_card_speed" ),
CardInverter( 31, "material_card_inverter" ),
Cell2SpatialPart( 32, AEFeature.SpatialIO ),
Cell16SpatialPart( 33, AEFeature.SpatialIO ),
Cell128SpatialPart( 34, AEFeature.SpatialIO ),
Cell2SpatialPart( 32, "material_cell2_spatial_part", AEFeature.SpatialIO ),
Cell16SpatialPart( 33, "material_cell16_spatial_part", AEFeature.SpatialIO ),
Cell128SpatialPart( 34, "material_cell128_spatial_part", AEFeature.SpatialIO ),
Cell1kPart( 35, AEFeature.StorageCells ),
Cell4kPart( 36, AEFeature.StorageCells ),
Cell16kPart( 37, AEFeature.StorageCells ),
Cell64kPart( 38, AEFeature.StorageCells ),
EmptyStorageCell( 39, AEFeature.StorageCells ),
Cell1kPart( 35, "material_cell1k_part", AEFeature.StorageCells ),
Cell4kPart( 36, "material_cell4k_part", AEFeature.StorageCells ),
Cell16kPart( 37, "material_cell16k_part", AEFeature.StorageCells ),
Cell64kPart( 38, "material_cell64k_part", AEFeature.StorageCells ),
EmptyStorageCell( 39, "material_empty_storage_cell", AEFeature.StorageCells ),
WoodenGear( 40, AEFeature.GrindStone, "gearWood" ),
WoodenGear( 40, "material_wooden_gear", AEFeature.GrindStone, "gearWood" ),
Wireless( 41, AEFeature.WirelessAccessTerminal ),
WirelessBooster( 42, AEFeature.WirelessAccessTerminal ),
Wireless( 41, "material_wireless", AEFeature.WirelessAccessTerminal ),
WirelessBooster( 42, "material_wireless_booster", AEFeature.WirelessAccessTerminal ),
FormationCore( 43 ),
AnnihilationCore( 44 ),
FormationCore( 43, "material_formation_core" ),
AnnihilationCore( 44, "material_annihilation_core" ),
SkyDust( 45, AEFeature.Core ),
SkyDust( 45, "material_sky_dust", AEFeature.Core ),
EnderDust( 46, AEFeature.QuantumNetworkBridge, "dustEnder,dustEnderPearl", EntitySingularity.class ),
Singularity( 47, AEFeature.QuantumNetworkBridge, EntitySingularity.class ),
QESingularity( 48, AEFeature.QuantumNetworkBridge, EntitySingularity.class ),
EnderDust( 46, "material_ender_dust", AEFeature.QuantumNetworkBridge, "dustEnder,dustEnderPearl", EntitySingularity.class ),
Singularity( 47, "material_singularity", AEFeature.QuantumNetworkBridge, EntitySingularity.class ),
QESingularity( 48, "material_qesingularity", AEFeature.QuantumNetworkBridge, EntitySingularity.class ),
BlankPattern( 52 ),
CardCrafting( 53 );
BlankPattern( 52, "material_blank_pattern" ),
CardCrafting( 53, "material_card_crafting" );
private final EnumSet<AEFeature> features;
private final ModelResourceLocation model = new ModelResourceLocation( "appliedenergistics2:ItemMaterial." + name() );
private final ModelResourceLocation model;
private Item itemInstance;
private int damageValue;
// stack!
@@ -125,40 +126,37 @@ public enum MaterialType
private Class<? extends Entity> droppedEntity;
private boolean isRegistered = false;
MaterialType( final int metaValue )
MaterialType( final int metaValue, String modelName )
{
this.setDamageValue( metaValue );
this.features = EnumSet.of( AEFeature.Core );
this( metaValue, modelName, AEFeature.Core );
}
MaterialType( final int metaValue, final AEFeature part )
MaterialType( final int metaValue, String modelName, final AEFeature part )
{
this.setDamageValue( metaValue );
this.features = EnumSet.of( part );
this.model = new ModelResourceLocation( new ResourceLocation( AppEng.MOD_ID, modelName ), "inventory" );
}
MaterialType( final int metaValue, final AEFeature part, final Class<? extends Entity> c )
MaterialType( final int metaValue, String modelName, final AEFeature part, final Class<? extends Entity> c )
{
this.features = EnumSet.of( part );
this.setDamageValue( metaValue );
this( metaValue, modelName, part );
this.droppedEntity = c;
EntityRegistry.registerModEntity( this.droppedEntity, this.droppedEntity.getSimpleName(), EntityIds.get( this.droppedEntity ), AppEng.instance(), 16, 4, true );
}
MaterialType( final int metaValue, final AEFeature part, final String oreDictionary, final Class<? extends Entity> c )
MaterialType( final int metaValue, String modelName, final AEFeature part, final String oreDictionary, final Class<? extends Entity> c )
{
this.features = EnumSet.of( part );
this.setDamageValue( metaValue );
this( metaValue, modelName, part );
this.oreName = oreDictionary;
this.droppedEntity = c;
EntityRegistry.registerModEntity( this.droppedEntity, this.droppedEntity.getSimpleName(), EntityIds.get( this.droppedEntity ), AppEng.instance(), 16, 4, true );
}
MaterialType( final int metaValue, final AEFeature part, final String oreDictionary )
MaterialType( final int metaValue, String modelName, final AEFeature part, final String oreDictionary )
{
this.features = EnumSet.of( part );
this.setDamageValue( metaValue );
this( metaValue, modelName, part );
this.oreName = oreDictionary;
}