Skip to content
This repository has been archived by the owner on May 24, 2024. It is now read-only.

Commit

Permalink
Fixing the EOH OC situation (#256)
Browse files Browse the repository at this point in the history
* tooltip changes

* typo

* return to old formula and switch to bigint

* add new item + texture

* actually load the item

* power formulas

* start on stellar plasma integration

* rework math

* make static

* grammar

* spotless

* astral array fabricator recipe

* tooltip work

* adjust recipe

* fix build errors

* address reviews

* FluidStackLong

* more long fluid stack stuff

* fix nei fluid amounts

* add brackets

* undo wildcard import

* rework loop for checking aaf amount

* wrong nbt tag

* address reviews v2
  • Loading branch information
GDCloudstrike authored Nov 23, 2023
1 parent 5bee46d commit 804678d
Show file tree
Hide file tree
Showing 11 changed files with 398 additions and 105 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import static gregtech.api.enums.Mods.*;
import static gregtech.api.util.GT_ModHandler.getModItem;
import static gregtech.api.util.GT_RecipeBuilder.MINUTES;
import static gregtech.api.util.GT_RecipeBuilder.SECONDS;

import net.minecraft.item.ItemStack;
import net.minecraftforge.fluids.Fluid;
Expand Down Expand Up @@ -3022,6 +3023,34 @@ ME_Singularity, plateList[absoluteTier], getItemContainer("QuantumCircuit").get(
(int) TierEU.RECIPE_UMV);
}

// Astral Array Fabricator
TT_recipeAdder.addResearchableAssemblylineRecipe(
CustomItemList.SpacetimeCompressionFieldGeneratorTier8.get(1),
480_000_000,
32_768,
(int) TierEU.RECIPE_MAX,
64,
new Object[] { GT_OreDictUnificator.get(OrePrefixes.frameGt, MaterialsUEVplus.WhiteDwarfMatter, 8),
GT_OreDictUnificator.get(OrePrefixes.frameGt, MaterialsUEVplus.BlackDwarfMatter, 8),
ItemList.EnergisedTesseract.get(32),
GT_OreDictUnificator.get(OrePrefixes.nanite, MaterialsUEVplus.Eternity, 16),
CustomItemList.SpacetimeCompressionFieldGeneratorTier8.get(64),
CustomItemList.SpacetimeCompressionFieldGeneratorTier8.get(64),
CustomItemList.SpacetimeCompressionFieldGeneratorTier8.get(10),
CustomItemList.TimeAccelerationFieldGeneratorTier8.get(64),
CustomItemList.TimeAccelerationFieldGeneratorTier8.get(64),
CustomItemList.TimeAccelerationFieldGeneratorTier8.get(40),
CustomItemList.StabilisationFieldGeneratorTier8.get(48),
CustomItemList.EOH_Infinite_Energy_Casing.get(32),
CustomItemList.EOH_Reinforced_Temporal_Casing.get(64),
CustomItemList.EOH_Reinforced_Spatial_Casing.get(64), ItemList.Field_Generator_UMV.get(16) },
new FluidStack[] { MaterialsUEVplus.Space.getMolten(32_768L * 64),
MaterialsUEVplus.Eternity.getMolten(16_384L * 64),
MaterialsUEVplus.ExcitedDTSC.getFluid(8_192L * 64) },
CustomItemList.astralArrayFabricator.get(1),
300 * SECONDS,
(int) TierEU.RECIPE_UXV);

}

private void addWirelessEnergyRecipes() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import com.github.technus.tectech.thing.casing.StabilisationFieldCasing;
import com.github.technus.tectech.thing.casing.TT_Container_Casings;
import com.github.technus.tectech.thing.casing.TimeAccelerationFieldCasing;
import com.github.technus.tectech.thing.item.AstralArrayFabricator;
import com.github.technus.tectech.thing.item.EnderFluidLinkCover;
import com.github.technus.tectech.thing.item.EuMeterGT;
import com.github.technus.tectech.thing.item.ParametrizerMemoryCard;
Expand Down Expand Up @@ -75,6 +76,7 @@ public void run() {
TecTech.LOGGER.info("Useful Items registered");

TeslaCoilComponent.run();
AstralArrayFabricator.run();
TecTech.LOGGER.info("Crafting Components registered");

TecTech.LOGGER.info("Debug Items registered");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@

import org.apache.commons.lang3.tuple.Pair;

import com.github.technus.tectech.util.FluidStackLong;
import com.github.technus.tectech.util.ItemStackLong;

import gnu.trove.map.TMap;
Expand All @@ -37,12 +38,17 @@
@SuppressWarnings("SpellCheckingInspection")
public class EyeOfHarmonyRecipe {

static final FluidStack[] SPECIAL_FLUIDS = new FluidStack[] { MaterialsUEVplus.WhiteDwarfMatter.getMolten(1152),
MaterialsUEVplus.WhiteDwarfMatter.getMolten(1152), MaterialsUEVplus.WhiteDwarfMatter.getMolten(4_608),
MaterialsUEVplus.WhiteDwarfMatter.getMolten(18_432), MaterialsUEVplus.BlackDwarfMatter.getMolten(1152),
MaterialsUEVplus.BlackDwarfMatter.getMolten(4_608), MaterialsUEVplus.BlackDwarfMatter.getMolten(18_432),
MaterialsUEVplus.Universium.getMolten(1152), MaterialsUEVplus.Universium.getMolten(4_608),
MaterialsUEVplus.Universium.getMolten(18_432) };
static final FluidStackLong[] SPECIAL_FLUIDS = new FluidStackLong[] {
new FluidStackLong(MaterialsUEVplus.WhiteDwarfMatter.getMolten(1_152), 1_152),
new FluidStackLong(MaterialsUEVplus.WhiteDwarfMatter.getMolten(1_152), 1_152),
new FluidStackLong(MaterialsUEVplus.WhiteDwarfMatter.getMolten(4_608), 4_608),
new FluidStackLong(MaterialsUEVplus.WhiteDwarfMatter.getMolten(18_432), 18_432),
new FluidStackLong(MaterialsUEVplus.BlackDwarfMatter.getMolten(1_152), 1_152),
new FluidStackLong(MaterialsUEVplus.BlackDwarfMatter.getMolten(4_608), 4_608),
new FluidStackLong(MaterialsUEVplus.BlackDwarfMatter.getMolten(18_432), 18_432),
new FluidStackLong(MaterialsUEVplus.Universium.getMolten(1_152), 1_152),
new FluidStackLong(MaterialsUEVplus.Universium.getMolten(4_608), 4_608),
new FluidStackLong(MaterialsUEVplus.Universium.getMolten(18_432), 18_432) };

HashingStrategy<ItemStack> itemStackHashingStrategy = new HashingStrategy<>() {

Expand All @@ -66,7 +72,7 @@ public boolean equals(ItemStack item1, ItemStack item2) {
private final TMap<ItemStack, Long> itemStackToTrueStackSizeMap = new TCustomHashMap<>(itemStackHashingStrategy);

private final ArrayList<ItemStackLong> outputItems;
private final ArrayList<FluidStack> outputFluids;
private final ArrayList<FluidStackLong> outputFluids;

private final long hydrogenRequirement;
private final long heliumRequirement;
Expand Down Expand Up @@ -137,25 +143,29 @@ public EyeOfHarmonyRecipe(final ArrayList<Pair<Materials, Long>> materialList, f
// End item processing.

// --- Fluid handling ---
ArrayList<FluidStack> fluidStackArrayList = new ArrayList<>();
ArrayList<FluidStackLong> fluidStackLongArrayList = new ArrayList<>();

int plasmaAmount = (int) ((this.spacetimeCasingTierRequired + 1) * 8_000_000L);

// If DeepDark then it should output all plasmas involved in making exotic catalyst.
if (rocketTier == 9) {
for (Materials material : VALID_PLASMAS) {
fluidStackArrayList.add(material.getPlasma(1));
fluidStackLongArrayList.add(new FluidStackLong(material.getPlasma(plasmaAmount), plasmaAmount));
}
} else {
// --- Output and process fluids of the recipe.
fluidStackArrayList.addAll(validPlasmaGenerator(materialList));
}

for (FluidStack fluidStack : fluidStackArrayList) {
fluidStack.amount = (int) ((this.spacetimeCasingTierRequired + 1) * 8_000_000L);
ArrayList<FluidStack> fluidStackArrayList = new ArrayList<>(validPlasmaGenerator(materialList));
for (FluidStack fluidStack : fluidStackArrayList) {
fluidStack = new FluidStack(fluidStack, plasmaAmount);
fluidStackLongArrayList.add(new FluidStackLong(fluidStack, plasmaAmount));
}
}

// Add a bonus fluid of compressed star matter.
fluidStackArrayList
.add(MaterialsUEVplus.RawStarMatter.getFluid((this.spacetimeCasingTierRequired + 1) * 100_000));
fluidStackLongArrayList.add(
new FluidStackLong(
MaterialsUEVplus.RawStarMatter.getFluid((this.spacetimeCasingTierRequired + 1) * 100_000),
(this.spacetimeCasingTierRequired + 1) * 100_000));

// Tier 0 & 1 - 576 White
// Tier 2 - 2304 White
Expand All @@ -172,9 +182,9 @@ public EyeOfHarmonyRecipe(final ArrayList<Pair<Materials, Long>> materialList, f
if (spacetimeTier == 0 || spacetimeTier == 9) {
spacetimeTier -= 1;
}
fluidStackArrayList.add(SPECIAL_FLUIDS[spacetimeTier + 1]);
fluidStackLongArrayList.add(SPECIAL_FLUIDS[spacetimeTier + 1]);

outputFluids = fluidStackArrayList;
outputFluids = fluidStackLongArrayList;
// --- End fluid handling ---.

this.hydrogenRequirement = hydrogenRequirement;
Expand Down Expand Up @@ -288,14 +298,14 @@ public ArrayList<ItemStackLong> getOutputItems() {
}

// Deep copy.
public FluidStack[] getOutputFluids() {
ArrayList<FluidStack> copyOutputList = new ArrayList<>();
public ArrayList<FluidStackLong> getOutputFluids() {
ArrayList<FluidStackLong> copyOutputList = new ArrayList<>();

for (FluidStack fluidStack : outputFluids) {
copyOutputList.add(fluidStack.copy());
for (FluidStackLong fluidStackLong : outputFluids) {
copyOutputList.add(new FluidStackLong(fluidStackLong));
}

return copyOutputList.toArray(new FluidStack[0]);
return copyOutputList;
}

public long getHydrogenRequirement() {
Expand Down Expand Up @@ -428,12 +438,13 @@ private static ArrayList<ItemStackLong> validDustGenerator(final ArrayList<Pair<
return dustList;
}

private static long plasmaCostCalculator(ArrayList<FluidStack> plasmas) {
private static long plasmaCostCalculator(ArrayList<FluidStackLong> plasmas) {
long total = 0;

for (FluidStack plasma : plasmas) {
for (FluidStackLong plasma : plasmas) {
FluidStack plasmaFluid = plasma.getRegularFluidStack(plasma, 1);
try {
String plasmaName = plasma.getFluid().getUnlocalizedName();
String plasmaName = plasmaFluid.getFluid().getUnlocalizedName();
total += plasmaEnergyMap.getOrDefault(plasmaName, 0L) * plasma.amount;
} catch (Exception e) {
e.printStackTrace();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,11 @@

import net.minecraft.block.Block;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fluids.FluidStack;

import org.apache.commons.lang3.tuple.Pair;

import com.github.technus.tectech.util.FluidStackLong;
import com.github.technus.tectech.util.ItemStackLong;
import com.google.common.math.LongMath;

Expand Down Expand Up @@ -99,6 +101,11 @@ public EyeOfHarmonyRecipeStorage() {
outputItems.add(itemStackLong.itemStack);
}

ArrayList<FluidStack> outputFluids = new ArrayList<>();
for (FluidStackLong fluidStackLong : recipe.getOutputFluids()) {
outputFluids.add(fluidStackLong.fluidStack);
}

ItemStack planetItem = recipe.getRecipeTriggerItem().copy();
planetItem.stackSize = 0;

Expand All @@ -109,7 +116,7 @@ public EyeOfHarmonyRecipeStorage() {
recipe,
null,
null,
recipe.getOutputFluids(),
outputFluids.toArray(new FluidStack[0]),
(int) recipe.getRecipeTimeInTicks(),
0,
0);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -429,7 +429,9 @@ public enum CustomItemList implements IItemContainer {
StabilisationFieldGeneratorTier5,
StabilisationFieldGeneratorTier6,
StabilisationFieldGeneratorTier7,
StabilisationFieldGeneratorTier8;
StabilisationFieldGeneratorTier8,

astralArrayFabricator;

private ItemStack mStack;
private boolean mHasNotBeenSet = true;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
package com.github.technus.tectech.thing.item;

import static com.github.technus.tectech.Reference.MODID;
import static com.github.technus.tectech.TecTech.creativeTabTecTech;
import static com.github.technus.tectech.thing.CustomItemList.astralArrayFabricator;
import static net.minecraft.util.StatCollector.translateToLocal;

import java.util.List;

import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumChatFormatting;

import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

public class AstralArrayFabricator extends Item {

public static AstralArrayFabricator INSTANCE;

private AstralArrayFabricator() {
setHasSubtypes(false);
setUnlocalizedName("tm.itemAstralArrayFabricator");
setTextureName(MODID + ":itemAstralArray");
setCreativeTab(creativeTabTecTech);
}

@Override
public void addInformation(ItemStack aStack, EntityPlayer ep, List<String> aList, boolean boo) {
aList.add(EnumChatFormatting.GRAY + translateToLocal("item.tm.itemAstralArrayFabricator.desc1"));
aList.add(EnumChatFormatting.GRAY + translateToLocal("item.tm.itemAstralArrayFabricator.desc2"));
aList.add(EnumChatFormatting.GRAY + translateToLocal("item.tm.itemAstralArrayFabricator.desc3"));
aList.add(
EnumChatFormatting.AQUA.toString() + EnumChatFormatting.BOLD
+ translateToLocal("item.tm.itemAstralArrayFabricator.desc0"));
}

public static void run() {
INSTANCE = new AstralArrayFabricator();
GameRegistry.registerItem(INSTANCE, INSTANCE.getUnlocalizedName());
astralArrayFabricator.set(INSTANCE);
}

@Override
@SideOnly(Side.CLIENT)
public void registerIcons(IIconRegister iconRegister) {
itemIcon = iconRegister.registerIcon(getIconString());
}

}
Loading

0 comments on commit 804678d

Please sign in to comment.