Skip to content

Commit e89aeca

Browse files
committed
Add IMaterial, remove TieredElement, refactoring
- Add interface IMaterial for generic behavior of retrieving the material something knows it is made out of - Implement IMaterial in MetaTileEntityChest and MetaTileEntityTank - Create arrays METAL_CHESTS and TANKS in MetaTileEntities - Refactor MetaTileEntityLoader to iterate over these arrays - Material retrieved via IMaterial::getMaterial() - Name now just obtained from metaTileEntityId.getPath() - Slight change to name of TungstenSteel recipes as before they were named "tungsten_steel_x". Now they're "tungstensteel_x". This will only affect anyone using removeRecipeByName for those two items, easy enough to fix. Neither SoG nor Nomifactory are affected. - Remove TieredElement record: no longer necessary due to the above
1 parent 50f4a23 commit e89aeca

5 files changed

Lines changed: 48 additions & 52 deletions

File tree

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package gregtech.api.metatileentity;
2+
3+
import gregtech.api.unification.material.type.Material;
4+
5+
public interface IMaterial {
6+
/** @return the {@link Material} this object is composed of */
7+
Material getMaterial();
8+
}

src/main/java/gregtech/common/metatileentities/MetaTileEntities.java

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -141,11 +141,14 @@ public class MetaTileEntities {
141141
//STORAGE SECTION
142142
public static MetaTileEntityChest SMALL_WOODEN_CHEST;
143143
public static MetaTileEntityChest WOODEN_CHEST;
144+
144145
public static MetaTileEntityChest BRONZE_CHEST;
145146
public static MetaTileEntityChest STEEL_CHEST;
146147
public static MetaTileEntityChest STAINLESS_STEEL_CHEST;
147148
public static MetaTileEntityChest TITANIUM_CHEST;
148149
public static MetaTileEntityChest TUNGSTENSTEEL_CHEST;
150+
public static MetaTileEntityChest[] METAL_CHESTS = new MetaTileEntityChest[5];
151+
149152
public static MetaTileEntityLockedSafe LOCKED_SAFE;
150153
public static MetaTileEntityArmorTable ARMOR_TABLE;
151154

@@ -155,6 +158,7 @@ public class MetaTileEntities {
155158
public static MetaTileEntityTank STAINLESS_STEEL_TANK;
156159
public static MetaTileEntityTank TITANIUM_TANK;
157160
public static MetaTileEntityTank TUNGSTENSTEEL_TANK;
161+
public static MetaTileEntityTank[] TANKS = new MetaTileEntityTank[6];
158162

159163

160164
//MISC MACHINES SECTION
@@ -504,18 +508,19 @@ public static void init() {
504508

505509
SMALL_WOODEN_CHEST = GregTechAPI.registerMetaTileEntity(808, new MetaTileEntityChest(gregtechId("small_wooden_chest"), Materials.Wood, 1, 1));
506510
WOODEN_CHEST = GregTechAPI.registerMetaTileEntity(807, new MetaTileEntityChest(gregtechId("wooden_chest"), Materials.Wood, 9, 3));
507-
BRONZE_CHEST = GregTechAPI.registerMetaTileEntity(802, new MetaTileEntityChest(gregtechId("bronze_chest"), Materials.Bronze, 9, 6));
508-
STEEL_CHEST = GregTechAPI.registerMetaTileEntity(803, new MetaTileEntityChest(gregtechId("steel_chest"), Materials.Steel, 9, 8));
509-
STAINLESS_STEEL_CHEST = GregTechAPI.registerMetaTileEntity(804, new MetaTileEntityChest(gregtechId("stainless_steel_chest"), Materials.StainlessSteel, 9, 10));
510-
TITANIUM_CHEST = GregTechAPI.registerMetaTileEntity(805, new MetaTileEntityChest(gregtechId("titanium_chest"), Materials.Titanium, 12, 10));
511-
TUNGSTENSTEEL_CHEST = GregTechAPI.registerMetaTileEntity(806, new MetaTileEntityChest(gregtechId("tungstensteel_chest"), Materials.TungstenSteel, 12, 14));
512-
513-
WOODEN_TANK = GregTechAPI.registerMetaTileEntity(811, new MetaTileEntityTank(gregtechId("wooden_tank"), Materials.Wood, 4000, 1, 3));
514-
BRONZE_TANK = GregTechAPI.registerMetaTileEntity(812, new MetaTileEntityTank(gregtechId("bronze_tank"), Materials.Bronze, 8000, 4, 3));
515-
STEEL_TANK = GregTechAPI.registerMetaTileEntity(813, new MetaTileEntityTank(gregtechId("steel_tank"), Materials.Steel, 16000, 7, 5));
516-
STAINLESS_STEEL_TANK = GregTechAPI.registerMetaTileEntity(814, new MetaTileEntityTank(gregtechId("stainless_steel_tank"), Materials.StainlessSteel, 32000, 9, 7));
517-
TITANIUM_TANK = GregTechAPI.registerMetaTileEntity(815, new MetaTileEntityTank(gregtechId("titanium_tank"), Materials.Titanium, 48000, 12, 9));
518-
TUNGSTENSTEEL_TANK = GregTechAPI.registerMetaTileEntity(816, new MetaTileEntityTank(gregtechId("tungstensteel_tank"), Materials.TungstenSteel, 64000, 16, 9));
511+
512+
METAL_CHESTS[0] = BRONZE_CHEST = GregTechAPI.registerMetaTileEntity(802, new MetaTileEntityChest(gregtechId("bronze_chest"), Materials.Bronze, 9, 6));
513+
METAL_CHESTS[1] = STEEL_CHEST = GregTechAPI.registerMetaTileEntity(803, new MetaTileEntityChest(gregtechId("steel_chest"), Materials.Steel, 9, 8));
514+
METAL_CHESTS[2] = STAINLESS_STEEL_CHEST = GregTechAPI.registerMetaTileEntity(804, new MetaTileEntityChest(gregtechId("stainless_steel_chest"), Materials.StainlessSteel, 9, 10));
515+
METAL_CHESTS[3] = TITANIUM_CHEST = GregTechAPI.registerMetaTileEntity(805, new MetaTileEntityChest(gregtechId("titanium_chest"), Materials.Titanium, 12, 10));
516+
METAL_CHESTS[4] = TUNGSTENSTEEL_CHEST = GregTechAPI.registerMetaTileEntity(806, new MetaTileEntityChest(gregtechId("tungstensteel_chest"), Materials.TungstenSteel, 12, 14));
517+
518+
TANKS[0] = WOODEN_TANK = GregTechAPI.registerMetaTileEntity(811, new MetaTileEntityTank(gregtechId("wooden_tank"), Materials.Wood, 4000, 1, 3));
519+
TANKS[1] = BRONZE_TANK = GregTechAPI.registerMetaTileEntity(812, new MetaTileEntityTank(gregtechId("bronze_tank"), Materials.Bronze, 8000, 4, 3));
520+
TANKS[2] = STEEL_TANK = GregTechAPI.registerMetaTileEntity(813, new MetaTileEntityTank(gregtechId("steel_tank"), Materials.Steel, 16000, 7, 5));
521+
TANKS[3] = STAINLESS_STEEL_TANK = GregTechAPI.registerMetaTileEntity(814, new MetaTileEntityTank(gregtechId("stainless_steel_tank"), Materials.StainlessSteel, 32000, 9, 7));
522+
TANKS[4] = TITANIUM_TANK = GregTechAPI.registerMetaTileEntity(815, new MetaTileEntityTank(gregtechId("titanium_tank"), Materials.Titanium, 48000, 12, 9));
523+
TANKS[5] = TUNGSTENSTEEL_TANK = GregTechAPI.registerMetaTileEntity(816, new MetaTileEntityTank(gregtechId("tungstensteel_tank"), Materials.TungstenSteel, 64000, 16, 9));
519524

520525
FISHER[0] = GregTechAPI.registerMetaTileEntity(820, new MetaTileEntityFisher(gregtechId("fisher.lv"), 1));
521526
FISHER[1] = GregTechAPI.registerMetaTileEntity(821, new MetaTileEntityFisher(gregtechId("fisher.mv"), 2));

src/main/java/gregtech/common/metatileentities/storage/MetaTileEntityChest.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,12 @@
1212
import gregtech.api.gui.ModularUI.Builder;
1313
import gregtech.api.gui.widgets.SortingButtonWidget;
1414
import gregtech.api.metatileentity.IFastRenderMetaTileEntity;
15+
import gregtech.api.metatileentity.IMaterial;
1516
import gregtech.api.metatileentity.MetaTileEntity;
1617
import gregtech.api.metatileentity.MetaTileEntityHolder;
1718
import gregtech.api.recipes.ModHandler;
1819
import gregtech.api.render.Textures;
20+
import gregtech.api.unification.material.type.Material;
1921
import gregtech.api.unification.material.type.SolidMaterial;
2022
import gregtech.api.util.GTUtility;
2123
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
@@ -44,7 +46,7 @@
4446

4547
import static gregtech.api.util.GTUtility.convertOpaqueRGBA_CLtoRGB;
4648

47-
public class MetaTileEntityChest extends MetaTileEntity implements IFastRenderMetaTileEntity {
49+
public class MetaTileEntityChest extends MetaTileEntity implements IFastRenderMetaTileEntity, IMaterial {
4850

4951
private static final IndexedCuboid6 CHEST_COLLISION = new IndexedCuboid6(null, new Cuboid6(1 / 16.0, 1 / 16.0, 1 / 16.0, 15 / 16.0, 14 / 16.0, 15 / 16.0));
5052

@@ -309,4 +311,9 @@ protected boolean shouldSerializeInventories() {
309311
public void addInformation(ItemStack stack, @Nullable World player, List<String> tooltip, boolean advanced) {
310312
tooltip.add(I18n.format("gregtech.universal.tooltip.item_storage_capacity", rowSize * amountOfRows));
311313
}
314+
315+
@Override
316+
public Material getMaterial() {
317+
return material;
318+
}
312319
}

src/main/java/gregtech/common/metatileentities/storage/MetaTileEntityTank.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,13 @@
1313
import gregtech.api.gui.ModularUI;
1414
import gregtech.api.items.metaitem.DefaultSubItemHandler;
1515
import gregtech.api.metatileentity.IFastRenderMetaTileEntity;
16+
import gregtech.api.metatileentity.IMaterial;
1617
import gregtech.api.metatileentity.MetaTileEntity;
1718
import gregtech.api.metatileentity.MetaTileEntityHolder;
1819
import gregtech.api.recipes.ModHandler;
1920
import gregtech.api.render.TankRenderer;
2021
import gregtech.api.render.Textures;
22+
import gregtech.api.unification.material.type.Material;
2123
import gregtech.api.unification.material.type.Material.MatFlags;
2224
import gregtech.api.unification.material.type.SolidMaterial;
2325
import gregtech.api.util.ByteBufUtils;
@@ -64,7 +66,7 @@
6466

6567
import static gregtech.api.util.GTUtility.convertOpaqueRGBA_CLtoRGB;
6668

67-
public class MetaTileEntityTank extends MetaTileEntity implements IFastRenderMetaTileEntity {
69+
public class MetaTileEntityTank extends MetaTileEntity implements IFastRenderMetaTileEntity, IMaterial {
6870

6971
private static final int FLUID_SYNC_THROTTLE = 0;
7072
private final int tankSize;
@@ -736,6 +738,11 @@ protected boolean shouldSerializeInventories() {
736738
return false; //handled manually
737739
}
738740

741+
@Override
742+
public Material getMaterial() {
743+
return material;
744+
}
745+
739746
private enum NetworkStatus {
740747
//retain contained fluid, reset controller pos
741748
DETACHED_FROM_MULTIBLOCK,

src/main/java/gregtech/loaders/recipe/MetaTileEntityLoader.java

Lines changed: 7 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package gregtech.loaders.recipe;
22

3-
import com.github.bsideup.jabel.Desugar;
43
import gregtech.api.GTValues;
54
import gregtech.api.cover.ICoverable;
65
import gregtech.api.items.OreDictNames;
@@ -10,7 +9,6 @@
109
import gregtech.api.unification.material.MarkerMaterials;
1110
import gregtech.api.unification.material.MarkerMaterials.Tier;
1211
import gregtech.api.unification.material.Materials;
13-
import gregtech.api.unification.material.type.Material;
1412
import gregtech.api.unification.ore.OrePrefix;
1513
import gregtech.api.unification.stack.UnificationEntry;
1614
import gregtech.common.ConfigHolder;
@@ -40,7 +38,6 @@
4038
import static gregtech.common.blocks.BlockWarningSign.SignType.*;
4139
import static gregtech.common.blocks.BlockWireCoil.CoilType.*;
4240
import static gregtech.loaders.recipe.CraftingComponent.*;
43-
import static gregtech.loaders.recipe.MetaTileEntityLoader.TieredElement.*;
4441

4542
public class MetaTileEntityLoader {
4643

@@ -984,39 +981,26 @@ public static void init() {
984981
ModHandler.addShapelessRecipe("wooden_chest", MetaTileEntities.WOODEN_CHEST.getStackForm(), "chest", 'r');
985982

986983
// Metal Chests
987-
for(var chest : arr(
988-
of("bronze_chest", MetaTileEntities.BRONZE_CHEST, Materials.Bronze),
989-
of("steel_chest", MetaTileEntities.STEEL_CHEST, Materials.Steel),
990-
of("stainless_steel_chest", MetaTileEntities.STAINLESS_STEEL_CHEST, Materials.StainlessSteel),
991-
of("titanium_chest", MetaTileEntities.TITANIUM_CHEST, Materials.Titanium),
992-
of("tungsten_steel_chest", MetaTileEntities.TUNGSTENSTEEL_CHEST, Materials.TungstenSteel)))
993-
{
994-
ModHandler.addShapedRecipe(chest.name, chest.element.getStackForm(),
984+
for(var chest : MetaTileEntities.METAL_CHESTS) {
985+
ModHandler.addShapedRecipe(chest.metaTileEntityId.getPath(), chest.getStackForm(),
995986
new String[] {
996987
"XXX",
997988
"X X",
998989
"XXX"
999990
},
1000-
sub('X', new UnificationEntry(OrePrefix.plate, chest.material)));
991+
sub('X', new UnificationEntry(OrePrefix.plate, chest.getMaterial())));
1001992
}
1002993

1003994
// Multiblock Tanks
1004-
for (var tank : arr(
1005-
of("wooden_tank", MetaTileEntities.WOODEN_TANK, Materials.Wood),
1006-
of("bronze_tank", MetaTileEntities.BRONZE_TANK, Materials.Bronze),
1007-
of("steel_tank", MetaTileEntities.STEEL_TANK, Materials.Steel),
1008-
of("stainless_steel_tank", MetaTileEntities.STAINLESS_STEEL_TANK, Materials.StainlessSteel),
1009-
of("titanium_tank", MetaTileEntities.TITANIUM_TANK, Materials.Titanium),
1010-
of("tungsten_steel_tank", MetaTileEntities.TUNGSTENSTEEL_TANK, Materials.TungstenSteel)))
1011-
{
1012-
var prefix = tank.material == Materials.Wood ? OrePrefix.plank : OrePrefix.plate;
1013-
ModHandler.addShapedRecipe(tank.name, tank.element.getStackForm(),
995+
for (var tank : MetaTileEntities.TANKS) {
996+
var prefix = tank.getMaterial() == Materials.Wood ? OrePrefix.plank : OrePrefix.plate;
997+
ModHandler.addShapedRecipe(tank.metaTileEntityId.getPath(), tank.getStackForm(),
1014998
new String[] {
1015999
"XYX",
10161000
"Y Y",
10171001
"XYX"
10181002
},
1019-
sub('X', new UnificationEntry(prefix, tank.material)),
1003+
sub('X', new UnificationEntry(prefix, tank.getMaterial())),
10201004
sub('Y', new UnificationEntry(OrePrefix.blockGlass)));
10211005
}
10221006

@@ -1165,19 +1149,4 @@ public static <T> T[] arr(T... ts) {
11651149
return ts;
11661150
}
11671151

1168-
/**
1169-
* Utility record for type-safe recipe generation code for elements which
1170-
* can't report their own name and material in a suitable way.
1171-
* @param name the name to use for this element
1172-
* @param element the target element
1173-
* @param material the element's associated material
1174-
*/
1175-
@Desugar
1176-
record TieredElement(String name, ICoverable element, Material material) {
1177-
/** Static initializer for convenience. */
1178-
public static TieredElement of(String name, ICoverable mte, Material material) {
1179-
return new TieredElement(name, mte, material);
1180-
}
1181-
}
1182-
11831152
}

0 commit comments

Comments
 (0)