Flattening part 1

This commit is contained in:
Sebastian Hartte
2020-06-05 22:47:29 +02:00
parent c411a800f6
commit bb453b0d35
43 changed files with 492 additions and 594 deletions
@@ -26,6 +26,7 @@ import appeng.bootstrap.FeatureFactory;
import appeng.api.features.AEFeature;
import appeng.bootstrap.components.IEntityRegistrationComponent;
import appeng.client.render.crafting.ItemEncodedPatternRendering;
import appeng.core.Api;
import appeng.core.CreativeTabFacade;
import appeng.debug.ToolDebugCard;
import appeng.debug.ToolEraser;
@@ -53,6 +54,7 @@ import net.minecraft.entity.EntityType;
import net.minecraft.item.Item;
import net.minecraft.item.ItemGroup;
import net.minecraftforge.common.ToolType;
import org.lwjgl.system.APIUtil;
import java.util.function.Consumer;
@@ -105,7 +107,9 @@ public final class ApiItems implements IItems
private final IItemDefinition spatialCell128;
private final IItemDefinition facade;
private final IItemDefinition crystalSeed;
private final IItemDefinition certusCrystalSeed;
private final IItemDefinition fluixCrystalSeed;
private final IItemDefinition netherQuartzSeed;
// rv1
private final IItemDefinition encodedPattern;
@@ -123,7 +127,7 @@ public final class ApiItems implements IItems
private final IItemDefinition dummyFluidItem;
public ApiItems( FeatureFactory registry )
public ApiItems(FeatureFactory registry, ApiMaterials materials)
{
FeatureFactory certusTools = registry.features( AEFeature.CERTUS_QUARTZ_TOOLS );
this.certusQuartzAxe = certusTools.item( "certus_quartz_axe", props -> new ToolQuartzAxe( props, AEFeature.CERTUS_QUARTZ_TOOLS ) )
@@ -270,19 +274,21 @@ public final class ApiItems implements IItems
.itemGroup( CreativeTabFacade.instance )
.rendering( new FacadeRendering() )
.build();
this.crystalSeed = registry.item( "crystal_seed", ItemCrystalSeed::new )
this.certusCrystalSeed = registry.item( "certus_crystal_seed", props -> new ItemCrystalSeed(props, materials.purifiedCertusQuartzCrystal().item()) )
.features( AEFeature.CRYSTAL_SEEDS )
.rendering( new ItemCrystalSeedRendering() )
.bootstrap( item -> (IEntityRegistrationComponent) r ->
{
r.register( EntityType.Builder.<EntityGrowingCrystal>create(EntityGrowingCrystal::new, EntityClassification.MISC)
.setTrackingRange(16)
.setUpdateInterval(4)
.setShouldReceiveVelocityUpdates(true)
.build("appliedenergistics2:growing_crystal")
.setRegistryName("appliedenergistics2:growing_crystal")
);
} )
.build();
this.fluixCrystalSeed = registry.item( "fluix_crystal_seed", props -> new ItemCrystalSeed(props, materials.purifiedFluixCrystal().item()) )
.features( AEFeature.CRYSTAL_SEEDS )
.build();
this.netherQuartzSeed = registry.item( "nether_quartz_seed", props -> new ItemCrystalSeed(props, materials.purifiedNetherQuartzCrystal().item()) )
.features( AEFeature.CRYSTAL_SEEDS )
.build();
registry.<EntityGrowingCrystal>entity("growing_crystal", EntityGrowingCrystal::new, EntityClassification.MISC)
.customize(builder -> builder.setTrackingRange(16)
.setUpdateInterval(4)
.setShouldReceiveVelocityUpdates(true))
.build();
// rv1
@@ -525,9 +531,18 @@ public final class ApiItems implements IItems
}
@Override
public IItemDefinition crystalSeed()
{
return this.crystalSeed;
public IItemDefinition certusCrystalSeed() {
return certusCrystalSeed;
}
@Override
public IItemDefinition fluixCrystalSeed() {
return fluixCrystalSeed;
}
@Override
public IItemDefinition netherQuartzSeed() {
return netherQuartzSeed;
}
@Override
@@ -19,25 +19,18 @@
package appeng.core.api.definitions;
import java.util.Arrays;
import java.util.stream.Collectors;
import net.minecraft.entity.EntityClassification;
import net.minecraft.entity.EntityType;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import appeng.api.definitions.IItemDefinition;
import appeng.api.definitions.IMaterials;
import appeng.api.features.AEFeature;
import appeng.bootstrap.FeatureFactory;
import appeng.bootstrap.IItemRendering;
import appeng.bootstrap.ItemRenderingCustomizer;
import appeng.bootstrap.components.IEntityRegistrationComponent;
import appeng.core.features.DamagedItemDefinition;
import appeng.core.AEConfig;
import appeng.core.features.MaterialStackSrc;
import appeng.entity.EntityChargedQuartz;
import appeng.entity.EntitySingularity;
import appeng.items.materials.ItemMaterial;
import appeng.items.materials.MaterialType;
import com.google.common.base.Preconditions;
import net.minecraft.entity.EntityClassification;
/**
@@ -121,127 +114,98 @@ public final class ApiMaterials implements IMaterials
private final IItemDefinition fluidCell16kPart;
private final IItemDefinition fluidCell64kPart;
private final FeatureFactory registry;
public ApiMaterials( FeatureFactory registry )
{
IItemDefinition materialDef = registry.item( "material", ItemMaterial::new )
.rendering( new ItemRenderingCustomizer()
{
@Override
@OnlyIn( Dist.CLIENT )
public void customize( IItemRendering rendering )
{
// FIXME rendering.meshDefinition( is -> materials.getTypeByStack( is ).getModel() );
// Register a resource location for every material type
rendering.variants( Arrays.stream( MaterialType.values() )
.map( MaterialType::getModel )
.collect( Collectors.toList() ) );
}
} )
.bootstrap( item -> (IEntityRegistrationComponent) r ->
{
r.register( EntityType.Builder.<EntitySingularity>create(EntitySingularity::new, EntityClassification.MISC)
.setTrackingRange(16)
.setUpdateInterval(4)
.setShouldReceiveVelocityUpdates(true)
.build("appliedenergistics2:singularity")
.setRegistryName("appliedenergistics2:singularity")
);
r.register( EntityType.Builder.<EntityChargedQuartz>create(EntityChargedQuartz::new, EntityClassification.MISC)
.setTrackingRange(16)
.setUpdateInterval(4)
.setShouldReceiveVelocityUpdates(true)
.build("appliedenergistics2:charged_quartz")
.setRegistryName("appliedenergistics2:charged_quartz")
);
} )
this.registry = registry;
registry.<EntitySingularity>entity("singularity", EntitySingularity::new, EntityClassification.MISC)
.customize(builder -> builder.setTrackingRange(16).setUpdateInterval(4).setShouldReceiveVelocityUpdates(true))
.build();
final ItemMaterial materials = (ItemMaterial) materialDef.item();
this.cell2SpatialPart = new DamagedItemDefinition( "material.cell.spatial.2", materials.createMaterial( MaterialType.CELL2_SPATIAL_PART ) );
this.cell16SpatialPart = new DamagedItemDefinition( "material.cell.spatial.16", materials.createMaterial( MaterialType.CELL16_SPATIAL_PART ) );
this.cell128SpatialPart = new DamagedItemDefinition( "material.cell.spatial.128", materials.createMaterial( MaterialType.CELL128_SPATIAL_PART ) );
registry.<EntityChargedQuartz>entity("charged_quartz", EntityChargedQuartz::new, EntityClassification.MISC)
.customize(builder -> builder.setTrackingRange(16).setUpdateInterval(4).setShouldReceiveVelocityUpdates(true))
.build();
this.silicon = new DamagedItemDefinition( "material.silicon", materials.createMaterial( MaterialType.SILICON ) );
this.skyDust = new DamagedItemDefinition( "material.dust.sky_stone", materials.createMaterial( MaterialType.SKY_DUST ) );
this.cell2SpatialPart = createMaterial( "material_cell2_spatial_part", MaterialType.CELL2_SPATIAL_PART );
this.cell16SpatialPart = createMaterial( "material_cell16_spatial_part", MaterialType.CELL16_SPATIAL_PART );
this.cell128SpatialPart = createMaterial( "material_cell128_spatial_part", MaterialType.CELL128_SPATIAL_PART );
this.silicon = createMaterial( "material_silicon", MaterialType.SILICON );
this.skyDust = createMaterial( "material_sky_dust", MaterialType.SKY_DUST );
this.calcProcessorPress = createMaterial( "material_calculation_processor_press", MaterialType.CALCULATION_PROCESSOR_PRESS );
this.engProcessorPress = createMaterial( "material_engineering_processor_press", MaterialType.ENGINEERING_PROCESSOR_PRESS );
this.logicProcessorPress = createMaterial( "material_logic_processor_press", MaterialType.LOGIC_PROCESSOR_PRESS );
this.siliconPress = createMaterial( "material_silicon_press", MaterialType.SILICON_PRESS );
this.namePress = createMaterial( "material_name_press", MaterialType.NAME_PRESS );
this.calcProcessorPrint = createMaterial( "material_calculation_processor_print", MaterialType.CALCULATION_PROCESSOR_PRINT );
this.engProcessorPrint = createMaterial( "material_engineering_processor_print", MaterialType.ENGINEERING_PROCESSOR_PRINT );
this.logicProcessorPrint = createMaterial( "material_logic_processor_print", MaterialType.LOGIC_PROCESSOR_PRINT );
this.siliconPrint = createMaterial( "material_silicon_print", MaterialType.SILICON_PRINT );
this.logicProcessor = createMaterial( "material_logic_processor", MaterialType.LOGIC_PROCESSOR );
this.calcProcessor = createMaterial( "material_calculation_processor", MaterialType.CALCULATION_PROCESSOR );
this.engProcessor = createMaterial( "material_engineering_processor", MaterialType.ENGINEERING_PROCESSOR );
this.basicCard = createMaterial( "material_basic_card", MaterialType.BASIC_CARD );
this.advCard = createMaterial( "material_advanced_card", MaterialType.ADVANCED_CARD );
this.purifiedCertusQuartzCrystal = createMaterial( "material_purified_certus_quartz_crystal", MaterialType.PURIFIED_CERTUS_QUARTZ_CRYSTAL );
this.purifiedNetherQuartzCrystal = createMaterial( "material_purified_nether_quartz_crystal", MaterialType.PURIFIED_NETHER_QUARTZ_CRYSTAL );
this.purifiedFluixCrystal = createMaterial( "material_purified_fluix_crystal", MaterialType.PURIFIED_FLUIX_CRYSTAL );
this.cell1kPart = createMaterial( "material_cell1k_part", MaterialType.CELL1K_PART );
this.cell4kPart = createMaterial( "material_cell4k_part", MaterialType.CELL4K_PART );
this.cell16kPart = createMaterial( "material_cell16k_part", MaterialType.CELL16K_PART );
this.cell64kPart = createMaterial( "material_cell64k_part", MaterialType.CELL64K_PART );
this.emptyStorageCell = createMaterial( "material_empty_storage_cell", MaterialType.EMPTY_STORAGE_CELL );
this.cardRedstone = createMaterial( "material_card_redstone", MaterialType.CARD_REDSTONE );
this.cardSpeed = createMaterial( "material_card_speed", MaterialType.CARD_SPEED );
this.cardCapacity = createMaterial( "material_card_capacity", MaterialType.CARD_CAPACITY );
this.cardFuzzy = createMaterial( "material_card_fuzzy", MaterialType.CARD_FUZZY );
this.cardInverter = createMaterial( "material_card_inverter", MaterialType.CARD_INVERTER );
this.cardCrafting = createMaterial( "material_card_crafting", MaterialType.CARD_CRAFTING );
this.enderDust = createMaterial( "material_ender_dust", MaterialType.ENDER_DUST );
this.flour = createMaterial( "material_flour", MaterialType.FLOUR );
this.goldDust = createMaterial( "material_gold_dust", MaterialType.GOLD_DUST );
this.ironDust = createMaterial( "material_iron_dust", MaterialType.IRON_DUST );
this.fluixDust = createMaterial( "material_fluix_dust", MaterialType.FLUIX_DUST );
this.certusQuartzDust = createMaterial( "material_certus_quartz_dust", MaterialType.CERTUS_QUARTZ_DUST );
this.netherQuartzDust = createMaterial( "material_nether_quartz_dust", MaterialType.NETHER_QUARTZ_DUST );
this.matterBall = createMaterial( "material_matter_ball", MaterialType.MATTER_BALL );
this.certusQuartzCrystal = createMaterial( "material_certus_quartz_crystal", MaterialType.CERTUS_QUARTZ_CRYSTAL );
this.certusQuartzCrystalCharged = createMaterial( "material_certus_quartz_crystal_charged", MaterialType.CERTUS_QUARTZ_CRYSTAL_CHARGED );
this.fluixCrystal = createMaterial( "material_fluix_crystal", MaterialType.FLUIX_CRYSTAL );
this.fluixPearl = createMaterial( "material_fluix_pearl", MaterialType.FLUIX_PEARL );
this.woodenGear = createMaterial( "material_wooden_gear", MaterialType.WOODEN_GEAR );
this.wirelessReceiver = createMaterial( "material_wireless_receiver", MaterialType.WIRELESS );
this.wirelessBooster = createMaterial( "material_wireless_booster", MaterialType.WIRELESS_BOOSTER );
this.annihilationCore = createMaterial( "material_annihilation_core", MaterialType.ANNIHILATION_CORE );
this.formationCore = createMaterial( "material_formation_core", MaterialType.FORMATION_CORE );
this.singularity = createMaterial( "material_singularity", MaterialType.SINGULARITY );
this.qESingularity = createMaterial( "material_quantum_entangled_singularity", MaterialType.QUANTUM_ENTANGLED_SINGULARITY );
this.blankPattern = createMaterial( "material_blank_pattern", MaterialType.BLANK_PATTERN );
this.fluidCell1kPart = createMaterial( "material_fluid_cell1k_part", MaterialType.FLUID_CELL1K_PART );
this.fluidCell4kPart = createMaterial( "material_fluid_cell4k_part", MaterialType.FLUID_CELL4K_PART );
this.fluidCell16kPart = createMaterial( "material_fluid_cell16k_part", MaterialType.FLUID_CELL16K_PART );
this.fluidCell64kPart = createMaterial( "material_fluid_cell64k_part", MaterialType.FLUID_CELL64K_PART );
}
this.calcProcessorPress = new DamagedItemDefinition( "material.press.processor.calculation", materials
.createMaterial( MaterialType.CALCULATION_PROCESSOR_PRESS ) );
this.engProcessorPress = new DamagedItemDefinition( "material.press.processor.engineering", materials
.createMaterial( MaterialType.ENGINEERING_PROCESSOR_PRESS ) );
this.logicProcessorPress = new DamagedItemDefinition( "material.press.processor.logic", materials
.createMaterial( MaterialType.LOGIC_PROCESSOR_PRESS ) );
this.siliconPress = new DamagedItemDefinition( "material.press.silicon", materials.createMaterial( MaterialType.SILICON_PRESS ) );
this.namePress = new DamagedItemDefinition( "material.press.name", materials.createMaterial( MaterialType.NAME_PRESS ) );
private IItemDefinition createMaterial(String id, final MaterialType mat)
{
Preconditions.checkState( !mat.isRegistered(), "Cannot create the same material twice." );
this.calcProcessorPrint = new DamagedItemDefinition( "material.print.processor.calculation", materials
.createMaterial( MaterialType.CALCULATION_PROCESSOR_PRINT ) );
this.engProcessorPrint = new DamagedItemDefinition( "material.print.processor.engineering", materials
.createMaterial( MaterialType.ENGINEERING_PROCESSOR_PRINT ) );
this.logicProcessorPrint = new DamagedItemDefinition( "material.print.processor.logic", materials
.createMaterial( MaterialType.LOGIC_PROCESSOR_PRINT ) );
this.siliconPrint = new DamagedItemDefinition( "material.print.silicon", materials.createMaterial( MaterialType.SILICON_PRINT ) );
IItemDefinition def = registry.item(id, props -> new ItemMaterial(props, mat))
.features(mat.getFeature().toArray(new AEFeature[0]))
.build();
this.logicProcessor = new DamagedItemDefinition( "material.processor.logic", materials.createMaterial( MaterialType.LOGIC_PROCESSOR ) );
this.calcProcessor = new DamagedItemDefinition( "material.processor.calculation", materials.createMaterial( MaterialType.CALCULATION_PROCESSOR ) );
this.engProcessor = new DamagedItemDefinition( "material.processor.engineering", materials.createMaterial( MaterialType.ENGINEERING_PROCESSOR ) );
boolean enabled = true;
this.basicCard = new DamagedItemDefinition( "material.card.basic", materials.createMaterial( MaterialType.BASIC_CARD ) );
this.advCard = new DamagedItemDefinition( "material.card.advanced", materials.createMaterial( MaterialType.ADVANCED_CARD ) );
for( final AEFeature f : mat.getFeature() )
{
enabled = enabled && AEConfig.instance().isFeatureEnabled( f );
}
this.purifiedCertusQuartzCrystal = new DamagedItemDefinition( "material.crystal.quartz.certus.purified", materials
.createMaterial( MaterialType.PURIFIED_CERTUS_QUARTZ_CRYSTAL ) );
this.purifiedNetherQuartzCrystal = new DamagedItemDefinition( "material.crystal.quartz.nether.purified", materials
.createMaterial( MaterialType.PURIFIED_NETHER_QUARTZ_CRYSTAL ) );
this.purifiedFluixCrystal = new DamagedItemDefinition( "material.crystal.fluix.purified", materials
.createMaterial( MaterialType.PURIFIED_FLUIX_CRYSTAL ) );
this.cell1kPart = new DamagedItemDefinition( "material.cell.storage.1k", materials.createMaterial( MaterialType.CELL1K_PART ) );
this.cell4kPart = new DamagedItemDefinition( "material.cell.storage.4k", materials.createMaterial( MaterialType.CELL4K_PART ) );
this.cell16kPart = new DamagedItemDefinition( "material.cell.storage.16k", materials.createMaterial( MaterialType.CELL16K_PART ) );
this.cell64kPart = new DamagedItemDefinition( "material.cell.storage.64k", materials.createMaterial( MaterialType.CELL64K_PART ) );
this.emptyStorageCell = new DamagedItemDefinition( "material.cell.storage.empty", materials.createMaterial( MaterialType.EMPTY_STORAGE_CELL ) );
this.cardRedstone = new DamagedItemDefinition( "material.card.redstone", materials.createMaterial( MaterialType.CARD_REDSTONE ) );
this.cardSpeed = new DamagedItemDefinition( "material.card.acceleration", materials.createMaterial( MaterialType.CARD_SPEED ) );
this.cardCapacity = new DamagedItemDefinition( "material.card.capacity", materials.createMaterial( MaterialType.CARD_CAPACITY ) );
this.cardFuzzy = new DamagedItemDefinition( "material.card.fuzzy", materials.createMaterial( MaterialType.CARD_FUZZY ) );
this.cardInverter = new DamagedItemDefinition( "material.card.inverter", materials.createMaterial( MaterialType.CARD_INVERTER ) );
this.cardCrafting = new DamagedItemDefinition( "material.card.crafting", materials.createMaterial( MaterialType.CARD_CRAFTING ) );
this.enderDust = new DamagedItemDefinition( "material.dust.ender", materials.createMaterial( MaterialType.ENDER_DUST ) );
this.flour = new DamagedItemDefinition( "material.flour", materials.createMaterial( MaterialType.FLOUR ) );
this.goldDust = new DamagedItemDefinition( "material.dust.gold", materials.createMaterial( MaterialType.GOLD_DUST ) );
this.ironDust = new DamagedItemDefinition( "material.dust.iron", materials.createMaterial( MaterialType.IRON_DUST ) );
this.fluixDust = new DamagedItemDefinition( "material.dust.fluix", materials.createMaterial( MaterialType.FLUIX_DUST ) );
this.certusQuartzDust = new DamagedItemDefinition( "material.dust.quartz.certus", materials.createMaterial( MaterialType.CERTUS_QUARTZ_DUST ) );
this.netherQuartzDust = new DamagedItemDefinition( "material.dust.quartz.nether", materials.createMaterial( MaterialType.NETHER_QUARTZ_DUST ) );
this.matterBall = new DamagedItemDefinition( "material.ammo.matter_ball", materials.createMaterial( MaterialType.MATTER_BALL ) );
this.certusQuartzCrystal = new DamagedItemDefinition( "material.crystal.quartz.certus", materials
.createMaterial( MaterialType.CERTUS_QUARTZ_CRYSTAL ) );
this.certusQuartzCrystalCharged = new DamagedItemDefinition( "material.crystal.quartz.certus.charged", materials
.createMaterial( MaterialType.CERTUS_QUARTZ_CRYSTAL_CHARGED ) );
this.fluixCrystal = new DamagedItemDefinition( "material.crystal.fluix", materials.createMaterial( MaterialType.FLUIX_CRYSTAL ) );
this.fluixPearl = new DamagedItemDefinition( "material.pearl.fluix", materials.createMaterial( MaterialType.FLUIX_PEARL ) );
this.woodenGear = new DamagedItemDefinition( "material.gear.wooden", materials.createMaterial( MaterialType.WOODEN_GEAR ) );
this.wirelessReceiver = new DamagedItemDefinition( "material.wireless.receiver", materials.createMaterial( MaterialType.WIRELESS ) );
this.wirelessBooster = new DamagedItemDefinition( "material.wireless.booster", materials.createMaterial( MaterialType.WIRELESS_BOOSTER ) );
this.annihilationCore = new DamagedItemDefinition( "material.core.annihilation", materials.createMaterial( MaterialType.ANNIHILATION_CORE ) );
this.formationCore = new DamagedItemDefinition( "material.core.formation", materials.createMaterial( MaterialType.FORMATION_CORE ) );
this.singularity = new DamagedItemDefinition( "material.singularity", materials.createMaterial( MaterialType.SINGULARITY ) );
this.qESingularity = new DamagedItemDefinition( "material.singularity.entangled.quantum", materials
.createMaterial( MaterialType.QUANTUM_ENTANGLED_SINGULARITY ) );
this.blankPattern = new DamagedItemDefinition( "material.pattern.blank", materials.createMaterial( MaterialType.BLANK_PATTERN ) );
this.fluidCell1kPart = new DamagedItemDefinition( "material.cell.storage.1k", materials.createMaterial( MaterialType.FLUID_CELL1K_PART ) );
this.fluidCell4kPart = new DamagedItemDefinition( "material.cell.storage.4k", materials.createMaterial( MaterialType.FLUID_CELL4K_PART ) );
this.fluidCell16kPart = new DamagedItemDefinition( "material.cell.storage.16k", materials.createMaterial( MaterialType.FLUID_CELL16K_PART ) );
this.fluidCell64kPart = new DamagedItemDefinition( "material.cell.storage.64k", materials.createMaterial( MaterialType.FLUID_CELL64K_PART ) );
mat.setStackSrc( new MaterialStackSrc( mat, enabled ) );
mat.setItemInstance( def.item() );
mat.markReady();
return def;
}
@Override