Skip to content

Commit 2ed0711

Browse files
SwedzTechnici4n
andauthored
Make machine casings use ResourceLocations and translations (#945)
Co-authored-by: Technici4n <[email protected]>
1 parent a193b2e commit 2ed0711

File tree

14 files changed

+163
-117
lines changed

14 files changed

+163
-117
lines changed

docs/ADDING_MACHINES.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -327,12 +327,12 @@ remember that the top, side and bottom textures of a casing must be `modern_indu
327327
For example:
328328
```js
329329
MIMachineEvents.registerCasings(event => {
330-
// Register two casings.
330+
// Register a casing.
331331
// This doesn't register any model! Either add models or add the top/side/bottom textures.
332-
event.register("my_fancy_casing", "my_other_casing");
332+
event.registerNamed("fancy_casing", "Fancy");
333333

334334
// This registers a new casing with the same model as a diamond block!
335-
event.registerBlockImitation("my_diamond_casing", "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: 9 additions & 29 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,49 +42,35 @@ 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) {
84-
getBuilder(casing.name)
64+
getBuilder(casing.key.toString())
8565
.customLoader((bmb, existingFileHelper) -> new UseBlockModelModelBuilder<>(block, bmb, existingFileHelper));
8666
}
8767

8868
private void cubeBottomTop(MachineCasing casing, String side, String bottom, String top) {
89-
cubeBottomTop(casing.name, MI.id(side), MI.id(bottom), MI.id(top));
69+
cubeBottomTop(casing.key.toString(), MI.id(side), MI.id(bottom), MI.id(top));
9070
}
9171

9272
private void cubeAll(MachineCasing casing, String side) {
93-
cubeAll(casing.name, MI.id(side));
73+
cubeAll(casing.key.toString(), MI.id(side));
9474
}
9575

9676
@Override

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

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
*/
2424
package aztech.modern_industrialization.machines.models;
2525

26-
import aztech.modern_industrialization.MI;
2726
import aztech.modern_industrialization.util.ModelHelper;
2827
import java.util.ArrayList;
2928
import java.util.List;
@@ -57,7 +56,7 @@ public class MachineBakedModel implements IDynamicBakedModel {
5756
public static final String CASING_FOLDER = "machine_casing";
5857

5958
public static ModelResourceLocation getCasingModelId(MachineCasing casing) {
60-
return ModelResourceLocation.standalone(MI.id(CASING_FOLDER + "/" + casing.name));
59+
return ModelResourceLocation.standalone(casing.key.withPath(p -> CASING_FOLDER + "/" + p));
6160
}
6261

6362
public static BakedModel getCasingModel(MachineCasing casing) {
@@ -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<String, TextureAtlasSprite[]> tieredOverlays;
68+
private final Map<MachineCasing, TextureAtlasSprite[]> tieredOverlays;
7069
private final MachineModelClientData defaultData;
7170

7271
MachineBakedModel(MachineCasing baseCasing,
7372
TextureAtlasSprite[] defaultOverlays,
74-
Map<String, 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.name, 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<String, 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(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<String, 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/client/java/aztech/modern_industrialization/textures/MITextures.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,7 @@ public static void casingFromTextureBricked(TextureManager tm, MachineCasing cas
241241
copy.setPixelRGBA(i, j, brickTexture.getPixelRGBA(i, j));
242242
}
243243
}
244-
String s = String.format("modern_industrialization:textures/block/casings/%s.png", casing.name);
244+
String s = String.format("%s:textures/block/casings/%s.png", casing.key.getNamespace(), casing.key.getPath());
245245
tm.addTexture(s, copy);
246246
}
247247
} catch (IOException e) {

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1090,6 +1090,15 @@
10901090
"key.categories.modern_industrialization.modern_industrialization": "Modern Industrialization",
10911091
"key.modern_industrialization.toggle_3x3": "Toggle 3x3 Mining",
10921092
"key.modern_industrialization.toggle_flight": "Toggle Flight",
1093+
"machine_casing.modern_industrialization.bricked_bronze": "Bricked Bronze",
1094+
"machine_casing.modern_industrialization.bricked_steel": "Bricked Steel",
1095+
"machine_casing.modern_industrialization.configurable_tank": "Configurable Tank",
1096+
"machine_casing.modern_industrialization.ev": "EV",
1097+
"machine_casing.modern_industrialization.hv": "HV",
1098+
"machine_casing.modern_industrialization.lv": "LV",
1099+
"machine_casing.modern_industrialization.mv": "MV",
1100+
"machine_casing.modern_industrialization.steel_crate": "Steel Crate",
1101+
"machine_casing.modern_industrialization.superconductor": "Superconductor",
10931102
"rei_categories.modern_industrialization.assembler": "Assembler",
10941103
"rei_categories.modern_industrialization.bronze_compressor": "Compressor",
10951104
"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);
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: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,21 +23,31 @@
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;
32+
import org.slf4j.Logger;
33+
import org.slf4j.LoggerFactory;
3134

3235
public class RegisterCasingsEventJS implements KubeEvent {
36+
private static final Logger LOGGER = LoggerFactory.getLogger(RegisterCasingsEventJS.class);
37+
38+
@Deprecated
3339
public void register(String... names) {
40+
LOGGER.warn("register is deprecated, use registerNamed instead");
3441
for (var name : names) {
35-
if (name.contains(":")) {
36-
throw new IllegalArgumentException("Casing name cannot contain ':'.");
37-
}
42+
registerNamed(name, null);
43+
}
44+
}
3845

39-
MachineCasings.create(name);
46+
public void registerNamed(String name, String englishName) {
47+
if (name.contains(":")) {
48+
throw new IllegalArgumentException("Casing name cannot contain ':'.");
4049
}
50+
MachineCasings.create(MI.id(name), englishName);
4151
}
4252

4353
public void registerBlockImitation(String name, ResourceLocation block) {
@@ -46,6 +56,6 @@ public void registerBlockImitation(String name, ResourceLocation block) {
4656
throw new IllegalArgumentException("Casing name cannot contain ':'.");
4757
}
4858

49-
MachineCasingImitations.imitationsToGenerate.put(MachineCasings.create(name), block);
59+
MachineCasings.createBlockImitation(MI.id(name), () -> BuiltInRegistries.BLOCK.get(block));
5060
}
5161
}

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/model/MachineModelsToGenerate.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public static void register(String machine, MachineCasing defaultCasing, String
3838

3939
record MachineModelProperties(MachineCasing defaultCasing, String overlay, boolean front, boolean top, boolean side, boolean active) {
4040
void addToMachineJson(JsonObject obj) {
41-
obj.addProperty("casing", defaultCasing.name);
41+
obj.addProperty("casing", defaultCasing.key.getPath());
4242

4343
var defaultOverlays = new JsonObject();
4444

0 commit comments

Comments
 (0)