From 98e9faa2629f5fa50ed118bfa486a00c5b1bf07c Mon Sep 17 00:00:00 2001 From: Sebastian Hartte Date: Thu, 30 Jul 2020 22:08:19 +0200 Subject: [PATCH] Ported model dependency changes from Fabric 1.16. Made IChestLid sided. --- .../java/appeng/block/qnb/QnbFormedModel.java | 20 +++++---- .../client/render/BasicUnbakedModel.java | 42 +++++++++++++++++++ .../appeng/client/render/FacadeItemModel.java | 14 ++----- .../client/render/cablebus/CableBusModel.java | 26 ++++++------ .../cablebus/P2PTunnelFrequencyModel.java | 16 +++---- .../render/crafting/CraftingCubeModel.java | 16 +++---- .../render/model/BiometricCardModel.java | 21 +++++----- .../render/model/ColorApplicatorModel.java | 21 +++++----- .../client/render/model/DriveModel.java | 17 ++++---- .../client/render/model/GlassModel.java | 15 +++---- .../client/render/model/MemoryCardModel.java | 21 +++++----- .../client/render/model/SkyCompassModel.java | 19 +++------ .../render/spatial/SpatialPylonModel.java | 17 +++----- src/main/java/appeng/core/Registration.java | 8 ---- .../core/api/client/ApiCellModelRegistry.java | 8 ++-- .../appeng/parts/automation/PlaneModel.java | 17 +++----- .../tile/storage/SkyChestTileEntity.java | 3 ++ 17 files changed, 152 insertions(+), 149 deletions(-) create mode 100644 src/main/java/appeng/client/render/BasicUnbakedModel.java diff --git a/src/main/java/appeng/block/qnb/QnbFormedModel.java b/src/main/java/appeng/block/qnb/QnbFormedModel.java index d18e7c79f..ae8e60d38 100644 --- a/src/main/java/appeng/block/qnb/QnbFormedModel.java +++ b/src/main/java/appeng/block/qnb/QnbFormedModel.java @@ -1,26 +1,24 @@ - package appeng.block.qnb; import java.util.Collection; -import java.util.Set; import java.util.function.Function; +import java.util.stream.Stream; -import com.mojang.datafixers.util.Pair; +import com.google.common.collect.ImmutableSet; import net.minecraft.client.renderer.model.IBakedModel; import net.minecraft.client.renderer.model.IModelTransform; -import net.minecraft.client.renderer.model.IUnbakedModel; import net.minecraft.client.renderer.model.ItemOverrideList; import net.minecraft.client.renderer.model.ModelBakery; import net.minecraft.client.renderer.model.RenderMaterial; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.model.IModelConfiguration; -import net.minecraftforge.client.model.geometry.IModelGeometry; +import appeng.client.render.BasicUnbakedModel; import appeng.core.AppEng; -public class QnbFormedModel implements IModelGeometry { +public class QnbFormedModel implements BasicUnbakedModel { private static final ResourceLocation MODEL_RING = new ResourceLocation(AppEng.MOD_ID, "block/qnb/ring"); @@ -33,9 +31,13 @@ public class QnbFormedModel implements IModelGeometry { } @Override - public Collection getTextures(IModelConfiguration owner, - Function modelGetter, Set> missingTextureErrors) { - return QnbFormedBakedModel.getRequiredTextures(); + public Collection getModelDependencies() { + return ImmutableSet.of(MODEL_RING); + } + + @Override + public Stream getAdditionalTextures() { + return QnbFormedBakedModel.getRequiredTextures().stream(); } } diff --git a/src/main/java/appeng/client/render/BasicUnbakedModel.java b/src/main/java/appeng/client/render/BasicUnbakedModel.java new file mode 100644 index 000000000..a5258b15a --- /dev/null +++ b/src/main/java/appeng/client/render/BasicUnbakedModel.java @@ -0,0 +1,42 @@ +package appeng.client.render; + +import java.util.Collection; +import java.util.Collections; +import java.util.Set; +import java.util.function.Function; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import com.mojang.datafixers.util.Pair; + +import net.minecraft.client.renderer.model.IUnbakedModel; +import net.minecraft.client.renderer.model.RenderMaterial; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.model.IModelConfiguration; +import net.minecraftforge.client.model.geometry.IModelGeometry; + +/** + * An unbaked model that has standard models as a dependency and produces a + * custom baked model as a result. + */ +public interface BasicUnbakedModel> extends IModelGeometry { + + default Collection getModelDependencies() { + return Collections.emptyList(); + } + + default Stream getAdditionalTextures() { + return Stream.empty(); + } + + @Override + default Collection getTextures(IModelConfiguration owner, + Function unbakedModelGetter, + Set> unresolvedTextureReferences) { + return Stream.concat( + getModelDependencies().stream().map(unbakedModelGetter) + .flatMap(ubm -> ubm.getTextures(unbakedModelGetter, unresolvedTextureReferences).stream()), + getAdditionalTextures()).collect(Collectors.toList()); + } + +} diff --git a/src/main/java/appeng/client/render/FacadeItemModel.java b/src/main/java/appeng/client/render/FacadeItemModel.java index b07a9d75a..b73a56a9a 100644 --- a/src/main/java/appeng/client/render/FacadeItemModel.java +++ b/src/main/java/appeng/client/render/FacadeItemModel.java @@ -19,21 +19,17 @@ package appeng.client.render; import java.util.Collection; -import java.util.Set; +import java.util.Collections; import java.util.function.Function; -import com.mojang.datafixers.util.Pair; - import net.minecraft.client.renderer.model.IBakedModel; import net.minecraft.client.renderer.model.IModelTransform; -import net.minecraft.client.renderer.model.IUnbakedModel; import net.minecraft.client.renderer.model.ItemOverrideList; import net.minecraft.client.renderer.model.ModelBakery; import net.minecraft.client.renderer.model.RenderMaterial; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.model.IModelConfiguration; -import net.minecraftforge.client.model.geometry.IModelGeometry; import appeng.client.render.cablebus.FacadeBuilder; import appeng.core.AppEng; @@ -42,7 +38,7 @@ import appeng.core.AppEng; * The model class for facades. Since facades wrap existing models, they don't * declare any dependencies here other than the cable anchor. */ -public class FacadeItemModel implements IModelGeometry { +public class FacadeItemModel implements BasicUnbakedModel { // We use this to get the default item transforms and make our lives easier private static final ResourceLocation MODEL_BASE = new ResourceLocation(AppEng.MOD_ID, "item/facade_base"); @@ -58,9 +54,7 @@ public class FacadeItemModel implements IModelGeometry { } @Override - public Collection getTextures(IModelConfiguration owner, - Function modelGetter, Set> missingTextureErrors) { - return modelGetter.apply(MODEL_BASE).getTextures(modelGetter, missingTextureErrors); + public Collection getModelDependencies() { + return Collections.singleton(MODEL_BASE); } - } diff --git a/src/main/java/appeng/client/render/cablebus/CableBusModel.java b/src/main/java/appeng/client/render/cablebus/CableBusModel.java index e0bc1f10c..77ffad447 100644 --- a/src/main/java/appeng/client/render/cablebus/CableBusModel.java +++ b/src/main/java/appeng/client/render/cablebus/CableBusModel.java @@ -19,33 +19,30 @@ package appeng.client.render.cablebus; import java.util.Collection; -import java.util.Collections; import java.util.Map; -import java.util.Set; import java.util.function.Function; +import java.util.stream.Stream; import com.google.common.collect.ImmutableMap; -import com.mojang.datafixers.util.Pair; import net.minecraft.client.renderer.model.IBakedModel; import net.minecraft.client.renderer.model.IModelTransform; -import net.minecraft.client.renderer.model.IUnbakedModel; import net.minecraft.client.renderer.model.ItemOverrideList; import net.minecraft.client.renderer.model.ModelBakery; import net.minecraft.client.renderer.model.RenderMaterial; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.model.IModelConfiguration; -import net.minecraftforge.client.model.geometry.IModelGeometry; import appeng.api.util.AEColor; +import appeng.client.render.BasicUnbakedModel; import appeng.core.AELog; import appeng.core.features.registries.PartModels; /** * The built-in model for the cable bus block. */ -public class CableBusModel implements IModelGeometry { +public class CableBusModel implements BasicUnbakedModel { private final PartModels partModels; @@ -53,6 +50,17 @@ public class CableBusModel implements IModelGeometry { this.partModels = partModels; } + @Override + public Collection getModelDependencies() { + partModels.setInitialized(true); + return partModels.getModels(); + } + + @Override + public Stream getAdditionalTextures() { + return CableBuilder.getTextures().stream(); + } + @Override public IBakedModel bake(IModelConfiguration owner, ModelBakery bakery, Function spriteGetter, IModelTransform modelTransform, @@ -70,12 +78,6 @@ public class CableBusModel implements IModelGeometry { return new CableBusBakedModel(cableBuilder, facadeBuilder, partModels, particleTexture); } - @Override - public Collection getTextures(IModelConfiguration owner, - Function modelGetter, Set> missingTextureErrors) { - return Collections.unmodifiableList(CableBuilder.getTextures()); - } - private Map loadPartModels(ModelBakery bakery, Function spriteGetterIn, IModelTransform transformIn) { ImmutableMap.Builder result = ImmutableMap.builder(); diff --git a/src/main/java/appeng/client/render/cablebus/P2PTunnelFrequencyModel.java b/src/main/java/appeng/client/render/cablebus/P2PTunnelFrequencyModel.java index e5b03715d..1d45d9a80 100644 --- a/src/main/java/appeng/client/render/cablebus/P2PTunnelFrequencyModel.java +++ b/src/main/java/appeng/client/render/cablebus/P2PTunnelFrequencyModel.java @@ -1,15 +1,10 @@ package appeng.client.render.cablebus; -import java.util.Collection; -import java.util.Collections; -import java.util.Set; import java.util.function.Function; - -import com.mojang.datafixers.util.Pair; +import java.util.stream.Stream; import net.minecraft.client.renderer.model.IBakedModel; import net.minecraft.client.renderer.model.IModelTransform; -import net.minecraft.client.renderer.model.IUnbakedModel; import net.minecraft.client.renderer.model.ItemOverrideList; import net.minecraft.client.renderer.model.ModelBakery; import net.minecraft.client.renderer.model.RenderMaterial; @@ -17,11 +12,11 @@ import net.minecraft.client.renderer.texture.AtlasTexture; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.model.IModelConfiguration; -import net.minecraftforge.client.model.geometry.IModelGeometry; +import appeng.client.render.BasicUnbakedModel; import appeng.core.AppEng; -public class P2PTunnelFrequencyModel implements IModelGeometry { +public class P2PTunnelFrequencyModel implements BasicUnbakedModel { private static final RenderMaterial TEXTURE = new RenderMaterial(AtlasTexture.LOCATION_BLOCKS_TEXTURE, new ResourceLocation(AppEng.MOD_ID, "part/p2p_tunnel_frequency")); @@ -38,9 +33,8 @@ public class P2PTunnelFrequencyModel implements IModelGeometry getTextures(IModelConfiguration owner, - Function modelGetter, Set> missingTextureErrors) { - return Collections.singleton(TEXTURE); + public Stream getAdditionalTextures() { + return Stream.of(TEXTURE); } } diff --git a/src/main/java/appeng/client/render/crafting/CraftingCubeModel.java b/src/main/java/appeng/client/render/crafting/CraftingCubeModel.java index 4d9df844e..f02055180 100644 --- a/src/main/java/appeng/client/render/crafting/CraftingCubeModel.java +++ b/src/main/java/appeng/client/render/crafting/CraftingCubeModel.java @@ -18,16 +18,11 @@ package appeng.client.render.crafting; -import java.util.Collection; -import java.util.Set; import java.util.function.Function; - -import com.google.common.collect.ImmutableList; -import com.mojang.datafixers.util.Pair; +import java.util.stream.Stream; import net.minecraft.client.renderer.model.IBakedModel; import net.minecraft.client.renderer.model.IModelTransform; -import net.minecraft.client.renderer.model.IUnbakedModel; import net.minecraft.client.renderer.model.ItemOverrideList; import net.minecraft.client.renderer.model.ModelBakery; import net.minecraft.client.renderer.model.RenderMaterial; @@ -35,15 +30,15 @@ import net.minecraft.client.renderer.texture.AtlasTexture; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.model.IModelConfiguration; -import net.minecraftforge.client.model.geometry.IModelGeometry; import appeng.block.crafting.AbstractCraftingUnitBlock; +import appeng.client.render.BasicUnbakedModel; import appeng.core.AppEng; /** * The built-in model for the connected texture crafting cube. */ -class CraftingCubeModel implements IModelGeometry { +class CraftingCubeModel implements BasicUnbakedModel { private final static RenderMaterial RING_CORNER = texture("ring_corner"); private final static RenderMaterial RING_SIDE_HOR = texture("ring_side_hor"); @@ -67,9 +62,8 @@ class CraftingCubeModel implements IModelGeometry { } @Override - public Collection getTextures(IModelConfiguration owner, - Function modelGetter, Set> missingTextureErrors) { - return ImmutableList.of(RING_CORNER, RING_SIDE_HOR, RING_SIDE_VER, UNIT_BASE, LIGHT_BASE, ACCELERATOR_LIGHT, + public Stream getAdditionalTextures() { + return Stream.of(RING_CORNER, RING_SIDE_HOR, RING_SIDE_VER, UNIT_BASE, LIGHT_BASE, ACCELERATOR_LIGHT, STORAGE_1K_LIGHT, STORAGE_4K_LIGHT, STORAGE_16K_LIGHT, STORAGE_64K_LIGHT, MONITOR_BASE, MONITOR_LIGHT_DARK, MONITOR_LIGHT_MEDIUM, MONITOR_LIGHT_BRIGHT); } diff --git a/src/main/java/appeng/client/render/model/BiometricCardModel.java b/src/main/java/appeng/client/render/model/BiometricCardModel.java index 18a9e1cac..76366df4e 100644 --- a/src/main/java/appeng/client/render/model/BiometricCardModel.java +++ b/src/main/java/appeng/client/render/model/BiometricCardModel.java @@ -2,16 +2,13 @@ package appeng.client.render.model; import java.util.Collection; import java.util.Collections; -import java.util.Set; import java.util.function.Function; +import java.util.stream.Stream; import javax.annotation.Nullable; -import com.mojang.datafixers.util.Pair; - import net.minecraft.client.renderer.model.IBakedModel; import net.minecraft.client.renderer.model.IModelTransform; -import net.minecraft.client.renderer.model.IUnbakedModel; import net.minecraft.client.renderer.model.ItemOverrideList; import net.minecraft.client.renderer.model.ModelBakery; import net.minecraft.client.renderer.model.RenderMaterial; @@ -19,24 +16,28 @@ import net.minecraft.client.renderer.texture.AtlasTexture; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.model.IModelConfiguration; -import net.minecraftforge.client.model.geometry.IModelGeometry; +import appeng.client.render.BasicUnbakedModel; import appeng.core.AppEng; /** * Model wrapper for the biometric card item model, which combines a base card * layer with a "visual hash" of the player name */ -public class BiometricCardModel implements IModelGeometry { +public class BiometricCardModel implements BasicUnbakedModel { - public static final ResourceLocation MODEL_BASE = new ResourceLocation(AppEng.MOD_ID, "item/biometric_card_base"); + private static final ResourceLocation MODEL_BASE = new ResourceLocation(AppEng.MOD_ID, "item/biometric_card_base"); private static final RenderMaterial TEXTURE = new RenderMaterial(AtlasTexture.LOCATION_BLOCKS_TEXTURE, new ResourceLocation(AppEng.MOD_ID, "item/biometric_card_hash")); @Override - public Collection getTextures(IModelConfiguration owner, - Function modelGetter, Set> missingTextureErrors) { - return Collections.singleton(TEXTURE); + public Collection getModelDependencies() { + return Collections.singleton(MODEL_BASE); + } + + @Override + public Stream getAdditionalTextures() { + return Stream.of(TEXTURE); } @Nullable diff --git a/src/main/java/appeng/client/render/model/ColorApplicatorModel.java b/src/main/java/appeng/client/render/model/ColorApplicatorModel.java index 22e730afc..d9087eea8 100644 --- a/src/main/java/appeng/client/render/model/ColorApplicatorModel.java +++ b/src/main/java/appeng/client/render/model/ColorApplicatorModel.java @@ -1,15 +1,12 @@ package appeng.client.render.model; -import java.util.Arrays; import java.util.Collection; -import java.util.Set; +import java.util.Collections; import java.util.function.Function; - -import com.mojang.datafixers.util.Pair; +import java.util.stream.Stream; import net.minecraft.client.renderer.model.IBakedModel; import net.minecraft.client.renderer.model.IModelTransform; -import net.minecraft.client.renderer.model.IUnbakedModel; import net.minecraft.client.renderer.model.ItemOverrideList; import net.minecraft.client.renderer.model.ModelBakery; import net.minecraft.client.renderer.model.RenderMaterial; @@ -17,15 +14,15 @@ import net.minecraft.client.renderer.texture.AtlasTexture; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.model.IModelConfiguration; -import net.minecraftforge.client.model.geometry.IModelGeometry; +import appeng.client.render.BasicUnbakedModel; import appeng.core.AppEng; /** * A color applicator uses the base model, and extends it with additional layers * that are colored according to the selected color of the applicator. */ -public class ColorApplicatorModel implements IModelGeometry { +public class ColorApplicatorModel implements BasicUnbakedModel { private static final ResourceLocation MODEL_BASE = new ResourceLocation(AppEng.MOD_ID, "item/color_applicator_colored"); @@ -38,9 +35,13 @@ public class ColorApplicatorModel implements IModelGeometry getTextures(IModelConfiguration owner, - Function modelGetter, Set> missingTextureErrors) { - return Arrays.asList(TEXTURE_DARK, TEXTURE_MEDIUM, TEXTURE_DARK); + public Collection getModelDependencies() { + return Collections.singleton(MODEL_BASE); + } + + @Override + public Stream getAdditionalTextures() { + return Stream.of(TEXTURE_DARK, TEXTURE_MEDIUM, TEXTURE_DARK); } @Override diff --git a/src/main/java/appeng/client/render/model/DriveModel.java b/src/main/java/appeng/client/render/model/DriveModel.java index c43555078..5dfdc1bca 100644 --- a/src/main/java/appeng/client/render/model/DriveModel.java +++ b/src/main/java/appeng/client/render/model/DriveModel.java @@ -19,18 +19,15 @@ package appeng.client.render.model; import java.util.Collection; -import java.util.Collections; import java.util.IdentityHashMap; import java.util.Map; import java.util.Map.Entry; -import java.util.Set; import java.util.function.Function; -import com.mojang.datafixers.util.Pair; +import com.google.common.collect.ImmutableSet; import net.minecraft.client.renderer.model.IBakedModel; import net.minecraft.client.renderer.model.IModelTransform; -import net.minecraft.client.renderer.model.IUnbakedModel; import net.minecraft.client.renderer.model.ItemOverrideList; import net.minecraft.client.renderer.model.ModelBakery; import net.minecraft.client.renderer.model.RenderMaterial; @@ -39,12 +36,13 @@ import net.minecraft.item.Item; import net.minecraft.item.Items; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.model.IModelConfiguration; -import net.minecraftforge.client.model.geometry.IModelGeometry; import appeng.api.client.ICellModelRegistry; +import appeng.client.render.BasicUnbakedModel; import appeng.core.Api; +import appeng.core.api.client.ApiCellModelRegistry; -public class DriveModel implements IModelGeometry { +public class DriveModel implements BasicUnbakedModel { private static final ResourceLocation MODEL_BASE = new ResourceLocation( "appliedenergistics2:block/drive/drive_base"); @@ -73,9 +71,10 @@ public class DriveModel implements IModelGeometry { } @Override - public Collection getTextures(IModelConfiguration owner, - Function modelGetter, Set> missingTextureErrors) { - return Collections.emptyList(); + public Collection getModelDependencies() { + ICellModelRegistry cells = Api.instance().client().cells(); + return ImmutableSet.builder().add(cells.getDefaultModel()) + .addAll(ApiCellModelRegistry.getModels()).addAll(cells.models().values()).build(); } } diff --git a/src/main/java/appeng/client/render/model/GlassModel.java b/src/main/java/appeng/client/render/model/GlassModel.java index 503c51a7d..ee24c74e1 100644 --- a/src/main/java/appeng/client/render/model/GlassModel.java +++ b/src/main/java/appeng/client/render/model/GlassModel.java @@ -18,28 +18,26 @@ package appeng.client.render.model; -import java.util.Collection; -import java.util.Set; import java.util.function.Function; +import java.util.stream.Stream; import com.google.common.collect.ImmutableSet; -import com.mojang.datafixers.util.Pair; import net.minecraft.client.renderer.model.IBakedModel; import net.minecraft.client.renderer.model.IModelTransform; -import net.minecraft.client.renderer.model.IUnbakedModel; import net.minecraft.client.renderer.model.ItemOverrideList; import net.minecraft.client.renderer.model.ModelBakery; import net.minecraft.client.renderer.model.RenderMaterial; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.model.IModelConfiguration; -import net.minecraftforge.client.model.geometry.IModelGeometry; + +import appeng.client.render.BasicUnbakedModel; /** * Model class for the connected texture glass model. */ -public class GlassModel implements IModelGeometry { +public class GlassModel implements BasicUnbakedModel { @Override public IBakedModel bake(IModelConfiguration owner, ModelBakery bakery, @@ -49,12 +47,11 @@ public class GlassModel implements IModelGeometry { } @Override - public Collection getTextures(IModelConfiguration owner, - Function modelGetter, Set> missingTextureErrors) { + public Stream getAdditionalTextures() { return ImmutableSet .builder().add(GlassBakedModel.TEXTURE_A, GlassBakedModel.TEXTURE_B, GlassBakedModel.TEXTURE_C, GlassBakedModel.TEXTURE_D) - .add(GlassBakedModel.TEXTURES_FRAME).build(); + .add(GlassBakedModel.TEXTURES_FRAME).build().stream(); } } diff --git a/src/main/java/appeng/client/render/model/MemoryCardModel.java b/src/main/java/appeng/client/render/model/MemoryCardModel.java index 98cdb2115..f7140996b 100644 --- a/src/main/java/appeng/client/render/model/MemoryCardModel.java +++ b/src/main/java/appeng/client/render/model/MemoryCardModel.java @@ -2,16 +2,13 @@ package appeng.client.render.model; import java.util.Collection; import java.util.Collections; -import java.util.Set; import java.util.function.Function; +import java.util.stream.Stream; import javax.annotation.Nullable; -import com.mojang.datafixers.util.Pair; - import net.minecraft.client.renderer.model.IBakedModel; import net.minecraft.client.renderer.model.IModelTransform; -import net.minecraft.client.renderer.model.IUnbakedModel; import net.minecraft.client.renderer.model.ItemOverrideList; import net.minecraft.client.renderer.model.ModelBakery; import net.minecraft.client.renderer.model.RenderMaterial; @@ -19,24 +16,23 @@ import net.minecraft.client.renderer.texture.AtlasTexture; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.model.IModelConfiguration; -import net.minecraftforge.client.model.geometry.IModelGeometry; +import appeng.client.render.BasicUnbakedModel; import appeng.core.AppEng; /** * Model wrapper for the memory card item model, which combines a base card * layer with a "visual hash" of the part/tile. */ -public class MemoryCardModel implements IModelGeometry { +public class MemoryCardModel implements BasicUnbakedModel { - public static final ResourceLocation MODEL_BASE = new ResourceLocation(AppEng.MOD_ID, "item/memory_card_base"); + private static final ResourceLocation MODEL_BASE = new ResourceLocation(AppEng.MOD_ID, "item/memory_card_base"); private static final RenderMaterial TEXTURE = new RenderMaterial(AtlasTexture.LOCATION_BLOCKS_TEXTURE, new ResourceLocation(AppEng.MOD_ID, "item/memory_card_hash")); @Override - public Collection getTextures(IModelConfiguration owner, - Function modelGetter, Set> missingTextureErrors) { - return Collections.singleton(TEXTURE); + public Collection getModelDependencies() { + return Collections.singleton(MODEL_BASE); } @Nullable @@ -51,4 +47,9 @@ public class MemoryCardModel implements IModelGeometry { return new MemoryCardBakedModel(baseModel, texture); } + @Override + public Stream getAdditionalTextures() { + return Stream.of(TEXTURE); + } + } diff --git a/src/main/java/appeng/client/render/model/SkyCompassModel.java b/src/main/java/appeng/client/render/model/SkyCompassModel.java index 8d3dc4ec7..af49fc423 100644 --- a/src/main/java/appeng/client/render/model/SkyCompassModel.java +++ b/src/main/java/appeng/client/render/model/SkyCompassModel.java @@ -19,30 +19,26 @@ package appeng.client.render.model; import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.Set; import java.util.function.Function; -import com.google.common.collect.ImmutableList; -import com.mojang.datafixers.util.Pair; +import com.google.common.collect.ImmutableSet; import net.minecraft.client.renderer.model.IBakedModel; import net.minecraft.client.renderer.model.IModelTransform; -import net.minecraft.client.renderer.model.IUnbakedModel; import net.minecraft.client.renderer.model.ItemOverrideList; import net.minecraft.client.renderer.model.ModelBakery; import net.minecraft.client.renderer.model.RenderMaterial; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.model.IModelConfiguration; -import net.minecraftforge.client.model.geometry.IModelGeometry; + +import appeng.client.render.BasicUnbakedModel; /** * The parent model for the compass baked model. Declares the dependencies for * the base and pointer submodels mostly. */ -public class SkyCompassModel implements IModelGeometry { +public class SkyCompassModel implements BasicUnbakedModel { private static final ResourceLocation MODEL_BASE = new ResourceLocation( "appliedenergistics2:block/sky_compass_base"); @@ -50,8 +46,6 @@ public class SkyCompassModel implements IModelGeometry { private static final ResourceLocation MODEL_POINTER = new ResourceLocation( "appliedenergistics2:block/sky_compass_pointer"); - public static final List DEPENDENCIES = ImmutableList.of(MODEL_BASE, MODEL_POINTER); - @Override public IBakedModel bake(IModelConfiguration owner, ModelBakery bakery, Function spriteGetter, IModelTransform modelTransform, @@ -62,9 +56,8 @@ public class SkyCompassModel implements IModelGeometry { } @Override - public Collection getTextures(IModelConfiguration owner, - Function modelGetter, Set> missingTextureErrors) { - return Collections.emptyList(); + public Collection getModelDependencies() { + return ImmutableSet.of(MODEL_BASE, MODEL_POINTER); } } diff --git a/src/main/java/appeng/client/render/spatial/SpatialPylonModel.java b/src/main/java/appeng/client/render/spatial/SpatialPylonModel.java index 8581a4517..f999f6ebd 100644 --- a/src/main/java/appeng/client/render/spatial/SpatialPylonModel.java +++ b/src/main/java/appeng/client/render/spatial/SpatialPylonModel.java @@ -19,18 +19,13 @@ package appeng.client.render.spatial; import java.util.Arrays; -import java.util.Collection; import java.util.EnumMap; import java.util.Map; -import java.util.Set; import java.util.function.Function; -import java.util.stream.Collectors; - -import com.mojang.datafixers.util.Pair; +import java.util.stream.Stream; import net.minecraft.client.renderer.model.IBakedModel; import net.minecraft.client.renderer.model.IModelTransform; -import net.minecraft.client.renderer.model.IUnbakedModel; import net.minecraft.client.renderer.model.ItemOverrideList; import net.minecraft.client.renderer.model.ModelBakery; import net.minecraft.client.renderer.model.RenderMaterial; @@ -38,11 +33,11 @@ import net.minecraft.client.renderer.texture.AtlasTexture; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.model.IModelConfiguration; -import net.minecraftforge.client.model.geometry.IModelGeometry; +import appeng.client.render.BasicUnbakedModel; import appeng.core.AppEng; -public class SpatialPylonModel implements IModelGeometry { +public class SpatialPylonModel implements BasicUnbakedModel { @Override public IBakedModel bake(IModelConfiguration owner, ModelBakery bakery, @@ -58,10 +53,8 @@ public class SpatialPylonModel implements IModelGeometry { } @Override - public Collection getTextures(IModelConfiguration owner, - Function modelGetter, Set> missingTextureErrors) { - return Arrays.stream(SpatialPylonTextureType.values()).map(SpatialPylonModel::getTexturePath) - .collect(Collectors.toList()); + public Stream getAdditionalTextures() { + return Arrays.stream(SpatialPylonTextureType.values()).map(SpatialPylonModel::getTexturePath); } private static RenderMaterial getTexturePath(SpatialPylonTextureType type) { diff --git a/src/main/java/appeng/core/Registration.java b/src/main/java/appeng/core/Registration.java index d178b9a51..8bddf70e9 100644 --- a/src/main/java/appeng/core/Registration.java +++ b/src/main/java/appeng/core/Registration.java @@ -126,9 +126,6 @@ import appeng.client.render.effects.LightningFX; import appeng.client.render.effects.MatterCannonFX; import appeng.client.render.effects.ParticleTypes; import appeng.client.render.effects.VibrantFX; -import appeng.client.render.model.BiometricCardModel; -import appeng.client.render.model.MemoryCardModel; -import appeng.client.render.model.SkyCompassModel; import appeng.client.render.tesr.InscriberTESR; import appeng.client.render.tesr.SkyChestTESR; import appeng.container.AEBaseContainer; @@ -166,7 +163,6 @@ import appeng.container.implementations.UpgradeableContainer; import appeng.container.implementations.VibrationChamberContainer; import appeng.container.implementations.WirelessContainer; import appeng.container.implementations.WirelessTermContainer; -import appeng.core.api.client.ApiCellModelRegistry; import appeng.core.features.registries.P2PTunnelRegistry; import appeng.core.features.registries.PartModels; import appeng.core.features.registries.cell.BasicCellHandler; @@ -251,10 +247,6 @@ final class Registration { */ @OnlyIn(Dist.CLIENT) private void registerSpecialModels() { - SkyCompassModel.DEPENDENCIES.forEach(ModelLoader::addSpecialModel); - ModelLoader.addSpecialModel(BiometricCardModel.MODEL_BASE); - ModelLoader.addSpecialModel(MemoryCardModel.MODEL_BASE); - ApiCellModelRegistry.registerModels(); ModelLoader.addSpecialModel(MolecularAssemblerRenderer.LIGHTS_MODEL); PartModels partModels = (PartModels) Api.INSTANCE.registries().partModels(); diff --git a/src/main/java/appeng/core/api/client/ApiCellModelRegistry.java b/src/main/java/appeng/core/api/client/ApiCellModelRegistry.java index 837b61970..3178bb457 100644 --- a/src/main/java/appeng/core/api/client/ApiCellModelRegistry.java +++ b/src/main/java/appeng/core/api/client/ApiCellModelRegistry.java @@ -1,6 +1,6 @@ /* * This file is part of Applied Energistics 2. - * + * * Copyright (c) 2020, TeamAppliedEnergistics, All rights reserved. * * Applied Energistics 2 is free software: you can redistribute it and/or modify @@ -20,6 +20,7 @@ package appeng.core.api.client; import java.util.Arrays; +import java.util.Collection; import java.util.Collections; import java.util.IdentityHashMap; import java.util.Map; @@ -31,7 +32,6 @@ import com.google.common.base.Preconditions; import net.minecraft.item.Item; import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.model.ModelLoader; import appeng.api.client.ICellModelRegistry; import appeng.core.ApiDefinitions; @@ -67,8 +67,8 @@ public class ApiCellModelRegistry implements ICellModelRegistry { MODEL_CELL_ITEMS_1K, MODEL_CELL_ITEMS_4K, MODEL_CELL_ITEMS_16K, MODEL_CELL_ITEMS_64K, MODEL_CELL_FLUIDS_1K, MODEL_CELL_FLUIDS_4K, MODEL_CELL_FLUIDS_16K, MODEL_CELL_FLUIDS_64K, MODEL_CELL_CREATIVE }; - public static void registerModels() { - Arrays.stream(MODELS).forEach(ModelLoader::addSpecialModel); + public static Collection getModels() { + return Arrays.asList(MODELS); } private final Map registry; diff --git a/src/main/java/appeng/parts/automation/PlaneModel.java b/src/main/java/appeng/parts/automation/PlaneModel.java index a4819f482..790945bf6 100644 --- a/src/main/java/appeng/parts/automation/PlaneModel.java +++ b/src/main/java/appeng/parts/automation/PlaneModel.java @@ -18,16 +18,11 @@ package appeng.parts.automation; -import java.util.Arrays; -import java.util.Collection; -import java.util.Set; import java.util.function.Function; - -import com.mojang.datafixers.util.Pair; +import java.util.stream.Stream; import net.minecraft.client.renderer.model.IBakedModel; import net.minecraft.client.renderer.model.IModelTransform; -import net.minecraft.client.renderer.model.IUnbakedModel; import net.minecraft.client.renderer.model.ItemOverrideList; import net.minecraft.client.renderer.model.ModelBakery; import net.minecraft.client.renderer.model.RenderMaterial; @@ -35,12 +30,13 @@ import net.minecraft.client.renderer.texture.AtlasTexture; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.model.IModelConfiguration; -import net.minecraftforge.client.model.geometry.IModelGeometry; + +import appeng.client.render.BasicUnbakedModel; /** * Built-in model for annihilation planes that supports connected textures. */ -public class PlaneModel implements IModelGeometry { +public class PlaneModel implements BasicUnbakedModel { private final RenderMaterial frontTexture; private final RenderMaterial sidesTexture; @@ -64,9 +60,8 @@ public class PlaneModel implements IModelGeometry { } @Override - public Collection getTextures(IModelConfiguration owner, - Function modelGetter, Set> missingTextureErrors) { - return Arrays.asList(frontTexture, sidesTexture, backTexture); + public Stream getAdditionalTextures() { + return Stream.of(frontTexture, sidesTexture, backTexture); } } diff --git a/src/main/java/appeng/tile/storage/SkyChestTileEntity.java b/src/main/java/appeng/tile/storage/SkyChestTileEntity.java index be8ed037e..b427275f7 100644 --- a/src/main/java/appeng/tile/storage/SkyChestTileEntity.java +++ b/src/main/java/appeng/tile/storage/SkyChestTileEntity.java @@ -30,6 +30,8 @@ import net.minecraft.tileentity.TileEntityType; import net.minecraft.util.SoundCategory; import net.minecraft.util.SoundEvents; import net.minecraft.util.math.MathHelper; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.items.IItemHandler; import appeng.block.storage.SkyChestBlock; @@ -37,6 +39,7 @@ import appeng.tile.AEBaseInvTileEntity; import appeng.tile.inventory.AppEngInternalInventory; import appeng.util.inv.InvOperation; +@OnlyIn(value = Dist.CLIENT, _interface = IChestLid.class) public class SkyChestTileEntity extends AEBaseInvTileEntity implements ITickableTileEntity, IChestLid { private final AppEngInternalInventory inv = new AppEngInternalInventory(this, 9 * 4);