Skip to content

Commit e386876

Browse files
committed
Tweaks. Mostly around not duplicating block translations
1 parent 9963941 commit e386876

File tree

11 files changed

+99
-122
lines changed

11 files changed

+99
-122
lines changed

docs/ADDING_MACHINES.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -332,7 +332,7 @@ MIMachineEvents.registerCasings(event => {
332332
event.registerNamed("fancy_casing", "Fancy");
333333

334334
// This registers a new casing with the same model as a diamond block!
335-
event.registerNamedBlockImitation("diamond_casing", "Diamond", "minecraft:diamond_block");
335+
event.registerBlockImitation("diamond_casing", "minecraft:diamond_block");
336336
})
337337
```
338338

src/client/java/aztech/modern_industrialization/datagen/model/MachineCasingsProvider.java

Lines changed: 6 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,8 @@
2929
import aztech.modern_industrialization.machines.models.MachineBakedModel;
3030
import aztech.modern_industrialization.machines.models.MachineCasing;
3131
import aztech.modern_industrialization.machines.models.MachineCasings;
32-
import aztech.modern_industrialization.materials.MIMaterials;
33-
import aztech.modern_industrialization.materials.part.MIParts;
34-
import net.minecraft.core.registries.BuiltInRegistries;
35-
import net.minecraft.core.registries.Registries;
3632
import net.minecraft.data.PackOutput;
37-
import net.minecraft.resources.ResourceKey;
3833
import net.minecraft.world.level.block.Block;
39-
import net.minecraft.world.level.block.Blocks;
4034
import net.neoforged.neoforge.client.model.generators.BlockModelBuilder;
4135
import net.neoforged.neoforge.client.model.generators.ModelProvider;
4236
import net.neoforged.neoforge.common.data.ExistingFileHelper;
@@ -48,36 +42,22 @@ public MachineCasingsProvider(PackOutput output, ExistingFileHelper existingFile
4842

4943
@Override
5044
protected void registerModels() {
45+
for (var casing : MachineCasings.registeredCasings.values()) {
46+
if (casing.imitatedBlock != null) {
47+
imitateBlock(casing, casing.imitatedBlock.get());
48+
}
49+
}
50+
5151
imitateBlock(CableTier.LV.casing, MIBlock.BASIC_MACHINE_HULL.asBlock());
5252
imitateBlock(CableTier.MV.casing, MIBlock.ADVANCED_MACHINE_HULL.asBlock());
5353
imitateBlock(CableTier.HV.casing, MIBlock.TURBO_MACHINE_HULL.asBlock());
5454
imitateBlock(CableTier.EV.casing, MIBlock.HIGHLY_ADVANCED_MACHINE_HULL.asBlock());
5555
imitateBlock(CableTier.SUPERCONDUCTOR.casing, MIBlock.QUANTUM_MACHINE_HULL.asBlock());
5656

57-
imitateBlock(MachineCasings.FIREBRICKS, MIBlock.BLOCK_FIRE_CLAY_BRICKS.asBlock());
58-
imitateBlock(MachineCasings.BRICKS, Blocks.BRICKS);
59-
60-
imitateBlock(MachineCasings.BRONZE, MIMaterials.BRONZE.getPart(MIParts.MACHINE_CASING).asBlock());
61-
imitateBlock(MachineCasings.BRONZE_PLATED_BRICKS, MIMaterials.BRONZE.getPart(MIParts.MACHINE_CASING_SPECIAL).asBlock());
62-
imitateBlock(MachineCasings.CLEAN_STAINLESS_STEEL, MIMaterials.STAINLESS_STEEL.getPart(MIParts.MACHINE_CASING_SPECIAL).asBlock());
63-
imitateBlock(MachineCasings.FROSTPROOF, MIMaterials.ALUMINUM.getPart(MIParts.MACHINE_CASING_SPECIAL).asBlock());
64-
imitateBlock(MachineCasings.HEATPROOF, MIMaterials.INVAR.getPart(MIParts.MACHINE_CASING_SPECIAL).asBlock());
65-
imitateBlock(MachineCasings.STAINLESS_STEEL_PIPE, MIMaterials.STAINLESS_STEEL.getPart(MIParts.MACHINE_CASING_PIPE).asBlock());
66-
imitateBlock(MachineCasings.STEEL, MIMaterials.STEEL.getPart(MIParts.MACHINE_CASING).asBlock());
67-
imitateBlock(MachineCasings.TITANIUM, MIMaterials.TITANIUM.getPart(MIParts.MACHINE_CASING).asBlock());
68-
imitateBlock(MachineCasings.TITANIUM_PIPE, MIMaterials.TITANIUM.getPart(MIParts.MACHINE_CASING_PIPE).asBlock());
69-
imitateBlock(MachineCasings.SOLID_TITANIUM, MIMaterials.TITANIUM.getPart(MIParts.MACHINE_CASING_SPECIAL).asBlock());
70-
imitateBlock(MachineCasings.NUCLEAR, MIMaterials.NUCLEAR_ALLOY.getPart(MIParts.MACHINE_CASING_SPECIAL).asBlock());
71-
imitateBlock(MachineCasings.PLASMA_HANDLING_IRIDIUM, MIMaterials.IRIDIUM.getPart(MIParts.MACHINE_CASING_SPECIAL).asBlock());
72-
7357
cubeBottomTop(MachineCasings.BRICKED_BRONZE, "block/casings/bricked_bronze", "block/fire_clay_bricks", "block/bronze_machine_casing");
7458
cubeBottomTop(MachineCasings.BRICKED_STEEL, "block/casings/bricked_steel", "block/fire_clay_bricks", "block/steel_machine_casing");
7559
cubeAll(MachineCasings.CONFIGURABLE_TANK, "block/casings/configurable_tank");
7660
cubeAll(MachineCasings.STEEL_CRATE, "block/casings/steel_crate");
77-
78-
for (var entry : MachineCasingImitations.imitationsToGenerate.entrySet()) {
79-
imitateBlock(entry.getKey(), BuiltInRegistries.BLOCK.getOrThrow(ResourceKey.create(Registries.BLOCK, entry.getValue())));
80-
}
8161
}
8262

8363
private void imitateBlock(MachineCasing casing, Block block) {

src/client/java/aztech/modern_industrialization/machines/models/MachineBakedModel.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@
3838
import net.minecraft.client.resources.model.ModelResourceLocation;
3939
import net.minecraft.core.BlockPos;
4040
import net.minecraft.core.Direction;
41-
import net.minecraft.resources.ResourceLocation;
4241
import net.minecraft.util.RandomSource;
4342
import net.minecraft.world.level.BlockAndTintGetter;
4443
import net.minecraft.world.level.block.state.BlockState;
@@ -66,12 +65,12 @@ public static BakedModel getCasingModel(MachineCasing casing) {
6665

6766
private final MachineCasing baseCasing;
6867
private final TextureAtlasSprite[] defaultOverlays;
69-
private final Map<ResourceLocation, TextureAtlasSprite[]> tieredOverlays;
68+
private final Map<MachineCasing, TextureAtlasSprite[]> tieredOverlays;
7069
private final MachineModelClientData defaultData;
7170

7271
MachineBakedModel(MachineCasing baseCasing,
7372
TextureAtlasSprite[] defaultOverlays,
74-
Map<ResourceLocation, TextureAtlasSprite[]> tieredOverlays) {
73+
Map<MachineCasing, TextureAtlasSprite[]> tieredOverlays) {
7574
this.baseCasing = baseCasing;
7675
this.defaultOverlays = defaultOverlays;
7776
this.tieredOverlays = tieredOverlays;
@@ -86,7 +85,7 @@ public TextureAtlasSprite[] getSprites(@Nullable MachineCasing casing) {
8685
if (casing == null) {
8786
return defaultOverlays;
8887
}
89-
return tieredOverlays.getOrDefault(casing.key, defaultOverlays);
88+
return tieredOverlays.getOrDefault(casing, defaultOverlays);
9089
}
9190

9291
/**

src/client/java/aztech/modern_industrialization/machines/models/MachineUnbakedModel.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public class MachineUnbakedModel implements IUnbakedGeometry<MachineUnbakedModel
5454

5555
private final MachineCasing baseCasing;
5656
private final Material[] defaultOverlays;
57-
private final Map<ResourceLocation, Material[]> tieredOverlays = new HashMap<>();
57+
private final Map<MachineCasing, Material[]> tieredOverlays = new HashMap<>();
5858

5959
private MachineUnbakedModel(JsonObject obj) {
6060
this.baseCasing = MachineCasings.get(GsonHelper.getAsString(obj, "casing"));
@@ -65,15 +65,15 @@ private MachineUnbakedModel(JsonObject obj) {
6565
var tieredOverlays = GsonHelper.getAsJsonObject(obj, "tiered_overlays", new JsonObject());
6666
for (var casingTier : tieredOverlays.keySet()) {
6767
var casingOverlaysJson = OverlaysJson.parse(GsonHelper.getAsJsonObject(tieredOverlays, casingTier), defaultOverlaysJson);
68-
this.tieredOverlays.put(ResourceLocation.parse(casingTier), casingOverlaysJson.toSpriteIds());
68+
this.tieredOverlays.put(MachineCasings.get(casingTier), casingOverlaysJson.toSpriteIds());
6969
}
7070
}
7171

7272
@Override
7373
public BakedModel bake(IGeometryBakingContext context, ModelBaker baker, Function<Material, TextureAtlasSprite> spriteGetter,
7474
ModelState modelState, ItemOverrides overrides) {
7575
var defaultOverlays = loadSprites(spriteGetter, this.defaultOverlays);
76-
var tieredOverlays = new HashMap<ResourceLocation, TextureAtlasSprite[]>();
76+
var tieredOverlays = new HashMap<MachineCasing, TextureAtlasSprite[]>();
7777
for (var entry : this.tieredOverlays.entrySet()) {
7878
tieredOverlays.put(entry.getKey(), loadSprites(spriteGetter, entry.getValue()));
7979
}

src/generated/resources/assets/modern_industrialization/lang/en_us.json

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1092,27 +1092,13 @@
10921092
"key.modern_industrialization.toggle_flight": "Toggle Flight",
10931093
"machine_casing.modern_industrialization.bricked_bronze": "Bricked Bronze",
10941094
"machine_casing.modern_industrialization.bricked_steel": "Bricked Steel",
1095-
"machine_casing.modern_industrialization.bricks": "Bricks",
1096-
"machine_casing.modern_industrialization.bronze": "Bronze",
1097-
"machine_casing.modern_industrialization.bronze_plated_bricks": "Bronze Plated Bricks",
1098-
"machine_casing.modern_industrialization.clean_stainless_steel_machine_casing": "Clean Stainless Steel",
10991095
"machine_casing.modern_industrialization.configurable_tank": "Configurable Tank",
11001096
"machine_casing.modern_industrialization.ev": "EV",
1101-
"machine_casing.modern_industrialization.firebricks": "Firebricks",
1102-
"machine_casing.modern_industrialization.frostproof_machine_casing": "Frostproof",
1103-
"machine_casing.modern_industrialization.heatproof_machine_casing": "Heatproof",
11041097
"machine_casing.modern_industrialization.hv": "HV",
11051098
"machine_casing.modern_industrialization.lv": "LV",
11061099
"machine_casing.modern_industrialization.mv": "MV",
1107-
"machine_casing.modern_industrialization.nuclear_casing": "Nuclear",
1108-
"machine_casing.modern_industrialization.plasma_handling_iridium_machine_casing": "Plasma Handling Iridium",
1109-
"machine_casing.modern_industrialization.solid_titanium_machine_casing": "Solid Titanium",
1110-
"machine_casing.modern_industrialization.stainless_steel_machine_casing_pipe": "Stainless Steel Pipe",
1111-
"machine_casing.modern_industrialization.steel": "Steel",
11121100
"machine_casing.modern_industrialization.steel_crate": "Steel Crate",
11131101
"machine_casing.modern_industrialization.superconductor": "Superconductor",
1114-
"machine_casing.modern_industrialization.titanium": "Titanium",
1115-
"machine_casing.modern_industrialization.titanium_machine_casing_pipe": "Titanium Pipe",
11161102
"rei_categories.modern_industrialization.assembler": "Assembler",
11171103
"rei_categories.modern_industrialization.bronze_compressor": "Compressor",
11181104
"rei_categories.modern_industrialization.bronze_cutting_machine": "Cutting Machine",

src/main/java/aztech/modern_industrialization/api/energy/CableTier.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
*/
2424
package aztech.modern_industrialization.api.energy;
2525

26+
import aztech.modern_industrialization.MI;
2627
import aztech.modern_industrialization.MIBlockKeys;
2728
import aztech.modern_industrialization.compat.kubejs.KubeJSProxy;
2829
import aztech.modern_industrialization.machines.models.MachineCasing;
@@ -83,7 +84,7 @@ public CableTier(String name, String shortEnglishName, String longEnglishName, l
8384
this.longEnglishName = longEnglishName;
8485
this.eu = eu;
8586
this.itemKey = itemKey;
86-
this.casing = MachineCasings.create(name, shortEnglishName);
87+
this.casing = MachineCasings.create(MI.id(name), shortEnglishName);
8788
this.builtin = builtin;
8889
}
8990

src/main/java/aztech/modern_industrialization/compat/kubejs/machine/RegisterCasingsEventJS.java

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,11 @@
2323
*/
2424
package aztech.modern_industrialization.compat.kubejs.machine;
2525

26-
import aztech.modern_industrialization.datagen.model.MachineCasingImitations;
26+
import aztech.modern_industrialization.MI;
2727
import aztech.modern_industrialization.machines.models.MachineCasings;
2828
import dev.latvian.mods.kubejs.event.KubeEvent;
2929
import java.util.Objects;
30+
import net.minecraft.core.registries.BuiltInRegistries;
3031
import net.minecraft.resources.ResourceLocation;
3132
import org.slf4j.Logger;
3233
import org.slf4j.LoggerFactory;
@@ -46,21 +47,15 @@ public void registerNamed(String name, String englishName) {
4647
if (name.contains(":")) {
4748
throw new IllegalArgumentException("Casing name cannot contain ':'.");
4849
}
49-
MachineCasings.create(name, englishName);
50+
MachineCasings.create(MI.id(name), englishName);
5051
}
5152

52-
@Deprecated
5353
public void registerBlockImitation(String name, ResourceLocation block) {
54-
LOGGER.warn("registerBlockImitation is deprecated, use registerNamedBlockImitation instead");
55-
registerNamedBlockImitation(name, null, block);
56-
}
57-
58-
public void registerNamedBlockImitation(String name, String englishName, ResourceLocation block) {
5954
Objects.requireNonNull(block, "block may not be null");
6055
if (name.contains(":")) {
6156
throw new IllegalArgumentException("Casing name cannot contain ':'.");
6257
}
6358

64-
MachineCasingImitations.imitationsToGenerate.put(MachineCasings.create(name, englishName), block);
59+
MachineCasings.createBlockImitation(MI.id(name), () -> BuiltInRegistries.BLOCK.get(block));
6560
}
6661
}

src/main/java/aztech/modern_industrialization/datagen/model/MachineCasingImitations.java

Lines changed: 0 additions & 33 deletions
This file was deleted.

src/main/java/aztech/modern_industrialization/datagen/translation/TranslationProvider.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -134,9 +134,8 @@ private void collectTranslationEntries() {
134134
addTranslation(cableTier.longEnglishKey(), cableTier.longEnglishName);
135135
}
136136

137-
for (var casing : MachineCasings.registeredCasings.values()) {
138-
var englishName = MachineCasings.casingNames.get(casing.key);
139-
addTranslation(casing.getTranslationKey(), englishName);
137+
for (var casingName : MachineCasings.translations) {
138+
addTranslation(casingName.casing().getTranslationKey(), casingName.englishName());
140139
}
141140
}
142141

src/main/java/aztech/modern_industrialization/machines/models/MachineCasing.java

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,22 +23,39 @@
2323
*/
2424
package aztech.modern_industrialization.machines.models;
2525

26+
import java.util.function.Supplier;
27+
import net.minecraft.Util;
2628
import net.minecraft.network.chat.Component;
2729
import net.minecraft.network.chat.MutableComponent;
2830
import net.minecraft.resources.ResourceLocation;
31+
import net.minecraft.world.level.block.Block;
32+
import org.jetbrains.annotations.Nullable;
2933

3034
public class MachineCasing {
3135
public final ResourceLocation key;
36+
/**
37+
* Not null when registered as an imitation. The actual model might not be an imitation since it is resource pack driven.
38+
* Mostly used to pull the name of the casing from the block it imitates. Will also generate a corresponding casing model.
39+
*/
40+
@Nullable
41+
public final Supplier<? extends Block> imitatedBlock;
3242

33-
MachineCasing(ResourceLocation key) {
43+
MachineCasing(ResourceLocation key, @Nullable Supplier<? extends Block> imitatedBlock) {
3444
this.key = key;
45+
this.imitatedBlock = imitatedBlock;
3546
}
3647

3748
public String getTranslationKey() {
38-
return "machine_casing.%s.%s".formatted(key.getNamespace(), key.getPath());
49+
if (imitatedBlock != null) {
50+
throw new IllegalArgumentException("Cannot get translation key for casing imitating a block.");
51+
}
52+
return Util.makeDescriptionId("machine_casing", key);
3953
}
4054

41-
public MutableComponent getDisplayName() {
55+
public MutableComponent getName() {
56+
if (imitatedBlock != null) {
57+
return imitatedBlock.get().getName();
58+
}
4259
return Component.translatable(getTranslationKey());
4360
}
4461
}

0 commit comments

Comments
 (0)