aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/bartworks/API/recipe
diff options
context:
space:
mode:
authorNotAPenguin <michiel.vandeginste@gmail.com>2024-09-02 23:17:17 +0200
committerGitHub <noreply@github.com>2024-09-02 23:17:17 +0200
commit1b820de08a05070909a267e17f033fcf58ac8710 (patch)
tree02831a025986a06b20f87e5bcc69d1e0c639a342 /src/main/java/bartworks/API/recipe
parentafd3fd92b6a6ab9ab0d0dc3214e6bc8ff7a86c9b (diff)
downloadGT5-Unofficial-1b820de08a05070909a267e17f033fcf58ac8710.tar.gz
GT5-Unofficial-1b820de08a05070909a267e17f033fcf58ac8710.tar.bz2
GT5-Unofficial-1b820de08a05070909a267e17f033fcf58ac8710.zip
The Great Renaming (#3014)
* move kekztech to a single root dir * move detrav to a single root dir * move gtnh-lanthanides to a single root dir * move tectech and delete some gross reflection in gt++ * remove more reflection inside gt5u * delete more reflection in gt++ * fix imports * move bartworks and bwcrossmod * fix proxies * move galactigreg and ggfab * move gtneioreplugin * try to fix gt++ bee loader * apply the rename rules to BW * apply rename rules to bwcrossmod * apply rename rules to detrav scanner mod * apply rename rules to galacticgreg * apply rename rules to ggfab * apply rename rules to goodgenerator * apply rename rules to gtnh-lanthanides * apply rename rules to gt++ * apply rename rules to kekztech * apply rename rules to kubatech * apply rename rules to tectech * apply rename rules to gt apply the rename rules to gt * fix tt import * fix mui hopefully * fix coremod except intergalactic * rename assline recipe class * fix a class name i stumbled on * rename StructureUtility to GTStructureUtility to prevent conflict with structurelib * temporary rename of GTTooltipDataCache to old name * fix gt client/server proxy names
Diffstat (limited to 'src/main/java/bartworks/API/recipe')
-rw-r--r--src/main/java/bartworks/API/recipe/BWNBTDependantCraftingRecipe.java76
-rw-r--r--src/main/java/bartworks/API/recipe/BacterialVatFrontend.java92
-rw-r--r--src/main/java/bartworks/API/recipe/BartWorksRecipeMaps.java89
-rw-r--r--src/main/java/bartworks/API/recipe/DynamicGTRecipe.java33
-rw-r--r--src/main/java/bartworks/API/recipe/RadioHatchFrontend.java45
5 files changed, 335 insertions, 0 deletions
diff --git a/src/main/java/bartworks/API/recipe/BWNBTDependantCraftingRecipe.java b/src/main/java/bartworks/API/recipe/BWNBTDependantCraftingRecipe.java
new file mode 100644
index 0000000000..9d7e8ca38c
--- /dev/null
+++ b/src/main/java/bartworks/API/recipe/BWNBTDependantCraftingRecipe.java
@@ -0,0 +1,76 @@
+package bartworks.API.recipe;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+
+import net.minecraft.inventory.InventoryCrafting;
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.crafting.IRecipe;
+import net.minecraft.world.World;
+
+import bartworks.util.BWUtil;
+
+public class BWNBTDependantCraftingRecipe implements IRecipe {
+
+ ItemStack result;
+ Map<Character, ItemStack> charToStackMap = new HashMap<>(9, 1);
+ String[] shape;
+
+ @SuppressWarnings({ "SuspiciousSystemArraycopy" })
+ public BWNBTDependantCraftingRecipe(ItemStack result, Object... recipe) {
+ this.result = result;
+ this.shape = new String[3];
+ System.arraycopy(recipe, 0, this.shape, 0, 3);
+ this.charToStackMap.put(' ', null);
+ for (int i = 3; i < recipe.length; i += 2) {
+ this.charToStackMap.put((char) recipe[i], ((ItemStack) recipe[i + 1]).copy());
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (!(o instanceof BWNBTDependantCraftingRecipe that)) return false;
+
+ if (!Objects.equals(this.result, that.result) || !Objects.equals(this.charToStackMap, that.charToStackMap))
+ return false;
+ // Probably incorrect - comparing Object[] arrays with Arrays.equals
+ return Arrays.equals(this.shape, that.shape);
+ }
+
+ @Override
+ public int hashCode() {
+ int result1 = this.result != null ? this.result.hashCode() : 0;
+ result1 = 31 * result1 + (this.charToStackMap != null ? this.charToStackMap.hashCode() : 0);
+ return 31 * result1 + Arrays.hashCode(this.shape);
+ }
+
+ @Override
+ public boolean matches(InventoryCrafting p_77569_1_, World p_77569_2_) {
+ for (int x = 0; x < 3; x++) {
+ for (int y = 0; y < 3; y++) {
+ ItemStack toCheck = p_77569_1_.getStackInRowAndColumn(y, x);
+ ItemStack ref = this.charToStackMap.get(this.shape[x].toCharArray()[y]);
+ if (!BWUtil.areStacksEqualOrNull(toCheck, ref)) return false;
+ }
+ }
+ return true;
+ }
+
+ @Override
+ public ItemStack getCraftingResult(InventoryCrafting p_77572_1_) {
+ return this.result.copy();
+ }
+
+ @Override
+ public int getRecipeSize() {
+ return 10;
+ }
+
+ @Override
+ public ItemStack getRecipeOutput() {
+ return this.result;
+ }
+}
diff --git a/src/main/java/bartworks/API/recipe/BacterialVatFrontend.java b/src/main/java/bartworks/API/recipe/BacterialVatFrontend.java
new file mode 100644
index 0000000000..afca4274d9
--- /dev/null
+++ b/src/main/java/bartworks/API/recipe/BacterialVatFrontend.java
@@ -0,0 +1,92 @@
+package bartworks.API.recipe;
+
+import java.util.Arrays;
+import java.util.List;
+
+import javax.annotation.ParametersAreNonnullByDefault;
+
+import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.util.StatCollector;
+
+import com.gtnewhorizons.modularui.api.math.Alignment;
+
+import bartworks.common.tileentities.multis.MTEBioVat;
+import gregtech.api.recipe.BasicUIPropertiesBuilder;
+import gregtech.api.recipe.NEIRecipePropertiesBuilder;
+import gregtech.api.recipe.RecipeMapFrontend;
+import gregtech.api.util.MethodsReturnNonnullByDefault;
+import gregtech.nei.GTNEIDefaultHandler;
+import gregtech.nei.RecipeDisplayInfo;
+import gregtech.nei.formatter.INEISpecialInfoFormatter;
+
+@ParametersAreNonnullByDefault
+@MethodsReturnNonnullByDefault
+public class BacterialVatFrontend extends RecipeMapFrontend {
+
+ public BacterialVatFrontend(BasicUIPropertiesBuilder uiPropertiesBuilder,
+ NEIRecipePropertiesBuilder neiPropertiesBuilder) {
+ super(
+ uiPropertiesBuilder,
+ neiPropertiesBuilder.neiSpecialInfoFormatter(new BacterialVatSpecialValueFormatter()));
+ }
+
+ @Override
+ protected List<String> handleNEIItemInputTooltip(List<String> currentTip,
+ GTNEIDefaultHandler.FixedPositionedStack pStack) {
+ if (pStack.isFluid()) {
+ currentTip.add(EnumChatFormatting.GRAY + StatCollector.translateToLocal("nei.biovat.input.tooltip"));
+ return currentTip;
+ }
+ return super.handleNEIItemInputTooltip(currentTip, pStack);
+ }
+
+ @Override
+ protected List<String> handleNEIItemOutputTooltip(List<String> currentTip,
+ GTNEIDefaultHandler.FixedPositionedStack pStack) {
+ if (pStack.isFluid()) {
+ currentTip.add(EnumChatFormatting.GRAY + StatCollector.translateToLocal("nei.biovat.output.tooltip"));
+ return currentTip;
+ }
+ return super.handleNEIItemOutputTooltip(currentTip, pStack);
+ }
+
+ @Override
+ protected void drawNEIOverlayForInput(GTNEIDefaultHandler.FixedPositionedStack stack) {
+ drawFluidOverlay(stack);
+ }
+
+ @Override
+ protected void drawNEIOverlayForOutput(GTNEIDefaultHandler.FixedPositionedStack stack) {
+ drawFluidOverlay(stack);
+ }
+
+ private void drawFluidOverlay(GTNEIDefaultHandler.FixedPositionedStack stack) {
+ if (stack.isFluid()) {
+ drawNEIOverlayText(
+ "+",
+ stack,
+ colorOverride.getTextColorOrDefault("nei_overlay_yellow", 0xFDD835),
+ 0.5f,
+ true,
+ Alignment.TopRight);
+ return;
+ }
+ super.drawNEIOverlayForOutput(stack);
+ }
+
+ private static class BacterialVatSpecialValueFormatter implements INEISpecialInfoFormatter {
+
+ @Override
+ public List<String> format(RecipeDisplayInfo recipeInfo) {
+ int[] tSpecialA = MTEBioVat.specialValueUnpack(recipeInfo.recipe.mSpecialValue);
+ String glassTier = StatCollector.translateToLocalFormatted("nei.biovat.0.name", tSpecialA[0]);
+ String sievert;
+ if (tSpecialA[2] == 1) {
+ sievert = StatCollector.translateToLocalFormatted("nei.biovat.1.name", tSpecialA[3]);
+ } else {
+ sievert = StatCollector.translateToLocalFormatted("nei.biovat.2.name", tSpecialA[3]);
+ }
+ return Arrays.asList(glassTier, sievert);
+ }
+ }
+}
diff --git a/src/main/java/bartworks/API/recipe/BartWorksRecipeMaps.java b/src/main/java/bartworks/API/recipe/BartWorksRecipeMaps.java
new file mode 100644
index 0000000000..a367cca300
--- /dev/null
+++ b/src/main/java/bartworks/API/recipe/BartWorksRecipeMaps.java
@@ -0,0 +1,89 @@
+package bartworks.API.recipe;
+
+import bartworks.API.modularUI.BWUITextures;
+import gregtech.api.gui.modularui.GTUITextures;
+import gregtech.api.recipe.RecipeMap;
+import gregtech.api.recipe.RecipeMapBackend;
+import gregtech.api.recipe.RecipeMapBuilder;
+import gregtech.api.recipe.maps.FuelBackend;
+import gregtech.nei.formatter.FuelSpecialValueFormatter;
+
+public class BartWorksRecipeMaps {
+
+ public static final RecipeMap<RecipeMapBackend> bioLabRecipes = RecipeMapBuilder.of("bw.recipe.biolab")
+ .maxIO(6, 2, 1, 0)
+ .minInputs(1, 1)
+ .useSpecialSlot()
+ .slotOverlays((index, isFluid, isOutput, isSpecial) -> {
+ if (isSpecial) {
+ return BWUITextures.OVERLAY_SLOT_MODULE;
+ }
+ if (isFluid) {
+ return GTUITextures.OVERLAY_SLOT_VIAL_2;
+ }
+ if (!isOutput) {
+ switch (index) {
+ case 0:
+ return BWUITextures.OVERLAY_SLOT_DISH;
+ case 1:
+ return BWUITextures.OVERLAY_SLOT_DNA_FLASK;
+ case 2:
+ return GTUITextures.OVERLAY_SLOT_CIRCUIT;
+ case 3:
+ return GTUITextures.OVERLAY_SLOT_MOLECULAR_1;
+ case 4:
+ return GTUITextures.OVERLAY_SLOT_MOLECULAR_2;
+ case 5:
+ return GTUITextures.OVERLAY_SLOT_DATA_ORB;
+ }
+ }
+ return null;
+ })
+ .progressBar(GTUITextures.PROGRESSBAR_ARROW_MULTIPLE)
+ .logo(BWUITextures.PICTURE_BW_LOGO_47X21)
+ .logoSize(47, 21)
+ .logoPos(125, 3)
+ .disableRegisterNEI()
+ .build();
+ public static final RecipeMap<RecipeMapBackend> bacterialVatRecipes = RecipeMapBuilder.of("bw.recipe.BacteriaVat")
+ .maxIO(6, 2, 1, 1)
+ .minInputs(0, 1)
+ .useSpecialSlot()
+ .specialSlotSensitive()
+ .progressBar(GTUITextures.PROGRESSBAR_ARROW_MULTIPLE)
+ .frontend(BacterialVatFrontend::new)
+ .disableRegisterNEI()
+ .build();
+ public static final RecipeMap<FuelBackend> acidGenFuels = RecipeMapBuilder.of("bw.fuels.acidgens", FuelBackend::new)
+ .maxIO(1, 1, 0, 0)
+ .neiSpecialInfoFormatter(FuelSpecialValueFormatter.INSTANCE)
+ .build();
+ public static final RecipeMap<RecipeMapBackend> circuitAssemblyLineRecipes = RecipeMapBuilder.of("bw.recipe.cal")
+ .maxIO(6, 1, 1, 0)
+ .minInputs(1, 1)
+ .useSpecialSlot()
+ .specialSlotSensitive()
+ .progressBar(GTUITextures.PROGRESSBAR_CIRCUIT_ASSEMBLER)
+ .build();
+ public static final RecipeMap<RecipeMapBackend> radioHatchRecipes = RecipeMapBuilder.of("bw.recipe.radhatch")
+ .maxIO(1, 0, 0, 0)
+ .minInputs(1, 0)
+ .slotOverlays((index, isFluid, isOutput, isSpecial) -> BWUITextures.OVERLAY_SLOT_ROD)
+ .logo(BWUITextures.PICTURE_BW_LOGO_47X21)
+ .logoSize(47, 21)
+ .logoPos(118, 55)
+ .dontUseProgressBar()
+ .addSpecialTexture(74, 20, 29, 27, BWUITextures.PICTURE_RADIATION)
+ .frontend(RadioHatchFrontend::new)
+ .build();
+ public static final RecipeMap<RecipeMapBackend> electricImplosionCompressorRecipes = RecipeMapBuilder
+ .of("gt.recipe.electricimplosioncompressor")
+ .maxIO(6, 2, 1, 1)
+ .slotOverlays(
+ (index, isFluid, isOutput, isSpecial) -> !isFluid && !isOutput ? GTUITextures.OVERLAY_SLOT_IMPLOSION : null)
+ .progressBar(GTUITextures.PROGRESSBAR_COMPRESS)
+ .build();
+ public static final RecipeMap<RecipeMapBackend> htgrFakeRecipes = RecipeMapBuilder.of("bw.recipe.htgr")
+ .maxIO(1, 1, 0, 0)
+ .build();
+}
diff --git a/src/main/java/bartworks/API/recipe/DynamicGTRecipe.java b/src/main/java/bartworks/API/recipe/DynamicGTRecipe.java
new file mode 100644
index 0000000000..3739c28042
--- /dev/null
+++ b/src/main/java/bartworks/API/recipe/DynamicGTRecipe.java
@@ -0,0 +1,33 @@
+package bartworks.API.recipe;
+
+import java.util.ArrayList;
+
+import net.minecraft.item.ItemStack;
+import net.minecraftforge.fluids.FluidStack;
+
+import bartworks.MainMod;
+import gregtech.api.util.GTRecipe;
+
+public class DynamicGTRecipe extends GTRecipe {
+
+ public DynamicGTRecipe(boolean aOptimize, ItemStack[] aInputs, ItemStack[] aOutputs, Object aSpecialItems,
+ int[] aChances, FluidStack[] aFluidInputs, FluidStack[] aFluidOutputs, int aDuration, int aEUt,
+ int aSpecialValue, GTRecipe originalRecipe) {
+ super(
+ aOptimize,
+ aInputs,
+ aOutputs,
+ aSpecialItems,
+ aChances,
+ aFluidInputs,
+ aFluidOutputs,
+ aDuration,
+ aEUt,
+ aSpecialValue);
+ if (originalRecipe != null) {
+ this.owners = new ArrayList<>(originalRecipe.owners);
+ this.stackTraces = new ArrayList<>(originalRecipe.stackTraces);
+ this.setOwner(MainMod.MOD_ID);
+ }
+ }
+}
diff --git a/src/main/java/bartworks/API/recipe/RadioHatchFrontend.java b/src/main/java/bartworks/API/recipe/RadioHatchFrontend.java
new file mode 100644
index 0000000000..1335323f4e
--- /dev/null
+++ b/src/main/java/bartworks/API/recipe/RadioHatchFrontend.java
@@ -0,0 +1,45 @@
+package bartworks.API.recipe;
+
+import java.util.Arrays;
+import java.util.List;
+
+import javax.annotation.ParametersAreNonnullByDefault;
+
+import net.minecraft.util.StatCollector;
+
+import gregtech.api.recipe.BasicUIPropertiesBuilder;
+import gregtech.api.recipe.NEIRecipePropertiesBuilder;
+import gregtech.api.recipe.RecipeMapFrontend;
+import gregtech.api.util.MethodsReturnNonnullByDefault;
+import gregtech.nei.RecipeDisplayInfo;
+import gregtech.nei.formatter.INEISpecialInfoFormatter;
+
+@ParametersAreNonnullByDefault
+@MethodsReturnNonnullByDefault
+public class RadioHatchFrontend extends RecipeMapFrontend {
+
+ public RadioHatchFrontend(BasicUIPropertiesBuilder uiPropertiesBuilder,
+ NEIRecipePropertiesBuilder neiPropertiesBuilder) {
+ super(uiPropertiesBuilder, neiPropertiesBuilder.neiSpecialInfoFormatter(new RadioHatchSpecialInfoFormatter()));
+ }
+
+ @Override
+ protected void drawEnergyInfo(RecipeDisplayInfo recipeInfo) {}
+
+ @Override
+ protected void drawDurationInfo(RecipeDisplayInfo recipeInfo) {}
+
+ private static class RadioHatchSpecialInfoFormatter implements INEISpecialInfoFormatter {
+
+ @Override
+ public List<String> format(RecipeDisplayInfo recipeInfo) {
+ int radioLevel = recipeInfo.recipe.mEUt;
+ int amount = recipeInfo.recipe.mDuration;
+ long time = recipeInfo.recipe.mSpecialValue;
+ return Arrays.asList(
+ StatCollector.translateToLocalFormatted("BW.NEI.display.radhatch.0", radioLevel),
+ StatCollector.translateToLocalFormatted("BW.NEI.display.radhatch.1", amount),
+ StatCollector.translateToLocalFormatted("BW.NEI.display.radhatch.2", time * amount / 20.0));
+ }
+ }
+}