aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/common/tileentities/machines/basic
diff options
context:
space:
mode:
authormiozune <miozune@gmail.com>2023-12-04 05:34:27 +0900
committerGitHub <noreply@github.com>2023-12-03 21:34:27 +0100
commitf74c7cc297d1d19d38a19683cd277ad9ce605d3a (patch)
treeb2a5d66ec5a959099240fb1db239ffc0f9531839 /src/main/java/gregtech/common/tileentities/machines/basic
parentb08cde7de4ec93cba05fb070991ad1dffb800ce1 (diff)
downloadGT5-Unofficial-f74c7cc297d1d19d38a19683cd277ad9ce605d3a.tar.gz
GT5-Unofficial-f74c7cc297d1d19d38a19683cd277ad9ce605d3a.tar.bz2
GT5-Unofficial-f74c7cc297d1d19d38a19683cd277ad9ce605d3a.zip
Refactor RecipeMap (#2345)
* Remove deprecated and unused things * Move recipemap subclasses * Move GT_Recipe_Map to outside and rename to RecipeMap * Move recipemap instances to separated class & remove prepending s * Remove useless GT_Recipe constructors * Always use ModularUI * Rename IGT_RecipeMap -> IRecipeMap * Add RecipeMapBuilder * Remove more deprecated and unused things * Fix RecipeMap type parameters * Use multimap for recipe index * Fix bending recipe error in dev env * Remove mUniqueIdentifier * Update AE2FC * Less edgy texture for NEI recipe background * Add replicator fluid output slot for NEI and machine GUI * Fix fluid fuels not having fuel value in large boilers * Remove GT_RectHandler and NEI_TransferRectHost * Remove RecipeMapHandler * Move NEI energy description from RecipeMapFrontend to Power * Refactor the way to filter fusion recipes * Check restriction for some properties * Remove showVoltageAmperage * Make Power accept GT_Recipe * Fix NPE * Move NEI duration description to Power from Frontend * Directly implement IRecipeProcessingAwareHatch for GT_MetaTileEntity_Hatch_InputBus_ME * Make Power integrated with GT_OverclockCalculator * Rename Power -> OverclockDescriber * Don't modify recipe find logic until postload finishes * Reformat reserved MTE ids * Fix check for too few inputs on recipe addition * Move replicator logic to backend * Stop un-hiding assline recipes * Allow setting custom recipe comparator & implement for fusion * Update AE2FC * Rename getRecipeList and getRecipes -> getRecipeMap * Automatically register recipe catalysts * Cleanup the way to detect recipe collision * Make use of BasicUIProperties for basic machines * Make use of BasicUIProperties for UIHelper * Rename specialHandler -> recipeTransformer * Add way to automatically register handler info * Add recipe category * Add some APIs for addons * Rename blastRecipes -> blastFurnaceRecipes * Remove GT_MetaTileEntity_BasicMachine_GT_Recipe#mSharedTank and #mRequiresFluidForFiltering * Don't require setting duration and EU/t for fuel recipes * Don't require setting EU/t for primitive blast furnace recipes * Revert change to addMultiblockChemicalRecipe * Fix large boiler general desc recipe not being added * Hide duration and EU/t from large boiler * Cleanup recipe stacktrace draw * Extend metadata usage of recipe builder to recipe itself * Implement metadata handling & NEI comparator for PCB factory * Some rename around NEIRecipeInfo * Some toString implementations * Add more APIs for addons & some rename * Infer handler icon from recipe catalyst if one is not set * Also shrink recipe title when OC is not used * Remove rare earth centrifuge recipe * Use metadata for replicator backend * Adjust geothermal generator output slot * Allow having multiple transferrects * Store recipemap reference in backend * Rename vacuumRecipes -> vacuumFreezerRecipes * Add config to tweak visibility of recipe categories * Remove mHideRecyclingRecipes in favor of recipe category config * Fix typo fluidSolidfierRecipes -> fluidSolidifierRecipes * Refactor findRecipe and ProcessingLogic to use Stream * Fix BBF handler icon & remove bronze blast furnace * Add fluent API for findRecipe * Add way to stop adding progressbar * Change arg order for special texture * Avoid overwriting interesting failure with NO_RECIPE * Some changes for FuelBackend * Set space project icon * Remove localization from TT * Remove CNC recipe adder * Move recipe extractor from AE2FC * Minor internal change for ProcessingLogic#applyRecipe * More javadoc on #getAvailableRecipeMaps * Better implementation of #ofSupplier * Move replicator exponent config to GT_Proxy * Remove RC & IC2 macerator handling * Rename StreamUtil -> GT_StreamUtil * Refactor code around RecipeMetadataStorage * Revise #compileRecipe javadoc * Switch extreme diesel recipe loader to downstream recipe map * Optimize #reMap * Rename reload -> reloadNEICache * Minor tweak for drawEnergyInfo * a bit more doc * Adjust recipe catalysts * Add toString implementation for GT_Fluid for debug * Minor revision for OilCrackerBackend * Index replicator recipes by material --------- Co-authored-by: Glease <4586901+Glease@users.noreply.github.com>
Diffstat (limited to 'src/main/java/gregtech/common/tileentities/machines/basic')
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Boxinator.java11
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_IndustrialApiary.java31
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Massfabricator.java97
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Miner.java26
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_PotionBrewer.java9
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Replicator.java94
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_RockBreaker.java9
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Scanner.java20
8 files changed, 91 insertions, 206 deletions
diff --git a/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Boxinator.java b/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Boxinator.java
index 34bb0b782c..6c908aadac 100644
--- a/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Boxinator.java
+++ b/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Boxinator.java
@@ -26,9 +26,10 @@ import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.metatileentity.MetaTileEntity;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_BasicMachine;
+import gregtech.api.recipe.RecipeMap;
+import gregtech.api.recipe.RecipeMaps;
import gregtech.api.render.TextureFactory;
import gregtech.api.util.GT_ModHandler;
-import gregtech.api.util.GT_Recipe;
import gregtech.api.util.GT_Utility;
public class GT_MetaTileEntity_Boxinator extends GT_MetaTileEntity_BasicMachine {
@@ -107,8 +108,8 @@ public class GT_MetaTileEntity_Boxinator extends GT_MetaTileEntity_BasicMachine
}
@Override
- public GT_Recipe.GT_Recipe_Map getRecipeList() {
- return GT_Recipe.GT_Recipe_Map.sBoxinatorRecipes;
+ public RecipeMap<?> getRecipeMap() {
+ return RecipeMaps.packagerRecipes;
}
private boolean hasValidCache(ItemStack mItem, int mType, boolean mClearOnFailure) {
@@ -206,7 +207,7 @@ public class GT_MetaTileEntity_Boxinator extends GT_MetaTileEntity_BasicMachine
if ((ItemList.Schematic_1by1.isStackEqual(tInput1)) || (ItemList.Schematic_2by2.isStackEqual(tInput1))
|| (ItemList.Schematic_3by3.isStackEqual(tInput1))) {
if (hasValidCache(aStack, aTypeCache, false)) return true;
- if (GT_Recipe.GT_Recipe_Map.sBoxinatorRecipes.findRecipe(
+ if (RecipeMaps.packagerRecipes.findRecipe(
getBaseMetaTileEntity(),
true,
gregtech.api.enums.GT_Values.V[mTier],
@@ -224,7 +225,7 @@ public class GT_MetaTileEntity_Boxinator extends GT_MetaTileEntity_BasicMachine
return ItemList.Schematic_3by3.isStackEqual(getInputAt(1)) && (GT_ModHandler
.getRecipeOutput(aStack, aStack, aStack, aStack, aStack, aStack, aStack, aStack, aStack) != null);
} else {
- return GT_Recipe.GT_Recipe_Map.sBoxinatorRecipes.containsInput(aStack);
+ return RecipeMaps.packagerRecipes.containsInput(aStack);
}
}
}
diff --git a/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_IndustrialApiary.java b/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_IndustrialApiary.java
index ad7b15ed60..3753fb8cd8 100644
--- a/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_IndustrialApiary.java
+++ b/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_IndustrialApiary.java
@@ -50,6 +50,7 @@ import net.minecraft.world.biome.BiomeGenBase;
import net.minecraftforge.common.util.ForgeDirection;
import com.google.common.collect.ImmutableSet;
+import com.gtnewhorizons.modularui.api.drawable.FallbackableUITexture;
import com.gtnewhorizons.modularui.api.drawable.IDrawable;
import com.gtnewhorizons.modularui.api.forge.IItemHandlerModifiable;
import com.gtnewhorizons.modularui.api.math.Pos2d;
@@ -63,7 +64,6 @@ import com.gtnewhorizons.modularui.common.widget.ButtonWidget;
import com.gtnewhorizons.modularui.common.widget.CycleButtonWidget;
import com.gtnewhorizons.modularui.common.widget.DrawableWidget;
import com.gtnewhorizons.modularui.common.widget.FakeSyncWidget;
-import com.gtnewhorizons.modularui.common.widget.ProgressBar;
import com.gtnewhorizons.modularui.common.widget.SlotGroup;
import com.gtnewhorizons.modularui.common.widget.SlotWidget;
import com.gtnewhorizons.modularui.common.widget.TextWidget;
@@ -110,6 +110,7 @@ import gregtech.api.interfaces.modularui.IAddUIWidgets;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.metatileentity.MetaTileEntity;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_BasicMachine;
+import gregtech.api.recipe.BasicUIProperties;
import gregtech.api.render.TextureFactory;
import gregtech.api.util.GT_ApiaryModifier;
import gregtech.api.util.GT_ApiaryUpgrade;
@@ -1178,17 +1179,12 @@ public class GT_MetaTileEntity_IndustrialApiary extends GT_MetaTileEntity_BasicM
super.addUIWidgets(builder, buildContext);
builder.widget(
- new ProgressBar().setProgress(() -> (float) getProgresstime() / Math.max(maxProgresstime(), 1))
- .setTexture(GT_UITextures.PROGRESSBAR_ARROW, 20)
- .setPos(70, 3)
- .setSize(20, 18))
- .widget(
- new ButtonWidget().setOnClick((clickData, widget) -> cancelProcess())
- .setBackground(GT_UITextures.BUTTON_STANDARD, GT_UITextures.OVERLAY_BUTTON_CROSS)
- .setGTTooltip(() -> mTooltipCache.getData(CANCEL_PROCESS_TOOLTIP))
- .setTooltipShowUpDelay(TOOLTIP_DELAY)
- .setPos(7, 26)
- .setSize(18, 18))
+ new ButtonWidget().setOnClick((clickData, widget) -> cancelProcess())
+ .setBackground(GT_UITextures.BUTTON_STANDARD, GT_UITextures.OVERLAY_BUTTON_CROSS)
+ .setGTTooltip(() -> mTooltipCache.getData(CANCEL_PROCESS_TOOLTIP))
+ .setTooltipShowUpDelay(TOOLTIP_DELAY)
+ .setPos(7, 26)
+ .setSize(18, 18))
.widget(
new CycleButtonWidget().setToggle(() -> mAutoQueen, x -> mAutoQueen = x)
.setTextureGetter(
@@ -1286,6 +1282,17 @@ public class GT_MetaTileEntity_IndustrialApiary extends GT_MetaTileEntity_BasicM
.setPos(26, 72));
}
+ private static final FallbackableUITexture progressBarTexture = GT_UITextures
+ .fallbackableProgressbar("iapiary", GT_UITextures.PROGRESSBAR_ARROW);
+
+ @Override
+ protected BasicUIProperties getUIProperties() {
+ return super.getUIProperties().toBuilder()
+ .progressBarTexture(progressBarTexture)
+ .progressBarPos(new Pos2d(70, 3))
+ .build();
+ }
+
@Override
protected SlotWidget createItemInputSlot(int index, IDrawable[] backgrounds, Pos2d pos) {
// we have custom input slots
diff --git a/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Massfabricator.java b/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Massfabricator.java
index ca3707abc9..3e00bd1b1b 100644
--- a/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Massfabricator.java
+++ b/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Massfabricator.java
@@ -20,8 +20,12 @@ import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_TOP_MASSFAB_GLOW;
import java.util.Arrays;
+import javax.annotation.ParametersAreNonnullByDefault;
+
import net.minecraftforge.fluids.FluidStack;
+import com.google.common.primitives.Ints;
+
import gregtech.api.enums.ConfigCategories;
import gregtech.api.enums.ItemList;
import gregtech.api.enums.MachineType;
@@ -30,12 +34,16 @@ import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.metatileentity.MetaTileEntity;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_BasicMachine;
+import gregtech.api.objects.overclockdescriber.EUOverclockDescriber;
+import gregtech.api.objects.overclockdescriber.OverclockDescriber;
+import gregtech.api.recipe.RecipeMap;
+import gregtech.api.recipe.RecipeMaps;
import gregtech.api.render.TextureFactory;
import gregtech.api.util.GT_Config;
+import gregtech.api.util.GT_OverclockCalculator;
import gregtech.api.util.GT_Recipe;
import gregtech.api.util.GT_Utility;
-import gregtech.common.power.BasicMachineEUPower;
-import gregtech.common.power.Power;
+import gregtech.api.util.MethodsReturnNonnullByDefault;
public class GT_MetaTileEntity_Massfabricator extends GT_MetaTileEntity_BasicMachine {
@@ -43,7 +51,9 @@ public class GT_MetaTileEntity_Massfabricator extends GT_MetaTileEntity_BasicMac
public static int sUUASpeedBonus = 4;
public static int sDurationMultiplier = 3215;
public static boolean sRequiresUUA = false;
- protected final long EUt;
+ public static int BASE_EUT = 256;
+ public static GT_Recipe nonUUARecipe;
+ public static GT_Recipe uuaRecipe;
public GT_MetaTileEntity_Massfabricator(int aID, String aName, String aNameRegional, int aTier) {
super(
@@ -51,7 +61,7 @@ public class GT_MetaTileEntity_Massfabricator extends GT_MetaTileEntity_BasicMac
aName,
aNameRegional,
aTier,
- 1,
+ 8,
MachineType.MATTER_FABRICATOR.tooltipDescription(),
1,
1,
@@ -103,12 +113,10 @@ public class GT_MetaTileEntity_Massfabricator extends GT_MetaTileEntity_BasicMac
.addIcon(OVERLAY_BOTTOM_MASSFAB_GLOW)
.glow()
.build()));
- EUt = V[1] * (long) Math.pow(2, mTier + 2);
}
public GT_MetaTileEntity_Massfabricator(String aName, int aTier, String[] aDescription, ITexture[][][] aTextures) {
super(aName, aTier, 1, aDescription, aTextures, 1, 1);
- EUt = V[1] * (long) Math.pow(2, mTier + 2);
}
@Override
@@ -122,8 +130,8 @@ public class GT_MetaTileEntity_Massfabricator extends GT_MetaTileEntity_BasicMac
}
@Override
- protected Power buildPower() {
- return new MassfabricatorPower(mTier, mAmperage);
+ protected OverclockDescriber createOverclockDescriber() {
+ return new MassfabricatorOverclockDescriber(mTier, mAmperage);
}
@Override
@@ -152,9 +160,7 @@ public class GT_MetaTileEntity_Massfabricator extends GT_MetaTileEntity_BasicMac
FluidStack tFluid = getDrainableStack();
if ((tFluid == null) || (tFluid.amount < getCapacity())) {
this.mOutputFluid = Materials.UUMatter.getFluid(1L);
- calculateOverclockedNess(
- (int) EUt,
- containsUUA(getFillableStack()) ? sDurationMultiplier / sUUASpeedBonus : sDurationMultiplier);
+ calculateCustomOverclock(containsUUA(getFillableStack()) ? uuaRecipe : nonUUARecipe);
// In case recipe is too OP for that machine
if (mMaxProgresstime == Integer.MAX_VALUE - 1 && mEUt == Integer.MAX_VALUE - 1)
return FOUND_RECIPE_BUT_DID_NOT_MEET_REQUIREMENTS;
@@ -171,8 +177,8 @@ public class GT_MetaTileEntity_Massfabricator extends GT_MetaTileEntity_BasicMac
}
@Override
- public GT_Recipe.GT_Recipe_Map getRecipeList() {
- return GT_Recipe.GT_Recipe_Map.sMassFabFakeRecipes;
+ public RecipeMap<?> getRecipeMap() {
+ return RecipeMaps.massFabFakeRecipes;
}
@Override
@@ -189,64 +195,37 @@ public class GT_MetaTileEntity_Massfabricator extends GT_MetaTileEntity_BasicMac
return aFluid != null && aFluid.amount >= sUUAperUUM && aFluid.isFluidEqual(Materials.UUAmplifier.getFluid(1L));
}
- protected class MassfabricatorPower extends BasicMachineEUPower {
+ @ParametersAreNonnullByDefault
+ @MethodsReturnNonnullByDefault
+ protected class MassfabricatorOverclockDescriber extends EUOverclockDescriber {
- protected MassfabricatorPower(byte tier, int amperage) {
+ protected MassfabricatorOverclockDescriber(byte tier, int amperage) {
super(tier, amperage);
}
@Override
- public void computePowerUsageAndDuration(int euPerTick, int duration) {
- originalVoltage = computeVoltageForEuRate(euPerTick);
-
- if (mTier == 0) {
- // Long time calculation
- long xMaxProgresstime = ((long) duration) << 1;
- if (xMaxProgresstime > Integer.MAX_VALUE - 1) {
- // make impossible if too long
- recipeEuPerTick = Integer.MAX_VALUE - 1;
- recipeDuration = Integer.MAX_VALUE - 1;
- } else {
- recipeEuPerTick = (int) (V[1] << 2); // 2^2=4 so shift <<2
- recipeDuration = (int) xMaxProgresstime;
- }
- } else {
- // Long EUt calculation
- long xEUt = EUt;
-
- long tempEUt = V[1];
-
- recipeDuration = duration;
+ public GT_OverclockCalculator createCalculator(GT_OverclockCalculator template, GT_Recipe recipe) {
+ return super.createCalculator(template, recipe).setEUt(Ints.saturatedCast(V[tier] * amperage))
+ .setEUtIncreasePerOC(1)
+ .limitOverclockCount(tier - 1)
+ .setOneTickDiscount(false);
+ }
- while (tempEUt <= V[mTier - 1]) {
- tempEUt <<= 2; // this actually controls overclocking
- recipeDuration >>= 1; // this is effect of overclocking
- if (recipeDuration == 0) xEUt = (long) (xEUt / 1.1D); // U know, if the time is less than 1 tick
- // make the machine use less power
- }
- if (xEUt > Integer.MAX_VALUE - 1) {
- recipeEuPerTick = Integer.MAX_VALUE - 1;
- recipeDuration = Integer.MAX_VALUE - 1;
- } else {
- recipeEuPerTick = (int) xEUt;
- if (recipeEuPerTick == 0) recipeEuPerTick = 1;
- if (recipeDuration == 0) recipeDuration = 1; // set time to 1 tick
- }
- }
- wasOverclocked = checkIfOverclocked();
+ @Override
+ protected boolean shouldShowAmperage(GT_OverclockCalculator calculator) {
+ return true;
}
@Override
- public String getVoltageString() {
- long voltage = V[1];
- String voltageDescription = GT_Utility.formatNumbers(voltage) + " EU";
- voltageDescription += GT_Utility.getTierNameWithParentheses(voltage);
- return voltageDescription;
+ protected String getVoltageString(GT_OverclockCalculator calculator) {
+ // standard amperage calculation doesn't work here
+ return decorateWithOverclockLabel(GT_Utility.formatNumbers(V[mTier]) + " EU/t", calculator)
+ + GT_Utility.getTierNameWithParentheses(V[mTier]);
}
@Override
- public String getAmperageString() {
- long amperage = originalVoltage / V[1];
+ protected String getAmperageString(GT_OverclockCalculator calculator) {
+ int amperage = this.amperage;
int denominator = 1;
for (int i = 1; i < mTier; i++) {
amperage >>= 1;
diff --git a/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Miner.java b/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Miner.java
index 3e5445a659..39581c6d93 100644
--- a/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Miner.java
+++ b/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Miner.java
@@ -2,7 +2,6 @@ package gregtech.common.tileentities.machines.basic;
import static gregtech.api.enums.GT_Values.V;
import static gregtech.api.enums.GT_Values.debugBlockMiner;
-import static gregtech.api.enums.Mods.GregTech;
import java.util.ArrayList;
@@ -19,12 +18,6 @@ import net.minecraftforge.common.util.FakePlayer;
import net.minecraftforge.common.util.ForgeDirection;
import com.gtnewhorizons.modularui.api.drawable.FallbackableUITexture;
-import com.gtnewhorizons.modularui.api.drawable.UITexture;
-import com.gtnewhorizons.modularui.api.math.Pos2d;
-import com.gtnewhorizons.modularui.api.math.Size;
-import com.gtnewhorizons.modularui.api.screen.ModularWindow;
-import com.gtnewhorizons.modularui.api.screen.UIBuildContext;
-import com.gtnewhorizons.modularui.common.widget.ProgressBar;
import gregtech.api.enums.Textures;
import gregtech.api.gui.modularui.GT_UITextures;
@@ -33,6 +26,7 @@ import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.modularui.IAddUIWidgets;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_BasicMachine;
+import gregtech.api.recipe.BasicUIProperties;
import gregtech.api.render.TextureFactory;
import gregtech.api.util.GT_Log;
import gregtech.api.util.GT_Utility;
@@ -429,19 +423,13 @@ public class GT_MetaTileEntity_Miner extends GT_MetaTileEntity_BasicMachine
return true;
}
- private static final FallbackableUITexture progressBarTexture = new FallbackableUITexture(
- UITexture.fullImage(GregTech.ID, "gui/progressbar/miner"),
- GT_UITextures.PROGRESSBAR_CANNER);
+ private static final FallbackableUITexture progressBarTexture = GT_UITextures
+ .fallbackableProgressbar("miner", GT_UITextures.PROGRESSBAR_CANNER);
@Override
- public void addUIWidgets(ModularWindow.Builder builder, UIBuildContext buildContext) {
- super.addUIWidgets(builder, buildContext);
- builder.widget(
- createProgressBar(
- progressBarTexture.get(),
- 20,
- ProgressBar.Direction.RIGHT,
- new Pos2d(78, 24),
- new Size(20, 18)));
+ protected BasicUIProperties getUIProperties() {
+ return super.getUIProperties().toBuilder()
+ .progressBarTexture(progressBarTexture)
+ .build();
}
}
diff --git a/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_PotionBrewer.java b/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_PotionBrewer.java
index 7b333208e0..15150abf67 100644
--- a/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_PotionBrewer.java
+++ b/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_PotionBrewer.java
@@ -30,9 +30,10 @@ import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.metatileentity.MetaTileEntity;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_BasicMachine;
+import gregtech.api.recipe.RecipeMap;
+import gregtech.api.recipe.RecipeMaps;
import gregtech.api.render.TextureFactory;
import gregtech.api.util.GT_OreDictUnificator;
-import gregtech.api.util.GT_Recipe;
import gregtech.api.util.GT_Utility;
public class GT_MetaTileEntity_PotionBrewer extends GT_MetaTileEntity_BasicMachine {
@@ -107,8 +108,8 @@ public class GT_MetaTileEntity_PotionBrewer extends GT_MetaTileEntity_BasicMachi
}
@Override
- public GT_Recipe.GT_Recipe_Map getRecipeList() {
- return GT_Recipe.GT_Recipe_Map.sBrewingRecipes;
+ public RecipeMap<?> getRecipeMap() {
+ return RecipeMaps.brewingRecipes;
}
@Override
@@ -217,7 +218,7 @@ public class GT_MetaTileEntity_PotionBrewer extends GT_MetaTileEntity_BasicMachi
public boolean allowPutStackValidated(IGregTechTileEntity aBaseMetaTileEntity, int aIndex, ForgeDirection side,
ItemStack aStack) {
return super.allowPutStackValidated(aBaseMetaTileEntity, aIndex, side, aStack)
- && getRecipeList().containsInput(aStack);
+ && getRecipeMap().containsInput(aStack);
}
@Override
diff --git a/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Replicator.java b/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Replicator.java
index 92327984e7..a15d5b7f6d 100644
--- a/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Replicator.java
+++ b/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Replicator.java
@@ -17,45 +17,23 @@ import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_TOP_REPLICATOR_ACTI
import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_TOP_REPLICATOR_ACTIVE_GLOW;
import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_TOP_REPLICATOR_GLOW;
-import java.util.HashMap;
-import java.util.NoSuchElementException;
-
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.FluidStack;
-import gregtech.api.GregTech_API;
-import gregtech.api.enums.Element;
import gregtech.api.enums.ItemList;
import gregtech.api.enums.MachineType;
import gregtech.api.enums.Materials;
-import gregtech.api.enums.OrePrefixes;
import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.metatileentity.MetaTileEntity;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_BasicMachine;
+import gregtech.api.recipe.RecipeMap;
+import gregtech.api.recipe.RecipeMaps;
import gregtech.api.render.TextureFactory;
-import gregtech.api.util.GT_OreDictUnificator;
-import gregtech.api.util.GT_Recipe;
-import gregtech.api.util.GT_Utility;
-import gregtech.common.items.behaviors.Behaviour_DataOrb;
public class GT_MetaTileEntity_Replicator extends GT_MetaTileEntity_BasicMachine {
- public static final HashMap<Materials, Long> MASS_OVERRIDES = new HashMap<>();
- public static final double EXPONENT = GregTech_API.sOPStuff.get("Replicator", "Nerf Exponent", 1.2D);
- private static int sHeaviestElementMass = 0;
-
- static {
- /*
- * Put overrides here. For instance:
- * MASS_OVERRIDES.put(Materials.get("cake"),Materials.get("cake").getMass());
- * MASS_OVERRIDES.put(Materials.get("otherCake"),1235234L);
- * MASS_OVERRIDES.put(Materials.Kalendrite,1235234L);
- * MASS_OVERRIDES.put(Materials.Kalendrite,Materials.Kalendrite.getMass()*2);
- */
- }
-
public GT_MetaTileEntity_Replicator(int aID, String aName, String aNameRegional, int aTier) {
super(
aID,
@@ -125,61 +103,9 @@ public class GT_MetaTileEntity_Replicator extends GT_MetaTileEntity_BasicMachine
return new GT_MetaTileEntity_Replicator(this.mName, this.mTier, this.mDescriptionArray, this.mTextures);
}
- public static long cubicFluidMultiplier(long amount) {
- return (long) Math.pow(amount, EXPONENT);
- }
-
- @Override
- public int checkRecipe() {
- FluidStack tFluid = getFillableStack();
- if ((tFluid != null) && (tFluid.isFluidEqual(Materials.UUMatter.getFluid(1L)))) {
- ItemStack tDataOrb = getSpecialSlot();
- if ((ItemList.Tool_DataOrb.isStackEqual(tDataOrb, false, true)) && (Behaviour_DataOrb.getDataTitle(tDataOrb)
- .equals("Elemental-Scan"))) {
- Materials tMaterial = Element.get(Behaviour_DataOrb.getDataName(tDataOrb)).mLinkedMaterials.get(0);
- long tMass = cubicFluidMultiplier(MASS_OVERRIDES.getOrDefault(tMaterial, tMaterial.getMass()));
- if ((tFluid.amount >= tMass) && (tMass > 0L)) {
-
- this.mEUt = GT_Utility.safeInt(gregtech.api.enums.GT_Values.VP[this.mTier], 1);
- this.mMaxProgresstime = GT_Utility.safeInt(tMass * 1024L / (1L << this.mTier), 1);
- if (mMaxProgresstime == Integer.MAX_VALUE - 1 || mEUt == Integer.MAX_VALUE - 1)
- return FOUND_RECIPE_BUT_DID_NOT_MEET_REQUIREMENTS;
-
- if ((this.mOutputItems[0] = GT_OreDictUnificator.get(OrePrefixes.dust, tMaterial, 1L)) == null) {
- if ((this.mOutputItems[0] = GT_OreDictUnificator.get(OrePrefixes.cell, tMaterial, 1L))
- != null) {
- if ((this.mOutputFluid = GT_Utility.getFluidForFilledItem(this.mOutputItems[0], true))
- == null) {
- if (ItemList.Cell_Empty.isStackEqual(getInputAt(0))) {
- if (canOutput(this.mOutputItems[0])) {
- getInputAt(0).stackSize -= 1;
- tFluid.amount = ((int) (tFluid.amount - tMass));
- return 2;
- }
- }
- } else {
- this.mOutputItems[0] = null;
- if ((getDrainableStack() == null)
- || ((getDrainableStack().isFluidEqual(this.mOutputFluid))
- && (getDrainableStack().amount < 16000))) {
- tFluid.amount = ((int) (tFluid.amount - tMass));
- return 2;
- }
- }
- }
- } else if (canOutput(this.mOutputItems[0])) {
- tFluid.amount = ((int) (tFluid.amount - tMass));
- return 2;
- }
- }
- }
- }
- return 0;
- }
-
@Override
- public GT_Recipe.GT_Recipe_Map getRecipeList() {
- return GT_Recipe.GT_Recipe_Map.sReplicatorFakeRecipes;
+ public RecipeMap<?> getRecipeMap() {
+ return RecipeMaps.replicatorRecipes;
}
@Override
@@ -196,16 +122,6 @@ public class GT_MetaTileEntity_Replicator extends GT_MetaTileEntity_BasicMachine
@Override
public int getCapacity() {
- if ((sHeaviestElementMass == 0) && (GregTech_API.sPostloadFinished)) {
- sHeaviestElementMass = Materials.getMaterialsMap()
- .values()
- .stream()
- .mapToInt(material -> (int) cubicFluidMultiplier((int) material.getMass()))
- .max()
- .orElseThrow(NoSuchElementException::new);
- // Make the Number nicer =)
- sHeaviestElementMass = 1000 * (sHeaviestElementMass / 1000 + 1);
- }
- return sHeaviestElementMass;
+ return 3000;
}
}
diff --git a/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_RockBreaker.java b/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_RockBreaker.java
index c6d554b2eb..e632f4eeda 100644
--- a/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_RockBreaker.java
+++ b/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_RockBreaker.java
@@ -28,9 +28,10 @@ import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.metatileentity.MetaTileEntity;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_BasicMachine;
+import gregtech.api.recipe.RecipeMap;
+import gregtech.api.recipe.RecipeMaps;
import gregtech.api.render.TextureFactory;
import gregtech.api.util.GT_OreDictUnificator;
-import gregtech.api.util.GT_Recipe;
import gregtech.api.util.GT_Utility;
public class GT_MetaTileEntity_RockBreaker extends GT_MetaTileEntity_BasicMachine {
@@ -105,15 +106,15 @@ public class GT_MetaTileEntity_RockBreaker extends GT_MetaTileEntity_BasicMachin
}
@Override
- public GT_Recipe.GT_Recipe_Map getRecipeList() {
- return GT_Recipe.GT_Recipe_Map.sRockBreakerFakeRecipes;
+ public RecipeMap<?> getRecipeMap() {
+ return RecipeMaps.rockBreakerFakeRecipes;
}
@Override
protected boolean allowPutStackValidated(IGregTechTileEntity aBaseMetaTileEntity, int aIndex, ForgeDirection side,
ItemStack aStack) {
return super.allowPutStackValidated(aBaseMetaTileEntity, aIndex, side, aStack)
- && getRecipeList().containsInput(aStack);
+ && getRecipeMap().containsInput(aStack);
}
@Override
diff --git a/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Scanner.java b/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Scanner.java
index 3bbd9f67ab..ba00be67f8 100644
--- a/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Scanner.java
+++ b/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Scanner.java
@@ -19,7 +19,7 @@ import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_TOP_SCANNER;
import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_TOP_SCANNER_ACTIVE;
import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_TOP_SCANNER_ACTIVE_GLOW;
import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_TOP_SCANNER_GLOW;
-import static gregtech.api.util.GT_Recipe.GT_Recipe_Map.sScannerFakeRecipes;
+import static gregtech.api.recipe.RecipeMaps.scannerFakeRecipes;
import java.util.Objects;
@@ -42,6 +42,7 @@ import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.metatileentity.MetaTileEntity;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_BasicMachine;
import gregtech.api.objects.ItemData;
+import gregtech.api.recipe.RecipeMap;
import gregtech.api.render.TextureFactory;
import gregtech.api.util.GT_AssemblyLineUtils;
import gregtech.api.util.GT_Log;
@@ -117,15 +118,6 @@ public class GT_MetaTileEntity_Scanner extends GT_MetaTileEntity_BasicMachine {
super(aName, aTier, 1, aDescription, aTextures, 1, 1);
}
- /**
- * @deprecated Use {@link #GT_MetaTileEntity_Scanner(String, int, String[], ITexture[][][])}
- */
- @Deprecated
- public GT_MetaTileEntity_Scanner(String aName, int aTier, String[] aDescription, ITexture[][][] aTextures,
- String aGUIName, String aNEIName) {
- super(aName, aTier, 1, aDescription, aTextures, 1, 1);
- }
-
@Override
public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
return new GT_MetaTileEntity_Scanner(this.mName, this.mTier, this.mDescriptionArray, this.mTextures);
@@ -358,7 +350,7 @@ public class GT_MetaTileEntity_Scanner extends GT_MetaTileEntity_BasicMachine {
for (GT_Recipe.GT_Recipe_AssemblyLine tRecipe : GT_Recipe.GT_Recipe_AssemblyLine.sAssemblylineRecipes) {
if (GT_Utility.areStacksEqual(tRecipe.mResearchItem, aStack, true)) {
boolean failScanner = true;
- for (GT_Recipe scannerRecipe : sScannerFakeRecipes.mRecipeList) {
+ for (GT_Recipe scannerRecipe : scannerFakeRecipes.getAllRecipes()) {
if (GT_Utility.areStacksEqual(scannerRecipe.mInputs[0], aStack, true)) {
failScanner = false;
break;
@@ -402,8 +394,8 @@ public class GT_MetaTileEntity_Scanner extends GT_MetaTileEntity_BasicMachine {
}
@Override
- public GT_Recipe.GT_Recipe_Map getRecipeList() {
- return sScannerFakeRecipes;
+ public RecipeMap<?> getRecipeMap() {
+ return scannerFakeRecipes;
}
@Override
@@ -415,7 +407,7 @@ public class GT_MetaTileEntity_Scanner extends GT_MetaTileEntity_BasicMachine {
protected boolean allowPutStackValidated(IGregTechTileEntity aBaseMetaTileEntity, int aIndex, ForgeDirection side,
ItemStack aStack) {
return super.allowPutStackValidated(aBaseMetaTileEntity, aIndex, side, aStack)
- && getRecipeList().containsInput(aStack);