diff --git a/fabrication/src/main/generated/assets/projectred_fabrication/lang/en_us.json b/fabrication/src/main/generated/assets/projectred_fabrication/lang/en_us.json index 76bce5331..ad5804b2a 100644 --- a/fabrication/src/main/generated/assets/projectred_fabrication/lang/en_us.json +++ b/fabrication/src/main/generated/assets/projectred_fabrication/lang/en_us.json @@ -10,6 +10,8 @@ "item.projectred_fabrication.invalid_die": "Invalid Die", "item.projectred_fabrication.photomask_set": "Photomask Set", "item.projectred_fabrication.rough_silicon_wafer": "Rough Silicon Wafer", + "item.projectred_fabrication.purified_silicon_wafer": "Purified Silicon Wafer", + "item.projectred_fabrication.polished_silicon_wafer": "Polished Silicon Wafer", "item.projectred_fabrication.valid_die": "Valid Die", "itemGroup.projectred_fabrication": "Project Red: Fabrication", "projectred_fabrication.compile.stack": "Stack", @@ -150,6 +152,9 @@ "projectred_fabrication.ui.single_layer_yield": "Single layer yield", "projectred_fabrication.ui.wafer_size": "Wafer size", "projectred_fabrication.ui.wafer_type": "Wafer type", + "projectred_fabrication.ui.wafer_type.rough": "Rough", + "projectred_fabrication.ui.wafer_type.purified": "Purified", + "projectred_fabrication.ui.wafer_type.polished": "Polished", "projectred_fabrication.ui.yield": "Yield", "projectred_fabrication.ui.yield_calculator": "Yield Calculator", "projectred_fabrication.unit.gates": "gates", diff --git a/fabrication/src/main/generated/assets/projectred_fabrication/models/item/polished_silicon_wafer.json b/fabrication/src/main/generated/assets/projectred_fabrication/models/item/polished_silicon_wafer.json new file mode 100644 index 000000000..5a7894f7b --- /dev/null +++ b/fabrication/src/main/generated/assets/projectred_fabrication/models/item/polished_silicon_wafer.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "projectred_fabrication:item/polished_silicon_wafer" + } +} \ No newline at end of file diff --git a/fabrication/src/main/generated/assets/projectred_fabrication/models/item/purified_silicon_wafer.json b/fabrication/src/main/generated/assets/projectred_fabrication/models/item/purified_silicon_wafer.json new file mode 100644 index 000000000..60d2e4cfe --- /dev/null +++ b/fabrication/src/main/generated/assets/projectred_fabrication/models/item/purified_silicon_wafer.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "projectred_fabrication:item/purified_silicon_wafer" + } +} \ No newline at end of file diff --git a/fabrication/src/main/generated/data/projectred_fabrication/recipes/polished_silicon_wafer.json b/fabrication/src/main/generated/data/projectred_fabrication/recipes/polished_silicon_wafer.json new file mode 100644 index 000000000..d8e5d5ccf --- /dev/null +++ b/fabrication/src/main/generated/data/projectred_fabrication/recipes/polished_silicon_wafer.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "key": { + "c": { + "item": "projectred_core:woven_cloth" + }, + "p": { + "item": "projectred_fabrication:purified_silicon_wafer" + } + }, + "pattern": [ + " c ", + "cpc", + " c " + ], + "result": { + "item": "projectred_fabrication:polished_silicon_wafer" + } +} \ No newline at end of file diff --git a/fabrication/src/main/generated/data/projectred_fabrication/recipes/purified_silicon_wafer.json b/fabrication/src/main/generated/data/projectred_fabrication/recipes/purified_silicon_wafer.json new file mode 100644 index 000000000..a4d939075 --- /dev/null +++ b/fabrication/src/main/generated/data/projectred_fabrication/recipes/purified_silicon_wafer.json @@ -0,0 +1,14 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "projectred_fabrication:rough_silicon_wafer" + }, + { + "item": "minecraft:water_bucket" + } + ], + "result": { + "item": "projectred_fabrication:purified_silicon_wafer" + } +} \ No newline at end of file diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/data/FabricationItemModelProvider.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/data/FabricationItemModelProvider.java index 8d9a7408f..dba2b1ea6 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/data/FabricationItemModelProvider.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/data/FabricationItemModelProvider.java @@ -28,6 +28,8 @@ protected void registerModels() { generated(BLANK_PHOTOMASK_ITEM); generated(PHOTOMASK_SET_ITEM); generated(ROUGH_SILICON_WAFER_ITEM); + generated(PURIFIED_SILICON_WAFER_ITEM); + generated(POLISHED_SILICON_WAFER_ITEM); generated(ETCHED_SILICON_WAFER_ITEM); generated(VALID_DIE_ITEM); generated(INVALID_DIE_ITEM); diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/data/FabricationLanguageProvider.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/data/FabricationLanguageProvider.java index dce49f27e..a3baa917c 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/data/FabricationLanguageProvider.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/data/FabricationLanguageProvider.java @@ -35,6 +35,8 @@ protected void addTranslations() { add(BLANK_PHOTOMASK_ITEM.get(), "Blank Photomask"); add(PHOTOMASK_SET_ITEM.get(), "Photomask Set"); add(ROUGH_SILICON_WAFER_ITEM.get(), "Rough Silicon Wafer"); + add(PURIFIED_SILICON_WAFER_ITEM.get(), "Purified Silicon Wafer"); + add(POLISHED_SILICON_WAFER_ITEM.get(), "Polished Silicon Wafer"); add(ETCHED_SILICON_WAFER_ITEM.get(), "Etched Silicon Wafer"); add(VALID_DIE_ITEM.get(), "Valid Die"); add(INVALID_DIE_ITEM.get(), "Invalid Die"); diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/data/FabricationRecipeProvider.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/data/FabricationRecipeProvider.java index 145702403..a37cb1254 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/data/FabricationRecipeProvider.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/data/FabricationRecipeProvider.java @@ -7,8 +7,7 @@ import net.minecraft.world.level.block.Blocks; import net.minecraftforge.common.Tags; -import static mrtjp.projectred.core.init.CoreItems.PLATE_ITEM; -import static mrtjp.projectred.core.init.CoreItems.SILICON_ITEM; +import static mrtjp.projectred.core.init.CoreItems.*; import static mrtjp.projectred.core.init.CoreTags.ELECTROTINE_ALLOY_INGOT_TAG; import static mrtjp.projectred.core.init.CoreTags.SAPPHIRE_GEM_TAG; import static mrtjp.projectred.fabrication.ProjectRedFabrication.MOD_ID; @@ -81,5 +80,17 @@ protected void registerRecipes() { smelting(ROUGH_SILICON_WAFER_ITEM.get()) .ingredient(SILICON_ITEM.get()); + + shapelessRecipe(PURIFIED_SILICON_WAFER_ITEM.get()) + .addIngredient(ROUGH_SILICON_WAFER_ITEM.get()) + .addIngredient(Items.WATER_BUCKET); + + shapedRecipe(POLISHED_SILICON_WAFER_ITEM.get()) + .key('c', WOVEN_CLOTH_ITEM.get()) + .key('p', PURIFIED_SILICON_WAFER_ITEM.get()) + .enableUnlocking() + .patternLine(" c ") + .patternLine("cpc") + .patternLine(" c "); } } diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/PipelineDiagramNode.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/PipelineDiagramNode.java index add20254b..1c9dc0237 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/PipelineDiagramNode.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/PipelineDiagramNode.java @@ -93,9 +93,11 @@ public void update() { case ROUGH_WAFER: node.setItemStack(new ItemStack(ROUGH_SILICON_WAFER_ITEM.get())); break; - case POLISHED_WAFER: case PURIFIED_WAFER: - node.setItemStack(ItemStack.EMPTY); //TODO + node.setItemStack(new ItemStack(PURIFIED_SILICON_WAFER_ITEM.get())); + break; + case POLISHED_WAFER: + node.setItemStack(new ItemStack(POLISHED_SILICON_WAFER_ITEM.get())); break; } } diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/screen/ICWorkbenchInfoTab.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/screen/ICWorkbenchInfoTab.java index f444b3111..31f6b357b 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/screen/ICWorkbenchInfoTab.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/screen/ICWorkbenchInfoTab.java @@ -182,7 +182,7 @@ private ButtonArrayNode createWaferTypeButtons() { ButtonArrayNode.Listener listener = new ButtonArrayNode.Listener() { @Override public String getButtonText(int index) { - return WaferType.values()[index].getUnlocalizedName(); + return Component.translatable(WaferType.values()[index].getLocalizedNameKey()).getString(); } @Override diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/init/FabricationCreativeModeTab.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/init/FabricationCreativeModeTab.java index 4e4b6d5de..ec5c43eff 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/init/FabricationCreativeModeTab.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/init/FabricationCreativeModeTab.java @@ -31,6 +31,8 @@ public static void register() { output.accept(BLANK_PHOTOMASK_ITEM.get()); output.accept(PHOTOMASK_SET_ITEM.get()); output.accept(ROUGH_SILICON_WAFER_ITEM.get()); + output.accept(PURIFIED_SILICON_WAFER_ITEM.get()); + output.accept(POLISHED_SILICON_WAFER_ITEM.get()); output.accept(ETCHED_SILICON_WAFER_ITEM.get()); output.accept(VALID_DIE_ITEM.get()); output.accept(INVALID_DIE_ITEM.get()); diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/init/FabricationItems.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/init/FabricationItems.java index ec0eb3563..3194e8ef9 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/init/FabricationItems.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/init/FabricationItems.java @@ -12,6 +12,8 @@ public class FabricationItems { public static final String ID_BLANK_PHOTOMASK = "blank_photomask"; public static final String ID_PHOTOMASK_SET = "photomask_set"; public static final String ID_ROUGH_SILICON_WAFER = "rough_silicon_wafer"; + public static final String ID_PURIFIED_SILICON_WAFER = "purified_silicon_wafer"; + public static final String ID_POLISHED_SILICON_WAFER = "polished_silicon_wafer"; public static final String ID_ETCHED_SILICON_WAFER = "etched_silicon_wafer"; public static final String ID_VALID_DIE = "valid_die"; public static final String ID_INVALID_DIE = "invalid_die"; @@ -20,6 +22,8 @@ public class FabricationItems { public static RegistryObject BLANK_PHOTOMASK_ITEM; public static RegistryObject PHOTOMASK_SET_ITEM; public static RegistryObject ROUGH_SILICON_WAFER_ITEM; + public static RegistryObject PURIFIED_SILICON_WAFER_ITEM; + public static RegistryObject POLISHED_SILICON_WAFER_ITEM; public static RegistryObject ETCHED_SILICON_WAFER_ITEM; public static RegistryObject VALID_DIE_ITEM; public static RegistryObject INVALID_DIE_ITEM; @@ -31,6 +35,8 @@ public static void register() { BLANK_PHOTOMASK_ITEM = ITEMS.register(ID_BLANK_PHOTOMASK, BlankPhotomaskItem::new); PHOTOMASK_SET_ITEM = ITEMS.register(ID_PHOTOMASK_SET, PhotomaskSetItem::new); ROUGH_SILICON_WAFER_ITEM = ITEMS.register(ID_ROUGH_SILICON_WAFER, RoughSiliconWaferItem::new); + PURIFIED_SILICON_WAFER_ITEM = ITEMS.register(ID_PURIFIED_SILICON_WAFER, PurifiedSiliconWaferItem::new); + POLISHED_SILICON_WAFER_ITEM = ITEMS.register(ID_POLISHED_SILICON_WAFER, PolishedSiliconWaferItem::new); ETCHED_SILICON_WAFER_ITEM = ITEMS.register(ID_ETCHED_SILICON_WAFER, EtchedSiliconWaferItem::new); VALID_DIE_ITEM = ITEMS.register(ID_VALID_DIE, ValidDieItem::new); INVALID_DIE_ITEM = ITEMS.register(ID_INVALID_DIE, InvalidDieItem::new); diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/init/FabricationUnlocal.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/init/FabricationUnlocal.java index e4d990e4a..68e394507 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/init/FabricationUnlocal.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/init/FabricationUnlocal.java @@ -109,15 +109,18 @@ public class FabricationUnlocal { public static final String UL_AUTO_COMPILE_DISABLED = PREFIX + "ui.auto_compile_disabled"; public static final String UL_SIM_RUNNING = PREFIX + "ui.sim_running"; - public static final String UL_YIELD_CALCULATOR = PREFIX + "ui.yield_calculator"; - public static final String UL_LITHOGRAPHY_PIPELINE = PREFIX + "ui.lithography_pipeline"; - public static final String UL_PROCESS_NODE = PREFIX + "ui.process_node"; - public static final String UL_WAFER_TYPE = PREFIX + "ui.wafer_type"; - public static final String UL_DIE_SIZE = PREFIX + "ui.die_size"; - public static final String UL_WAFER_SIZE = PREFIX + "ui.wafer_size"; - public static final String UL_DIES_PER_WAFER = PREFIX + "ui.dies_per_wafer"; - public static final String UL_SINGLE_LAYER_YIELD = PREFIX + "ui.single_layer_yield"; - public static final String UL_YIELD = PREFIX + "ui.yield"; + public static final String UL_YIELD_CALCULATOR = PREFIX + "ui.yield_calculator"; + public static final String UL_LITHOGRAPHY_PIPELINE = PREFIX + "ui.lithography_pipeline"; + public static final String UL_PROCESS_NODE = PREFIX + "ui.process_node"; + public static final String UL_WAFER_TYPE = PREFIX + "ui.wafer_type"; + public static final String UL_WAFER_TYPE_ROUGH = PREFIX + "ui.wafer_type.rough"; + public static final String UL_WAFER_TYPE_PURIFIED = PREFIX + "ui.wafer_type.purified"; + public static final String UL_WAFER_TYPE_POLISHED = PREFIX + "ui.wafer_type.polished"; + public static final String UL_DIE_SIZE = PREFIX + "ui.die_size"; + public static final String UL_WAFER_SIZE = PREFIX + "ui.wafer_size"; + public static final String UL_DIES_PER_WAFER = PREFIX + "ui.dies_per_wafer"; + public static final String UL_SINGLE_LAYER_YIELD = PREFIX + "ui.single_layer_yield"; + public static final String UL_YIELD = PREFIX + "ui.yield"; // IC Tiles public static final String UL_IO_GATE_TILE = PREFIX + "tiles.io_gate"; diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/item/PolishedSiliconWaferItem.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/item/PolishedSiliconWaferItem.java new file mode 100644 index 000000000..d54ad7f61 --- /dev/null +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/item/PolishedSiliconWaferItem.java @@ -0,0 +1,10 @@ +package mrtjp.projectred.fabrication.item; + +import mrtjp.projectred.fabrication.lithography.WaferType; + +public class PolishedSiliconWaferItem extends BaseSiliconWaferItem { + + public PolishedSiliconWaferItem() { + super(WaferType.POLISHED_WAFER); + } +} diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/item/PurifiedSiliconWaferItem.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/item/PurifiedSiliconWaferItem.java new file mode 100644 index 000000000..ec21ce472 --- /dev/null +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/item/PurifiedSiliconWaferItem.java @@ -0,0 +1,10 @@ +package mrtjp.projectred.fabrication.item; + +import mrtjp.projectred.fabrication.lithography.WaferType; + +public class PurifiedSiliconWaferItem extends BaseSiliconWaferItem { + + public PurifiedSiliconWaferItem() { + super(WaferType.PURIFIED_WAFER); + } +} diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/lithography/WaferType.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/lithography/WaferType.java index 0093e84a3..d156d7697 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/lithography/WaferType.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/lithography/WaferType.java @@ -1,27 +1,29 @@ package mrtjp.projectred.fabrication.lithography; +import static mrtjp.projectred.fabrication.init.FabricationUnlocal.*; + public enum WaferType { //@formatter:off - ROUGH_WAFER (4096, 0.5, "roughWafer"), - PURIFIED_WAFER (4096, 0.1, "purifiedWafer"), - POLISHED_WAFER (4096, 0.01, "polishedWafer"); + ROUGH_WAFER (4096, 0.5, UL_WAFER_TYPE_ROUGH), + PURIFIED_WAFER (4096, 0.1, UL_WAFER_TYPE_PURIFIED), + POLISHED_WAFER (4096, 0.01, UL_WAFER_TYPE_POLISHED); //@formatter:on - private final String unlocalizedName; - private final int waferLen; - private final int waferArea; + private final String localizedNameKey; + private final int waferLen; + private final int waferArea; private final double defectRatePerUnitArea; // Note: standard die defect rate is rate of defect of 16x16 design in 64nm process - WaferType(int waferLen, double standardDieDefectRate, String unlocalizedName) { + WaferType(int waferLen, double standardDieDefectRate, String localizedNameKey) { this.waferLen = waferLen; this.waferArea = waferLen * waferLen; // square wafers only atm // back-calculate standard die defect rate to defect per unit area this.defectRatePerUnitArea = standardDieDefectRate / (Math.pow(64 * 16, 2)); - this.unlocalizedName = unlocalizedName; + this.localizedNameKey = localizedNameKey; } public int getWaferArea() { @@ -40,7 +42,7 @@ public double getDefectRatePerUnitArea() { return defectRatePerUnitArea; } - public String getUnlocalizedName() { - return unlocalizedName; + public String getLocalizedNameKey() { + return this.localizedNameKey; } } diff --git a/fabrication/src/main/resources/assets/projectred_fabrication/textures/item/polished_silicon_wafer.png b/fabrication/src/main/resources/assets/projectred_fabrication/textures/item/polished_silicon_wafer.png new file mode 100644 index 000000000..91f7bb45c Binary files /dev/null and b/fabrication/src/main/resources/assets/projectred_fabrication/textures/item/polished_silicon_wafer.png differ diff --git a/fabrication/src/main/resources/assets/projectred_fabrication/textures/item/purified_silicon_wafer.png b/fabrication/src/main/resources/assets/projectred_fabrication/textures/item/purified_silicon_wafer.png new file mode 100644 index 000000000..c2d495595 Binary files /dev/null and b/fabrication/src/main/resources/assets/projectred_fabrication/textures/item/purified_silicon_wafer.png differ