Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 11 additions & 1 deletion docs/content/Modpacks/Changes/v8.0.0.md
Original file line number Diff line number Diff line change
Expand Up @@ -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`).
- `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.
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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)
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/com/gregtechceu/gtceu/api/block/OreBlock.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -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);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1010,7 +1010,7 @@ public record BlockProperties(Supplier<Supplier<RenderType>> renderType,
private boolean generateBlock;
@Getter
@Setter
private BlockConstructor blockConstructor = MaterialBlock::new;
private BlockConstructor blockConstructor = MaterialBlock::createAndAddModel;
@Getter
@Setter
private BlockItemConstructor blockItemConstructor = MaterialBlockItem::new;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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());
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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();
}
Expand Down
21 changes: 7 additions & 14 deletions src/main/java/com/gregtechceu/gtceu/client/ClientProxy.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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<ResourceLocation, GTOreDefinition> CLIENT_ORE_VEINS = HashBiMap.create();
Expand Down Expand Up @@ -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();
}

Expand Down
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -16,19 +17,20 @@
import java.util.HashSet;
import java.util.Set;

public class ArmorItemRenderer {
public class ArmorItemModelGenerator {

private static final Set<ArmorItemRenderer> MODELS = new HashSet<>();
private static final Set<ArmorItemModelGenerator> 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);
Expand All @@ -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));
}
}
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -13,16 +13,12 @@
import java.util.HashSet;
import java.util.Set;

public class MaterialBlockRenderer {
public class MaterialBlockModelGenerator {

private static final Set<MaterialBlockRenderer> MODELS = new HashSet<>();

public static void create(Block block, MaterialIconType type, MaterialIconSet iconSet) {
MODELS.add(new MaterialBlockRenderer(block, type, iconSet));
}
private static final Set<MaterialBlockModelGenerator> 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);

Expand All @@ -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));
}
}
Original file line number Diff line number Diff line change
@@ -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;
Expand Down Expand Up @@ -30,25 +30,25 @@
import java.util.Set;

@MethodsReturnNonnullByDefault
public class OreBlockRenderer {
public class OreBlockModelGenerator {

protected static final Set<OreBlockRenderer> MODELS = new HashSet<>();
protected static final Set<OreBlockModelGenerator> MODELS = new HashSet<>();

protected static final JsonObject NULL_ELEMENT_MARKER = new JsonObject();
protected static final MemoizedBiFunction<MaterialIconType, MaterialIconSet, JsonObject> 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
Expand All @@ -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();
Expand Down
Loading
Loading