diff --git a/docs/content/Modpacks/Changes/v8.0.0.md b/docs/content/Modpacks/Changes/v8.0.0.md index 59b9b39bb30..8b858b77714 100644 --- a/docs/content/Modpacks/Changes/v8.0.0.md +++ b/docs/content/Modpacks/Changes/v8.0.0.md @@ -150,4 +150,14 @@ A few regexes for fixing all the MCMeta files is follows, run them in order: - Calling the battery buffer constructor with the following args gives the same behaviour as a charger machine: `(info, tier, inventorySize, BatteryBufferMachine.AMPS_PER_BATTERY_CHARGER, 0)` - Refactored Jade provider code. Use the `MachineInfoProvider` class for jade providers for a specific machine type, and `MachineTraitProvider` for providers for a specific machine trait. - `GTUtil.getMoltenFluid(Material)` has been moved to `Material.getHotFluid()`. -- `ICopyable::copyConfig`'s `CompoundTag` argument should now be mutated by reference instead of a new one returned (and thus, the return type has been changed to `void`). \ No newline at end of file +- `ICopyable::copyConfig`'s `CompoundTag` argument should now be mutated by reference instead of a new one returned (and thus, the return type has been changed to `void`). +- Runtime model generators (previously named `ArmorItemRenderer`, `TagPrefixItemRenderer`, `ToolItemRenderer`, `MaterialBlockRenderer`, `OreBlockRenderer`, and `SurfaceRockRenderer`) have been renamed and moved from various packages under `client.renderer` to their own package, `client.model.runtimegen`. + The classes' names are now as follows (all start with `com.gregtechceu.gtceu.client.`): + - `renderer.item.ArmorItemRenderer` -> `model.runtimegen.ArmorItemModelGenerator` + - `renderer.item.TagPrefixItemRenderer` -> `model.runtimegen.TagPrefixItemModelGenerator` + - `renderer.item.ToolItemRenderer` -> `model.runtimegen.ToolItemModelGenerator` + - `renderer.block.MaterialBlockRenderer` -> `model.runtimegen.MaterialBlockModelGenerator` + - `renderer.block.OreBlockRenderer` -> `model.runtimegen.OreBlockModelGenerator` + - `renderer.block.SurfaceRockRenderer` -> `model.runtimegen.SurfaceRockModelGenerator` + + The `#create` function common to all of them has also been renamed to `#add`. Simply changing the name is enough, as the functions' parameters weren't changed. \ No newline at end of file diff --git a/src/main/java/com/gregtechceu/gtceu/api/block/MaterialBlock.java b/src/main/java/com/gregtechceu/gtceu/api/block/MaterialBlock.java index 13f344e019b..c66e283a291 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/block/MaterialBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/api/block/MaterialBlock.java @@ -7,7 +7,7 @@ import com.gregtechceu.gtceu.api.item.PipeBlockItem; import com.gregtechceu.gtceu.api.item.tool.GTToolType; import com.gregtechceu.gtceu.api.item.tool.ToolHelper; -import com.gregtechceu.gtceu.client.renderer.block.MaterialBlockRenderer; +import com.gregtechceu.gtceu.client.model.runtimegen.MaterialBlockModelGenerator; import com.gregtechceu.gtceu.common.data.GTMaterials; import com.gregtechceu.gtceu.config.ConfigHolder; import com.gregtechceu.gtceu.data.recipe.VanillaRecipeHelper; @@ -62,17 +62,18 @@ public class MaterialBlock extends Block { public final TagPrefix tagPrefix; public final Material material; - public MaterialBlock(Properties properties, TagPrefix tagPrefix, Material material, boolean registerModel) { + public MaterialBlock(Properties properties, TagPrefix tagPrefix, Material material) { super(properties); this.material = material; this.tagPrefix = tagPrefix; - if (registerModel && GTCEu.isClientSide()) { - MaterialBlockRenderer.create(this, tagPrefix.materialIconType(), material.getMaterialIconSet()); - } } - public MaterialBlock(Properties properties, TagPrefix tagPrefix, Material material) { - this(properties, tagPrefix, material, true); + public static MaterialBlock createAndAddModel(Properties properties, TagPrefix tagPrefix, Material material) { + MaterialBlock block = new MaterialBlock(properties, tagPrefix, material); + if (GTCEu.isClientSide()) { + MaterialBlockModelGenerator.add(block, tagPrefix.materialIconType(), material.getMaterialIconSet()); + } + return block; } @OnlyIn(Dist.CLIENT) diff --git a/src/main/java/com/gregtechceu/gtceu/api/block/OreBlock.java b/src/main/java/com/gregtechceu/gtceu/api/block/OreBlock.java index 9a12a21339d..25d5b20a528 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/block/OreBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/api/block/OreBlock.java @@ -3,7 +3,7 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.tag.TagPrefix; -import com.gregtechceu.gtceu.client.renderer.block.OreBlockRenderer; +import com.gregtechceu.gtceu.client.model.runtimegen.OreBlockModelGenerator; import com.gregtechceu.gtceu.config.ConfigHolder; import com.gregtechceu.gtceu.integration.map.cache.server.ServerCache; @@ -19,9 +19,9 @@ public class OreBlock extends MaterialBlock { public OreBlock(Properties properties, TagPrefix tagPrefix, Material material) { - super(properties, tagPrefix, material, false); + super(properties, tagPrefix, material); if (GTCEu.isClientSide()) { - OreBlockRenderer.create(this); + OreBlockModelGenerator.add(this); } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/block/RendererMaterialBlock.java b/src/main/java/com/gregtechceu/gtceu/api/block/RendererMaterialBlock.java index ddd25dd4e5c..17e27f4ac1f 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/block/RendererMaterialBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/api/block/RendererMaterialBlock.java @@ -18,7 +18,7 @@ public class RendererMaterialBlock extends MaterialBlock implements IBlockRender public RendererMaterialBlock(Properties properties, TagPrefix tagPrefix, Material material, @Nullable IRenderer renderer) { - super(properties, tagPrefix, material, false); + super(properties, tagPrefix, material); this.renderer = renderer; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/tag/TagPrefix.java b/src/main/java/com/gregtechceu/gtceu/api/data/tag/TagPrefix.java index c438c7e0167..cdc28a22ac9 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/tag/TagPrefix.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/tag/TagPrefix.java @@ -1010,7 +1010,7 @@ public record BlockProperties(Supplier> renderType, private boolean generateBlock; @Getter @Setter - private BlockConstructor blockConstructor = MaterialBlock::new; + private BlockConstructor blockConstructor = MaterialBlock::createAndAddModel; @Getter @Setter private BlockItemConstructor blockItemConstructor = MaterialBlockItem::new; diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/TagPrefixItem.java b/src/main/java/com/gregtechceu/gtceu/api/item/TagPrefixItem.java index 7a201d29084..384ca0c937a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/TagPrefixItem.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/TagPrefixItem.java @@ -7,7 +7,7 @@ import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; import com.gregtechceu.gtceu.api.data.tag.TagPrefix; import com.gregtechceu.gtceu.api.item.armor.ArmorComponentItem; -import com.gregtechceu.gtceu.client.renderer.item.TagPrefixItemRenderer; +import com.gregtechceu.gtceu.client.model.runtimegen.TagPrefixItemModelGenerator; import com.gregtechceu.gtceu.common.data.GTDamageTypes; import net.minecraft.MethodsReturnNonnullByDefault; @@ -42,7 +42,7 @@ public TagPrefixItem(Properties properties, TagPrefix tagPrefix, Material materi this.tagPrefix = tagPrefix; this.material = material; if (GTCEu.isClientSide()) { - TagPrefixItemRenderer.create(this, tagPrefix.materialIconType(), material.getMaterialIconSet()); + TagPrefixItemModelGenerator.add(this, tagPrefix.materialIconType(), material.getMaterialIconSet()); } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/tool/GTAxeItem.java b/src/main/java/com/gregtechceu/gtceu/api/item/tool/GTAxeItem.java index 348027ec7b4..66a43bcc7ac 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/tool/GTAxeItem.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/tool/GTAxeItem.java @@ -4,7 +4,7 @@ import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.item.IGTTool; import com.gregtechceu.gtceu.api.sound.SoundEntry; -import com.gregtechceu.gtceu.client.renderer.item.ToolItemRenderer; +import com.gregtechceu.gtceu.client.model.runtimegen.ToolItemModelGenerator; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; @@ -54,7 +54,7 @@ public GTAxeItem(GTToolType toolType, MaterialToolTier tier, Material material, this.electricTier = toolType.electricTier; this.toolStats = toolStats; if (GTCEu.isClientSide()) { - ToolItemRenderer.create(this, toolType); + ToolItemModelGenerator.add(this, toolType); } definition$init(); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/tool/GTHoeItem.java b/src/main/java/com/gregtechceu/gtceu/api/item/tool/GTHoeItem.java index ffa99acbd8f..fbf0ddc1a9f 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/tool/GTHoeItem.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/tool/GTHoeItem.java @@ -4,7 +4,7 @@ import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.item.IGTTool; import com.gregtechceu.gtceu.api.sound.SoundEntry; -import com.gregtechceu.gtceu.client.renderer.item.ToolItemRenderer; +import com.gregtechceu.gtceu.client.model.runtimegen.ToolItemModelGenerator; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; @@ -54,7 +54,7 @@ public GTHoeItem(GTToolType toolType, MaterialToolTier tier, Material material, this.electricTier = toolType.electricTier; this.toolStats = toolStats; if (GTCEu.isClientSide()) { - ToolItemRenderer.create(this, toolType); + ToolItemModelGenerator.add(this, toolType); } definition$init(); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/tool/GTShovelItem.java b/src/main/java/com/gregtechceu/gtceu/api/item/tool/GTShovelItem.java index dfe9bf84a2d..933f0e1a5e9 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/tool/GTShovelItem.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/tool/GTShovelItem.java @@ -4,7 +4,7 @@ import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.item.IGTTool; import com.gregtechceu.gtceu.api.sound.SoundEntry; -import com.gregtechceu.gtceu.client.renderer.item.ToolItemRenderer; +import com.gregtechceu.gtceu.client.model.runtimegen.ToolItemModelGenerator; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; @@ -54,7 +54,7 @@ public GTShovelItem(GTToolType toolType, MaterialToolTier tier, Material materia this.electricTier = toolType.electricTier; this.toolStats = toolStats; if (GTCEu.isClientSide()) { - ToolItemRenderer.create(this, toolType); + ToolItemModelGenerator.add(this, toolType); } definition$init(); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/tool/GTSwordItem.java b/src/main/java/com/gregtechceu/gtceu/api/item/tool/GTSwordItem.java index 566a38ecaae..3ea07d987f4 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/tool/GTSwordItem.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/tool/GTSwordItem.java @@ -4,7 +4,7 @@ import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.item.IGTTool; import com.gregtechceu.gtceu.api.sound.SoundEntry; -import com.gregtechceu.gtceu.client.renderer.item.ToolItemRenderer; +import com.gregtechceu.gtceu.client.model.runtimegen.ToolItemModelGenerator; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; @@ -54,7 +54,7 @@ public GTSwordItem(GTToolType toolType, MaterialToolTier tier, Material material this.electricTier = toolType.electricTier; this.toolStats = toolStats; if (GTCEu.isClientSide()) { - ToolItemRenderer.create(this, toolType); + ToolItemModelGenerator.add(this, toolType); } definition$init(); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/tool/GTToolItem.java b/src/main/java/com/gregtechceu/gtceu/api/item/tool/GTToolItem.java index 6b7381071f1..48ae8b800c1 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/tool/GTToolItem.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/tool/GTToolItem.java @@ -5,7 +5,7 @@ import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialFlags; import com.gregtechceu.gtceu.api.item.IGTTool; import com.gregtechceu.gtceu.api.sound.SoundEntry; -import com.gregtechceu.gtceu.client.renderer.item.ToolItemRenderer; +import com.gregtechceu.gtceu.client.model.runtimegen.ToolItemModelGenerator; import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; @@ -61,7 +61,7 @@ public GTToolItem(GTToolType toolType, MaterialToolTier tier, Material material, this.electricTier = toolType.electricTier; this.toolStats = definition; if (GTCEu.isClientSide()) { - ToolItemRenderer.create(this, toolType); + ToolItemModelGenerator.add(this, toolType); } definition$init(); } diff --git a/src/main/java/com/gregtechceu/gtceu/client/ClientProxy.java b/src/main/java/com/gregtechceu/gtceu/client/ClientProxy.java index bb9a4ee089d..0e52529dc34 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/ClientProxy.java +++ b/src/main/java/com/gregtechceu/gtceu/client/ClientProxy.java @@ -13,17 +13,12 @@ import com.gregtechceu.gtceu.client.model.machine.MachineModelLoader; import com.gregtechceu.gtceu.client.model.pipe.PipeModel; import com.gregtechceu.gtceu.client.model.pipe.PipeModelLoader; +import com.gregtechceu.gtceu.client.model.runtimegen.*; import com.gregtechceu.gtceu.client.particle.GTParticleManager; import com.gregtechceu.gtceu.client.particle.HazardParticle; import com.gregtechceu.gtceu.client.particle.MufflerParticle; -import com.gregtechceu.gtceu.client.renderer.block.MaterialBlockRenderer; -import com.gregtechceu.gtceu.client.renderer.block.OreBlockRenderer; -import com.gregtechceu.gtceu.client.renderer.block.SurfaceRockRenderer; import com.gregtechceu.gtceu.client.renderer.entity.GTBoatRenderer; import com.gregtechceu.gtceu.client.renderer.entity.GTExplosiveRenderer; -import com.gregtechceu.gtceu.client.renderer.item.ArmorItemRenderer; -import com.gregtechceu.gtceu.client.renderer.item.TagPrefixItemRenderer; -import com.gregtechceu.gtceu.client.renderer.item.ToolItemRenderer; import com.gregtechceu.gtceu.client.renderer.item.decorator.GTComponentItemDecorator; import com.gregtechceu.gtceu.client.renderer.item.decorator.GTLampItemOverlayRenderer; import com.gregtechceu.gtceu.client.renderer.item.decorator.GTTankItemFluidPreview; @@ -75,8 +70,6 @@ import com.google.common.collect.BiMap; import com.google.common.collect.HashBiMap; -import java.util.*; - public class ClientProxy extends CommonProxy { public static final BiMap CLIENT_ORE_VEINS = HashBiMap.create(); @@ -216,12 +209,12 @@ public void registerDynamicAssets(RegisterDynamicResourcesEvent event) { block.get().createPipeModel(RuntimeBlockstateProvider.INSTANCE).dynamicModel(); } - MaterialBlockRenderer.reinitModels(); - TagPrefixItemRenderer.reinitModels(); - OreBlockRenderer.reinitModels(); - ToolItemRenderer.reinitModels(); - ArmorItemRenderer.reinitModels(); - SurfaceRockRenderer.reinitModels(); + MaterialBlockModelGenerator.reinitModels(); + TagPrefixItemModelGenerator.reinitModels(); + OreBlockModelGenerator.reinitModels(); + ToolItemModelGenerator.reinitModels(); + ArmorItemModelGenerator.reinitModels(); + SurfaceRockModelGenerator.reinitModels(); GTModels.registerMaterialFluidModels(); } diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/item/ArmorItemRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/model/runtimegen/ArmorItemModelGenerator.java similarity index 56% rename from src/main/java/com/gregtechceu/gtceu/client/renderer/item/ArmorItemRenderer.java rename to src/main/java/com/gregtechceu/gtceu/client/model/runtimegen/ArmorItemModelGenerator.java index aff929e7ac2..284bc336171 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/item/ArmorItemRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/model/runtimegen/ArmorItemModelGenerator.java @@ -1,10 +1,11 @@ -package com.gregtechceu.gtceu.client.renderer.item; +package com.gregtechceu.gtceu.client.model.runtimegen; import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.data.pack.GTDynamicResourcePack; import net.minecraft.client.Minecraft; import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.ResourceLocation; import net.minecraft.util.GsonHelper; import net.minecraft.world.item.ArmorItem; import net.minecraft.world.item.Item; @@ -16,19 +17,20 @@ import java.util.HashSet; import java.util.Set; -public class ArmorItemRenderer { +public class ArmorItemModelGenerator { - private static final Set MODELS = new HashSet<>(); + private static final Set MODELS = new HashSet<>(); public static void reinitModels() { - for (ArmorItemRenderer model : MODELS) { + for (ArmorItemModelGenerator model : MODELS) { // read the base armor model JSON + ResourceLocation modelLocation = GTCEu.id("models/item/armor/%s.json".formatted(model.armorType.getName())); JsonObject original; - try (BufferedReader reader = Minecraft.getInstance().getResourceManager() - .openAsReader(GTCEu.id("models/item/armor/%s.json".formatted(model.armorType.getName())))) { + try (BufferedReader reader = Minecraft.getInstance().getResourceManager().openAsReader(modelLocation)) { original = GsonHelper.parse(reader, true); } catch (IOException e) { - throw new RuntimeException(e); + GTCEu.LOGGER.warn("Unable to load model: '{}': {}", modelLocation, e); + continue; } GTDynamicResourcePack.addItemModel(BuiltInRegistries.ITEM.getKey(model.item), original); @@ -38,12 +40,12 @@ public static void reinitModels() { private final Item item; private final ArmorItem.Type armorType; - protected ArmorItemRenderer(Item item, ArmorItem.Type armorType) { + protected ArmorItemModelGenerator(Item item, ArmorItem.Type armorType) { this.item = item; this.armorType = armorType; } - public static void create(Item item, ArmorItem.Type armorType) { - MODELS.add(new ArmorItemRenderer(item, armorType)); + public static void add(Item item, ArmorItem.Type armorType) { + MODELS.add(new ArmorItemModelGenerator(item, armorType)); } } diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/block/MaterialBlockRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/model/runtimegen/MaterialBlockModelGenerator.java similarity index 70% rename from src/main/java/com/gregtechceu/gtceu/client/renderer/block/MaterialBlockRenderer.java rename to src/main/java/com/gregtechceu/gtceu/client/model/runtimegen/MaterialBlockModelGenerator.java index f6559abfce2..daf3bef887d 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/block/MaterialBlockRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/model/runtimegen/MaterialBlockModelGenerator.java @@ -1,4 +1,4 @@ -package com.gregtechceu.gtceu.client.renderer.block; +package com.gregtechceu.gtceu.client.model.runtimegen; import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialIconSet; import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialIconType; @@ -13,16 +13,12 @@ import java.util.HashSet; import java.util.Set; -public class MaterialBlockRenderer { +public class MaterialBlockModelGenerator { - private static final Set MODELS = new HashSet<>(); - - public static void create(Block block, MaterialIconType type, MaterialIconSet iconSet) { - MODELS.add(new MaterialBlockRenderer(block, type, iconSet)); - } + private static final Set MODELS = new HashSet<>(); public static void reinitModels() { - for (MaterialBlockRenderer model : MODELS) { + for (MaterialBlockModelGenerator model : MODELS) { ResourceLocation blockId = BuiltInRegistries.BLOCK.getKey(model.block); ResourceLocation modelId = model.type.getBlockModelPath(model.iconSet, true); @@ -36,9 +32,13 @@ public static void reinitModels() { private final MaterialIconType type; private final MaterialIconSet iconSet; - protected MaterialBlockRenderer(Block block, MaterialIconType type, MaterialIconSet iconSet) { + protected MaterialBlockModelGenerator(Block block, MaterialIconType type, MaterialIconSet iconSet) { this.block = block; this.type = type; this.iconSet = iconSet; } + + public static void add(Block block, MaterialIconType type, MaterialIconSet iconSet) { + MODELS.add(new MaterialBlockModelGenerator(block, type, iconSet)); + } } diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/block/OreBlockRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/model/runtimegen/OreBlockModelGenerator.java similarity index 92% rename from src/main/java/com/gregtechceu/gtceu/client/renderer/block/OreBlockRenderer.java rename to src/main/java/com/gregtechceu/gtceu/client/model/runtimegen/OreBlockModelGenerator.java index 8453f93fbce..3c5b6160f43 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/block/OreBlockRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/model/runtimegen/OreBlockModelGenerator.java @@ -1,4 +1,4 @@ -package com.gregtechceu.gtceu.client.renderer.block; +package com.gregtechceu.gtceu.client.model.runtimegen; import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.block.MaterialBlock; @@ -30,25 +30,25 @@ import java.util.Set; @MethodsReturnNonnullByDefault -public class OreBlockRenderer { +public class OreBlockModelGenerator { - protected static final Set MODELS = new HashSet<>(); + protected static final Set MODELS = new HashSet<>(); protected static final JsonObject NULL_ELEMENT_MARKER = new JsonObject(); protected static final MemoizedBiFunction TEMPLATE_MODEL_CACHE = GTMemoizer - .memoizeFunctionWeakIdent(OreBlockRenderer::loadTemplateOreModel); + .memoizeFunctionWeakIdent(OreBlockModelGenerator::loadTemplateOreModel); // First format key is material set name, 2nd is stone type prefix's name, 3rd is icon type's name public static final String ORE_MODEL_NAME_FORMAT = "block/material_sets/%s/ores/%s/%s"; protected final MaterialBlock block; - public static void create(MaterialBlock block) { - MODELS.add(new OreBlockRenderer(block)); + protected OreBlockModelGenerator(MaterialBlock block) { + this.block = block; } - public OreBlockRenderer(MaterialBlock block) { - this.block = block; + public static void add(MaterialBlock block) { + MODELS.add(new OreBlockModelGenerator(block)); } @ApiStatus.Internal @@ -64,7 +64,7 @@ public static void reinitModels() { } // then create block state JSONs for all ore blocks with those models - for (OreBlockRenderer model : MODELS) { + for (OreBlockModelGenerator model : MODELS) { Material material = model.block.material; TagPrefix tagPrefix = model.block.tagPrefix; MaterialIconSet iconSet = material.getMaterialIconSet(); diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/block/SurfaceRockRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/model/runtimegen/SurfaceRockModelGenerator.java similarity index 86% rename from src/main/java/com/gregtechceu/gtceu/client/renderer/block/SurfaceRockRenderer.java rename to src/main/java/com/gregtechceu/gtceu/client/model/runtimegen/SurfaceRockModelGenerator.java index 4469c766f4e..a26a43ea605 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/block/SurfaceRockRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/model/runtimegen/SurfaceRockModelGenerator.java @@ -1,4 +1,4 @@ -package com.gregtechceu.gtceu.client.renderer.block; +package com.gregtechceu.gtceu.client.model.runtimegen; import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.data.pack.GTDynamicResourcePack; @@ -22,16 +22,12 @@ @MethodsReturnNonnullByDefault @ParametersAreNonnullByDefault -public class SurfaceRockRenderer { +public class SurfaceRockModelGenerator { - private static final Set MODELS = new HashSet<>(); - - public static void create(Block block) { - MODELS.add(new SurfaceRockRenderer(block)); - } + private static final Set MODELS = new HashSet<>(); public static void reinitModels() { - for (SurfaceRockRenderer model : MODELS) { + for (SurfaceRockModelGenerator model : MODELS) { ResourceLocation blockId = BuiltInRegistries.BLOCK.getKey(model.block); ResourceLocation modelId = blockId.withPrefix("block/"); @@ -56,7 +52,11 @@ public static void reinitModels() { private final Block block; - protected SurfaceRockRenderer(Block block) { + protected SurfaceRockModelGenerator(Block block) { this.block = block; } + + public static void add(Block block) { + MODELS.add(new SurfaceRockModelGenerator(block)); + } } diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/item/TagPrefixItemRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/model/runtimegen/TagPrefixItemModelGenerator.java similarity index 58% rename from src/main/java/com/gregtechceu/gtceu/client/renderer/item/TagPrefixItemRenderer.java rename to src/main/java/com/gregtechceu/gtceu/client/model/runtimegen/TagPrefixItemModelGenerator.java index 0537d125a26..19679fd3910 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/item/TagPrefixItemRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/model/runtimegen/TagPrefixItemModelGenerator.java @@ -1,4 +1,4 @@ -package com.gregtechceu.gtceu.client.renderer.item; +package com.gregtechceu.gtceu.client.model.runtimegen; import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialIconSet; import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialIconType; @@ -12,21 +12,15 @@ import java.util.HashSet; import java.util.Set; -public class TagPrefixItemRenderer { +public class TagPrefixItemModelGenerator { - private static final Set MODELS = new HashSet<>(); - - public static void create(Item item, MaterialIconType type, MaterialIconSet iconSet) { - MODELS.add(new TagPrefixItemRenderer(item, type, iconSet)); - } + private static final Set MODELS = new HashSet<>(); public static void reinitModels() { - for (TagPrefixItemRenderer model : MODELS) { + for (TagPrefixItemModelGenerator model : MODELS) { ResourceLocation itemId = BuiltInRegistries.ITEM.getKey(model.item); GTDynamicResourcePack.addItemModel(itemId, new DelegatedModel(model.type.getItemModelPath(model.iconSet, true))); - // ModelTemplates.FLAT_ITEM.create(GTDynamicResourcePack.getItemModelLocation(itemId), - // TextureMapping.layer0(itemId.withPrefix("item/")), GTDynamicResourcePack::addItemModel); } } @@ -34,9 +28,13 @@ public static void reinitModels() { private final MaterialIconType type; private final MaterialIconSet iconSet; - private TagPrefixItemRenderer(Item item, MaterialIconType type, MaterialIconSet iconSet) { + private TagPrefixItemModelGenerator(Item item, MaterialIconType type, MaterialIconSet iconSet) { this.item = item; this.type = type; this.iconSet = iconSet; } + + public static void add(Item item, MaterialIconType type, MaterialIconSet iconSet) { + MODELS.add(new TagPrefixItemModelGenerator(item, type, iconSet)); + } } diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/item/ToolItemRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/model/runtimegen/ToolItemModelGenerator.java similarity index 61% rename from src/main/java/com/gregtechceu/gtceu/client/renderer/item/ToolItemRenderer.java rename to src/main/java/com/gregtechceu/gtceu/client/model/runtimegen/ToolItemModelGenerator.java index 9858c4daad9..95d56082e73 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/item/ToolItemRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/model/runtimegen/ToolItemModelGenerator.java @@ -1,4 +1,4 @@ -package com.gregtechceu.gtceu.client.renderer.item; +package com.gregtechceu.gtceu.client.model.runtimegen; import com.gregtechceu.gtceu.api.item.tool.GTToolType; import com.gregtechceu.gtceu.data.pack.GTDynamicResourcePack; @@ -10,12 +10,12 @@ import java.util.HashSet; import java.util.Set; -public class ToolItemRenderer { +public class ToolItemModelGenerator { - private static final Set MODELS = new HashSet<>(); + private static final Set MODELS = new HashSet<>(); public static void reinitModels() { - for (ToolItemRenderer model : MODELS) { + for (ToolItemModelGenerator model : MODELS) { GTDynamicResourcePack.addItemModel(BuiltInRegistries.ITEM.getKey(model.item), new DelegatedModel(model.toolType.modelLocation)); } @@ -24,12 +24,12 @@ public static void reinitModels() { private final Item item; private final GTToolType toolType; - protected ToolItemRenderer(Item item, GTToolType toolType) { + protected ToolItemModelGenerator(Item item, GTToolType toolType) { this.item = item; this.toolType = toolType; } - public static void create(Item item, GTToolType toolType) { - MODELS.add(new ToolItemRenderer(item, toolType)); + public static void add(Item item, GTToolType toolType) { + MODELS.add(new ToolItemModelGenerator(item, toolType)); } } diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/block/LampItemRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/item/LampItemRenderer.java similarity index 97% rename from src/main/java/com/gregtechceu/gtceu/client/renderer/block/LampItemRenderer.java rename to src/main/java/com/gregtechceu/gtceu/client/renderer/item/LampItemRenderer.java index 27d4057548b..cf02c62a085 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/block/LampItemRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/item/LampItemRenderer.java @@ -1,4 +1,4 @@ -package com.gregtechceu.gtceu.client.renderer.block; +package com.gregtechceu.gtceu.client.renderer.item; import com.gregtechceu.gtceu.common.item.LampBlockItem; diff --git a/src/main/java/com/gregtechceu/gtceu/common/block/SurfaceRockBlock.java b/src/main/java/com/gregtechceu/gtceu/common/block/SurfaceRockBlock.java index d04370bf9c5..3f452d3633c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/block/SurfaceRockBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/common/block/SurfaceRockBlock.java @@ -3,7 +3,7 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.item.SurfaceRockBlockItem; -import com.gregtechceu.gtceu.client.renderer.block.SurfaceRockRenderer; +import com.gregtechceu.gtceu.client.model.runtimegen.SurfaceRockModelGenerator; import com.gregtechceu.gtceu.integration.map.cache.server.ServerCache; import net.minecraft.MethodsReturnNonnullByDefault; @@ -62,7 +62,7 @@ public SurfaceRockBlock(Properties properties, Material material) { registerDefaultState(this.defaultBlockState().setValue(FACING, Direction.DOWN)); if (GTCEu.isClientSide()) { - SurfaceRockRenderer.create(this); + SurfaceRockModelGenerator.add(this); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/LampBlockItem.java b/src/main/java/com/gregtechceu/gtceu/common/item/LampBlockItem.java index fd9ba7ea4c1..98266a9e39f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/LampBlockItem.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/LampBlockItem.java @@ -1,6 +1,6 @@ package com.gregtechceu.gtceu.common.item; -import com.gregtechceu.gtceu.client.renderer.block.LampItemRenderer; +import com.gregtechceu.gtceu.client.renderer.item.LampItemRenderer; import com.gregtechceu.gtceu.common.block.LampBlock; import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer; diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/armor/GTArmorItem.java b/src/main/java/com/gregtechceu/gtceu/common/item/armor/GTArmorItem.java index faa4b6493e9..c875d92b2fb 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/armor/GTArmorItem.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/armor/GTArmorItem.java @@ -3,7 +3,7 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.chemical.material.properties.ArmorProperty; -import com.gregtechceu.gtceu.client.renderer.item.ArmorItemRenderer; +import com.gregtechceu.gtceu.client.model.runtimegen.ArmorItemModelGenerator; import net.minecraft.client.color.item.ItemColor; import net.minecraft.network.chat.Component; @@ -32,7 +32,7 @@ public GTArmorItem(ArmorMaterial armorMaterial, ArmorItem.Type type, Properties this.material = material; this.armorProperty = armorProperty; if (GTCEu.isClientSide()) { - ArmorItemRenderer.create(this, type); + ArmorItemModelGenerator.add(this, type); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/armor/GTDyeableArmorItem.java b/src/main/java/com/gregtechceu/gtceu/common/item/armor/GTDyeableArmorItem.java index ecd7f2d7ff3..231ad9466b8 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/armor/GTDyeableArmorItem.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/armor/GTDyeableArmorItem.java @@ -1,9 +1,7 @@ package com.gregtechceu.gtceu.common.item.armor; -import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.chemical.material.properties.ArmorProperty; -import com.gregtechceu.gtceu.client.renderer.item.ArmorItemRenderer; import net.minecraft.world.item.*; @@ -12,8 +10,5 @@ public class GTDyeableArmorItem extends GTArmorItem implements DyeableLeatherIte public GTDyeableArmorItem(ArmorMaterial armorMaterial, ArmorItem.Type type, Item.Properties properties, Material material, ArmorProperty armorProperty) { super(armorMaterial, type, properties, material, armorProperty); - if (GTCEu.isClientSide()) { - ArmorItemRenderer.create(this, type); - } } }