diff --git a/src/main/java/appeng/bootstrap/FeatureFactory.java b/src/main/java/appeng/bootstrap/FeatureFactory.java index fa70a8707..11fe614ed 100644 --- a/src/main/java/appeng/bootstrap/FeatureFactory.java +++ b/src/main/java/appeng/bootstrap/FeatureFactory.java @@ -114,7 +114,7 @@ public class FeatureFactory return new TileEntityBuilder<>( this, id, teClass, factory ).features( this.defaultFeatures ); } - public AEColoredItemDefinition colored( IItemDefinition target, int offset ) + public AEColoredItemDefinition colored( IItemDefinition target ) { ColoredItemDefinition definition = new ColoredItemDefinition(); diff --git a/src/main/java/appeng/bootstrap/IModelRegistry.java b/src/main/java/appeng/bootstrap/IModelRegistry.java index 5250aceed..e463ef316 100644 --- a/src/main/java/appeng/bootstrap/IModelRegistry.java +++ b/src/main/java/appeng/bootstrap/IModelRegistry.java @@ -32,6 +32,4 @@ public interface IModelRegistry void setCustomModelResourceLocation( Item item, int metadata, ModelResourceLocation model ); // FIXME void setCustomMeshDefinition( Item item, ItemMeshDefinition meshDefinition ); - - // FIXME void setCustomStateMapper( Block block, IStateMapper mapper ); } diff --git a/src/main/java/appeng/client/render/model/BiometricCardModel.java b/src/main/java/appeng/client/render/model/BiometricCardModel.java index a4bd61af3..032edd723 100644 --- a/src/main/java/appeng/client/render/model/BiometricCardModel.java +++ b/src/main/java/appeng/client/render/model/BiometricCardModel.java @@ -26,8 +26,8 @@ import net.minecraftforge.client.model.geometry.IModelGeometry; public class BiometricCardModel implements IModelGeometry { - private static final ResourceLocation MODEL_BASE = new ResourceLocation( AppEng.MOD_ID, "item/biometric_card" ); - private static final Material TEXTURE = new Material( AtlasTexture.LOCATION_BLOCKS_TEXTURE, new ResourceLocation( AppEng.MOD_ID, "items/biometric_card_hash" ) ); + public static final ResourceLocation MODEL_BASE = new ResourceLocation( AppEng.MOD_ID, "item/biometric_card_base" ); + private static final Material TEXTURE = new Material( AtlasTexture.LOCATION_BLOCKS_TEXTURE, new ResourceLocation( AppEng.MOD_ID, "item/biometric_card_hash" ) ); @Override public Collection getTextures( IModelConfiguration owner, Function modelGetter, Set> missingTextureErrors ) diff --git a/src/main/java/appeng/client/render/model/ColorApplicatorModel.java b/src/main/java/appeng/client/render/model/ColorApplicatorModel.java index 4f37e50ed..a9a7a9ef7 100644 --- a/src/main/java/appeng/client/render/model/ColorApplicatorModel.java +++ b/src/main/java/appeng/client/render/model/ColorApplicatorModel.java @@ -30,9 +30,9 @@ public class ColorApplicatorModel implements IModelGeometry getTextures(IModelConfiguration owner, Function modelGetter, Set> missingTextureErrors) { diff --git a/src/main/java/appeng/client/render/model/MemoryCardModel.java b/src/main/java/appeng/client/render/model/MemoryCardModel.java index e96626dc0..5305244d0 100644 --- a/src/main/java/appeng/client/render/model/MemoryCardModel.java +++ b/src/main/java/appeng/client/render/model/MemoryCardModel.java @@ -25,8 +25,8 @@ import net.minecraftforge.client.model.geometry.IModelGeometry; public class MemoryCardModel implements IModelGeometry { - private static final ResourceLocation MODEL_BASE = new ResourceLocation( AppEng.MOD_ID, "item/memory_card" ); - private static final Material TEXTURE = new Material( AtlasTexture.LOCATION_BLOCKS_TEXTURE, new ResourceLocation( AppEng.MOD_ID, "items/memory_card_hash" ) ); + public static final ResourceLocation MODEL_BASE = new ResourceLocation( AppEng.MOD_ID, "item/memory_card_base" ); + private static final Material TEXTURE = new Material( AtlasTexture.LOCATION_BLOCKS_TEXTURE, new ResourceLocation( AppEng.MOD_ID, "item/memory_card_hash" ) ); @Override public Collection getTextures( IModelConfiguration owner, Function modelGetter, Set> missingTextureErrors ) diff --git a/src/main/java/appeng/core/Registration.java b/src/main/java/appeng/core/Registration.java index cf0023b9e..efdc1b3b2 100644 --- a/src/main/java/appeng/core/Registration.java +++ b/src/main/java/appeng/core/Registration.java @@ -72,6 +72,8 @@ import appeng.client.gui.implementations.GuiVibrationChamber; import appeng.client.gui.implementations.GuiWireless; import appeng.client.gui.implementations.GuiWirelessTerm; import appeng.client.render.effects.*; +import appeng.client.render.model.BiometricCardModel; +import appeng.client.render.model.MemoryCardModel; import appeng.client.render.model.SkyCompassModel; import appeng.client.render.tesr.SkyChestTESR; import appeng.container.AEBaseContainer; @@ -246,10 +248,7 @@ final class Registration @OnlyIn( Dist.CLIENT ) public void modelRegistryEvent( ModelRegistryEvent event ) { - // Sky compass parts - for (ResourceLocation dependency : SkyCompassModel.DEPENDENCIES) { - ModelLoader.addSpecialModel(dependency); - } + registerSpecialModels(); // TODO: Do not use the internal API final ApiDefinitions definitions = Api.INSTANCE.definitions(); @@ -270,6 +269,18 @@ final class Registration definitions.getRegistry().getBootstrapComponents( IModelRegistrationComponent.class ).forEachRemaining(b -> b.modelRegistration( dist, registry ) ); } + /** + * Registers any JSON model files with Minecraft that are not referenced via blockstates or item IDs + */ + @OnlyIn(Dist.CLIENT) + private void registerSpecialModels() { + for (ResourceLocation dependency : SkyCompassModel.DEPENDENCIES) { + ModelLoader.addSpecialModel(dependency); + } + ModelLoader.addSpecialModel(BiometricCardModel.MODEL_BASE); + ModelLoader.addSpecialModel(MemoryCardModel.MODEL_BASE); + } + public void registerBlocks( RegistryEvent.Register event ) { final IForgeRegistry registry = event.getRegistry(); diff --git a/src/main/java/appeng/core/api/definitions/ApiItems.java b/src/main/java/appeng/core/api/definitions/ApiItems.java index 61ac62366..92cf003fb 100644 --- a/src/main/java/appeng/core/api/definitions/ApiItems.java +++ b/src/main/java/appeng/core/api/definitions/ApiItems.java @@ -227,12 +227,10 @@ public final class ApiItems implements IItems this.biometricCard = registry.item( "biometric_card", ToolBiometricCard::new ) .props(props -> props.maxStackSize( 1 )) - .rendering( new ToolBiometricCardRendering() ) .features( AEFeature.SECURITY ) .build(); this.memoryCard = registry.item( "memory_card", ToolMemoryCard::new ) .props(props -> props.maxStackSize( 1 )) - .rendering( new ToolMemoryCardRendering() ) .features( AEFeature.MEMORY_CARD ) .build(); this.networkTool = registry.item( "network_tool", ToolNetworkTool::new ) @@ -295,13 +293,17 @@ public final class ApiItems implements IItems .rendering( new ItemEncodedPatternRendering() ) .build(); - IItemDefinition paintBall = registry.item( "paint_ball", ItemPaintBall::new ) + IItemDefinition paintBall = registry.item( "paint_ball", props -> new ItemPaintBall(props, false) ) .features( AEFeature.PAINT_BALLS ) .rendering( new ItemPaintBallRendering() ) .build(); // FIXME these are both wrong - this.coloredPaintBall = registry.colored( paintBall, 0 ); - this.coloredLumenPaintBall = registry.colored( paintBall, 20 ); + this.coloredPaintBall = registry.colored( paintBall ); + IItemDefinition lumenPaintBall = registry.item( "lumen_paint_ball", props -> new ItemPaintBall(props, true) ) + .features( AEFeature.PAINT_BALLS ) + .rendering( new ItemPaintBallRendering() ) + .build(); + this.coloredLumenPaintBall = registry.colored( lumenPaintBall ); FeatureFactory debugTools = registry.features( AEFeature.UNSUPPORTED_DEVELOPER_TOOLS, AEFeature.CREATIVE ); this.toolEraser = debugTools.item( "debug_eraser", ToolEraser::new ).build(); diff --git a/src/main/java/appeng/core/api/definitions/ApiMaterials.java b/src/main/java/appeng/core/api/definitions/ApiMaterials.java index e69c796fc..7195bd9ba 100644 --- a/src/main/java/appeng/core/api/definitions/ApiMaterials.java +++ b/src/main/java/appeng/core/api/definitions/ApiMaterials.java @@ -128,70 +128,70 @@ public final class ApiMaterials implements IMaterials .customize(builder -> builder.setTrackingRange(16).setUpdateInterval(4).setShouldReceiveVelocityUpdates(true)) .build(); - 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.cell2SpatialPart = createMaterial(MaterialType.CELL2_SPATIAL_PART ); + this.cell16SpatialPart = createMaterial(MaterialType.CELL16_SPATIAL_PART ); + this.cell128SpatialPart = createMaterial(MaterialType.CELL128_SPATIAL_PART ); + this.silicon = createMaterial(MaterialType.SILICON ); + this.skyDust = createMaterial(MaterialType.SKY_DUST ); + this.calcProcessorPress = createMaterial(MaterialType.CALCULATION_PROCESSOR_PRESS ); + this.engProcessorPress = createMaterial(MaterialType.ENGINEERING_PROCESSOR_PRESS ); + this.logicProcessorPress = createMaterial(MaterialType.LOGIC_PROCESSOR_PRESS ); + this.siliconPress = createMaterial(MaterialType.SILICON_PRESS ); + this.namePress = createMaterial(MaterialType.NAME_PRESS ); + this.calcProcessorPrint = createMaterial(MaterialType.CALCULATION_PROCESSOR_PRINT ); + this.engProcessorPrint = createMaterial(MaterialType.ENGINEERING_PROCESSOR_PRINT ); + this.logicProcessorPrint = createMaterial(MaterialType.LOGIC_PROCESSOR_PRINT ); + this.siliconPrint = createMaterial(MaterialType.SILICON_PRINT ); + this.logicProcessor = createMaterial(MaterialType.LOGIC_PROCESSOR ); + this.calcProcessor = createMaterial(MaterialType.CALCULATION_PROCESSOR ); + this.engProcessor = createMaterial(MaterialType.ENGINEERING_PROCESSOR ); + this.basicCard = createMaterial(MaterialType.BASIC_CARD ); + this.advCard = createMaterial(MaterialType.ADVANCED_CARD ); + this.purifiedCertusQuartzCrystal = createMaterial(MaterialType.PURIFIED_CERTUS_QUARTZ_CRYSTAL ); + this.purifiedNetherQuartzCrystal = createMaterial(MaterialType.PURIFIED_NETHER_QUARTZ_CRYSTAL ); + this.purifiedFluixCrystal = createMaterial(MaterialType.PURIFIED_FLUIX_CRYSTAL ); + this.cell1kPart = createMaterial(MaterialType.CELL1K_PART ); + this.cell4kPart = createMaterial(MaterialType.CELL4K_PART ); + this.cell16kPart = createMaterial(MaterialType.CELL16K_PART ); + this.cell64kPart = createMaterial(MaterialType.CELL64K_PART ); + this.emptyStorageCell = createMaterial(MaterialType.EMPTY_STORAGE_CELL ); + this.cardRedstone = createMaterial(MaterialType.CARD_REDSTONE ); + this.cardSpeed = createMaterial(MaterialType.CARD_SPEED ); + this.cardCapacity = createMaterial(MaterialType.CARD_CAPACITY ); + this.cardFuzzy = createMaterial(MaterialType.CARD_FUZZY ); + this.cardInverter = createMaterial(MaterialType.CARD_INVERTER ); + this.cardCrafting = createMaterial(MaterialType.CARD_CRAFTING ); + this.enderDust = createMaterial(MaterialType.ENDER_DUST ); + this.flour = createMaterial(MaterialType.FLOUR ); + this.goldDust = createMaterial(MaterialType.GOLD_DUST ); + this.ironDust = createMaterial(MaterialType.IRON_DUST ); + this.fluixDust = createMaterial(MaterialType.FLUIX_DUST ); + this.certusQuartzDust = createMaterial(MaterialType.CERTUS_QUARTZ_DUST ); + this.netherQuartzDust = createMaterial(MaterialType.NETHER_QUARTZ_DUST ); + this.matterBall = createMaterial(MaterialType.MATTER_BALL ); + this.certusQuartzCrystal = createMaterial(MaterialType.CERTUS_QUARTZ_CRYSTAL ); + this.certusQuartzCrystalCharged = createMaterial(MaterialType.CERTUS_QUARTZ_CRYSTAL_CHARGED ); + this.fluixCrystal = createMaterial(MaterialType.FLUIX_CRYSTAL ); + this.fluixPearl = createMaterial(MaterialType.FLUIX_PEARL ); + this.woodenGear = createMaterial(MaterialType.WOODEN_GEAR ); + this.wirelessReceiver = createMaterial(MaterialType.WIRELESS_RECEIVER); + this.wirelessBooster = createMaterial(MaterialType.WIRELESS_BOOSTER ); + this.annihilationCore = createMaterial(MaterialType.ANNIHILATION_CORE ); + this.formationCore = createMaterial(MaterialType.FORMATION_CORE ); + this.singularity = createMaterial(MaterialType.SINGULARITY ); + this.qESingularity = createMaterial(MaterialType.QUANTUM_ENTANGLED_SINGULARITY ); + this.blankPattern = createMaterial(MaterialType.BLANK_PATTERN ); + this.fluidCell1kPart = createMaterial(MaterialType.FLUID_CELL1K_PART ); + this.fluidCell4kPart = createMaterial(MaterialType.FLUID_CELL4K_PART ); + this.fluidCell16kPart = createMaterial(MaterialType.FLUID_CELL16K_PART ); + this.fluidCell64kPart = createMaterial(MaterialType.FLUID_CELL64K_PART ); } - private IItemDefinition createMaterial(String id, final MaterialType mat) + private IItemDefinition createMaterial(final MaterialType mat) { Preconditions.checkState( !mat.isRegistered(), "Cannot create the same material twice." ); - IItemDefinition def = registry.item(id, props -> new ItemMaterial(props, mat)) + IItemDefinition def = registry.item(mat.getId(), props -> new ItemMaterial(props, mat)) .features(mat.getFeature().toArray(new AEFeature[0])) .build(); diff --git a/src/main/java/appeng/core/features/TileDefinition.java b/src/main/java/appeng/core/features/TileDefinition.java index f717d33ad..2b1d218e1 100644 --- a/src/main/java/appeng/core/features/TileDefinition.java +++ b/src/main/java/appeng/core/features/TileDefinition.java @@ -34,22 +34,17 @@ import appeng.block.AEBaseTileBlock; public final class TileDefinition extends BlockDefinition implements ITileDefinition { + private final AEBaseTileBlock block; - private final Optional block; - - public TileDefinition( @Nonnull String registryName, AEBaseTileBlock block, BlockItem item, Set features ) + public TileDefinition( @Nonnull String registryName, AEBaseTileBlock block, BlockItem item, Set features ) { super( registryName, block, item, features ); - this.block = Optional.ofNullable( block ); + this.block = block; } @Override public Optional> maybeEntity() { - if (this.block.isPresent()) { - - } - - return this.block.map( block -> block.getTileEntityClass() ); + return Optional.of(this.block.getTileEntityClass()); } } diff --git a/src/main/java/appeng/items/materials/MaterialType.java b/src/main/java/appeng/items/materials/MaterialType.java index 06c0473d8..ef8d5698b 100644 --- a/src/main/java/appeng/items/materials/MaterialType.java +++ b/src/main/java/appeng/items/materials/MaterialType.java @@ -22,7 +22,6 @@ package appeng.items.materials; import java.util.EnumSet; import java.util.Set; -import net.minecraft.client.renderer.model.ModelResourceLocation; import net.minecraft.entity.Entity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -98,7 +97,7 @@ public enum MaterialType WOODEN_GEAR("material_wooden_gear", EnumSet.of( AEFeature.GRIND_STONE ), "gearWood" ), - WIRELESS("material_wireless", EnumSet.of( AEFeature.WIRELESS_ACCESS_TERMINAL ) ), + WIRELESS_RECEIVER("material_wireless_receiver", EnumSet.of( AEFeature.WIRELESS_ACCESS_TERMINAL ) ), WIRELESS_BOOSTER("material_wireless_booster", EnumSet.of( AEFeature.WIRELESS_ACCESS_TERMINAL ) ), FORMATION_CORE("material_formation_core", EnumSet.of( AEFeature.CORES ) ), @@ -119,7 +118,7 @@ public enum MaterialType FLUID_CELL64K_PART("material_fluid_cell64k_part", EnumSet.of( AEFeature.STORAGE_CELLS ) ); private final Set features; - private final ModelResourceLocation model; + private final ResourceLocation registryName; private Item itemInstance; // stack! private MaterialStackSrc stackSrc; @@ -127,33 +126,28 @@ public enum MaterialType private Class droppedEntity; private boolean isRegistered = false; - MaterialType(String modelName) - { - this(modelName, EnumSet.of( AEFeature.CORE ) ); - } - - MaterialType(String modelName, final Set features) + MaterialType(String id, final Set features) { this.features = features; - this.model = new ModelResourceLocation( new ResourceLocation( AppEng.MOD_ID, modelName ), "inventory" ); + this.registryName = new ResourceLocation( AppEng.MOD_ID, id); } - MaterialType(String modelName, final Set features, final Class c) + MaterialType(String id, final Set features, final Class c) { - this(modelName, features ); + this(id, features ); this.droppedEntity = c; } - MaterialType(String modelName, final Set features, final String oreDictionary, final Class c) + MaterialType(String id, final Set features, final String oreDictionary, final Class c) { - this(modelName, features ); + this(id, features ); this.oreName = oreDictionary; this.droppedEntity = c; } - MaterialType(String modelName, final Set features, final String oreDictionary) + MaterialType(String id, final Set features, final String oreDictionary) { - this(modelName, features ); + this(id, features ); this.oreName = oreDictionary; } @@ -212,9 +206,11 @@ public enum MaterialType this.stackSrc = stackSrc; } - public ModelResourceLocation getModel() + public String getId() { return registryName.getPath(); } + + public ResourceLocation getRegistryName() { - return this.model; + return this.registryName; } } diff --git a/src/main/java/appeng/items/misc/ItemCrystalSeed.java b/src/main/java/appeng/items/misc/ItemCrystalSeed.java index 9c9582a47..af58f2847 100644 --- a/src/main/java/appeng/items/misc/ItemCrystalSeed.java +++ b/src/main/java/appeng/items/misc/ItemCrystalSeed.java @@ -20,6 +20,7 @@ package appeng.items.misc; import appeng.api.implementations.items.IGrowableCrystal; +import appeng.core.AppEng; import appeng.core.localization.ButtonToolTips; import appeng.entity.EntityGrowingCrystal; import appeng.items.AEBaseItem; @@ -33,6 +34,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundNBT; import net.minecraft.util.IItemProvider; import net.minecraft.util.NonNullList; +import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.MathHelper; import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.StringTextComponent; @@ -68,6 +70,9 @@ public class ItemCrystalSeed extends AEBaseItem implements IGrowableCrystal public ItemCrystalSeed(Properties properties, IItemProvider grownItem) { super(properties); this.grownItem = Preconditions.checkNotNull(grownItem); + // Expose the growth of the seed to the model system + addPropertyOverride(new ResourceLocation("appliedenergistics2:growth"), + (is, w, p) -> getGrowthTicks(is) / (float) GROWTH_TICKS_REQUIRED); } @Nullable diff --git a/src/main/java/appeng/items/misc/ItemPaintBall.java b/src/main/java/appeng/items/misc/ItemPaintBall.java index 0fdf85644..f79c5c5a5 100644 --- a/src/main/java/appeng/items/misc/ItemPaintBall.java +++ b/src/main/java/appeng/items/misc/ItemPaintBall.java @@ -20,7 +20,6 @@ package appeng.items.misc; import appeng.api.util.AEColor; -import appeng.core.localization.GuiText; import appeng.items.AEBaseItem; import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemStack; @@ -34,13 +33,12 @@ public class ItemPaintBall extends AEBaseItem { private static final String TAG_COLOR = "c"; - private static final String TAG_LUMEN = "l"; - private static final ITextComponent LUMEN_PREFIX = new TranslationTextComponent(GuiText.Lumen.getTranslationKey()) - .appendText(" "); + private final boolean lumen; - public ItemPaintBall(Properties properties) { + public ItemPaintBall(Properties properties, boolean lumen) { super(properties); + this.lumen = lumen; } @Override @@ -53,12 +51,7 @@ public class ItemPaintBall extends AEBaseItem private ITextComponent getExtraName( final ItemStack is ) { - ITextComponent colorText = new TranslationTextComponent(this.getColor(is).translationKey); - if (isLumen(is)) { - return LUMEN_PREFIX.shallowCopy().appendSibling(colorText); - } else { - return colorText; - } + return new TranslationTextComponent(this.getColor(is).translationKey); } public AEColor getColor( final ItemStack is ) @@ -80,16 +73,9 @@ public class ItemPaintBall extends AEBaseItem return is; } - public boolean isLumen( final ItemStack is ) + public boolean isLumen() { - CompoundNBT tag = is.getTag(); - return tag != null && tag.getBoolean(TAG_LUMEN); - } - - public ItemStack setLumen( final ItemStack is, boolean lumen ) - { - is.getOrCreateTag().putBoolean(TAG_LUMEN, lumen); - return is; + return lumen; } @Override @@ -102,14 +88,6 @@ public class ItemPaintBall extends AEBaseItem itemStacks.add( setColor(new ItemStack( this ), c) ); } } - - for( final AEColor c : AEColor.values() ) - { - if( c != AEColor.TRANSPARENT ) - { - itemStacks.add( setLumen(setColor(new ItemStack( this ), c), true) ); - } - } } } diff --git a/src/main/java/appeng/items/misc/ItemPaintBallRendering.java b/src/main/java/appeng/items/misc/ItemPaintBallRendering.java index e176d065d..bb1f46afc 100644 --- a/src/main/java/appeng/items/misc/ItemPaintBallRendering.java +++ b/src/main/java/appeng/items/misc/ItemPaintBallRendering.java @@ -31,14 +31,10 @@ import appeng.bootstrap.ItemRenderingCustomizer; public class ItemPaintBallRendering extends ItemRenderingCustomizer { - private static final ModelResourceLocation MODEL_NORMAL = new ModelResourceLocation( "appliedenergistics2:paint_ball" ); - private static final ModelResourceLocation MODEL_SHIMMER = new ModelResourceLocation( "appliedenergistics2:paint_ball_shimmer" ); - @Override public void customize( IItemRendering rendering ) { rendering.color( ItemPaintBallRendering::getColorFromItemstack ); - rendering.variants( MODEL_NORMAL, MODEL_SHIMMER ); // FIXME rendering.meshDefinition( is -> ItemPaintBall.isLumen( is ) ? MODEL_SHIMMER : MODEL_NORMAL ); } @@ -47,7 +43,7 @@ public class ItemPaintBallRendering extends ItemRenderingCustomizer ItemPaintBall item = (ItemPaintBall) stack.getItem(); final AEColor col = item.getColor( stack ); - boolean lumen = item.isLumen(stack); + boolean lumen = item.isLumen(); final int colorValue = lumen ? col.mediumVariant : col.mediumVariant; final int r = ( colorValue >> 16 ) & 0xff; final int g = ( colorValue >> 8 ) & 0xff; diff --git a/src/main/java/appeng/items/parts/ItemPartRendering.java b/src/main/java/appeng/items/parts/ItemPartRendering.java index 4f02aed12..ee75e9910 100644 --- a/src/main/java/appeng/items/parts/ItemPartRendering.java +++ b/src/main/java/appeng/items/parts/ItemPartRendering.java @@ -66,15 +66,15 @@ public class ItemPartRendering extends ItemRenderingCustomizer .collect( Collectors.toList() ) ); // Register the built-in models for annihilation planes - ResourceLocation annihilationPlaneTexture = new ResourceLocation( AppEng.MOD_ID, "items/part/annihilation_plane" ); + ResourceLocation annihilationPlaneTexture = new ResourceLocation( AppEng.MOD_ID, "item/part/annihilation_plane" ); ResourceLocation annihilationPlaneOnTexture = new ResourceLocation( AppEng.MOD_ID, "parts/annihilation_plane_on" ); - ResourceLocation fluidAnnihilationPlaneTexture = new ResourceLocation( AppEng.MOD_ID, "items/part/fluid_annihilation_plane" ); + ResourceLocation fluidAnnihilationPlaneTexture = new ResourceLocation( AppEng.MOD_ID, "item/part/fluid_annihilation_plane" ); ResourceLocation fluidAnnihilationPlaneOnTexture = new ResourceLocation( AppEng.MOD_ID, "parts/fluid_annihilation_plane_on" ); - ResourceLocation identityAnnihilationPlaneTexture = new ResourceLocation( AppEng.MOD_ID, "items/part/identity_annihilation_plane" ); + ResourceLocation identityAnnihilationPlaneTexture = new ResourceLocation( AppEng.MOD_ID, "item/part/identity_annihilation_plane" ); ResourceLocation identityAnnihilationPlaneOnTexture = new ResourceLocation( AppEng.MOD_ID, "parts/identity_annihilation_plane_on" ); - ResourceLocation formationPlaneTexture = new ResourceLocation( AppEng.MOD_ID, "items/part/formation_plane" ); + ResourceLocation formationPlaneTexture = new ResourceLocation( AppEng.MOD_ID, "item/part/formation_plane" ); ResourceLocation formationPlaneOnTexture = new ResourceLocation( AppEng.MOD_ID, "parts/formation_plane_on" ); - ResourceLocation fluidFormationPlaneTexture = new ResourceLocation( AppEng.MOD_ID, "items/part/fluid_formation_plane" ); + ResourceLocation fluidFormationPlaneTexture = new ResourceLocation( AppEng.MOD_ID, "item/part/fluid_formation_plane" ); ResourceLocation fluidFormationPlaneOnTexture = new ResourceLocation( AppEng.MOD_ID, "parts/fluid_formation_plane_on" ); ResourceLocation sidesTexture = new ResourceLocation( AppEng.MOD_ID, "parts/plane_sides" ); ResourceLocation backTexture = new ResourceLocation( AppEng.MOD_ID, "parts/transition_plane_back" ); diff --git a/src/main/java/appeng/items/tools/ToolBiometricCardRendering.java b/src/main/java/appeng/items/tools/ToolBiometricCardRendering.java deleted file mode 100644 index 73d67b45a..000000000 --- a/src/main/java/appeng/items/tools/ToolBiometricCardRendering.java +++ /dev/null @@ -1,26 +0,0 @@ -package appeng.items.tools; - - -import net.minecraft.client.renderer.model.ModelResourceLocation; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import appeng.bootstrap.IItemRendering; -import appeng.bootstrap.ItemRenderingCustomizer; -import appeng.core.AppEng; - - -public class ToolBiometricCardRendering extends ItemRenderingCustomizer -{ - - private static final ResourceLocation MODEL = new ResourceLocation( AppEng.MOD_ID, "builtin/biometric_card" ); - - @Override - @OnlyIn( Dist.CLIENT ) - public void customize( IItemRendering rendering ) - { - // FIXME rendering.builtInModel( "models/item/builtin/biometric_card", new BiometricCardModel() ); - rendering.model( new ModelResourceLocation( MODEL, "inventory" ) ).variants( MODEL ); - } -} diff --git a/src/main/java/appeng/items/tools/ToolMemoryCardRendering.java b/src/main/java/appeng/items/tools/ToolMemoryCardRendering.java deleted file mode 100644 index 38189e811..000000000 --- a/src/main/java/appeng/items/tools/ToolMemoryCardRendering.java +++ /dev/null @@ -1,26 +0,0 @@ -package appeng.items.tools; - - -import net.minecraft.client.renderer.model.ModelResourceLocation; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import appeng.bootstrap.IItemRendering; -import appeng.bootstrap.ItemRenderingCustomizer; -import appeng.core.AppEng; - - -public class ToolMemoryCardRendering extends ItemRenderingCustomizer -{ - - private static final ResourceLocation MODEL = new ResourceLocation( AppEng.MOD_ID, "builtin/memory_card" ); - - @Override - @OnlyIn( Dist.CLIENT ) - public void customize( IItemRendering rendering ) - { - // FIXME rendering.builtInModel( "models/item/builtin/memory_card", new MemoryCardModel() ); - rendering.model( new ModelResourceLocation( MODEL, "inventory" ) ).variants( MODEL ); - } -} diff --git a/src/main/java/appeng/tile/misc/TilePaint.java b/src/main/java/appeng/tile/misc/TilePaint.java index f122298f8..481756a9d 100644 --- a/src/main/java/appeng/tile/misc/TilePaint.java +++ b/src/main/java/appeng/tile/misc/TilePaint.java @@ -258,7 +258,7 @@ public class TilePaint extends AEBaseTile final ItemPaintBall ipb = (ItemPaintBall) type.getItem(); final AEColor col = ipb.getColor( type ); - final boolean lit = ipb.isLumen( type ); + final boolean lit = ipb.isLumen(); if( this.dots == null ) { diff --git a/src/main/resources/assets/appliedenergistics2/models/item/biometric_card.json b/src/main/resources/assets/appliedenergistics2/models/item/biometric_card.json index 6fe327d12..99826cdeb 100644 --- a/src/main/resources/assets/appliedenergistics2/models/item/biometric_card.json +++ b/src/main/resources/assets/appliedenergistics2/models/item/biometric_card.json @@ -1,6 +1,3 @@ { - "parent": "item/generated", - "textures": { - "layer0": "appliedenergistics2:item/biometric_card" - } + "loader": "appliedenergistics2:biometric_card" } diff --git a/src/main/resources/assets/appliedenergistics2/models/item/biometric_card_base.json b/src/main/resources/assets/appliedenergistics2/models/item/biometric_card_base.json new file mode 100644 index 000000000..6fe327d12 --- /dev/null +++ b/src/main/resources/assets/appliedenergistics2/models/item/biometric_card_base.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "appliedenergistics2:item/biometric_card" + } +} diff --git a/src/main/resources/assets/appliedenergistics2/models/item/certus_crystal_seed.json b/src/main/resources/assets/appliedenergistics2/models/item/certus_crystal_seed.json index 2668d5a6b..0df0eaea9 100644 --- a/src/main/resources/assets/appliedenergistics2/models/item/certus_crystal_seed.json +++ b/src/main/resources/assets/appliedenergistics2/models/item/certus_crystal_seed.json @@ -3,5 +3,18 @@ "textures": { "layer0": "appliedenergistics2:item/crystal_seed_certus" }, - + "overrides": [ + { + "predicate": { + "appliedenergistics2:growth": 0.333 + }, + "model": "appliedenergistics2:item/certus_crystal_seed_2" + }, + { + "predicate": { + "appliedenergistics2:growth": 0.666 + }, + "model": "appliedenergistics2:item/certus_crystal_seed_3" + } + ] } diff --git a/src/main/resources/assets/appliedenergistics2/models/item/fluix_crystal_seed.json b/src/main/resources/assets/appliedenergistics2/models/item/fluix_crystal_seed.json index 676114a92..097c2f511 100644 --- a/src/main/resources/assets/appliedenergistics2/models/item/fluix_crystal_seed.json +++ b/src/main/resources/assets/appliedenergistics2/models/item/fluix_crystal_seed.json @@ -2,5 +2,19 @@ "parent": "item/generated", "textures": { "layer0": "appliedenergistics2:item/crystal_seed_fluix" - } + }, + "overrides": [ + { + "predicate": { + "appliedenergistics2:growth": 0.333 + }, + "model": "appliedenergistics2:item/fluix_crystal_seed_2" + }, + { + "predicate": { + "appliedenergistics2:growth": 0.666 + }, + "model": "appliedenergistics2:item/fluix_crystal_seed_3" + } + ] } diff --git a/src/main/resources/assets/appliedenergistics2/models/item/paint_ball_shimmer.json b/src/main/resources/assets/appliedenergistics2/models/item/lumen_paint_ball.json similarity index 100% rename from src/main/resources/assets/appliedenergistics2/models/item/paint_ball_shimmer.json rename to src/main/resources/assets/appliedenergistics2/models/item/lumen_paint_ball.json diff --git a/src/main/resources/assets/appliedenergistics2/models/item/material_wireless.json b/src/main/resources/assets/appliedenergistics2/models/item/material_wireless.json deleted file mode 100644 index bbbc9fb2b..000000000 --- a/src/main/resources/assets/appliedenergistics2/models/item/material_wireless.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "appliedenergistics2:item/material_wireless" - } -} diff --git a/src/main/resources/assets/appliedenergistics2/models/item/material_wireless_receiver.json b/src/main/resources/assets/appliedenergistics2/models/item/material_wireless_receiver.json new file mode 100644 index 000000000..e31226498 --- /dev/null +++ b/src/main/resources/assets/appliedenergistics2/models/item/material_wireless_receiver.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "appliedenergistics2:item/material_wireless_receiver" + } +} diff --git a/src/main/resources/assets/appliedenergistics2/models/item/memory_card.json b/src/main/resources/assets/appliedenergistics2/models/item/memory_card.json index d7f2c6f00..105ca4473 100644 --- a/src/main/resources/assets/appliedenergistics2/models/item/memory_card.json +++ b/src/main/resources/assets/appliedenergistics2/models/item/memory_card.json @@ -1,6 +1,3 @@ { - "parent": "item/generated", - "textures": { - "layer0": "appliedenergistics2:item/memory_card" - } + "loader": "appliedenergistics2:memory_card" } diff --git a/src/main/resources/assets/appliedenergistics2/models/item/memory_card_base.json b/src/main/resources/assets/appliedenergistics2/models/item/memory_card_base.json new file mode 100644 index 000000000..d7f2c6f00 --- /dev/null +++ b/src/main/resources/assets/appliedenergistics2/models/item/memory_card_base.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "appliedenergistics2:item/memory_card" + } +} diff --git a/src/main/resources/assets/appliedenergistics2/models/item/nether_crystal_seed.json b/src/main/resources/assets/appliedenergistics2/models/item/nether_crystal_seed.json deleted file mode 100644 index 1b5f25ac5..000000000 --- a/src/main/resources/assets/appliedenergistics2/models/item/nether_crystal_seed.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "appliedenergistics2:item/crystal_seed_nether" - } -} diff --git a/src/main/resources/assets/appliedenergistics2/models/item/nether_quartz_seed.json b/src/main/resources/assets/appliedenergistics2/models/item/nether_quartz_seed.json new file mode 100644 index 000000000..d6e6bfc69 --- /dev/null +++ b/src/main/resources/assets/appliedenergistics2/models/item/nether_quartz_seed.json @@ -0,0 +1,20 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "appliedenergistics2:item/crystal_seed_nether" + }, + "overrides": [ + { + "predicate": { + "appliedenergistics2:growth": 0.333 + }, + "model": "appliedenergistics2:item/nether_quartz_seed_2" + }, + { + "predicate": { + "appliedenergistics2:growth": 0.666 + }, + "model": "appliedenergistics2:item/nether_quartz_seed_3" + } + ] +} diff --git a/src/main/resources/assets/appliedenergistics2/models/item/nether_crystal_seed_2.json b/src/main/resources/assets/appliedenergistics2/models/item/nether_quartz_seed_2.json similarity index 100% rename from src/main/resources/assets/appliedenergistics2/models/item/nether_crystal_seed_2.json rename to src/main/resources/assets/appliedenergistics2/models/item/nether_quartz_seed_2.json diff --git a/src/main/resources/assets/appliedenergistics2/models/item/nether_crystal_seed_3.json b/src/main/resources/assets/appliedenergistics2/models/item/nether_quartz_seed_3.json similarity index 100% rename from src/main/resources/assets/appliedenergistics2/models/item/nether_crystal_seed_3.json rename to src/main/resources/assets/appliedenergistics2/models/item/nether_quartz_seed_3.json diff --git a/src/main/resources/assets/appliedenergistics2/textures/item/material_wireless.png b/src/main/resources/assets/appliedenergistics2/textures/item/material_wireless_receiver.png similarity index 100% rename from src/main/resources/assets/appliedenergistics2/textures/item/material_wireless.png rename to src/main/resources/assets/appliedenergistics2/textures/item/material_wireless_receiver.png