aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/api
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/gregtech/api')
-rw-r--r--src/main/java/gregtech/api/gui/modularui/GT_UITextures.java2
-rw-r--r--src/main/java/gregtech/api/interfaces/internal/IGT_RecipeAdder.java29
-rw-r--r--src/main/java/gregtech/api/items/GT_BreederCell_Item.java25
-rw-r--r--src/main/java/gregtech/api/items/GT_RadioactiveCellIC_Item.java11
-rw-r--r--src/main/java/gregtech/api/util/GT_Recipe.java60
5 files changed, 123 insertions, 4 deletions
diff --git a/src/main/java/gregtech/api/gui/modularui/GT_UITextures.java b/src/main/java/gregtech/api/gui/modularui/GT_UITextures.java
index b82876d5cf..a92ff64df6 100644
--- a/src/main/java/gregtech/api/gui/modularui/GT_UITextures.java
+++ b/src/main/java/gregtech/api/gui/modularui/GT_UITextures.java
@@ -265,6 +265,8 @@ public class GT_UITextures {
public static final AdaptableUITexture PICTURE_SCREEN_BLACK =
AdaptableUITexture.of(MODID, "gui/picture/screen_black", 16, 16, 2);
+ public static final UITexture PICTURE_RADIATION_WARNING =
+ UITexture.fullImage(MODID, "gui/picture/radiation_warning");
public static final UITexture PICTURE_GT_LOGO_17x17_TRANSPARENT =
UITexture.fullImage(MODID, "gui/picture/gt_logo_17x17_transparent");
public static final UITexture PICTURE_GT_LOGO_17x17_TRANSPARENT_GRAY =
diff --git a/src/main/java/gregtech/api/interfaces/internal/IGT_RecipeAdder.java b/src/main/java/gregtech/api/interfaces/internal/IGT_RecipeAdder.java
index 2dd5ab9fa0..bcb5cc5402 100644
--- a/src/main/java/gregtech/api/interfaces/internal/IGT_RecipeAdder.java
+++ b/src/main/java/gregtech/api/interfaces/internal/IGT_RecipeAdder.java
@@ -1,5 +1,6 @@
package gregtech.api.interfaces.internal;
+import gregtech.api.util.GT_Recipe;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidStack;
@@ -1323,4 +1324,32 @@ public interface IGT_RecipeAdder {
int aDuration,
int aEUt,
int aSpecialValue);
+
+ /**
+ * Add a breeder cell.
+ * @param input raw stack. should be undamaged.
+ * @param output breed output
+ * @param heatMultiplier bonus progress per neutron pulse per heat step
+ * @param heatStep divisor for hull heat
+ * @param reflector true if also acts as a neutron reflector, false otherwise.
+ * @param requiredPulses progress required to complete breeding
+ * @return added fake recipe
+ */
+ GT_Recipe addIC2ReactorBreederCell(
+ ItemStack input, ItemStack output, boolean reflector, int heatStep, int heatMultiplier, int requiredPulses);
+
+ /**
+ * Add a fuel cell.
+ * @param input raw stack. should be undamaged.
+ * @param output depleted stack
+ * @param aMox true if has mox behavior, false if uranium behavior.
+ * @param aHeat inherent heat output multiplier of the fuel material. should not add the extra heat from being
+ * a multi-cell!
+ * @param aEnergy inherent energy output multiplier of the fuel material. should not add the extra energy from
+ * being a multi-cell!
+ * @param aCells cell count
+ * @return added fake recipe
+ */
+ GT_Recipe addIC2ReactorFuelCell(
+ ItemStack input, ItemStack output, boolean aMox, float aHeat, float aEnergy, int aCells);
}
diff --git a/src/main/java/gregtech/api/items/GT_BreederCell_Item.java b/src/main/java/gregtech/api/items/GT_BreederCell_Item.java
index 93bd95086f..05b73d730c 100644
--- a/src/main/java/gregtech/api/items/GT_BreederCell_Item.java
+++ b/src/main/java/gregtech/api/items/GT_BreederCell_Item.java
@@ -3,6 +3,7 @@ package gregtech.api.items;
import static gregtech.api.util.GT_Utility.formatNumbers;
import gregtech.api.GregTech_API;
+import gregtech.api.enums.GT_Values;
import gregtech.api.util.GT_Utility;
import ic2.api.reactor.IReactor;
import ic2.api.reactor.IReactorComponent;
@@ -25,6 +26,9 @@ public class GT_BreederCell_Item extends GT_Generic_Item implements IReactorComp
protected final int mHeatBonusStep;
protected final int mHeatBonusMultiplier;
protected ItemStack mProduct;
+ protected boolean deflector = false;
+ protected boolean hidden = false;
+ protected boolean neiAdded = false;
public GT_BreederCell_Item(
String aUnlocalized,
@@ -39,7 +43,24 @@ public class GT_BreederCell_Item extends GT_Generic_Item implements IReactorComp
this.mHeatBonusMultiplier = aHeatBonusMultiplier;
this.setMaxDamage(aRequiredPulse);
setNoRepair();
- GregTech_API.sAfterGTServerstart.add(() -> mProduct = aProduct.get());
+ GregTech_API.sAfterGTPostload.add(() -> {
+ mProduct = aProduct.get();
+ if (!hidden && !neiAdded) {
+ GT_Values.RA.addIC2ReactorBreederCell(
+ new ItemStack(this), mProduct, deflector, mHeatBonusStep, mHeatBonusMultiplier, getMaxDamage());
+ neiAdded = true;
+ }
+ });
+ }
+
+ public GT_BreederCell_Item setDeflector() {
+ deflector = true;
+ return this;
+ }
+
+ public GT_BreederCell_Item setHidden() {
+ hidden = true;
+ return this;
}
@Override
@@ -100,7 +121,7 @@ public class GT_BreederCell_Item extends GT_Generic_Item implements IReactorComp
else yourStack.setItemDamage(myLevel);
}
- return false;
+ return deflector;
}
protected int getNewDamage(IReactor reactor, ItemStack stack) {
diff --git a/src/main/java/gregtech/api/items/GT_RadioactiveCellIC_Item.java b/src/main/java/gregtech/api/items/GT_RadioactiveCellIC_Item.java
index 894c03db90..95c584fd6a 100644
--- a/src/main/java/gregtech/api/items/GT_RadioactiveCellIC_Item.java
+++ b/src/main/java/gregtech/api/items/GT_RadioactiveCellIC_Item.java
@@ -1,6 +1,7 @@
package gregtech.api.items;
import gregtech.api.GregTech_API;
+import gregtech.api.enums.GT_Values;
import gregtech.api.util.GT_Utility;
import ic2.api.reactor.IReactor;
import ic2.api.reactor.IReactorComponent;
@@ -12,6 +13,7 @@ import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
public class GT_RadioactiveCellIC_Item extends GT_RadioactiveCell_Item implements IReactorComponent {
+ private static final int MYSTERIOUS_MULTIPLIER_HEAT = 4;
public final int numberOfCells;
public final float sEnergy;
public final int sRadiation;
@@ -38,6 +40,11 @@ public class GT_RadioactiveCellIC_Item extends GT_RadioactiveCell_Item implement
this.sHeat = aHeat;
this.sDepleted = aDepleted;
this.sMox = aMox;
+ if (aDepleted != null && aEnergy > 0 && aHeat > 0) {
+ // avoid adding depleted cells to recipe map
+ GT_Values.RA.addIC2ReactorFuelCell(
+ new ItemStack(this), aDepleted, aMox, aHeat * MYSTERIOUS_MULTIPLIER_HEAT, aEnergy, aCellcount);
+ }
}
private static int checkPulseable(IReactor reactor, int x, int y, ItemStack me, int mex, int mey, boolean heatrun) {
@@ -74,11 +81,11 @@ public class GT_RadioactiveCellIC_Item extends GT_RadioactiveCell_Item implement
// int heat = sumUp(pulses) * 4;
- int heat = triangularNumber(pulses) * 4;
+ int heat = triangularNumber(pulses) * MYSTERIOUS_MULTIPLIER_HEAT;
heat = getFinalHeat(reactor, yourStack, x, y, heat);
- ArrayList<ItemStackCoord> heatAcceptors = new ArrayList();
+ ArrayList<ItemStackCoord> heatAcceptors = new ArrayList<>();
checkHeatAcceptor(reactor, x - 1, y, heatAcceptors);
checkHeatAcceptor(reactor, x + 1, y, heatAcceptors);
checkHeatAcceptor(reactor, x, y - 1, heatAcceptors);
diff --git a/src/main/java/gregtech/api/util/GT_Recipe.java b/src/main/java/gregtech/api/util/GT_Recipe.java
index a4562acb3d..b13d164109 100644
--- a/src/main/java/gregtech/api/util/GT_Recipe.java
+++ b/src/main/java/gregtech/api/util/GT_Recipe.java
@@ -2479,6 +2479,8 @@ public class GT_Recipe implements Comparable<GT_Recipe> {
.setUsualFluidOutputCount(0)
.setProgressBar(GT_UITextures.PROGRESSBAR_ASSEMBLE, ProgressBar.Direction.RIGHT);
+ public static final GT_Recipe_Map_IC2NuclearFake sIC2NuclearFakeRecipe = new GT_Recipe_Map_IC2NuclearFake();
+
/**
* HashMap of Recipes based on their Items
*/
@@ -5397,6 +5399,64 @@ public class GT_Recipe implements Comparable<GT_Recipe> {
}
}
+ public static class GT_Recipe_Map_IC2NuclearFake extends GT_Recipe_Map {
+ public GT_Recipe_Map_IC2NuclearFake() {
+ super(
+ new HashSet<>(10),
+ "gt.recipe.ic2nuke",
+ "Fission",
+ null,
+ RES_PATH_GUI + "basicmachines/Default",
+ 1,
+ 1,
+ 1,
+ 0,
+ 1,
+ E,
+ 1,
+ E,
+ true,
+ true);
+ setLogo(GT_UITextures.PICTURE_RADIATION_WARNING);
+ setLogoPos(152, 24);
+ setNEIBackgroundSize(172, 60);
+ setProgressBar(GT_UITextures.PROGRESSBAR_ARROW, ProgressBar.Direction.RIGHT);
+ }
+
+ /**
+ * Add a breeder cell.
+ * @param input raw stack. should be undamaged.
+ * @param output breed output
+ * @param heatMultiplier bonus progress per neutron pulse per heat step
+ * @param heatStep divisor for hull heat
+ * @param reflector true if also acts as a neutron reflector, false otherwise.
+ * @param requiredPulses progress required to complete breeding
+ * @return added fake recipe
+ */
+ public GT_Recipe addBreederCell(
+ ItemStack input,
+ ItemStack output,
+ boolean reflector,
+ int heatStep,
+ int heatMultiplier,
+ int requiredPulses) {
+ return addFakeRecipe(
+ input,
+ output,
+ reflector ? "Neutron reflecting breeder cell" : "Heat neutral Breeder Cell",
+ String.format("Every %d reactor hull heat", heatStep),
+ String.format("increase speed by %d00%%", heatMultiplier),
+ String.format("Required pulses: %d", requiredPulses));
+ }
+
+ public GT_Recipe addFakeRecipe(ItemStack input, ItemStack output, String... neiDesc) {
+ GT_Recipe r = new GT_Recipe(
+ new ItemStack[] {input}, new ItemStack[] {output}, null, new int[] {10000}, null, null, 0, 0, 0);
+ r.setNeiDesc(neiDesc);
+ return addRecipe(r, true, true, false);
+ }
+ }
+
public static class GT_Recipe_Map_LargeChemicalReactor extends GT_Recipe_Map_LargeNEI {
private static final int TOTAL_INPUT_COUNT = 6;
private static final int OUTPUT_COUNT = 6;