From c924a2c5235155d892e37d647bb9043640467739 Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Mon, 16 Oct 2023 20:21:31 +0300 Subject: [PATCH] fixes (#475) * fix: totally wrong casing requirements, RHF not forming * fix: these shouldn't have mixer recipes, actually + manual ABS recipes * fix #462 * chore: ignore patch files * fix glass vial material amount * fix: melon maceration * fix #470 * fix #459 * fix #447 * actually fix large distillery * fix #333 --- .gitignore | 2 + .../MachineModeFancyConfigurator.java | 3 +- .../trait/ItemHandlerProxyRecipeTrait.java | 62 ++++++ .../gtceu/api/pattern/BlockPattern.java | 4 +- .../gtceu/common/data/GCyMMachines.java | 125 +++++------ .../gtceu/common/data/GTItems.java | 2 +- .../common/item/ColorSprayBehaviour.java | 18 +- .../multiblock/part/ItemBusPartMachine.java | 19 +- .../gtceu/data/recipe/MaterialInfoLoader.java | 194 ++++++++++++------ .../recipe/configurable/RecipeAddition.java | 50 ++++- .../recipe/configurable/RecipeRemoval.java | 10 + .../gtceu/data/recipe/misc/GCyMRecipes.java | 166 +++++++++------ .../recipe/misc/VanillaStandardRecipes.java | 2 +- 13 files changed, 449 insertions(+), 208 deletions(-) create mode 100644 common/src/main/java/com/gregtechceu/gtceu/api/machine/trait/ItemHandlerProxyRecipeTrait.java diff --git a/.gitignore b/.gitignore index 206387118c..5648ec2dbb 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,5 @@ classes/ .architectury-transformer/debug.log forge/src/generated/resources/.cache/ fabric/src/generated/resources/.cache/ + +*.patch \ No newline at end of file diff --git a/common/src/main/java/com/gregtechceu/gtceu/api/machine/fancyconfigurator/MachineModeFancyConfigurator.java b/common/src/main/java/com/gregtechceu/gtceu/api/machine/fancyconfigurator/MachineModeFancyConfigurator.java index aae1c38046..16e2b147f0 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/api/machine/fancyconfigurator/MachineModeFancyConfigurator.java +++ b/common/src/main/java/com/gregtechceu/gtceu/api/machine/fancyconfigurator/MachineModeFancyConfigurator.java @@ -3,7 +3,6 @@ import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.fancy.IFancyConfigurator; import com.gregtechceu.gtceu.api.machine.feature.IRecipeLogicMachine; -import com.gregtechceu.gtceu.utils.FormattingUtil; import com.lowdragmc.lowdraglib.gui.texture.IGuiTexture; import com.lowdragmc.lowdraglib.gui.texture.ResourceTexture; import com.lowdragmc.lowdraglib.gui.widget.SelectorWidget; @@ -71,7 +70,7 @@ public void initWidget() { setBackground(GuiTextures.BACKGROUND_INVERSE); addWidget(new SelectorWidget(2, 2, 136, 15, recipeTypeNames, -1).setOnChanged( rt -> { - machine.setActiveRecipeType(recipeTypeNames.indexOf(rt)); + machine.setActiveRecipeType(Math.max(recipeTypeNames.indexOf(rt), 0)); machine.getRecipeLogic().resetRecipeLogic(); }).setSupplier(() -> { var index = recipeTypeNames.indexOf(Component.translatable(machine.getRecipeType().registryName.toLanguageKey()).getString()); diff --git a/common/src/main/java/com/gregtechceu/gtceu/api/machine/trait/ItemHandlerProxyRecipeTrait.java b/common/src/main/java/com/gregtechceu/gtceu/api/machine/trait/ItemHandlerProxyRecipeTrait.java new file mode 100644 index 0000000000..d708e59db3 --- /dev/null +++ b/common/src/main/java/com/gregtechceu/gtceu/api/machine/trait/ItemHandlerProxyRecipeTrait.java @@ -0,0 +1,62 @@ +package com.gregtechceu.gtceu.api.machine.trait; + +import com.gregtechceu.gtceu.api.capability.recipe.IO; +import com.gregtechceu.gtceu.api.capability.recipe.IRecipeHandler; +import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; +import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; +import com.gregtechceu.gtceu.api.machine.MetaMachine; +import com.gregtechceu.gtceu.api.recipe.GTRecipe; +import lombok.Getter; +import lombok.Setter; +import net.minecraft.world.item.crafting.Ingredient; +import org.jetbrains.annotations.Nullable; + +import java.util.Collection; +import java.util.List; + +public class ItemHandlerProxyRecipeTrait extends NotifiableRecipeHandlerTrait implements ICapabilityTrait { + @Getter + public final IO handlerIO; + @Getter + public final IO capabilityIO; + @Getter @Setter + private long timeStamp; + private boolean enabled; + + @Getter + private final Collection> handlers; + + public ItemHandlerProxyRecipeTrait(MetaMachine machine, Collection> handlers, IO handlerIO, IO capabilityIO) { + super(machine); + this.timeStamp = Long.MIN_VALUE; + this.handlerIO = handlerIO; + this.capabilityIO = capabilityIO; + this.handlers = handlers; + } + + @Override + public List handleRecipeInner(IO io, GTRecipe recipe, List left, @Nullable String slotName, boolean simulate) { + if (!enabled) return left; + for (IRecipeHandler handler : handlers) { + handler.handleRecipeInner(io, recipe, left, slotName, simulate); + if (left.isEmpty()) return null; + } + return left; + } + + @Override + public RecipeCapability getCapability() { + return ItemRecipeCapability.CAP; + } + + @Override + public boolean isDistinct() { + return handlers.stream().allMatch(NotifiableRecipeHandlerTrait::isDistinct); + } + + @Override + public void setDistinct(boolean distinct) { + handlers.stream().forEach(handler -> handler.setDistinct(distinct)); + this.enabled = distinct; + } +} diff --git a/common/src/main/java/com/gregtechceu/gtceu/api/pattern/BlockPattern.java b/common/src/main/java/com/gregtechceu/gtceu/api/pattern/BlockPattern.java index 85ff801a0f..9dc305db54 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/api/pattern/BlockPattern.java +++ b/common/src/main/java/com/gregtechceu/gtceu/api/pattern/BlockPattern.java @@ -492,9 +492,9 @@ public BlockInfo[][][] getPreview(int[] repetition) { private void resetFacing(BlockPos pos, BlockState blockState, Direction facing, BiFunction checker, Consumer consumer) { if (blockState.hasProperty(BlockStateProperties.FACING)) { - tryFacings(blockState, pos, checker, consumer, BlockStateProperties.FACING, facing == null ? FACINGS : ArrayUtils.add(FACINGS, facing)); + tryFacings(blockState, pos, checker, consumer, BlockStateProperties.FACING, facing == null ? FACINGS : ArrayUtils.addAll(new Direction[]{facing}, FACINGS)); } else if (blockState.hasProperty(BlockStateProperties.HORIZONTAL_FACING)) { - tryFacings(blockState, pos, checker, consumer, BlockStateProperties.HORIZONTAL_FACING, facing == null || facing.getAxis() == Direction.Axis.Y ? FACINGS_H : ArrayUtils.add(FACINGS_H, facing)); + tryFacings(blockState, pos, checker, consumer, BlockStateProperties.HORIZONTAL_FACING, facing == null || facing.getAxis() == Direction.Axis.Y ? FACINGS_H : ArrayUtils.addAll(new Direction[]{facing}, FACINGS_H)); } } diff --git a/common/src/main/java/com/gregtechceu/gtceu/common/data/GCyMMachines.java b/common/src/main/java/com/gregtechceu/gtceu/common/data/GCyMMachines.java index 4d961abb99..2915d39cfc 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/common/data/GCyMMachines.java +++ b/common/src/main/java/com/gregtechceu/gtceu/common/data/GCyMMachines.java @@ -11,6 +11,7 @@ import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; import com.gregtechceu.gtceu.api.pattern.FactoryBlockPattern; import com.gregtechceu.gtceu.api.pattern.Predicates; +import com.gregtechceu.gtceu.api.pattern.TraceabilityPredicate; import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; import com.gregtechceu.gtceu.api.recipe.OverclockingLogic; import com.gregtechceu.gtceu.common.machine.multiblock.part.ParallelHatchPartMachine; @@ -124,7 +125,7 @@ public static void init() {} .aisle("XXXXX","XAPAX","XXXXX") .aisle("#XXX#","XXSXX","#XXX#") .where('S', controller(blocks(definition.get()))) - .where('X', blocks(CASING_VIBRATION_SAFE.get()).setMinGlobalLimited(14) + .where('X', blocks(CASING_VIBRATION_SAFE.get()).setMinGlobalLimited(40) .or(Predicates.autoAbilities(definition.getRecipeTypes())) .or(Predicates.autoAbilities(true, false, true))) .where('P', Predicates.blocks(CASING_STEEL_PIPE.get())) @@ -152,7 +153,7 @@ public static void init() {} .aisle("XXXXX","XAPAX","XAAAX","XAPAX","XAAAX","##F##") .aisle("#XXX#","#XSX#","#XXX#","#XXX#","#XXX#","##F##") .where('S', controller(blocks(definition.get()))) - .where('X', blocks(CASING_REACTION_SAFE.get()).setMinGlobalLimited(14) + .where('X', blocks(CASING_REACTION_SAFE.get()).setMinGlobalLimited(50) .or(autoAbilities(definition.getRecipeTypes())) .or(Predicates.autoAbilities(true, false, true))) .where('F', blocks(ChemicalHelper.getBlock(TagPrefix.frameGt, GTMaterials.HastelloyX))) @@ -181,7 +182,7 @@ public static void init() {} .aisle("XXXXX","XCCCX","XCCCX") .aisle("XXXXX","XXSXX","XXXXX") .where('S', controller(blocks(definition.get()))) - .where('X', blocks(CASING_NONCONDUCTING.get()).setMinGlobalLimited(14) + .where('X', blocks(CASING_NONCONDUCTING.get()).setMinGlobalLimited(30) .or(Predicates.autoAbilities(definition.getRecipeTypes())) .or(Predicates.autoAbilities(true, false, true))) .where('C', blocks(ELECTROLYTIC_CELL.get())) @@ -206,7 +207,7 @@ public static void init() {} .aisle("XCXCX","XCXCX","XCXCX") .aisle("XXXXX","XXSXX","XXXXX") .where('S', controller(blocks(definition.get()))) - .where('X', blocks(CASING_NONCONDUCTING.get()).setMinGlobalLimited(14) + .where('X', blocks(CASING_NONCONDUCTING.get()).setMinGlobalLimited(35) .or(Predicates.autoAbilities(definition.getRecipeTypes())) .or(Predicates.autoAbilities(true, false, true))) .where('C', blocks(ELECTROLYTIC_CELL.get())) @@ -233,7 +234,7 @@ public static void init() {} .aisle("XXX","XAX","XXX") .aisle("XXX","XSX","XXX") .where('S', controller(blocks(definition.get()))) - .where('X', blocks(CASING_TUNGSTENSTEEL_ROBUST.get()).setMinGlobalLimited(14) + .where('X', blocks(CASING_TUNGSTENSTEEL_ROBUST.get()).setMinGlobalLimited(30) .or(Predicates.autoAbilities(definition.getRecipeTypes())) .or(Predicates.autoAbilities(true, false, true))) .where('A', Predicates.air()) @@ -257,7 +258,7 @@ public static void init() {} .aisle("XXXXXXXXX","XAAAXAAAX","XGGGXXXXX") .aisle("XXXXXXXXX","XGGGXXSXX","XGGGX###X") .where('S', controller(blocks(definition.get()))) - .where('X', blocks(CASING_LARGE_SCALE_ASSEMBLING.get()).setMinGlobalLimited(50) + .where('X', blocks(CASING_LARGE_SCALE_ASSEMBLING.get()).setMinGlobalLimited(40) .or(Predicates.autoAbilities(definition.getRecipeTypes())) .or(Predicates.autoAbilities(true, false, true))) .where('G', Predicates.blocks(CASING_TEMPERED_GLASS.get())) @@ -315,7 +316,7 @@ public static void init() {} .aisle("XXXXX","XACAX","XACAX","XXXXX") .aisle("#XXX#","#XSX#","#XXX#","#XXX#") .where('S', controller(blocks(definition.get()))) - .where('X', blocks(CASING_HIGH_TEMPERATURE_SMELTING.get()).setMinGlobalLimited(14) + .where('X', blocks(CASING_HIGH_TEMPERATURE_SMELTING.get()).setMinGlobalLimited(45) .or(Predicates.autoAbilities(definition.getRecipeTypes())) .or(Predicates.autoAbilities(true, false, true))) .where('C', Predicates.blocks(MOLYBDENUM_DISILICIDE_COIL_BLOCK.get())) @@ -345,7 +346,7 @@ public static void init() {} .aisle("XXSXX","XXGXX","XXGXX","XXXXX") .where('S', controller(blocks(definition.get()))) .where('C', blocks(CASING_TUNGSTENSTEEL_PIPE.get())) - .where('X', blocks(CASING_LASER_SAFE_ENGRAVING.get()).setMinGlobalLimited(14) + .where('X', blocks(CASING_LASER_SAFE_ENGRAVING.get()).setMinGlobalLimited(50) .or(Predicates.autoAbilities(definition.getRecipeTypes())) .or(Predicates.autoAbilities(true, false, true))) .where('G', blocks(CASING_TEMPERED_GLASS.get())) @@ -373,7 +374,7 @@ public static void init() {} .aisle("XXXXX","XAXAX","XKKKX","XKKKX","X###X") .aisle("#X#X#","#X#X#","#XSX#","XXXXX","#XXX#") .where('S', controller(blocks(definition.get()))) - .where('X', blocks(CASING_VIBRATION_SAFE.get()).setMinGlobalLimited(14) + .where('X', blocks(CASING_VIBRATION_SAFE.get()).setMinGlobalLimited(50) .or(Predicates.autoAbilities(definition.getRecipeTypes())) .or(Predicates.autoAbilities(true, false, true))) .where('K', blocks(CASING_GRATE.get())) @@ -401,7 +402,7 @@ public static void init() {} .aisle("XXXXX", "CAAAC", "GAAAG", "CAAAC", "XXXXX") .aisle("#XSX#", "#CCC#", "#GGG#", "#CCC#", "#XXX#") .where('S', controller(blocks(definition.get()))) - .where('X', blocks(CASING_HIGH_TEMPERATURE_SMELTING.get()).setMinGlobalLimited(14) + .where('X', blocks(CASING_HIGH_TEMPERATURE_SMELTING.get()).setMinGlobalLimited(30) .or(autoAbilities(definition.getRecipeTypes())) .or(Predicates.autoAbilities(true, false, false))) .where('C', heatingCoils()) @@ -535,25 +536,29 @@ public static void init() {} .recipeTypes(DISTILLERY_RECIPES, DISTILLATION_RECIPES) .recipeModifier(GTRecipeModifiers.PARALLEL_HATCH.apply(OverclockingLogic.PERFECT_OVERCLOCK, GTRecipeModifiers.ELECTRIC_OVERCLOCK)) .appearanceBlock(CASING_WATERTIGHT) - .pattern(definition -> FactoryBlockPattern.start(RIGHT, FRONT, DOWN) - .aisle("#####", "#ZZZ#", "#ZCZ#", "#ZZZ#", "#####") - .aisle("##X##", "#XAX#", "XAPAX", "#XAX#", "##X##").setRepeatable(1, 12) - .aisle("#YSY#", "YAAAY", "YAAAY", "YAAAY", "#YYY#") - .aisle("#YYY#", "YYYYY", "YYYYY", "YYYYY", "#YYY#") - .where('S', controller(blocks(definition.get()))) - .where('Y', blocks(CASING_WATERTIGHT.get()).or(abilities(IMPORT_ITEMS)) - .or(abilities(INPUT_ENERGY)).setMinGlobalLimited(1) - .or(abilities(IMPORT_FLUIDS)).setMinGlobalLimited(1) - .or(abilities(EXPORT_ITEMS)) - .or(autoAbilities(true, false, true))) - .where('X', blocks(CASING_WATERTIGHT.get()) - .or(abilities(EXPORT_FLUIDS).setMinLayerLimited(1).setMaxLayerLimited(1))) - .where('Z', blocks(CASING_WATERTIGHT.get())) - .where('P', blocks(CASING_STEEL_PIPE.get())) - .where('C', abilities(MUFFLER)) - .where('A', air()) - .where('#', any()) - .build()) + .pattern(definition -> { + TraceabilityPredicate casingPredicate = blocks(CASING_WATERTIGHT.get()).setMinGlobalLimited(40); + + return FactoryBlockPattern.start(RIGHT, BACK, UP) + .aisle("#YYY#", "YYYYY", "YYYYY", "YYYYY", "#YYY#") + .aisle("#YSY#", "YAAAY", "YAAAY", "YAAAY", "#YYY#") + .aisle("##X##", "#XAX#", "XAPAX", "#XAX#", "##X##").setRepeatable(1, 12) + .aisle("#####", "#ZZZ#", "#ZCZ#", "#ZZZ#", "#####") + .where('S', controller(blocks(definition.get()))) + .where('Y', casingPredicate.or(abilities(IMPORT_ITEMS)) + .or(abilities(INPUT_ENERGY).setMinGlobalLimited(1)) + .or(abilities(IMPORT_FLUIDS).setMinGlobalLimited(1)) + .or(abilities(EXPORT_ITEMS)) + .or(autoAbilities(true, false, true))) + .where('X', casingPredicate + .or(abilities(EXPORT_FLUIDS).setMinLayerLimited(1).setMaxLayerLimited(1))) + .where('Z', casingPredicate) + .where('P', blocks(CASING_STEEL_PIPE.get())) + .where('C', abilities(MUFFLER)) + .where('A', air()) + .where('#', any()) + .build(); + }) .workableCasingRenderer(GTCEu.id("block/casings/gcym/watertight_casing"), GTCEu.id("block/multiblock/gcym/large_distillery"), false) .compassSections(GTCompassSections.TIER[IV]) @@ -675,36 +680,38 @@ public static void init() {} .recipeType(BLAST_RECIPES) .recipeModifier(GTRecipeModifiers.PARALLEL_HATCH.apply(OverclockingLogic.PERFECT_OVERCLOCK, (oc) -> GTRecipeModifiers::ebfOverclock)) .appearanceBlock(CASING_HIGH_TEMPERATURE_SMELTING) - .pattern(definition -> FactoryBlockPattern.start() - .aisle("##XXXXXXXXX##", "##XXXXXXXXX##", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############") - .aisle("#XXXXXXXXXXX#", "#XXXXXXXXXXX#", "###F#####F###", "###F#####F###", "###FFFFFFF###", "#############", "#############", "#############", "#############", "#############", "####FFFFF####", "#############", "#############", "#############", "#############", "#############", "#############") - .aisle("XXXXXXXXXXXXX", "XXXXVVVVVXXXX", "##F#######F##", "##F#######F##", "##FFFHHHFFF##", "##F#######F##", "##F#######F##", "##F#######F##", "##F#######F##", "##F#######F##", "##FFFHHHFFF##", "#############", "#############", "#############", "#############", "#############", "###TTTTTTT###") - .aisle("XXXXXXXXXXXXX", "XXXXXXXXXXXXX", "#F####P####F#", "#F####P####F#", "#FFHHHPHHHFF#", "######P######", "######P######", "######P######", "######P######", "######P######", "##FHHHPHHHF##", "######P######", "######P######", "######P######", "######P######", "######P######", "##TTTTPTTTT##") - .aisle("XXXXXXXXXXXXX", "XXVXXXXXXXVXX", "####BBPBB####", "####TITIT####", "#FFHHHHHHHFF#", "####BITIB####", "####CCCCC####", "####CCCCC####", "####CCCCC####", "####BITIB####", "#FFHHHHHHHFF#", "####BITIB####", "####CCCCC####", "####CCCCC####", "####CCCCC####", "####BITIB####", "##TTTTPTTTT##") - .aisle("XXXXXXXXXXXXX", "XXVXXXXXXXVXX", "####BAAAB####", "####IAAAI####", "#FHHHAAAHHHF#", "####IAAAI####", "####CAAAC####", "####CAAAC####", "####CAAAC####", "####IAAAI####", "#FHHHAAAHHHF#", "####IAAAI####", "####CAAAC####", "####CAAAC####", "####CAAAC####", "####IAAAI####", "##TTTTPTTTT##") - .aisle("XXXXXXXXXXXXX", "XXVXXXXXXXVXX", "###PPAAAPP###", "###PTAAATP###", "#FHPHAAAHPHF#", "###PTAAATP###", "###PCAAACP###", "###PCAAACP###", "###PCAAACP###", "###PTAAATP###", "#FHPHAAAHPHF#", "###PTAAATP###", "###PCAAACP###", "###PCAAACP###", "###PCAAACP###", "###PTAAATP###", "##TPPPMPPPT##") - .aisle("XXXXXXXXXXXXX", "XXVXXXXXXXVXX", "####BAAAB####", "####IAAAI####", "#FHHHAAAHHHF#", "####IAAAI####", "####CAAAC####", "####CAAAC####", "####CAAAC####", "####IAAAI####", "#FHHHAAAHHHF#", "####IAAAI####", "####CAAAC####", "####CAAAC####", "####CAAAC####", "####IAAAI####", "##TTTTPTTTT##") - .aisle("XXXXXXXXXXXXX", "XXVXXXXXXXVXX", "####BBPBB####", "####TITIT####", "#FFHHHHHHHFF#", "####BITIB####", "####CCCCC####", "####CCCCC####", "####CCCCC####", "####BITIB####", "#FFHHHHHHHFF#", "####BITIB####", "####CCCCC####", "####CCCCC####", "####CCCCC####", "####BITIB####", "##TTTTPTTTT##") - .aisle("XXXXXXXXXXXXX", "XXXXXXXXXXXXX", "#F####P####F#", "#F####P####F#", "#FFHHHPHHHFF#", "######P######", "######P######", "######P######", "######P######", "######P######", "##FHHHPHHHF##", "######P######", "######P######", "######P######", "######P######", "######P######", "##TTTTPTTTT##") - .aisle("XXXXXXXXXXXXX", "XXXXVVVVVXXXX", "##F#######F##", "##F#######F##", "##FFFHHHFFF##", "##F#######F##", "##F#######F##", "##F#######F##", "##F#######F##", "##F#######F##", "##FFFHHHFFF##", "#############", "#############", "#############", "#############", "#############", "###TTTTTTT###") - .aisle("#XXXXXXXXXXX#", "#XXXXXXXXXXX#", "###F#####F###", "###F#####F###", "###FFFFFFF###", "#############", "#############", "#############", "#############", "#############", "####FFFFF####", "#############", "#############", "#############", "#############", "#############", "#############") - .aisle("##XXXXXXXXX##", "##XXXXSXXXX##", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############") - .where('S', controller(blocks(definition.get()))) - .where('X', blocks(CASING_HIGH_TEMPERATURE_SMELTING.get()).setMinGlobalLimited(360) - .or(autoAbilities(definition.getRecipeTypes())) - .or(Predicates.autoAbilities(true, true, true))) - .where('C', heatingCoils()) - .where('M', abilities(PartAbility.MUFFLER)) - .where('F', blocks(ChemicalHelper.getBlock(TagPrefix.frameGt,NaquadahAlloy))) - .where('H', blocks(CASING_HIGH_TEMPERATURE_SMELTING.get())) - .where('T', blocks(CASING_TUNGSTENSTEEL_ROBUST.get())) - .where('B', blocks(FIREBOX_TUNGSTENSTEEL.get())) - .where('P', blocks(CASING_TUNGSTENSTEEL_PIPE.get())) - .where('I', blocks(CASING_EXTREME_ENGINE_INTAKE.get())) - .where('V', blocks(HEAT_VENT.get())) - .where('A', air()) - .where('#', any()) - .build()) + .pattern(definition -> { + TraceabilityPredicate casing = blocks(CASING_HIGH_TEMPERATURE_SMELTING.get()).setMinGlobalLimited(360); + return FactoryBlockPattern.start() + .aisle("##XXXXXXXXX##", "##XXXXXXXXX##", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############") + .aisle("#XXXXXXXXXXX#", "#XXXXXXXXXXX#", "###F#####F###", "###F#####F###", "###FFFFFFF###", "#############", "#############", "#############", "#############", "#############", "####FFFFF####", "#############", "#############", "#############", "#############", "#############", "#############") + .aisle("XXXXXXXXXXXXX", "XXXXVVVVVXXXX", "##F#######F##", "##F#######F##", "##FFFHHHFFF##", "##F#######F##", "##F#######F##", "##F#######F##", "##F#######F##", "##F#######F##", "##FFFHHHFFF##", "#############", "#############", "#############", "#############", "#############", "###TTTTTTT###") + .aisle("XXXXXXXXXXXXX", "XXXXXXXXXXXXX", "#F####P####F#", "#F####P####F#", "#FFHHHPHHHFF#", "######P######", "######P######", "######P######", "######P######", "######P######", "##FHHHPHHHF##", "######P######", "######P######", "######P######", "######P######", "######P######", "##TTTTPTTTT##") + .aisle("XXXXXXXXXXXXX", "XXVXXXXXXXVXX", "####BBPBB####", "####TITIT####", "#FFHHHHHHHFF#", "####BITIB####", "####CCCCC####", "####CCCCC####", "####CCCCC####", "####BITIB####", "#FFHHHHHHHFF#", "####BITIB####", "####CCCCC####", "####CCCCC####", "####CCCCC####", "####BITIB####", "##TTTTPTTTT##") + .aisle("XXXXXXXXXXXXX", "XXVXXXXXXXVXX", "####BAAAB####", "####IAAAI####", "#FHHHAAAHHHF#", "####IAAAI####", "####CAAAC####", "####CAAAC####", "####CAAAC####", "####IAAAI####", "#FHHHAAAHHHF#", "####IAAAI####", "####CAAAC####", "####CAAAC####", "####CAAAC####", "####IAAAI####", "##TTTTPTTTT##") + .aisle("XXXXXXXXXXXXX", "XXVXXXXXXXVXX", "###PPAAAPP###", "###PTAAATP###", "#FHPHAAAHPHF#", "###PTAAATP###", "###PCAAACP###", "###PCAAACP###", "###PCAAACP###", "###PTAAATP###", "#FHPHAAAHPHF#", "###PTAAATP###", "###PCAAACP###", "###PCAAACP###", "###PCAAACP###", "###PTAAATP###", "##TPPPMPPPT##") + .aisle("XXXXXXXXXXXXX", "XXVXXXXXXXVXX", "####BAAAB####", "####IAAAI####", "#FHHHAAAHHHF#", "####IAAAI####", "####CAAAC####", "####CAAAC####", "####CAAAC####", "####IAAAI####", "#FHHHAAAHHHF#", "####IAAAI####", "####CAAAC####", "####CAAAC####", "####CAAAC####", "####IAAAI####", "##TTTTPTTTT##") + .aisle("XXXXXXXXXXXXX", "XXVXXXXXXXVXX", "####BBPBB####", "####TITIT####", "#FFHHHHHHHFF#", "####BITIB####", "####CCCCC####", "####CCCCC####", "####CCCCC####", "####BITIB####", "#FFHHHHHHHFF#", "####BITIB####", "####CCCCC####", "####CCCCC####", "####CCCCC####", "####BITIB####", "##TTTTPTTTT##") + .aisle("XXXXXXXXXXXXX", "XXXXXXXXXXXXX", "#F####P####F#", "#F####P####F#", "#FFHHHPHHHFF#", "######P######", "######P######", "######P######", "######P######", "######P######", "##FHHHPHHHF##", "######P######", "######P######", "######P######", "######P######", "######P######", "##TTTTPTTTT##") + .aisle("XXXXXXXXXXXXX", "XXXXVVVVVXXXX", "##F#######F##", "##F#######F##", "##FFFHHHFFF##", "##F#######F##", "##F#######F##", "##F#######F##", "##F#######F##", "##F#######F##", "##FFFHHHFFF##", "#############", "#############", "#############", "#############", "#############", "###TTTTTTT###") + .aisle("#XXXXXXXXXXX#", "#XXXXXXXXXXX#", "###F#####F###", "###F#####F###", "###FFFFFFF###", "#############", "#############", "#############", "#############", "#############", "####FFFFF####", "#############", "#############", "#############", "#############", "#############", "#############") + .aisle("##XXXXXXXXX##", "##XXXXSXXXX##", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############") + .where('S', controller(blocks(definition.get()))) + .where('X', casing.or(autoAbilities(definition.getRecipeTypes())) + .or(Predicates.autoAbilities(true, false, true))) + .where('C', heatingCoils()) + .where('M', abilities(PartAbility.MUFFLER)) + .where('F', blocks(ChemicalHelper.getBlock(TagPrefix.frameGt, NaquadahAlloy))) + .where('H', casing) + .where('T', blocks(CASING_TUNGSTENSTEEL_ROBUST.get())) + .where('B', blocks(FIREBOX_TUNGSTENSTEEL.get())) + .where('P', blocks(CASING_TUNGSTENSTEEL_PIPE.get())) + .where('I', blocks(CASING_EXTREME_ENGINE_INTAKE.get())) + .where('V', blocks(HEAT_VENT.get())) + .where('A', air()) + .where('#', any()) + .build(); + }) .workableCasingRenderer(GTCEu.id("block/casings/gcym/high_temperature_smelting_casing"), GTCEu.id("block/multiblock/gcym/mega_blast_furnace"), false) .compassSections(GTCompassSections.TIER[LuV]) diff --git a/common/src/main/java/com/gregtechceu/gtceu/common/data/GTItems.java b/common/src/main/java/com/gregtechceu/gtceu/common/data/GTItems.java index 4a85842a27..be89d02b17 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/common/data/GTItems.java +++ b/common/src/main/java/com/gregtechceu/gtceu/common/data/GTItems.java @@ -410,7 +410,7 @@ public static ICustomDescriptionId cellName() { .color(() -> GTItems::cellColor) .onRegister(modelPredicate(GTCEu.id("fluid_cell"), (itemStack) -> FluidTransferHelper.getFluidContained(itemStack) == null ? 0f : 1f)) .onRegister(attach(cellName(), ThermalFluidStats.create((int)FluidHelper.getBucket(), 1200, false, true, false, false, true), new ItemFluidContainer())) - .onRegister(materialInfo(new ItemMaterialInfo(new MaterialStack(GTMaterials.Glass, GTValues.M * 4)))).register(); + .onRegister(materialInfo(new ItemMaterialInfo(new MaterialStack(GTMaterials.Glass, GTValues.M / 4)))).register(); // TODO Lighter public static ItemEntry TOOL_MATCHES; diff --git a/common/src/main/java/com/gregtechceu/gtceu/common/item/ColorSprayBehaviour.java b/common/src/main/java/com/gregtechceu/gtceu/common/item/ColorSprayBehaviour.java index 6b7af0df2e..1c178b57d7 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/common/item/ColorSprayBehaviour.java +++ b/common/src/main/java/com/gregtechceu/gtceu/common/item/ColorSprayBehaviour.java @@ -94,15 +94,15 @@ private static ResourceLocation getId(String modid, DyeColor color, String postf shulkerBoxBuilder.put(color, BuiltInRegistries.BLOCK.get(getId(GTValues.MODID_TINTED, color, "shulker_box"))); candleBuilder.put(color, BuiltInRegistries.BLOCK.get(getId(GTValues.MODID_TINTED, color, "candle"))); } else { - glassBuilder.put(color, BuiltInRegistries.BLOCK.get(getId("", color, "stained_glass"))); - glassPaneBuilder.put(color, BuiltInRegistries.BLOCK.get(getId("", color, "stained_glass_pane"))); - terracottaBuilder.put(color, BuiltInRegistries.BLOCK.get(getId("", color, "terracotta"))); - woolBuilder.put(color, BuiltInRegistries.BLOCK.get(getId("", color, "wool"))); - carpetBuilder.put(color, BuiltInRegistries.BLOCK.get(getId("", color, "carpet"))); - concreteBuilder.put(color, BuiltInRegistries.BLOCK.get(getId("", color, "concrete"))); - concretePowderBuilder.put(color, BuiltInRegistries.BLOCK.get(getId("", color, "concrete_powder"))); - shulkerBoxBuilder.put(color, BuiltInRegistries.BLOCK.get(getId("", color, "shulker_box"))); - candleBuilder.put(color, BuiltInRegistries.BLOCK.get(getId("", color, "candle"))); + glassBuilder.put(color, BuiltInRegistries.BLOCK.get(getId("minecraft", color, "stained_glass"))); + glassPaneBuilder.put(color, BuiltInRegistries.BLOCK.get(getId("minecraft", color, "stained_glass_pane"))); + terracottaBuilder.put(color, BuiltInRegistries.BLOCK.get(getId("minecraft", color, "terracotta"))); + woolBuilder.put(color, BuiltInRegistries.BLOCK.get(getId("minecraft", color, "wool"))); + carpetBuilder.put(color, BuiltInRegistries.BLOCK.get(getId("minecraft", color, "carpet"))); + concreteBuilder.put(color, BuiltInRegistries.BLOCK.get(getId("minecraft", color, "concrete"))); + concretePowderBuilder.put(color, BuiltInRegistries.BLOCK.get(getId("minecraft", color, "concrete_powder"))); + shulkerBoxBuilder.put(color, BuiltInRegistries.BLOCK.get(getId("minecraft", color, "shulker_box"))); + candleBuilder.put(color, BuiltInRegistries.BLOCK.get(getId("minecraft", color, "candle"))); /* somehow didn't want to work, it seems registry isn't fully loaded yet (forge) so `BuiltInRegistries.BLOCK.getId` returns air for modded blocks if (GTCEu.isCreateLoaded()) { diff --git a/common/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java b/common/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java index 2f4e06f9ed..692924815d 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java +++ b/common/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java @@ -9,6 +9,7 @@ import com.gregtechceu.gtceu.api.machine.feature.IMachineModifyDrops; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IDistinctPart; import com.gregtechceu.gtceu.api.machine.multiblock.part.TieredIOPartMachine; +import com.gregtechceu.gtceu.api.machine.trait.ItemHandlerProxyRecipeTrait; import com.gregtechceu.gtceu.api.machine.trait.NotifiableItemStackHandler; import com.gregtechceu.gtceu.common.item.IntCircuitBehaviour; import com.gregtechceu.gtceu.config.ConfigHolder; @@ -32,6 +33,7 @@ import javax.annotation.ParametersAreNonnullByDefault; import java.util.List; +import java.util.Set; /** * @author KilaBash @@ -52,11 +54,14 @@ public class ItemBusPartMachine extends TieredIOPartMachine implements IDistinct @Getter @Persisted protected final NotifiableItemStackHandler circuitInventory; + @Getter + protected final ItemHandlerProxyRecipeTrait combinedInventory; public ItemBusPartMachine(IMachineBlockEntity holder, int tier, IO io, Object... args) { super(holder, tier, io); this.inventory = createInventory(args); this.circuitInventory = createCircuitItemHandler(io); + this.combinedInventory = createCombinedItemHandler(io); } ////////////////////////////////////// @@ -77,13 +82,21 @@ protected NotifiableItemStackHandler createInventory(Object... args) { } protected NotifiableItemStackHandler createCircuitItemHandler(Object... args) { - if (args.length > 0 && args[0] instanceof IO io && io == IO.IN) { + if (args.length > 0 && args[0] instanceof IO io && io == IO.IN) { return new NotifiableItemStackHandler(this, 1, IO.IN, IO.NONE).setFilter(IntCircuitBehaviour::isIntegratedCircuit); } else { return new NotifiableItemStackHandler(this, 0, IO.NONE); } } + protected ItemHandlerProxyRecipeTrait createCombinedItemHandler(Object... args) { + if (args.length > 0 && args[0] instanceof IO io && io == IO.IN) { + return new ItemHandlerProxyRecipeTrait(this, Set.of(inventory, circuitInventory), IO.IN, IO.NONE); + } else { + return new ItemHandlerProxyRecipeTrait(this, Set.of(inventory, circuitInventory), IO.NONE, IO.NONE); + } + } + @Override public void onDrops(List drops, Player entity) { clearInventory(drops, inventory.storage); @@ -113,12 +126,14 @@ public void onUnload() { @Override public boolean isDistinct() { - return inventory.isDistinct(); + return inventory.isDistinct() && circuitInventory.isDistinct(); } @Override public void setDistinct(boolean isDistinct) { inventory.setDistinct(isDistinct); + circuitInventory.setDistinct(isDistinct); + combinedInventory.setDistinct(isDistinct); } ////////////////////////////////////// diff --git a/common/src/main/java/com/gregtechceu/gtceu/data/recipe/MaterialInfoLoader.java b/common/src/main/java/com/gregtechceu/gtceu/data/recipe/MaterialInfoLoader.java index 675469d88a..fc265d1631 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/data/recipe/MaterialInfoLoader.java +++ b/common/src/main/java/com/gregtechceu/gtceu/data/recipe/MaterialInfoLoader.java @@ -167,9 +167,40 @@ public static void init() { new MaterialStack(GTMaterials.Glass, M / 2) // 1 block / 2 )); - // TODO Expand for all terracottas - //ChemicalHelper.registerUnificationEntry(new ItemStack(Blocks.HARDENED_CLAY, 1, W), new ItemMaterialInfo(new MaterialStack(GTMaterials.Clay, M * 4))); - //ChemicalHelper.registerUnificationEntry(new ItemStack(Blocks.STAINED_HARDENED_CLAY, 1, W), new ItemMaterialInfo(new MaterialStack(GTMaterials.Clay, M * 4))); + ChemicalHelper.registerMaterialInfo(Blocks.TERRACOTTA, new ItemMaterialInfo(new MaterialStack(GTMaterials.Clay, M * 4))); + ChemicalHelper.registerMaterialInfo(Blocks.WHITE_TERRACOTTA, new ItemMaterialInfo(new MaterialStack(GTMaterials.Clay, M * 4))); + ChemicalHelper.registerMaterialInfo(Blocks.ORANGE_TERRACOTTA, new ItemMaterialInfo(new MaterialStack(GTMaterials.Clay, M * 4))); + ChemicalHelper.registerMaterialInfo(Blocks.MAGENTA_TERRACOTTA, new ItemMaterialInfo(new MaterialStack(GTMaterials.Clay, M * 4))); + ChemicalHelper.registerMaterialInfo(Blocks.LIGHT_BLUE_TERRACOTTA, new ItemMaterialInfo(new MaterialStack(GTMaterials.Clay, M * 4))); + ChemicalHelper.registerMaterialInfo(Blocks.YELLOW_TERRACOTTA, new ItemMaterialInfo(new MaterialStack(GTMaterials.Clay, M * 4))); + ChemicalHelper.registerMaterialInfo(Blocks.LIME_TERRACOTTA, new ItemMaterialInfo(new MaterialStack(GTMaterials.Clay, M * 4))); + ChemicalHelper.registerMaterialInfo(Blocks.PINK_TERRACOTTA, new ItemMaterialInfo(new MaterialStack(GTMaterials.Clay, M * 4))); + ChemicalHelper.registerMaterialInfo(Blocks.GRAY_TERRACOTTA, new ItemMaterialInfo(new MaterialStack(GTMaterials.Clay, M * 4))); + ChemicalHelper.registerMaterialInfo(Blocks.LIGHT_GRAY_TERRACOTTA, new ItemMaterialInfo(new MaterialStack(GTMaterials.Clay, M * 4))); + ChemicalHelper.registerMaterialInfo(Blocks.CYAN_TERRACOTTA, new ItemMaterialInfo(new MaterialStack(GTMaterials.Clay, M * 4))); + ChemicalHelper.registerMaterialInfo(Blocks.PURPLE_TERRACOTTA, new ItemMaterialInfo(new MaterialStack(GTMaterials.Clay, M * 4))); + ChemicalHelper.registerMaterialInfo(Blocks.BLUE_TERRACOTTA, new ItemMaterialInfo(new MaterialStack(GTMaterials.Clay, M * 4))); + ChemicalHelper.registerMaterialInfo(Blocks.BROWN_TERRACOTTA, new ItemMaterialInfo(new MaterialStack(GTMaterials.Clay, M * 4))); + ChemicalHelper.registerMaterialInfo(Blocks.GREEN_TERRACOTTA, new ItemMaterialInfo(new MaterialStack(GTMaterials.Clay, M * 4))); + ChemicalHelper.registerMaterialInfo(Blocks.RED_TERRACOTTA, new ItemMaterialInfo(new MaterialStack(GTMaterials.Clay, M * 4))); + ChemicalHelper.registerMaterialInfo(Blocks.BLACK_TERRACOTTA, new ItemMaterialInfo(new MaterialStack(GTMaterials.Clay, M * 4))); + + ChemicalHelper.registerMaterialInfo(Blocks.WHITE_GLAZED_TERRACOTTA, new ItemMaterialInfo(new MaterialStack(GTMaterials.Clay, M * 4))); + ChemicalHelper.registerMaterialInfo(Blocks.ORANGE_GLAZED_TERRACOTTA, new ItemMaterialInfo(new MaterialStack(GTMaterials.Clay, M * 4))); + ChemicalHelper.registerMaterialInfo(Blocks.MAGENTA_GLAZED_TERRACOTTA, new ItemMaterialInfo(new MaterialStack(GTMaterials.Clay, M * 4))); + ChemicalHelper.registerMaterialInfo(Blocks.LIGHT_BLUE_GLAZED_TERRACOTTA, new ItemMaterialInfo(new MaterialStack(GTMaterials.Clay, M * 4))); + ChemicalHelper.registerMaterialInfo(Blocks.YELLOW_GLAZED_TERRACOTTA, new ItemMaterialInfo(new MaterialStack(GTMaterials.Clay, M * 4))); + ChemicalHelper.registerMaterialInfo(Blocks.LIME_GLAZED_TERRACOTTA, new ItemMaterialInfo(new MaterialStack(GTMaterials.Clay, M * 4))); + ChemicalHelper.registerMaterialInfo(Blocks.PINK_GLAZED_TERRACOTTA, new ItemMaterialInfo(new MaterialStack(GTMaterials.Clay, M * 4))); + ChemicalHelper.registerMaterialInfo(Blocks.GRAY_GLAZED_TERRACOTTA, new ItemMaterialInfo(new MaterialStack(GTMaterials.Clay, M * 4))); + ChemicalHelper.registerMaterialInfo(Blocks.LIGHT_GRAY_GLAZED_TERRACOTTA, new ItemMaterialInfo(new MaterialStack(GTMaterials.Clay, M * 4))); + ChemicalHelper.registerMaterialInfo(Blocks.CYAN_GLAZED_TERRACOTTA, new ItemMaterialInfo(new MaterialStack(GTMaterials.Clay, M * 4))); + ChemicalHelper.registerMaterialInfo(Blocks.PURPLE_GLAZED_TERRACOTTA, new ItemMaterialInfo(new MaterialStack(GTMaterials.Clay, M * 4))); + ChemicalHelper.registerMaterialInfo(Blocks.BLUE_GLAZED_TERRACOTTA, new ItemMaterialInfo(new MaterialStack(GTMaterials.Clay, M * 4))); + ChemicalHelper.registerMaterialInfo(Blocks.BROWN_GLAZED_TERRACOTTA, new ItemMaterialInfo(new MaterialStack(GTMaterials.Clay, M * 4))); + ChemicalHelper.registerMaterialInfo(Blocks.GREEN_GLAZED_TERRACOTTA, new ItemMaterialInfo(new MaterialStack(GTMaterials.Clay, M * 4))); + ChemicalHelper.registerMaterialInfo(Blocks.RED_GLAZED_TERRACOTTA, new ItemMaterialInfo(new MaterialStack(GTMaterials.Clay, M * 4))); + ChemicalHelper.registerMaterialInfo(Blocks.BLACK_GLAZED_TERRACOTTA, new ItemMaterialInfo(new MaterialStack(GTMaterials.Clay, M * 4))); ChemicalHelper.registerMaterialInfo(GTBlocks.CASING_PRIMITIVE_BRICKS.get(), new ItemMaterialInfo(new MaterialStack(GTMaterials.Fireclay, M * 4))); @@ -183,6 +214,8 @@ public static void init() { ChemicalHelper.registerMaterialInfo(Items.MANGROVE_DOOR, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M * 2), new MaterialStack(GTMaterials.Iron, M / 9))); // screw ChemicalHelper.registerMaterialInfo(Items.CRIMSON_DOOR, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M * 2), new MaterialStack(GTMaterials.Iron, M / 9))); // screw ChemicalHelper.registerMaterialInfo(Items.WARPED_DOOR, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M * 2), new MaterialStack(GTMaterials.Iron, M / 9))); // screw + ChemicalHelper.registerMaterialInfo(Items.BAMBOO_DOOR, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M * 2), new MaterialStack(GTMaterials.Iron, M / 9))); // screw + ChemicalHelper.registerMaterialInfo(Items.CHERRY_DOOR, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M * 2), new MaterialStack(GTMaterials.Iron, M / 9))); // screw } else { ChemicalHelper.registerMaterialInfo(Items.ACACIA_DOOR, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M * 2))); ChemicalHelper.registerMaterialInfo(Items.BIRCH_DOOR, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M * 2))); @@ -193,6 +226,8 @@ public static void init() { ChemicalHelper.registerMaterialInfo(Items.MANGROVE_DOOR, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M * 2))); ChemicalHelper.registerMaterialInfo(Items.CRIMSON_DOOR, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M * 2))); ChemicalHelper.registerMaterialInfo(Items.WARPED_DOOR, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M * 2))); + ChemicalHelper.registerMaterialInfo(Items.BAMBOO_DOOR, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M * 2))); + ChemicalHelper.registerMaterialInfo(Items.CHERRY_DOOR, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M * 2))); } ChemicalHelper.registerMaterialInfo(Blocks.ACACIA_PLANKS, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M))); @@ -204,6 +239,8 @@ public static void init() { ChemicalHelper.registerMaterialInfo(Blocks.MANGROVE_PLANKS, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M))); ChemicalHelper.registerMaterialInfo(Blocks.CRIMSON_PLANKS, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M))); ChemicalHelper.registerMaterialInfo(Blocks.WARPED_PLANKS, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M))); + ChemicalHelper.registerMaterialInfo(Blocks.BAMBOO_PLANKS, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M))); + ChemicalHelper.registerMaterialInfo(Blocks.CHERRY_PLANKS, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M))); if (ConfigHolder.INSTANCE.recipes.hardIronRecipes) @@ -213,67 +250,98 @@ public static void init() { else ChemicalHelper.registerMaterialInfo(Items.IRON_DOOR, new ItemMaterialInfo(new MaterialStack(GTMaterials.Iron, M * 2))); - // TODO new tag prefixes - /* - ChemicalHelper.registerMaterialInfo(new ItemStack(Blocks.OAK_FENCE, 1), new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M))); // dust - ChemicalHelper.registerMaterialInfo(new ItemStack(Blocks.BIRCH_FENCE, 1), new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M))); // dust - ChemicalHelper.registerMaterialInfo(new ItemStack(Blocks.SPRUCE_FENCE, 1), new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M))); // dust - ChemicalHelper.registerMaterialInfo(new ItemStack(Blocks.JUNGLE_FENCE, 1), new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M))); // dust - ChemicalHelper.registerMaterialInfo(new ItemStack(Blocks.DARK_OAK_FENCE, 1), new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M))); // dust - ChemicalHelper.registerMaterialInfo(new ItemStack(Blocks.ACACIA_FENCE, 1), new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M))); // dust - ChemicalHelper.registerMaterialInfo(new ItemStack(Blocks.MANGROVE_FENCE, 1), new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M))); // dust - ChemicalHelper.registerMaterialInfo(new ItemStack(Blocks.CRIMSON_FENCE, 1), new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M))); // dust - ChemicalHelper.registerMaterialInfo(new ItemStack(Blocks.WARPED_FENCE, 1), new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M))); // dust - - ChemicalHelper.registerMaterialInfo(new ItemStack(Blocks.OAK_FENCE_GATE, 1), new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M * 3))); // dust - ChemicalHelper.registerMaterialInfo(new ItemStack(Blocks.BIRCH_FENCE_GATE, 1), new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M * 3))); // dust - ChemicalHelper.registerMaterialInfo(new ItemStack(Blocks.SPRUCE_FENCE_GATE, 1), new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M * 3))); // dust - ChemicalHelper.registerMaterialInfo(new ItemStack(Blocks.JUNGLE_FENCE_GATE, 1), new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M * 3))); // dust - ChemicalHelper.registerMaterialInfo(new ItemStack(Blocks.DARK_OAK_FENCE_GATE, 1), new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M * 3))); // dust - ChemicalHelper.registerMaterialInfo(new ItemStack(Blocks.ACACIA_FENCE_GATE, 1), new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M * 3))); // dust - ChemicalHelper.registerMaterialInfo(new ItemStack(Blocks.MANGROVE_FENCE_GATE, 1), new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M * 3))); // dust - ChemicalHelper.registerMaterialInfo(new ItemStack(Blocks.CRIMSON_FENCE_GATE, 1), new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M * 3))); // dust - ChemicalHelper.registerMaterialInfo(new ItemStack(Blocks.WARPED_FENCE_GATE, 1), new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M * 3))); // dust - - ChemicalHelper.registerMaterialInfo(new ItemStack(Blocks.OAK_STAIRS, 1), new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, (3 * M) / 2))); // dust small - ChemicalHelper.registerMaterialInfo(new ItemStack(Blocks.BIRCH_STAIRS, 1), new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, (3 * M) / 2))); // dust small - ChemicalHelper.registerMaterialInfo(new ItemStack(Blocks.SPRUCE_STAIRS, 1), new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, (3 * M) / 2))); // dust small - ChemicalHelper.registerMaterialInfo(new ItemStack(Blocks.JUNGLE_STAIRS, 1), new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, (3 * M) / 2))); // dust small - ChemicalHelper.registerMaterialInfo(new ItemStack(Blocks.DARK_OAK_STAIRS, 1), new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, (3 * M) / 2))); // dust small - ChemicalHelper.registerMaterialInfo(new ItemStack(Blocks.ACACIA_STAIRS, 1), new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, (3 * M) / 2))); // dust small - ChemicalHelper.registerMaterialInfo(new ItemStack(Blocks.MANGROVE_STAIRS, 1), new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, (3 * M) / 2))); // dust small - ChemicalHelper.registerMaterialInfo(new ItemStack(Blocks.CRIMSON_STAIRS, 1), new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, (3 * M) / 2))); // dust small - ChemicalHelper.registerMaterialInfo(new ItemStack(Blocks.WARPED_STAIRS, 1), new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, (3 * M) / 2))); // dust small - - ChemicalHelper.registerMaterialInfo(new ItemStack(Items.OAK_BOAT, 1), new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M * 5))); - ChemicalHelper.registerMaterialInfo(new ItemStack(Items.BIRCH_BOAT, 1), new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M * 5))); - ChemicalHelper.registerMaterialInfo(new ItemStack(Items.SPRUCE_BOAT, 1), new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M * 5))); - ChemicalHelper.registerMaterialInfo(new ItemStack(Items.JUNGLE_BOAT, 1), new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M * 5))); - ChemicalHelper.registerMaterialInfo(new ItemStack(Items.DARK_OAK_BOAT, 1), new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M * 5))); - ChemicalHelper.registerMaterialInfo(new ItemStack(Items.ACACIA_BOAT, 1), new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M * 5))); - ChemicalHelper.registerMaterialInfo(new ItemStack(Items.MANGROVE_BOAT, 1), new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M * 5))); - - ChemicalHelper.registerMaterialInfo(new ItemStack(Blocks.STONE_STAIRS, 1), new ItemMaterialInfo(new MaterialStack(GTMaterials.Stone, (3 * M) / 2))); // dust small - ChemicalHelper.registerMaterialInfo(new ItemStack(Blocks.SANDSTONE_STAIRS, 1), new ItemMaterialInfo(new MaterialStack(GTMaterials.Stone, (3 * M) / 2))); // dust small - ChemicalHelper.registerMaterialInfo(new ItemStack(Blocks.RED_SANDSTONE_STAIRS, 1), new ItemMaterialInfo(new MaterialStack(GTMaterials.Stone, (3 * M) / 2))); // dust small - ChemicalHelper.registerMaterialInfo(new ItemStack(Blocks.STONE_BRICK_STAIRS, 1), new ItemMaterialInfo(new MaterialStack(GTMaterials.Stone, (3 * M) / 2))); // dust small - ChemicalHelper.registerMaterialInfo(new ItemStack(Blocks.QUARTZ_STAIRS, 1), new ItemMaterialInfo(new MaterialStack(GTMaterials.NetherQuartz, M * 6))); // dust - ChemicalHelper.registerMaterialInfo(new ItemStack(Blocks.BRICK_STAIRS, 1), new ItemMaterialInfo(new MaterialStack(GTMaterials.Brick, M * 6))); // dust - ChemicalHelper.registerMaterialInfo(new ItemStack(Blocks.NETHER_BRICK_STAIRS, 1), new ItemMaterialInfo(new MaterialStack(GTMaterials.Netherrack, M * 6))); // dust - - ChemicalHelper.registerMaterialInfo(new ItemStack(Blocks.STONE_SLAB, 1, 0), new ItemMaterialInfo(new MaterialStack(GTMaterials.Stone, M / 2))); - ChemicalHelper.registerMaterialInfo(new ItemStack(Blocks.STONE_SLAB, 1, 1), new ItemMaterialInfo(new MaterialStack(GTMaterials.Stone, M / 2))); - ChemicalHelper.registerMaterialInfo(new ItemStack(Blocks.STONE_SLAB, 1, 2), new ItemMaterialInfo(new MaterialStack(GTMaterials.Stone, M / 2))); - ChemicalHelper.registerMaterialInfo(new ItemStack(Blocks.STONE_SLAB, 1, 3), new ItemMaterialInfo(new MaterialStack(GTMaterials.Stone, M / 2))); - ChemicalHelper.registerMaterialInfo(new ItemStack(Blocks.STONE_SLAB, 1, 4), new ItemMaterialInfo(new MaterialStack(GTMaterials.Brick, M * 2))); - ChemicalHelper.registerMaterialInfo(new ItemStack(Blocks.STONE_SLAB, 1, 5), new ItemMaterialInfo(new MaterialStack(GTMaterials.Stone, M / 2))); - ChemicalHelper.registerMaterialInfo(new ItemStack(Blocks.STONE_SLAB, 1, 6), new ItemMaterialInfo(new MaterialStack(GTMaterials.Netherrack, M * 2))); - ChemicalHelper.registerMaterialInfo(new ItemStack(Blocks.STONE_SLAB, 1, 7), new ItemMaterialInfo(new MaterialStack(GTMaterials.NetherQuartz, M * 2))); - ChemicalHelper.registerMaterialInfo(new ItemStack(Blocks.WOODEN_SLAB, 1, W), new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M / 2))); -*/ + ChemicalHelper.registerMaterialInfo(Blocks.OAK_FENCE, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M))); // dust + ChemicalHelper.registerMaterialInfo(Blocks.BIRCH_FENCE, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M))); // dust + ChemicalHelper.registerMaterialInfo(Blocks.SPRUCE_FENCE, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M))); // dust + ChemicalHelper.registerMaterialInfo(Blocks.JUNGLE_FENCE, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M))); // dust + ChemicalHelper.registerMaterialInfo(Blocks.DARK_OAK_FENCE, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M))); // dust + ChemicalHelper.registerMaterialInfo(Blocks.ACACIA_FENCE, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M))); // dust + ChemicalHelper.registerMaterialInfo(Blocks.MANGROVE_FENCE, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M))); // dust + ChemicalHelper.registerMaterialInfo(Blocks.CRIMSON_FENCE, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M))); // dust + ChemicalHelper.registerMaterialInfo(Blocks.WARPED_FENCE, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M))); // dust + ChemicalHelper.registerMaterialInfo(Blocks.BAMBOO_FENCE, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M))); // dust + ChemicalHelper.registerMaterialInfo(Blocks.CHERRY_FENCE, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M))); // dust + + ChemicalHelper.registerMaterialInfo(Blocks.OAK_FENCE_GATE, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M * 3))); // dust + ChemicalHelper.registerMaterialInfo(Blocks.BIRCH_FENCE_GATE, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M * 3))); // dust + ChemicalHelper.registerMaterialInfo(Blocks.SPRUCE_FENCE_GATE, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M * 3))); // dust + ChemicalHelper.registerMaterialInfo(Blocks.JUNGLE_FENCE_GATE, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M * 3))); // dust + ChemicalHelper.registerMaterialInfo(Blocks.DARK_OAK_FENCE_GATE, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M * 3))); // dust + ChemicalHelper.registerMaterialInfo(Blocks.ACACIA_FENCE_GATE, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M * 3))); // dust + ChemicalHelper.registerMaterialInfo(Blocks.MANGROVE_FENCE_GATE, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M * 3))); // dust + ChemicalHelper.registerMaterialInfo(Blocks.CRIMSON_FENCE_GATE, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M * 3))); // dust + ChemicalHelper.registerMaterialInfo(Blocks.WARPED_FENCE_GATE, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M * 3))); // dust + ChemicalHelper.registerMaterialInfo(Blocks.BAMBOO_FENCE_GATE, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M * 3))); // dust + ChemicalHelper.registerMaterialInfo(Blocks.CHERRY_FENCE_GATE, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M * 3))); // dust + + ChemicalHelper.registerMaterialInfo(Blocks.OAK_STAIRS, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, (3 * M) / 2))); // dust small + ChemicalHelper.registerMaterialInfo(Blocks.BIRCH_STAIRS, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, (3 * M) / 2))); // dust small + ChemicalHelper.registerMaterialInfo(Blocks.SPRUCE_STAIRS, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, (3 * M) / 2))); // dust small + ChemicalHelper.registerMaterialInfo(Blocks.JUNGLE_STAIRS, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, (3 * M) / 2))); // dust small + ChemicalHelper.registerMaterialInfo(Blocks.DARK_OAK_STAIRS, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, (3 * M) / 2))); // dust small + ChemicalHelper.registerMaterialInfo(Blocks.ACACIA_STAIRS, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, (3 * M) / 2))); // dust small + ChemicalHelper.registerMaterialInfo(Blocks.MANGROVE_STAIRS, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, (3 * M) / 2))); // dust small + ChemicalHelper.registerMaterialInfo(Blocks.CRIMSON_STAIRS, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, (3 * M) / 2))); // dust small + ChemicalHelper.registerMaterialInfo(Blocks.WARPED_STAIRS, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, (3 * M) / 2))); // dust small + ChemicalHelper.registerMaterialInfo(Blocks.BAMBOO_STAIRS, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, (3 * M) / 2))); // dust small + ChemicalHelper.registerMaterialInfo(Blocks.BAMBOO_MOSAIC_STAIRS, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, (3 * M) / 2))); // dust small + ChemicalHelper.registerMaterialInfo(Blocks.CHERRY_STAIRS, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, (3 * M) / 2))); // dust small + + ChemicalHelper.registerMaterialInfo(Items.OAK_BOAT, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M * 5))); + ChemicalHelper.registerMaterialInfo(Items.BIRCH_BOAT, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M * 5))); + ChemicalHelper.registerMaterialInfo(Items.SPRUCE_BOAT, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M * 5))); + ChemicalHelper.registerMaterialInfo(Items.JUNGLE_BOAT, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M * 5))); + ChemicalHelper.registerMaterialInfo(Items.DARK_OAK_BOAT, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M * 5))); + ChemicalHelper.registerMaterialInfo(Items.ACACIA_BOAT, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M * 5))); + ChemicalHelper.registerMaterialInfo(Items.MANGROVE_BOAT, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M * 5))); + ChemicalHelper.registerMaterialInfo(Items.BAMBOO_RAFT, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M * 5))); + ChemicalHelper.registerMaterialInfo(Items.CHERRY_BOAT, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M * 5))); + + ChemicalHelper.registerMaterialInfo(Blocks.STONE_STAIRS, new ItemMaterialInfo(new MaterialStack(GTMaterials.Stone, (3 * M) / 2))); // dust small + ChemicalHelper.registerMaterialInfo(Blocks.SANDSTONE_STAIRS, new ItemMaterialInfo(new MaterialStack(GTMaterials.Stone, (3 * M) / 2))); // dust small + ChemicalHelper.registerMaterialInfo(Blocks.RED_SANDSTONE_STAIRS, new ItemMaterialInfo(new MaterialStack(GTMaterials.Stone, (3 * M) / 2))); // dust small + ChemicalHelper.registerMaterialInfo(Blocks.STONE_BRICK_STAIRS, new ItemMaterialInfo(new MaterialStack(GTMaterials.Stone, (3 * M) / 2))); // dust small + ChemicalHelper.registerMaterialInfo(Blocks.QUARTZ_STAIRS, new ItemMaterialInfo(new MaterialStack(GTMaterials.NetherQuartz, M * 6))); // dust + ChemicalHelper.registerMaterialInfo(Blocks.BRICK_STAIRS, new ItemMaterialInfo(new MaterialStack(GTMaterials.Brick, M * 6))); // dust + ChemicalHelper.registerMaterialInfo(Blocks.NETHER_BRICK_STAIRS, new ItemMaterialInfo(new MaterialStack(GTMaterials.Netherrack, M * 6))); // dust + + ChemicalHelper.registerMaterialInfo(Blocks.STONE_SLAB, new ItemMaterialInfo(new MaterialStack(GTMaterials.Stone, M / 2))); + ChemicalHelper.registerMaterialInfo(Blocks.SANDSTONE_SLAB, new ItemMaterialInfo(new MaterialStack(GTMaterials.Stone, M / 2))); + ChemicalHelper.registerMaterialInfo(Blocks.RED_SANDSTONE_SLAB, new ItemMaterialInfo(new MaterialStack(GTMaterials.Stone, M / 2))); + ChemicalHelper.registerMaterialInfo(Blocks.COBBLESTONE_SLAB, new ItemMaterialInfo(new MaterialStack(GTMaterials.Stone, M / 2))); + ChemicalHelper.registerMaterialInfo(Blocks.BRICK_SLAB, new ItemMaterialInfo(new MaterialStack(GTMaterials.Brick, M * 2))); + ChemicalHelper.registerMaterialInfo(Blocks.STONE_BRICK_SLAB, new ItemMaterialInfo(new MaterialStack(GTMaterials.Stone, M / 2))); + ChemicalHelper.registerMaterialInfo(Blocks.NETHER_BRICK_SLAB, new ItemMaterialInfo(new MaterialStack(GTMaterials.Netherrack, M * 2))); + ChemicalHelper.registerMaterialInfo(Blocks.QUARTZ_SLAB, new ItemMaterialInfo(new MaterialStack(GTMaterials.NetherQuartz, M * 2))); + ChemicalHelper.registerMaterialInfo(Blocks.SMOOTH_QUARTZ_SLAB, new ItemMaterialInfo(new MaterialStack(GTMaterials.NetherQuartz, M * 2))); + + ChemicalHelper.registerMaterialInfo(Blocks.OAK_SLAB, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M / 2))); + ChemicalHelper.registerMaterialInfo(Blocks.BIRCH_SLAB, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M / 2))); + ChemicalHelper.registerMaterialInfo(Blocks.SPRUCE_SLAB, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M / 2))); + ChemicalHelper.registerMaterialInfo(Blocks.JUNGLE_SLAB, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M / 2))); + ChemicalHelper.registerMaterialInfo(Blocks.DARK_OAK_SLAB, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M / 2))); + ChemicalHelper.registerMaterialInfo(Blocks.ACACIA_SLAB, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M / 2))); + ChemicalHelper.registerMaterialInfo(Blocks.MANGROVE_SLAB, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M / 2))); + ChemicalHelper.registerMaterialInfo(Blocks.CRIMSON_SLAB, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M / 2))); + ChemicalHelper.registerMaterialInfo(Blocks.WARPED_SLAB, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M / 2))); + ChemicalHelper.registerMaterialInfo(Blocks.BAMBOO_SLAB, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M / 2))); + ChemicalHelper.registerMaterialInfo(Blocks.BAMBOO_MOSAIC_SLAB, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M / 2))); + ChemicalHelper.registerMaterialInfo(Blocks.CHERRY_SLAB, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M / 2))); + ChemicalHelper.registerMaterialInfo(Blocks.LEVER, new ItemMaterialInfo(new MaterialStack(GTMaterials.Stone, M / 9), new MaterialStack(GTMaterials.Wood, 1814400L))); - // todo - //ChemicalHelper.registerMaterialInfo(new ItemStack(Blocks.WOODEN_BUTTON, 1, W), new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M / 9))); + + ChemicalHelper.registerMaterialInfo(Blocks.OAK_BUTTON, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M / 9))); + ChemicalHelper.registerMaterialInfo(Blocks.BIRCH_BUTTON, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M / 9))); + ChemicalHelper.registerMaterialInfo(Blocks.SPRUCE_BUTTON, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M / 9))); + ChemicalHelper.registerMaterialInfo(Blocks.JUNGLE_BUTTON, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M / 9))); + ChemicalHelper.registerMaterialInfo(Blocks.DARK_OAK_BUTTON, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M / 9))); + ChemicalHelper.registerMaterialInfo(Blocks.ACACIA_BUTTON, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M / 9))); + ChemicalHelper.registerMaterialInfo(Blocks.MANGROVE_BUTTON, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M / 9))); + ChemicalHelper.registerMaterialInfo(Blocks.CRIMSON_BUTTON, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M / 9))); + ChemicalHelper.registerMaterialInfo(Blocks.WARPED_BUTTON, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M / 9))); + ChemicalHelper.registerMaterialInfo(Blocks.BAMBOO_BUTTON, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M / 9))); + ChemicalHelper.registerMaterialInfo(Blocks.CHERRY_BUTTON, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M / 9))); + ChemicalHelper.registerMaterialInfo(Blocks.STONE_BUTTON, new ItemMaterialInfo(new MaterialStack(GTMaterials.Stone, M / 9))); ChemicalHelper.registerMaterialInfo(Blocks.REDSTONE_TORCH, new ItemMaterialInfo(new MaterialStack(GTMaterials.Wood, M / 2), new MaterialStack(GTMaterials.Redstone, M))); diff --git a/common/src/main/java/com/gregtechceu/gtceu/data/recipe/configurable/RecipeAddition.java b/common/src/main/java/com/gregtechceu/gtceu/data/recipe/configurable/RecipeAddition.java index 827dc7018d..255f632b29 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/data/recipe/configurable/RecipeAddition.java +++ b/common/src/main/java/com/gregtechceu/gtceu/data/recipe/configurable/RecipeAddition.java @@ -238,7 +238,7 @@ private static void hardWoodRecipes(Consumer provider) { .outputItems(new ItemStack(Items.MANGROVE_DOOR)) .duration(400).EUt(4).save(provider); - VanillaRecipeHelper.addShapedRecipe(provider, "crimson_door", new ItemStack(Items.DARK_OAK_DOOR), "PTd", "PRS", "PPs", + VanillaRecipeHelper.addShapedRecipe(provider, "crimson_door", new ItemStack(Items.CRIMSON_DOOR), "PTd", "PRS", "PPs", 'P', new ItemStack(Blocks.CRIMSON_PLANKS), 'T', new ItemStack(Blocks.CRIMSON_TRAPDOOR), 'R', new UnificationEntry(TagPrefix.ring, GTMaterials.Iron), @@ -252,7 +252,7 @@ private static void hardWoodRecipes(Consumer provider) { .outputItems(new ItemStack(Items.CRIMSON_DOOR)) .duration(400).EUt(4).save(provider); - VanillaRecipeHelper.addShapedRecipe(provider, "warped_door", new ItemStack(Items.DARK_OAK_DOOR), "PTd", "PRS", "PPs", + VanillaRecipeHelper.addShapedRecipe(provider, "warped_door", new ItemStack(Items.WARPED_DOOR), "PTd", "PRS", "PPs", 'P', new ItemStack(Blocks.WARPED_PLANKS), 'T', new ItemStack(Blocks.WARPED_TRAPDOOR), 'R', new UnificationEntry(TagPrefix.ring, GTMaterials.Iron), @@ -266,6 +266,34 @@ private static void hardWoodRecipes(Consumer provider) { .outputItems(new ItemStack(Items.WARPED_DOOR)) .duration(400).EUt(4).save(provider); + VanillaRecipeHelper.addShapedRecipe(provider, "bamboo_door", new ItemStack(Items.BAMBOO_DOOR), "PTd", "PRS", "PPs", + 'P', new ItemStack(Blocks.BAMBOO_PLANKS), + 'T', new ItemStack(Blocks.BAMBOO_TRAPDOOR), + 'R', new UnificationEntry(TagPrefix.ring, GTMaterials.Iron), + 'S', new UnificationEntry(TagPrefix.screw, GTMaterials.Iron) + ); + + GTRecipeTypes.ASSEMBLER_RECIPES.recipeBuilder("bamboo_door") + .inputItems(new ItemStack(Blocks.BAMBOO_TRAPDOOR)) + .inputItems(new ItemStack(Blocks.BAMBOO_PLANKS, 4)) + .inputFluids(GTMaterials.Iron.getFluid(GTValues.L / 9)) + .outputItems(new ItemStack(Items.BAMBOO_DOOR)) + .duration(400).EUt(4).save(provider); + + VanillaRecipeHelper.addShapedRecipe(provider, "cherry_door", new ItemStack(Items.CHERRY_DOOR), "PTd", "PRS", "PPs", + 'P', new ItemStack(Blocks.CHERRY_PLANKS), + 'T', new ItemStack(Blocks.CHERRY_TRAPDOOR), + 'R', new UnificationEntry(TagPrefix.ring, GTMaterials.Iron), + 'S', new UnificationEntry(TagPrefix.screw, GTMaterials.Iron) + ); + + GTRecipeTypes.ASSEMBLER_RECIPES.recipeBuilder("cherry_door") + .inputItems(new ItemStack(Blocks.CHERRY_TRAPDOOR)) + .inputItems(new ItemStack(Blocks.CHERRY_PLANKS, 4)) + .inputFluids(GTMaterials.Iron.getFluid(GTValues.L / 9)) + .outputItems(new ItemStack(Items.BAMBOO_DOOR)) + .duration(400).EUt(4).save(provider); + VanillaRecipeHelper.addShapedRecipe(provider, "oak_trapdoor", new ItemStack(Blocks.OAK_TRAPDOOR), "SRS", "RRR", "SRS", 'S', new ItemStack(Blocks.OAK_SLAB), 'R', new ItemStack(Items.STICK) @@ -311,6 +339,16 @@ private static void hardWoodRecipes(Consumer provider) { 'R', new ItemStack(Items.STICK) ); + VanillaRecipeHelper.addShapedRecipe(provider, "bamboo_trapdoor", new ItemStack(Blocks.BAMBOO_TRAPDOOR), "SRS", "RRR", "SRS", + 'S', new ItemStack(Blocks.BAMBOO_SLAB), + 'R', new ItemStack(Items.STICK) + ); + + VanillaRecipeHelper.addShapedRecipe(provider, "cherry_trapdoor", new ItemStack(Blocks.CHERRY_TRAPDOOR), "SRS", "RRR", "SRS", + 'S', new ItemStack(Blocks.CHERRY_SLAB), + 'R', new ItemStack(Items.STICK) + ); + VanillaRecipeHelper.addShapedRecipe(provider, "bowl", new ItemStack(Items.BOWL), "k", "X", 'X', ItemTags.PLANKS); VanillaRecipeHelper.addShapedRecipe(provider, "chest", new ItemStack(Blocks.CHEST), "LPL", "PFP", "LPL", @@ -325,6 +363,8 @@ private static void hardWoodRecipes(Consumer provider) { VanillaRecipeHelper.addShapedRecipe(provider, "acacia_boat", new ItemStack(Items.ACACIA_BOAT), "PHP", "PkP", "SSS", 'P', new ItemStack(Blocks.ACACIA_PLANKS), 'S', new ItemStack(Blocks.ACACIA_SLAB), 'H', new ItemStack(Items.WOODEN_SHOVEL)); VanillaRecipeHelper.addShapedRecipe(provider, "dark_oak_boat", new ItemStack(Items.DARK_OAK_BOAT), "PHP", "PkP", "SSS", 'P', new ItemStack(Blocks.DARK_OAK_PLANKS), 'S', new ItemStack(Blocks.DARK_OAK_SLAB), 'H', new ItemStack(Items.WOODEN_SHOVEL)); VanillaRecipeHelper.addShapedRecipe(provider, "mangrove_boat", new ItemStack(Items.MANGROVE_BOAT), "PHP", "PkP", "SSS", 'P', new ItemStack(Blocks.MANGROVE_PLANKS), 'S', new ItemStack(Blocks.MANGROVE_SLAB), 'H', new ItemStack(Items.WOODEN_SHOVEL)); + VanillaRecipeHelper.addShapedRecipe(provider, "bamboo_raft", new ItemStack(Items.BAMBOO_RAFT), "PHP", "PkP", "SSS", 'P', new ItemStack(Blocks.BAMBOO_PLANKS), 'S', new ItemStack(Blocks.BAMBOO_SLAB), 'H', new ItemStack(Items.WOODEN_SHOVEL)); + VanillaRecipeHelper.addShapedRecipe(provider, "cherry_boat", new ItemStack(Items.CHERRY_BOAT), "PHP", "PkP", "SSS", 'P', new ItemStack(Blocks.CHERRY_PLANKS), 'S', new ItemStack(Blocks.CHERRY_SLAB), 'H', new ItemStack(Items.WOODEN_SHOVEL)); VanillaRecipeHelper.addShapedRecipe(provider, "oak_fence", new ItemStack(Blocks.OAK_FENCE), "PSP", "PSP", "PSP", 'P', new ItemStack(Blocks.OAK_PLANKS), 'S', new ItemStack(Items.STICK)); VanillaRecipeHelper.addShapedRecipe(provider, "spruce_fence", new ItemStack(Blocks.SPRUCE_FENCE), "PSP", "PSP", "PSP", 'P', new ItemStack(Blocks.SPRUCE_PLANKS), 'S', new ItemStack(Items.STICK)); @@ -335,6 +375,8 @@ private static void hardWoodRecipes(Consumer provider) { VanillaRecipeHelper.addShapedRecipe(provider, "mangrove_fence", new ItemStack(Blocks.MANGROVE_FENCE), "PSP", "PSP", "PSP", 'P', new ItemStack(Blocks.MANGROVE_PLANKS), 'S', new ItemStack(Items.STICK)); VanillaRecipeHelper.addShapedRecipe(provider, "crimson_fence", new ItemStack(Blocks.CRIMSON_FENCE), "PSP", "PSP", "PSP", 'P', new ItemStack(Blocks.CRIMSON_PLANKS), 'S', new ItemStack(Items.STICK)); VanillaRecipeHelper.addShapedRecipe(provider, "warped_fence", new ItemStack(Blocks.WARPED_FENCE), "PSP", "PSP", "PSP", 'P', new ItemStack(Blocks.WARPED_PLANKS), 'S', new ItemStack(Items.STICK)); + VanillaRecipeHelper.addShapedRecipe(provider, "bamboo_fence", new ItemStack(Blocks.BAMBOO_FENCE), "PSP", "PSP", "PSP", 'P', new ItemStack(Blocks.BAMBOO_PLANKS), 'S', new ItemStack(Items.STICK)); + VanillaRecipeHelper.addShapedRecipe(provider, "cherry_fence", new ItemStack(Blocks.CHERRY_FENCE), "PSP", "PSP", "PSP", 'P', new ItemStack(Blocks.CHERRY_PLANKS), 'S', new ItemStack(Items.STICK)); VanillaRecipeHelper.addShapedRecipe(provider, "oak_fence_gate", new ItemStack(Blocks.OAK_FENCE_GATE), "F F", "SPS", "SPS", 'P', new ItemStack(Blocks.OAK_PLANKS), 'S', new ItemStack(Items.STICK), 'F', new ItemStack(Items.FLINT)); VanillaRecipeHelper.addShapedRecipe(provider, "spruce_fence_gate", new ItemStack(Blocks.SPRUCE_FENCE_GATE), "F F", "SPS", "SPS", 'P', new ItemStack(Blocks.SPRUCE_PLANKS), 'S', new ItemStack(Items.STICK), 'F', new ItemStack(Items.FLINT)); @@ -345,6 +387,8 @@ private static void hardWoodRecipes(Consumer provider) { VanillaRecipeHelper.addShapedRecipe(provider, "mangrove_fence_gate", new ItemStack(Blocks.MANGROVE_FENCE_GATE), "F F", "SPS", "SPS", 'P', new ItemStack(Blocks.MANGROVE_PLANKS), 'S', new ItemStack(Items.STICK), 'F', new ItemStack(Items.FLINT)); VanillaRecipeHelper.addShapedRecipe(provider, "crimson_fence_gate", new ItemStack(Blocks.CRIMSON_FENCE_GATE), "F F", "SPS", "SPS", 'P', new ItemStack(Blocks.CRIMSON_PLANKS), 'S', new ItemStack(Items.STICK), 'F', new ItemStack(Items.FLINT)); VanillaRecipeHelper.addShapedRecipe(provider, "warped_fence_gate", new ItemStack(Blocks.WARPED_FENCE_GATE), "F F", "SPS", "SPS", 'P', new ItemStack(Blocks.WARPED_PLANKS), 'S', new ItemStack(Items.STICK), 'F', new ItemStack(Items.FLINT)); + VanillaRecipeHelper.addShapedRecipe(provider, "bamboo_fence_gate", new ItemStack(Blocks.BAMBOO_FENCE_GATE), "F F", "SPS", "SPS", 'P', new ItemStack(Blocks.BAMBOO_PLANKS), 'S', new ItemStack(Items.STICK), 'F', new ItemStack(Items.FLINT)); + VanillaRecipeHelper.addShapedRecipe(provider, "cherry_fence_gate", new ItemStack(Blocks.CHERRY_FENCE_GATE), "F F", "SPS", "SPS", 'P', new ItemStack(Blocks.CHERRY_PLANKS), 'S', new ItemStack(Items.STICK), 'F', new ItemStack(Items.FLINT)); VanillaRecipeHelper.addShapedRecipe(provider, "oak_fence_gate_screws", new ItemStack(Blocks.OAK_FENCE_GATE, 2), "IdI", "SPS", "SPS", 'P', new ItemStack(Blocks.OAK_PLANKS), 'S', new ItemStack(Items.STICK), 'I', new UnificationEntry(TagPrefix.screw, GTMaterials.Iron)); VanillaRecipeHelper.addShapedRecipe(provider, "spruce_fence_gate_screws", new ItemStack(Blocks.SPRUCE_FENCE_GATE, 2), "IdI", "SPS", "SPS", 'P', new ItemStack(Blocks.SPRUCE_PLANKS), 'S', new ItemStack(Items.STICK), 'I', new UnificationEntry(TagPrefix.screw, GTMaterials.Iron)); @@ -355,6 +399,8 @@ private static void hardWoodRecipes(Consumer provider) { VanillaRecipeHelper.addShapedRecipe(provider, "mangrove_fence_gate_screws", new ItemStack(Blocks.MANGROVE_FENCE_GATE, 2), "IdI", "SPS", "SPS", 'P', new ItemStack(Blocks.MANGROVE_PLANKS), 'S', new ItemStack(Items.STICK), 'I', new UnificationEntry(TagPrefix.screw, GTMaterials.Iron)); VanillaRecipeHelper.addShapedRecipe(provider, "crimson_fence_gate_screws", new ItemStack(Blocks.CRIMSON_FENCE_GATE, 2), "IdI", "SPS", "SPS", 'P', new ItemStack(Blocks.CRIMSON_PLANKS), 'S', new ItemStack(Items.STICK), 'I', new UnificationEntry(TagPrefix.screw, GTMaterials.Iron)); VanillaRecipeHelper.addShapedRecipe(provider, "warped_fence_gate_screws", new ItemStack(Blocks.WARPED_FENCE_GATE, 2), "IdI", "SPS", "SPS", 'P', new ItemStack(Blocks.WARPED_PLANKS), 'S', new ItemStack(Items.STICK), 'I', new UnificationEntry(TagPrefix.screw, GTMaterials.Iron)); + VanillaRecipeHelper.addShapedRecipe(provider, "bamboo_fence_gate_screws", new ItemStack(Blocks.BAMBOO_FENCE_GATE, 2), "IdI", "SPS", "SPS", 'P', new ItemStack(Blocks.BAMBOO_PLANKS), 'S', new ItemStack(Items.STICK), 'I', new UnificationEntry(TagPrefix.screw, GTMaterials.Iron)); + VanillaRecipeHelper.addShapedRecipe(provider, "cherry_fence_gate_screws", new ItemStack(Blocks.CHERRY_FENCE_GATE, 2), "IdI", "SPS", "SPS", 'P', new ItemStack(Blocks.CHERRY_PLANKS), 'S', new ItemStack(Items.STICK), 'I', new UnificationEntry(TagPrefix.screw, GTMaterials.Iron)); } private static void hardIronRecipes(Consumer provider) { diff --git a/common/src/main/java/com/gregtechceu/gtceu/data/recipe/configurable/RecipeRemoval.java b/common/src/main/java/com/gregtechceu/gtceu/data/recipe/configurable/RecipeRemoval.java index 53eef02e5a..94b260bf68 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/data/recipe/configurable/RecipeRemoval.java +++ b/common/src/main/java/com/gregtechceu/gtceu/data/recipe/configurable/RecipeRemoval.java @@ -123,6 +123,8 @@ private static void hardWoodRecipes(Consumer registry) { registry.accept(new ResourceLocation("minecraft:crimson_door")); registry.accept(new ResourceLocation("minecraft:warped_door")); registry.accept(new ResourceLocation("minecraft:mangrove_door")); + registry.accept(new ResourceLocation("minecraft:bamboo_door")); + registry.accept(new ResourceLocation("minecraft:cherry_door")); registry.accept(new ResourceLocation("minecraft:oak_trapdoor")); registry.accept(new ResourceLocation("minecraft:birch_trapdoor")); registry.accept(new ResourceLocation("minecraft:spruce_trapdoor")); @@ -132,6 +134,8 @@ private static void hardWoodRecipes(Consumer registry) { registry.accept(new ResourceLocation("minecraft:crimson_trapdoor")); registry.accept(new ResourceLocation("minecraft:warped_trapdoor")); registry.accept(new ResourceLocation("minecraft:mangrove_trapdoor")); + registry.accept(new ResourceLocation("minecraft:bamboo_trapdoor")); + registry.accept(new ResourceLocation("minecraft:cherry_trapdoor")); registry.accept(new ResourceLocation("minecraft:bowl")); registry.accept(new ResourceLocation("minecraft:chest")); registry.accept(new ResourceLocation("minecraft:oak_boat")); @@ -141,6 +145,8 @@ private static void hardWoodRecipes(Consumer registry) { registry.accept(new ResourceLocation("minecraft:acacia_boat")); registry.accept(new ResourceLocation("minecraft:dark_oak_boat")); registry.accept(new ResourceLocation("minecraft:mangrove_boat")); + registry.accept(new ResourceLocation("minecraft:bamboo_boat")); + registry.accept(new ResourceLocation("minecraft:cherry_boat")); registry.accept(new ResourceLocation("minecraft:oak_fence")); registry.accept(new ResourceLocation("minecraft:spruce_fence")); registry.accept(new ResourceLocation("minecraft:birch_fence")); @@ -150,6 +156,8 @@ private static void hardWoodRecipes(Consumer registry) { registry.accept(new ResourceLocation("minecraft:crimson_fence")); registry.accept(new ResourceLocation("minecraft:warped_fence")); registry.accept(new ResourceLocation("minecraft:mangrove_fence")); + registry.accept(new ResourceLocation("minecraft:bamboo_fence")); + registry.accept(new ResourceLocation("minecraft:cherry_fence")); registry.accept(new ResourceLocation("minecraft:oak_fence_gate")); registry.accept(new ResourceLocation("minecraft:spruce_fence_gate")); registry.accept(new ResourceLocation("minecraft:birch_fence_gate")); @@ -159,6 +167,8 @@ private static void hardWoodRecipes(Consumer registry) { registry.accept(new ResourceLocation("minecraft:crimson_fence_gate")); registry.accept(new ResourceLocation("minecraft:warped_fence_gate")); registry.accept(new ResourceLocation("minecraft:mangrove_fence_gate")); + registry.accept(new ResourceLocation("minecraft:bamboo_fence_gate")); + registry.accept(new ResourceLocation("minecraft:cherry_fence_gate")); } private static void hardIronRecipes(Consumer registry) { diff --git a/common/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/GCyMRecipes.java b/common/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/GCyMRecipes.java index a549129337..e8677dbfe6 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/GCyMRecipes.java +++ b/common/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/GCyMRecipes.java @@ -7,13 +7,12 @@ import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; import com.gregtechceu.gtceu.api.data.chemical.material.stack.UnificationEntry; import com.gregtechceu.gtceu.api.data.tag.TagPrefix; -import com.gregtechceu.gtceu.common.data.GTBlocks; -import com.gregtechceu.gtceu.common.data.GTItems; -import com.gregtechceu.gtceu.common.data.GTMachines; -import com.gregtechceu.gtceu.common.data.GTMaterials; +import com.gregtechceu.gtceu.common.data.*; import com.gregtechceu.gtceu.data.recipe.CustomTags; import com.gregtechceu.gtceu.data.recipe.VanillaRecipeHelper; +import com.lowdragmc.lowdraglib.side.fluid.FluidHelper; import net.minecraft.data.recipes.FinishedRecipe; +import org.jetbrains.annotations.NotNull; import javax.annotation.Nonnull; import javax.annotation.Nullable; @@ -42,6 +41,15 @@ public static void init(Consumer provider) { private static void registerManualRecipes(Consumer provider) { registerPartsRecipes(provider); registerMultiblockControllerRecipes(provider); + + // Recipes for graphene that don't get autogenerated + GTRecipeTypes.EXTRUDER_RECIPES.recipeBuilder("graphene_to_foil") + .inputItems(dust, Graphene) + .notConsumable(GTItems.SHAPE_EXTRUDER_FOIL) + .outputItems(foil, Graphene, 4) + .duration((int) Graphene.getMass()) + .EUt(24) + .save(provider); } private static void registerMultiblockControllerRecipes(Consumer provider) { @@ -163,6 +171,12 @@ private static void registerAssemblerRecipes(Consumer provider){ .duration(50).EUt(16) .save(provider); + ASSEMBLER_RECIPES.recipeBuilder("casing_reaction_safe_mixing") + .inputItems(TagPrefix.plate, GTMaterials.HastelloyX, 6).inputItems(TagPrefix.frameGt, GTMaterials.MaragingSteel300).circuitMeta(6) + .outputItems(CASING_REACTION_SAFE.asStack(2)) + .duration(50).EUt(16) + .save(provider); + ASSEMBLER_RECIPES.recipeBuilder("casing_laser_safe_engraving") .inputItems(plate, TitaniumTungstenCarbide, 6).inputItems(frameGt, Titanium).circuitMeta(6) .outputItems(CASING_LASER_SAFE_ENGRAVING.asStack(2)) @@ -211,25 +225,6 @@ private static void registerMixerRecipes(Consumer provider){ .duration(140).EUt(VA[HV]) .save(provider); - MIXER_RECIPES.recipeBuilder("incoloy_ma_956") - .inputItems(dust, VanadiumSteel, 4) - .inputItems(dust, Manganese, 2) - .inputItems(dust, Aluminium, 5) - .inputItems(dust, Yttrium, 2) - .outputItems(dust, IncoloyMA956, 13) - .duration(200).EUt(VA[IV]) - .save(provider); - - MIXER_RECIPES.recipeBuilder("watertight_steel") - .inputItems(dust, Iron, 7) - .inputItems(dust, Aluminium, 4) - .inputItems(dust, Nickel, 2) - .inputItems(dust, Chromium) - .inputItems(dust, Sulfur) - .outputItems(dust, WatertightSteel, 15) - .duration(220).EUt(VA[IV]) - .save(provider); - MIXER_RECIPES.recipeBuilder("molybdenum_disilicide") .inputItems(dust, Molybdenum) .inputItems(dust, Silicon, 2) @@ -237,63 +232,100 @@ private static void registerMixerRecipes(Consumer provider){ .duration(180).EUt(VA[EV]) .save(provider); - MIXER_RECIPES.recipeBuilder("hastelloy_x") - .inputItems(dust, Nickel, 8) - .inputItems(dust, Iron, 3) - .inputItems(dust, Tungsten, 4) - .inputItems(dust, Molybdenum, 2) - .inputItems(dust, Chromium) - .inputItems(dust, Niobium) - .outputItems(dust, HastelloyX, 19) - .duration(210).EUt(VA[IV]) - .save(provider); - - MIXER_RECIPES.recipeBuilder("maraging_steel_300") - .inputItems(dust, Iron, 16) - .inputItems(dust, Titanium) - .inputItems(dust, Aluminium) - .inputItems(dust, Nickel, 4) - .inputItems(dust, Cobalt, 2) - .outputItems(dust, MaragingSteel300, 24) - .duration(230).EUt(VA[IV]) - .save(provider); - - MIXER_RECIPES.recipeBuilder("stellite_100") - .inputItems(dust, Iron, 4) - .inputItems(dust, Chromium, 3) - .inputItems(dust, Tungsten, 2) - .inputItems(dust, Molybdenum) - .outputItems(dust, Stellite100, 10) - .duration(200).EUt(VA[IV]) - .save(provider); - MIXER_RECIPES.recipeBuilder("titanium_carbide") .inputItems(dust, Titanium) .inputItems(dust, Carbon) .outputItems(dust, TitaniumCarbide, 2) .duration(160).EUt(VA[EV]) .save(provider); + } + + private static void registerFormulaic(Consumer provider) { + registerBinaryAlloy(GTMaterials.Copper, 3, GTMaterials.Tin, 1, + GTMaterials.Bronze, 4, 400, provider); + registerBinaryAlloy(GTMaterials.Copper, 3, GTMaterials.Zinc, 1, + GTMaterials.Brass, 4, 400, provider); + registerBinaryAlloy(GTMaterials.Copper, 1, GTMaterials.Nickel, 1, + GTMaterials.Cupronickel, 2, 200, provider); + registerBinaryAlloy(GTMaterials.Copper, 1, GTMaterials.Redstone, 4, + GTMaterials.RedAlloy, 1, 100, provider); + + registerBinaryAlloy(GTMaterials.Iron, 1, GTMaterials.Tin, 1, + GTMaterials.TinAlloy, 2, 100, provider); + registerBinaryAlloy(GTMaterials.Iron, 2, GTMaterials.Nickel, 1, + GTMaterials.Invar, 3, 300, provider); + registerBinaryAlloy(GTMaterials.Lead, 4, GTMaterials.Antimony, 1, + GTMaterials.BatteryAlloy, 5, 250, provider); + registerBinaryAlloy(GTMaterials.Gold, 1, GTMaterials.Silver, 1, + GTMaterials.Electrum, 2, 200, provider); + registerBinaryAlloy(GTMaterials.Magnesium, 1, GTMaterials.Aluminium, 2, + GTMaterials.Magnalium, 3, 150, provider); + registerBinaryAlloy(GTMaterials.Silver, 1, GTMaterials.Electrotine, 4, + GTMaterials.BlueAlloy, 1, 100, provider); + registerBinaryAlloy(GTMaterials.Glass, 7, GTMaterials.Boron, 1, + GTMaterials.BorosilicateGlass, 8, 200, provider); + + registerTrinaryAlloy(GTMaterials.Brass, 7, GTMaterials.Aluminium, 1, + GTMaterials.Cobalt, 1, GTMaterials.CobaltBrass, 9, 900, provider); + registerTrinaryAlloy(GTMaterials.Tin, 6, GTMaterials.Lead, 3, + GTMaterials.Antimony, 1, GTMaterials.SolderingAlloy, 10, 200, provider); + registerTrinaryAlloy(GTMaterials.Copper, 6, GTMaterials.Tin, 2, + GTMaterials.Lead, 1, GTMaterials.Potin, 9, 400, provider); + } + + private static void registerManual(Consumer provider) { + // NZF + GCyMRecipeTypes.ALLOY_BLAST_RECIPES.recipeBuilder("nickel_zinc_ferrite") + .inputItems(TagPrefix.dust, GTMaterials.Nickel) + .inputItems(TagPrefix.dust, GTMaterials.Zinc) + .inputItems(TagPrefix.dust, GTMaterials.Iron, 4) + .circuitMeta(6) + .inputFluids(GTMaterials.Oxygen.getFluid(8000)) + .outputFluids(GTMaterials.NickelZincFerrite.getFluid(GTValues.L * 6)) + .duration(2400 * 3 / 4) + .EUt(GTValues.VA[GTValues.MV]) + .blastFurnaceTemp(1500) + .save(provider); + } - MIXER_RECIPES.recipeBuilder("titanium_tungsten_carbide") - .inputItems(dust, TungstenCarbide) - .inputItems(dust, TitaniumCarbide, 2) - .outputItems(dust, TitaniumTungstenCarbide, 3) - .duration(180).EUt(VA[IV]) + private static void registerBinaryAlloy(@NotNull Material input1, int input1Amount, + @NotNull Material input2, int input2Amount, + @NotNull Material output, int outputAmount, + int duration, + Consumer provider) { + GCyMRecipeTypes.ALLOY_BLAST_RECIPES.recipeBuilder(output.getName()) + .inputItems(TagPrefix.dust, input1, input1Amount) + .inputItems(TagPrefix.dust, input2, input2Amount) + .circuitMeta(input1Amount + input2Amount) + .outputFluids(output.getFluid(GTValues.L * outputAmount)) + .duration(duration * 3 / 4) + .EUt(16) + .blastFurnaceTemp(FluidHelper.getTemperature(output.getFluid(1))) .save(provider); + } - MIXER_RECIPES.recipeBuilder("hastelloy_c_276") - .inputItems(dust, Nickel, 12) - .inputItems(dust, Molybdenum, 8) - .inputItems(dust, Chromium, 7) - .inputItems(dust, Tungsten, 1) - .inputItems(dust, Cobalt, 1) - .inputItems(dust, Copper, 1) - .outputItems(dust, HastelloyC276, 30) - .duration(240).EUt(VA[IV]) + @SuppressWarnings("SameParameterValue") + private static void registerTrinaryAlloy(@NotNull Material input1, int input1Amount, + @NotNull Material input2, int input2Amount, + @NotNull Material input3, int input3Amount, + @NotNull Material output, int outputAmount, + int duration, + Consumer provider) { + GCyMRecipeTypes.ALLOY_BLAST_RECIPES.recipeBuilder(output.getName()) + .inputItems(TagPrefix.dust, input1, input1Amount) + .inputItems(TagPrefix.dust, input2, input2Amount) + .inputItems(TagPrefix.dust, input3, input3Amount) + .circuitMeta(input1Amount + input2Amount + input3Amount) + .outputFluids(output.getFluid(GTValues.L * outputAmount)) + .duration(duration * 3 / 4) + .EUt(16) + .blastFurnaceTemp(FluidHelper.getTemperature(output.getFluid(1))) .save(provider); } private static void registerBlastAlloyRecipes(Consumer provider) { + registerFormulaic(provider); + registerManual(provider); ingot.executeHandler(PropertyKey.ALLOY_BLAST, (tagPrefix, material, property) -> generateAlloyBlastRecipes(tagPrefix, material, property, provider)); } diff --git a/common/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/VanillaStandardRecipes.java b/common/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/VanillaStandardRecipes.java index 8a7d944a70..7f517de707 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/VanillaStandardRecipes.java +++ b/common/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/VanillaStandardRecipes.java @@ -285,7 +285,7 @@ private static void smashingRecipes(Consumer provider) { MACERATOR_RECIPES.recipeBuilder("macerate_melon_block") .inputItems(new ItemStack(Blocks.MELON)) - .outputItems(new ItemStack(Items.MELON, 8)) + .outputItems(new ItemStack(Items.MELON_SLICE, 8)) .chancedOutput(new ItemStack(Items.MELON_SEEDS), 8000, 500) .duration(400).EUt(2) .save(provider);