diff options
author | Technus <daniel112092@gmail.com> | 2017-05-26 19:21:47 +0200 |
---|---|---|
committer | Technus <daniel112092@gmail.com> | 2017-05-26 19:21:47 +0200 |
commit | e3581dee99f21dc0da66c3eaaaff8cf82b20fb16 (patch) | |
tree | 517bb7714294650984e68eb23168456ea312386c /src/main/java | |
parent | e516f0b07c76cd1d5a8b6c21eece019f8c935000 (diff) | |
download | GT5-Unofficial-e3581dee99f21dc0da66c3eaaaff8cf82b20fb16.tar.gz GT5-Unofficial-e3581dee99f21dc0da66c3eaaaff8cf82b20fb16.tar.bz2 GT5-Unofficial-e3581dee99f21dc0da66c3eaaaff8cf82b20fb16.zip |
cleanup quantization/dequantization
Diffstat (limited to 'src/main/java')
30 files changed, 675 insertions, 311 deletions
diff --git a/src/main/java/com/github/technus/tectech/elementalMatter/classes/aFluidDequantizationInfo.java b/src/main/java/com/github/technus/tectech/elementalMatter/classes/aFluidDequantizationInfo.java new file mode 100644 index 0000000000..9126ae2073 --- /dev/null +++ b/src/main/java/com/github/technus/tectech/elementalMatter/classes/aFluidDequantizationInfo.java @@ -0,0 +1,49 @@ +package com.github.technus.tectech.elementalMatter.classes; + +import com.github.technus.tectech.elementalMatter.interfaces.iExchangeInfo; +import com.github.technus.tectech.elementalMatter.interfaces.iHasElementalDefinition; +import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fluids.FluidStack; + +/** + * Created by Tec on 23.05.2017. + */ +public class aFluidDequantizationInfo implements iExchangeInfo { + private final iHasElementalDefinition in; + private final FluidStack out; + + public aFluidDequantizationInfo(iHasElementalDefinition emIn, FluidStack fluidStackOut){ + in=emIn; + out=fluidStackOut; + } + + public aFluidDequantizationInfo(iHasElementalDefinition emIn ,int fluidID,int fluidAmount) { + in = emIn; + out = new FluidStack(fluidID, fluidAmount); + } + + public aFluidDequantizationInfo(iHasElementalDefinition emIn, Fluid fluid, int fluidAmount){ + in=emIn; + out=new FluidStack(fluid,fluidAmount); + } + + @Override + public iHasElementalDefinition input() { + return in.clone();//MEH! + } + + @Override + public FluidStack output() { + return out.copy(); + } + + @Override + public int hashCode() { + return in.getDefinition().hashCode(); + } + + @Override + public boolean equals(Object obj) { + return obj instanceof aFluidDequantizationInfo && hashCode() == obj.hashCode(); + } +} diff --git a/src/main/java/com/github/technus/tectech/elementalMatter/classes/aFluidQuantizationInfo.java b/src/main/java/com/github/technus/tectech/elementalMatter/classes/aFluidQuantizationInfo.java new file mode 100644 index 0000000000..1c26cd2747 --- /dev/null +++ b/src/main/java/com/github/technus/tectech/elementalMatter/classes/aFluidQuantizationInfo.java @@ -0,0 +1,49 @@ +package com.github.technus.tectech.elementalMatter.classes; + +import com.github.technus.tectech.elementalMatter.interfaces.iExchangeInfo; +import com.github.technus.tectech.elementalMatter.interfaces.iHasElementalDefinition; +import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fluids.FluidStack; + +/** + * Created by Tec on 23.05.2017. + */ +public class aFluidQuantizationInfo implements iExchangeInfo { + private final FluidStack in; + private final iHasElementalDefinition out; + + public aFluidQuantizationInfo(FluidStack fluidStackIn, iHasElementalDefinition emOut){ + in=fluidStackIn; + out=emOut; + } + + public aFluidQuantizationInfo(int fluidID,int fluidAmount, iHasElementalDefinition emOut){ + in=new FluidStack(fluidID,fluidAmount); + out=emOut; + } + + public aFluidQuantizationInfo(Fluid fluid, int fluidAmount, iHasElementalDefinition emOut){ + in=new FluidStack(fluid,fluidAmount); + out=emOut; + } + + @Override + public FluidStack input() { + return in.copy(); + } + + @Override + public iHasElementalDefinition output() { + return out.clone(); + } + + @Override + public int hashCode() { + return in.getFluidID(); + } + + @Override + public boolean equals(Object obj) { + return obj instanceof aFluidQuantizationInfo && hashCode() == obj.hashCode(); + } +} diff --git a/src/main/java/com/github/technus/tectech/elementalMatter/classes/aItemDequantizationInfo.java b/src/main/java/com/github/technus/tectech/elementalMatter/classes/aItemDequantizationInfo.java new file mode 100644 index 0000000000..08162a234c --- /dev/null +++ b/src/main/java/com/github/technus/tectech/elementalMatter/classes/aItemDequantizationInfo.java @@ -0,0 +1,46 @@ +package com.github.technus.tectech.elementalMatter.classes; + +import com.github.technus.tectech.elementalMatter.interfaces.iExchangeInfo; +import com.github.technus.tectech.elementalMatter.interfaces.iHasElementalDefinition; +import gregtech.api.enums.Materials; +import gregtech.api.enums.OrePrefixes; +import gregtech.api.util.GT_OreDictUnificator; +import net.minecraft.item.ItemStack; + +/** + * Created by Tec on 23.05.2017. + */ +public class aItemDequantizationInfo implements iExchangeInfo { + private final iHasElementalDefinition in; + private final ItemStack out; + + public aItemDequantizationInfo(iHasElementalDefinition emIn, ItemStack itemStackOut){ + in=emIn; + out=itemStackOut; + } + + public aItemDequantizationInfo(iHasElementalDefinition emIn, OrePrefixes prefix, Materials material, int amount) { + in = emIn; + out = GT_OreDictUnificator.get(prefix, material, amount); + } + + @Override + public iHasElementalDefinition input() { + return in.clone(); + } + + @Override + public ItemStack output() { + return out.copy(); + } + + @Override + public int hashCode() { + return in.getDefinition().hashCode(); + } + + @Override + public boolean equals(Object obj) { + return obj instanceof aItemDequantizationInfo && hashCode() == obj.hashCode(); + } +} diff --git a/src/main/java/com/github/technus/tectech/elementalMatter/classes/aItemQuantizationInfo.java b/src/main/java/com/github/technus/tectech/elementalMatter/classes/aItemQuantizationInfo.java new file mode 100644 index 0000000000..c58fd286b7 --- /dev/null +++ b/src/main/java/com/github/technus/tectech/elementalMatter/classes/aItemQuantizationInfo.java @@ -0,0 +1,64 @@ +package com.github.technus.tectech.elementalMatter.classes; + +import com.github.technus.tectech.elementalMatter.interfaces.iExchangeInfo; +import com.github.technus.tectech.elementalMatter.interfaces.iHasElementalDefinition; +import cpw.mods.fml.common.registry.GameRegistry; +import gregtech.api.enums.Materials; +import gregtech.api.enums.OrePrefixes; +import gregtech.api.util.GT_OreDictUnificator; +import net.minecraft.item.ItemStack; +import net.minecraftforge.oredict.OreDictionary; + +/** + * Created by Tec on 23.05.2017. + */ +public class aItemQuantizationInfo implements iExchangeInfo { + private final ItemStack in; + private final boolean skipNBT; + private final iHasElementalDefinition out; + + public aItemQuantizationInfo(ItemStack itemStackIn, boolean skipNBT, iHasElementalDefinition emOut) { + in = itemStackIn; + out = emOut; + this.skipNBT = skipNBT; + } + + public aItemQuantizationInfo(OrePrefixes prefix, Materials material, int amount, boolean skipNBT, iHasElementalDefinition emOut) { + in = GT_OreDictUnificator.get(prefix, material, amount); + out = emOut; + this.skipNBT = skipNBT; + } + + @Override + public ItemStack input() { + return in.copy(); + } + + @Override + public iHasElementalDefinition output() { + return out.clone(); + } + + @Override + public int hashCode() { + return (GameRegistry.findUniqueIdentifierFor(in.getItem())+":"+in.getUnlocalizedName()+":"+in.getItemDamage()).hashCode(); + } + + @Override + public boolean equals(Object obj) { + if(obj instanceof aItemQuantizationInfo){ + //alias + ItemStack b=((aItemQuantizationInfo) obj).in; + if(!in.getUnlocalizedName().equals(((aItemQuantizationInfo) obj).in.getUnlocalizedName())) return false; + + if(!GameRegistry.findUniqueIdentifierFor(in.getItem()).equals( + GameRegistry.findUniqueIdentifierFor(((aItemQuantizationInfo) obj).in.getItem()))) return false; + + if(in.getItemDamage() != OreDictionary.WILDCARD_VALUE && b.getItemDamage() != OreDictionary.WILDCARD_VALUE) { + if (in.getItemDamage() != b.getItemDamage()) return false; + } + return skipNBT || ItemStack.areItemStackTagsEqual(in, b); + } + return false; + } +} diff --git a/src/main/java/com/github/technus/tectech/elementalMatter/classes/aOredictDequantizationInfo.java b/src/main/java/com/github/technus/tectech/elementalMatter/classes/aOredictDequantizationInfo.java new file mode 100644 index 0000000000..1d2c2ca362 --- /dev/null +++ b/src/main/java/com/github/technus/tectech/elementalMatter/classes/aOredictDequantizationInfo.java @@ -0,0 +1,57 @@ +package com.github.technus.tectech.elementalMatter.classes; + +import com.github.technus.tectech.elementalMatter.interfaces.iExchangeInfo; +import com.github.technus.tectech.elementalMatter.interfaces.iHasElementalDefinition; +import gregtech.api.enums.Materials; +import gregtech.api.enums.OrePrefixes; +import gregtech.api.util.GT_OreDictUnificator; +import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.oredict.OreDictionary; + +/** + * Created by Tec on 23.05.2017. + */ +public class aOredictDequantizationInfo implements iExchangeInfo { + private final iHasElementalDefinition in; + public final int out; + public final int amount; + + public aOredictDequantizationInfo(iHasElementalDefinition emIn, int id, int qty) { + in = emIn; + out = id; + amount = qty; + } + + public aOredictDequantizationInfo(iHasElementalDefinition emIn, String name, int qty) { + in = emIn; + out = OreDictionary.getOreID(name); + amount = qty; + } + + public aOredictDequantizationInfo(iHasElementalDefinition emIn, OrePrefixes prefix, Materials material, int qty) { + in = emIn; + out = OreDictionary.getOreID(prefix.name() + material.mName); + amount = qty; + } + + @Override + public iHasElementalDefinition input() { + return in.clone();//MEH! + } + + @Override + public Integer output() { + return out; + } + + @Override + public int hashCode() { + return in.getDefinition().hashCode(); + } + + @Override + public boolean equals(Object obj) { + return obj instanceof aOredictDequantizationInfo && hashCode() == obj.hashCode(); + } +} diff --git a/src/main/java/com/github/technus/tectech/elementalMatter/classes/aOredictQuantizationInfo.java b/src/main/java/com/github/technus/tectech/elementalMatter/classes/aOredictQuantizationInfo.java new file mode 100644 index 0000000000..ccad2c9429 --- /dev/null +++ b/src/main/java/com/github/technus/tectech/elementalMatter/classes/aOredictQuantizationInfo.java @@ -0,0 +1,56 @@ +package com.github.technus.tectech.elementalMatter.classes; + +import com.github.technus.tectech.elementalMatter.interfaces.iExchangeInfo; +import com.github.technus.tectech.elementalMatter.interfaces.iHasElementalDefinition; +import gregtech.api.enums.Materials; +import gregtech.api.enums.OrePrefixes; +import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.oredict.OreDictionary; + +/** + * Created by Tec on 23.05.2017. + */ +public class aOredictQuantizationInfo implements iExchangeInfo { + public final int in; + public final int amount; + private final iHasElementalDefinition out; + + public aOredictQuantizationInfo(int id, int qty, iHasElementalDefinition emOut){ + in=id; + amount=qty; + out=emOut; + } + + public aOredictQuantizationInfo(String name, int qty, iHasElementalDefinition emOut){ + in=OreDictionary.getOreID(name); + amount=qty; + out=emOut; + } + + public aOredictQuantizationInfo( OrePrefixes prefix, Materials material, int qty, iHasElementalDefinition emOut){ + in=OreDictionary.getOreID(prefix.name() + material.mName); + amount=qty; + out=emOut; + } + + @Override + public Integer input() { + return in; + } + + @Override + public iHasElementalDefinition output() { + return out.clone(); + } + + @Override + public int hashCode() { + return in; + } + + @Override + public boolean equals(Object obj) { + return obj instanceof aOredictQuantizationInfo && hashCode() == obj.hashCode(); + } +} diff --git a/src/main/java/com/github/technus/tectech/elementalMatter/classes/bTransformationInfo.java b/src/main/java/com/github/technus/tectech/elementalMatter/classes/bTransformationInfo.java new file mode 100644 index 0000000000..9c9b4779ff --- /dev/null +++ b/src/main/java/com/github/technus/tectech/elementalMatter/classes/bTransformationInfo.java @@ -0,0 +1,82 @@ +package com.github.technus.tectech.elementalMatter.classes; + +import com.github.technus.tectech.elementalMatter.interfaces.iElementalDefinition; +import com.github.technus.tectech.elementalMatter.interfaces.iHasElementalDefinition; +import gregtech.api.enums.Materials; +import gregtech.api.enums.OrePrefixes; +import net.minecraft.item.ItemStack; +import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.oredict.OreDictionary; + +import java.util.HashMap; + +/** + * Created by Tec on 26.05.2017. + */ +public class bTransformationInfo { + final static public HashMap<Integer,aFluidQuantizationInfo> fluidQuantization=new HashMap<>(32); + public HashMap<iElementalDefinition,aFluidDequantizationInfo> fluidDequantization; + + final static public HashMap<aItemQuantizationInfo,aItemQuantizationInfo> itemQuantization=new HashMap<>(32); + public HashMap<iElementalDefinition,aItemDequantizationInfo> itemDequantization; + + final static public HashMap<Integer,aOredictQuantizationInfo> oredictQuantization=new HashMap<>(32); + public HashMap<iElementalDefinition,aOredictDequantizationInfo> oredictDequantization; + + public bTransformationInfo(){ + fluidDequantization=new HashMap<>(); + itemDequantization=new HashMap<>(); + oredictDequantization=new HashMap<>(); + } + + public bTransformationInfo(int fluidCap,int itemCap, int oreCap){ + if(fluidCap>0)fluidDequantization=new HashMap<>(fluidCap); + if(itemCap>0)itemDequantization=new HashMap<>(itemCap); + if(oreCap>0)oredictDequantization=new HashMap<>(oreCap); + } + + public void addFluid(iHasElementalDefinition em, FluidStack fluidStack){ + fluidQuantization.put(fluidStack.getFluidID(),new aFluidQuantizationInfo(fluidStack,em)); + fluidDequantization.put(em.getDefinition(),new aFluidDequantizationInfo(em,fluidStack)); + } + + public void addFluid(iHasElementalDefinition em ,int fluidID,int fluidAmount) { + fluidQuantization.put(fluidID,new aFluidQuantizationInfo(fluidID,fluidAmount,em)); + fluidDequantization.put(em.getDefinition(),new aFluidDequantizationInfo(em,fluidID,fluidAmount)); + } + + public void addFluid(iHasElementalDefinition em, Fluid fluid, int fluidAmount){ + fluidQuantization.put(fluid.getID(),new aFluidQuantizationInfo(fluid,fluidAmount,em)); + fluidDequantization.put(em.getDefinition(),new aFluidDequantizationInfo(em,fluid,fluidAmount)); + } + + public void addItemQuantization(aItemQuantizationInfo aIQI){ + itemQuantization.put(aIQI,aIQI); + } + + public void addItem(iHasElementalDefinition em, ItemStack itemStack, boolean skipNBT){ + addItemQuantization(new aItemQuantizationInfo(itemStack,skipNBT,em)); + itemDequantization.put(em.getDefinition(),new aItemDequantizationInfo(em,itemStack)); + } + + public void addItem(iHasElementalDefinition em, OrePrefixes prefix, Materials material, int amount, boolean skipNBT){ + addItemQuantization(new aItemQuantizationInfo(prefix,material,amount,skipNBT,em)); + itemDequantization.put(em.getDefinition(),new aItemDequantizationInfo(em,prefix,material,amount)); + } + + public void addOredict(iHasElementalDefinition em, int id, int qty){ + oredictQuantization.put(id,new aOredictQuantizationInfo(id,qty,em)); + oredictDequantization.put(em.getDefinition(),new aOredictDequantizationInfo(em,id,qty)); + } + + public void addOredict(iHasElementalDefinition em, String name, int qty){ + oredictQuantization.put(OreDictionary.getOreID(name),new aOredictQuantizationInfo(name,qty,em)); + oredictDequantization.put(em.getDefinition(),new aOredictDequantizationInfo(em,name,qty)); + } + + public void addOredict(iHasElementalDefinition em, OrePrefixes prefix, Materials material, int qty){ + oredictQuantization.put(OreDictionary.getOreID(prefix.name() + material.mName),new aOredictQuantizationInfo(prefix,material,qty,em)); + oredictDequantization.put(em.getDefinition(),new aOredictDequantizationInfo(em,prefix,material,qty)); + } +} diff --git a/src/main/java/com/github/technus/tectech/elementalMatter/classes/cElementalDefinition.java b/src/main/java/com/github/technus/tectech/elementalMatter/classes/cElementalDefinition.java index a9fba3854a..9e9b54cf0c 100644 --- a/src/main/java/com/github/technus/tectech/elementalMatter/classes/cElementalDefinition.java +++ b/src/main/java/com/github/technus/tectech/elementalMatter/classes/cElementalDefinition.java @@ -29,7 +29,7 @@ public abstract class cElementalDefinition implements iElementalDefinition { } @Override - protected final Object clone() { + public final cElementalDefinition clone() { return this;//IMMUTABLE } diff --git a/src/main/java/com/github/technus/tectech/elementalMatter/classes/cElementalDefinitionStack.java b/src/main/java/com/github/technus/tectech/elementalMatter/classes/cElementalDefinitionStack.java index d37c1e27cc..7ab4dcdc56 100644 --- a/src/main/java/com/github/technus/tectech/elementalMatter/classes/cElementalDefinitionStack.java +++ b/src/main/java/com/github/technus/tectech/elementalMatter/classes/cElementalDefinitionStack.java @@ -19,7 +19,7 @@ public final class cElementalDefinitionStack implements iHasElementalDefinition } @Override - protected final Object clone() { + public final cElementalDefinitionStack clone() { return this;//IMMUTABLE } diff --git a/src/main/java/com/github/technus/tectech/elementalMatter/classes/cElementalPrimitive.java b/src/main/java/com/github/technus/tectech/elementalMatter/classes/cElementalPrimitive.java index 3434d222cd..6e28e41b48 100644 --- a/src/main/java/com/github/technus/tectech/elementalMatter/classes/cElementalPrimitive.java +++ b/src/main/java/com/github/technus/tectech/elementalMatter/classes/cElementalPrimitive.java @@ -20,9 +20,6 @@ import static com.github.technus.tectech.elementalMatter.definitions.cPrimitiveD * EXTEND THIS TO ADD NEW PRIMITIVES, WATCH OUT FOR ID'S!!! (-1 to 32 can be assumed as used) */ public abstract class cElementalPrimitive extends cElementalDefinition { - public static final Map<cElementalPrimitive, ItemStack> itemBinds = new TreeMap<>(); - public static final Map<cElementalPrimitive, FluidStack> fluidBinds = new TreeMap<>(); - private static final byte nbtType = (byte) 'p'; public static final Map<Integer, iElementalDefinition> bindsBO = new HashMap<>(); @@ -129,12 +126,12 @@ public abstract class cElementalPrimitive extends cElementalDefinition { } @Override - public FluidStack materializesIntoFluid() { + public FluidStack someAmountIntoFluidStack() { return null; } @Override - public ItemStack materializesIntoItem() { + public ItemStack someAmountIntoItemsStack() { return null; } diff --git a/src/main/java/com/github/technus/tectech/elementalMatter/definitions/cPrimitiveDefinition.java b/src/main/java/com/github/technus/tectech/elementalMatter/definitions/cPrimitiveDefinition.java index 35a3cfa524..3f06712940 100644 --- a/src/main/java/com/github/technus/tectech/elementalMatter/definitions/cPrimitiveDefinition.java +++ b/src/main/java/com/github/technus/tectech/elementalMatter/definitions/cPrimitiveDefinition.java @@ -10,8 +10,8 @@ import static com.github.technus.tectech.elementalMatter.classes.cElementalDecay */ public final class cPrimitiveDefinition extends cElementalPrimitive { public static final cPrimitiveDefinition - nbtE__ = new cPrimitiveDefinition("NBT ERROR", "!", 0, 0f, 0, Integer.MIN_VALUE, Integer.MIN_VALUE), - null__ = new cPrimitiveDefinition("NULL POINTER", ".", 0, 0F, 0, -3, Integer.MAX_VALUE), + nbtE__ = new cPrimitiveDefinition("NBT ERROR", "!", 0, 0f, 0, Integer.MIN_VALUE, Integer.MIN_VALUE+10_000), + null__ = new cPrimitiveDefinition("NULL POINTER", ".", 0, 0F, 0, -3, Integer.MAX_VALUE-10_000), space__ = new cPrimitiveDefinition("Space", "_", 0, 0F, 0, -4, 0), magic = new cPrimitiveDefinition("Magic", "Ma", 4, 1e5F, 0, 0, 1), magic_ = new cPrimitiveDefinition("Antimagic", "~Ma", -4, 1e5F, 0, 0, 2); diff --git a/src/main/java/com/github/technus/tectech/elementalMatter/definitions/dAtomDefinition.java b/src/main/java/com/github/technus/tectech/elementalMatter/definitions/dAtomDefinition.java index 94e92107bf..8f745ae3b0 100644 --- a/src/main/java/com/github/technus/tectech/elementalMatter/definitions/dAtomDefinition.java +++ b/src/main/java/com/github/technus/tectech/elementalMatter/definitions/dAtomDefinition.java @@ -4,23 +4,29 @@ import com.github.technus.tectech.TecTech; import com.github.technus.tectech.auxiliary.TecTechConfig; import com.github.technus.tectech.elementalMatter.classes.*; import com.github.technus.tectech.elementalMatter.interfaces.iElementalDefinition; +import cpw.mods.fml.common.registry.GameRegistry; +import gregtech.api.enums.Materials; +import gregtech.api.enums.OrePrefixes; import gregtech.api.objects.XSTR; +import gregtech.api.util.GT_OreDictUnificator; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.oredict.OreDictionary; import java.util.*; import static com.github.technus.tectech.elementalMatter.definitions.eBosonDefinition.boson_Y__; import static com.github.technus.tectech.elementalMatter.definitions.eBosonDefinition.deadEnd; +import static gregtech.api.enums.OrePrefixes.dust; /** * Created by danie_000 on 18.11.2016. */ -public final class dAtomDefinition extends cElementalDefinition {//TODO Optimize map i/o +public final class dAtomDefinition extends cElementalDefinition { private final int hash; - public static final Map<dAtomDefinition, ItemStack> itemBinds = new TreeMap<>(); - public static final Map<dAtomDefinition, FluidStack> fluidBinds = new TreeMap<>(); + public static final bTransformationInfo transformation=new bTransformationInfo(16,0,64); + public static float refMass, refUnstableMass; private static final byte nbtType = (byte) 'a'; private static final Random xstr = new XSTR();//NEEDS SEPARATE! @@ -437,14 +443,16 @@ public final class dAtomDefinition extends cElementalDefinition {//TODO Optimize //} @Override - public FluidStack materializesIntoFluid() { - + public FluidStack someAmountIntoFluidStack() { + aFluidDequantizationInfo fdq= transformation.fluidDequantization.get(this); + if(fdq!=null) return fdq.output(); return null; } @Override - public ItemStack materializesIntoItem() { - + public ItemStack someAmountIntoItemsStack() { + aItemDequantizationInfo idq= transformation.itemDequantization.get(this); + if(idq!=null) return idq.output(); return null; } @@ -542,6 +550,158 @@ public final class dAtomDefinition extends cElementalDefinition {//TODO Optimize TecTech.Logger.info("Registered Elemental Matter Class: Atom "+nbtType+" "+64); } + public static void setTransformation(){ + /*----STABLE ATOMS----**/ + refMass = getFirstStableIsotope(1).getMass() * 144F; + + transformation.addFluid(new cElementalDefinitionStack(getFirstStableIsotope(1), 144),Materials.Hydrogen.mGas.getID(),144); + transformation.addFluid(new cElementalDefinitionStack(getFirstStableIsotope(2), 144),Materials.Helium.mGas.getID(), 144); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(3), 144), dust, Materials.Lithium,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(4), 144), dust, Materials.Beryllium,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(5), 144), dust, Materials.Boron,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(6), 144), dust, Materials.Carbon,1); + transformation.addFluid(new cElementalDefinitionStack(getFirstStableIsotope(7), 144),Materials.Nitrogen.mGas.getID(), 144); + transformation.addFluid(new cElementalDefinitionStack(getFirstStableIsotope(8), 144),Materials.Oxygen.mGas.getID(), 144); + transformation.addFluid(new cElementalDefinitionStack(getFirstStableIsotope(9), 144),Materials.Fluorine.mGas.getID(), 144); + //transformation.addFluid(new cElementalDefinitionStack(getFirstStableIsotope(10), 144),Materials.Neon.mGas.getID(), 144); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(11), 144), dust, Materials.Sodium,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(12), 144), dust, Materials.Magnesium,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(13), 144), dust, Materials.Aluminium,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(14), 144), dust, Materials.Silicon,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(15), 144), dust, Materials.Phosphorus,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(16), 144), dust, Materials.Sulfur,1); + transformation.addFluid(new cElementalDefinitionStack(getFirstStableIsotope(17), 144),Materials.Chlorine.mGas.getID(), 144); + transformation.addFluid(new cElementalDefinitionStack(getFirstStableIsotope(18), 144),Materials.Argon.mGas.getID(), 144); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(19), 144), dust, Materials.Potassium,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(20), 144), dust, Materials.Calcium,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(21), 144), dust, Materials.Scandium,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(22), 144), dust, Materials.Titanium,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(23), 144), dust, Materials.Vanadium,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(24), 144), dust, Materials.Chrome,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(25), 144), dust, Materials.Manganese,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(26), 144), dust, Materials.Iron,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(27), 144), dust, Materials.Cobalt,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(28), 144), dust, Materials.Nickel,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(29), 144), dust, Materials.Copper,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(30), 144), dust, Materials.Zinc,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(31), 144), dust, Materials.Gallium,1); + //transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(32), 144),OrePrefixes.dust, Materials.Germanium,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(33), 144), dust, Materials.Arsenic,1); + //transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(34), 144),OrePrefixes.dust, Materials.Selenium,1); + //transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(35), 144),OrePrefixes.dust, Materials.Bromine,1); + //transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(36), 144),OrePrefixes.dust, Materials.Krypton,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(37), 144), dust, Materials.Rubidium,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(38), 144), dust, Materials.Strontium,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(39), 144), dust, Materials.Yttrium,1); + //transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(40), 144),OrePrefixes.dust, Materials.Zirconium,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(41), 144), dust, Materials.Niobium,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(42), 144), dust, Materials.Molybdenum,1); + //transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(43), 144),OrePrefixes.dust, Materials.Technetium,1); + //transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(44), 144),OrePrefixes.dust, Materials.Ruthenium,1); + //transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(45), 144),OrePrefixes.dust, Materials.Rhodium,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(46), 144), dust, Materials.Palladium,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(47), 144), dust, Materials.Silver,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(48), 144), dust, Materials.Cadmium,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(49), 144), dust, Materials.Indium,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(50), 144), dust, Materials.Tin,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(51), 144), dust, Materials.Antimony,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(52), 144), dust, Materials.Tellurium,1); + //transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(53), 144),OrePrefixes.dust, Materials.Iodine,1); + //transformation.addFluid(new cElementalDefinitionStack(getFirstStableIsotope(54), 144),Materials.Xenon.mGas.getID(), 144); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(55), 144), dust, Materials.Caesium,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(56), 144), dust, Materials.Barium,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(57), 144), dust, Materials.Lanthanum,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(58), 144), dust, Materials.Cerium,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(59), 144), dust, Materials.Praseodymium,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(60), 144), dust, Materials.Neodymium,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(61), 144), dust, Materials.Promethium,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(62), 144), dust, Materials.Samarium,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(63), 144), dust, Materials.Europium,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(64), 144), dust, Materials.Gadolinium,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(65), 144), dust, Materials.Terbium,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(66), 144), dust, Materials.Dysprosium,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(67), 144), dust, Materials.Holmium,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(68), 144), dust, Materials.Erbium,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(69), 144), dust, Materials.Thulium,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(70), 144), dust, Materials.Ytterbium,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(71), 144), dust, Materials.Lutetium,1); + //transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(72), 144),OrePrefixes.dust, Materials.Hafnum,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(73), 144), dust, Materials.Tantalum,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(74), 144), dust, Materials.Tungsten,1); + //transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(75), 144),OrePrefixes.dust, Materials.Rhenium,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(76), 144), dust, Materials.Osmium,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(77), 144), dust, Materials.Iridium,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(78), 144), dust, Materials.Platinum,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(79), 144), dust, Materials.Gold,1); + transformation.addFluid(new cElementalDefinitionStack(getFirstStableIsotope(80), 144),Materials.Mercury.mFluid.getID(), 144); + //transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(81), 144),OrePrefixes.dust, Materials.Thallium,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(82), 144), dust, Materials.Lead,1); + transformation.addOredict(new cElementalDefinitionStack(getFirstStableIsotope(83), 144), dust, Materials.Bismuth,1); + + /*----UNSTABLE ATOMS----**/ + refUnstableMass = getFirstStableIsotope(83).getMass() * 144F; + + //transformation.addOredict(new cElementalDefinitionStack(getBestUnstableIsotope(84),144),OrePrefixes.dust, Materials.Polonium,1); + //transformation.addFluid(new cElementalDefinitionStack(getBestUnstableIsotope(85),144),Materials.Astatine.mPlasma.getID(), 144); + transformation.addFluid(new cElementalDefinitionStack(getBestUnstableIsotope(86),144),Materials.Radon.mGas.getID(), 144); + //transformation.addOredict(new cElementalDefinitionStack(getBestUnstableIsotope(87),144),OrePrefixes.dust, Materials.Francium,1); + //transformation.addOredict(new cElementalDefinitionStack(getBestUnstableIsotope(88),144),OrePrefixes.dust, Materials.Radium,1); + //transformation.addOredict(new cElementalDefinitionStack(getBestUnstableIsotope(89),144),OrePrefixes.dust, Materials.Actinium,1); + transformation.addOredict(new cElementalDefinitionStack(getBestUnstableIsotope(90),144), dust, Materials.Thorium,1); + //transformation.addOredict(new cElementalDefinitionStack(getBestUnstableIsotope(91),144),OrePrefixes.dust, Materials.Protactinium,1); + transformation.addOredict(new cElementalDefinitionStack(getBestUnstableIsotope(92),144), dust, Materials.Uranium,1); + //transformation.addOredict(new cElementalDefinitionStack(getBestUnstableIsotope(93),144),OrePrefixes.dust, Materials.Neptunium,1); + transformation.addOredict(new cElementalDefinitionStack(getBestUnstableIsotope(94),144), dust, Materials.Plutonium,1); + transformation.addOredict(new cElementalDefinitionStack(getBestUnstableIsotope(95),144), dust, Materials.Americium,1); + + /* ... */ + cElementalDefinitionStack neutrons=new cElementalDefinitionStack(dHadronDefinition.hadron_n, 100000); + transformation.oredictDequantization.put(neutrons.definition,new aOredictDequantizationInfo(neutrons, dust,Materials.Neutronium,1)); + bTransformationInfo.oredictQuantization.put( + OreDictionary.getOreID(OrePrefixes.ingotHot.name()+Materials.Neutronium.mName), + new aOredictQuantizationInfo(OrePrefixes.ingotHot,Materials.Neutronium,1 ,neutrons) + ); + + try { + dAtomDefinition temp=new dAtomDefinition( + eLeptonDefinition.lepton_e1, + dHadronDefinition.hadron_p1, + dHadronDefinition.hadron_n1 + ); + transformation.addFluid(new cElementalDefinitionStack(temp, 144),Materials.Deuterium.mGas.getID(), 144); + + temp=new dAtomDefinition( + eLeptonDefinition.lepton_e1, + dHadronDefinition.hadron_p1, + dHadronDefinition.hadron_n2 + ); + transformation.addFluid(new cElementalDefinitionStack(temp, 144),Materials.Tritium.mGas.getID(), 144); + + temp=new dAtomDefinition( + new cElementalDefinitionStack(eLeptonDefinition.lepton_e, 2), + dHadronDefinition.hadron_p2, + new cElementalDefinitionStack(dHadronDefinition.hadron_n, 3) + ); + transformation.addFluid(new cElementalDefinitionStack(temp, 144),Materials.Helium_3.mGas.getID(), 144); + + temp=new dAtomDefinition( + new cElementalDefinitionStack(eLeptonDefinition.lepton_e, 92), + new cElementalDefinitionStack(dHadronDefinition.hadron_p, 92), + new cElementalDefinitionStack(dHadronDefinition.hadron_n, 143) + ); + transformation.addOredict(new cElementalDefinitionStack(temp, 144),OrePrefixes.dust, Materials.Uranium235,1); + + temp=new dAtomDefinition( + new cElementalDefinitionStack(eLeptonDefinition.lepton_e, 94), + new cElementalDefinitionStack(dHadronDefinition.hadron_p, 94), + new cElementalDefinitionStack(dHadronDefinition.hadron_n, 149) + ); + transformation.addOredict(new cElementalDefinitionStack(temp, 144),OrePrefixes.dust, Materials.Plutonium241,1); + } catch (tElementalException e) { + if (TecTechConfig.DEBUG_MODE) e.printStackTrace(); + } + } + public static dAtomDefinition getFirstStableIsotope(int element) { return stableAtoms.get(element); } diff --git a/src/main/java/com/github/technus/tectech/elementalMatter/definitions/dHadronDefinition.java b/src/main/java/com/github/technus/tectech/elementalMatter/definitions/dHadronDefinition.java index 2df9019699..83424cdfab 100644 --- a/src/main/java/com/github/technus/tectech/elementalMatter/definitions/dHadronDefinition.java +++ b/src/main/java/com/github/technus/tectech/elementalMatter/definitions/dHadronDefinition.java @@ -19,8 +19,6 @@ import static com.github.technus.tectech.elementalMatter.definitions.eBosonDefin */ public final class dHadronDefinition extends cElementalDefinition {//TODO Optimize map i/o private final int hash; - public static final Map<dHadronDefinition, ItemStack> itemBinds = new TreeMap<>(); - public static final Map<dHadronDefinition, FluidStack> fluidBinds = new TreeMap<>(); private static final byte nbtType = (byte) 'h'; //Helpers @@ -277,12 +275,12 @@ public final class dHadronDefinition extends cElementalDefinition {//TODO Optimi //} @Override - public ItemStack materializesIntoItem() { + public ItemStack someAmountIntoItemsStack() { return null; } @Override - public FluidStack materializesIntoFluid() { + public FluidStack someAmountIntoFluidStack() { return null; } diff --git a/src/main/java/com/github/technus/tectech/elementalMatter/interfaces/iElementalDefinition.java b/src/main/java/com/github/technus/tectech/elementalMatter/interfaces/iElementalDefinition.java index 15c50fe880..d5b149c51d 100644 --- a/src/main/java/com/github/technus/tectech/elementalMatter/interfaces/iElementalDefinition.java +++ b/src/main/java/com/github/technus/tectech/elementalMatter/interfaces/iElementalDefinition.java @@ -10,7 +10,7 @@ import net.minecraftforge.fluids.FluidStack; /** * Created by danie_000 on 11.11.2016. */ -public interface iElementalDefinition extends Comparable<iElementalDefinition> {//IMMUTABLE +public interface iElementalDefinition extends Comparable<iElementalDefinition>,Cloneable {//IMMUTABLE //Nomenclature String getName(); @@ -41,11 +41,13 @@ public interface iElementalDefinition extends Comparable<iElementalDefinition> { cElementalDefinitionStackMap getSubParticles();//contents... null if none - ItemStack materializesIntoItem(); + ItemStack someAmountIntoItemsStack(); - FluidStack materializesIntoFluid(); + FluidStack someAmountIntoFluidStack(); NBTTagCompound toNBT(); cElementalDefinitionStack getStackForm(int i); + + iElementalDefinition clone(); } diff --git a/src/main/java/com/github/technus/tectech/elementalMatter/interfaces/iElementalInstanceContainer.java b/src/main/java/com/github/technus/tectech/elementalMatter/interfaces/iElementalInstanceContainer.java index e559d9250d..27580a0b42 100644 --- a/src/main/java/com/github/technus/tectech/elementalMatter/interfaces/iElementalInstanceContainer.java +++ b/src/main/java/com/github/technus/tectech/elementalMatter/interfaces/iElementalInstanceContainer.java @@ -5,7 +5,7 @@ import com.github.technus.tectech.elementalMatter.classes.cElementalInstanceStac /** * Created by danie_000 on 25.01.2017. */ -public interface iElementalInstanceContainer { +public interface iElementalInstanceContainer extends Cloneable { cElementalInstanceStackMap getContainerHandler(); float purgeOverflow(); diff --git a/src/main/java/com/github/technus/tectech/elementalMatter/interfaces/iExchangeInfo.java b/src/main/java/com/github/technus/tectech/elementalMatter/interfaces/iExchangeInfo.java new file mode 100644 index 0000000000..7e0f782b68 --- /dev/null +++ b/src/main/java/com/github/technus/tectech/elementalMatter/interfaces/iExchangeInfo.java @@ -0,0 +1,11 @@ +package com.github.technus.tectech.elementalMatter.interfaces; + +/** + * Created by Tec on 23.05.2017. + */ +public interface iExchangeInfo { + Object output();//what should be given - ItemStack,FluidStack,AspectStack, (EM definitionStack->)EM instance stack - etc. + //This must return new Object! - if obj is immutable dont care that much (applies to defStacks) + + Object input();//same as above but for input +} diff --git a/src/main/java/com/github/technus/tectech/elementalMatter/interfaces/iHasElementalDefinition.java b/src/main/java/com/github/technus/tectech/elementalMatter/interfaces/iHasElementalDefinition.java index d7bd96f9a2..12215d2d55 100644 --- a/src/main/java/com/github/technus/tectech/elementalMatter/interfaces/iHasElementalDefinition.java +++ b/src/main/java/com/github/technus/tectech/elementalMatter/interfaces/iHasElementalDefinition.java @@ -3,8 +3,14 @@ package com.github.technus.tectech.elementalMatter.interfaces; /** * Created by danie_000 on 30.01.2017. */ -public interface iHasElementalDefinition extends Comparable<iHasElementalDefinition> { +public interface iHasElementalDefinition extends Comparable<iHasElementalDefinition>,Cloneable { iElementalDefinition getDefinition(); int getAmount(); + + float getMass(); + + int getCharge(); + + iHasElementalDefinition clone(); } diff --git a/src/main/java/com/github/technus/tectech/loader/MachineLoader.java b/src/main/java/com/github/technus/tectech/loader/MachineLoader.java index 7568d2daf9..f3e6204ac9 100644 --- a/src/main/java/com/github/technus/tectech/loader/MachineLoader.java +++ b/src/main/java/com/github/technus/tectech/loader/MachineLoader.java @@ -246,6 +246,5 @@ public class MachineLoader implements Runnable { GT_MetaTileEntity_Hatch_Rack.run(); GT_MetaTileEntity_EM_computer.run(); GT_MetaTileEntity_EM_research.run(); - GT_MetaTileEntity_EM_quantizer.run(); } } diff --git a/src/main/java/com/github/technus/tectech/loader/MainLoader.java b/src/main/java/com/github/technus/tectech/loader/MainLoader.java index ee06ea9e1f..0911642f18 100644 --- a/src/main/java/com/github/technus/tectech/loader/MainLoader.java +++ b/src/main/java/com/github/technus/tectech/loader/MainLoader.java @@ -1,10 +1,10 @@ package com.github.technus.tectech.loader; import com.github.technus.tectech.TecTech; +import com.github.technus.tectech.magicAddon.EssentiaCompat; +import com.github.technus.tectech.magicAddon.EssentiaCompatEnabled; import com.github.technus.tectech.magicAddon.definitions.AspectDefinitionCompat; import com.github.technus.tectech.magicAddon.definitions.AspectDefinitionCompatEnabled; -import com.github.technus.tectech.magicAddon.thing.metaTileEntity.multi.EssentiaCompat; -import com.github.technus.tectech.magicAddon.thing.metaTileEntity.multi.EssentiaCompatEnabled; import com.github.technus.tectech.thing.block.QuantumGlassBlock; import com.github.technus.tectech.thing.casing.GT_Container_CasingsTT; import com.github.technus.tectech.thing.item.DebugBuilder; @@ -22,8 +22,8 @@ import java.util.List; import static com.github.technus.tectech.TecTech.hasThaumcraft; import static com.github.technus.tectech.TecTech.mainTab; +import static com.github.technus.tectech.magicAddon.EssentiaCompat.essentiaContainerCompat; import static com.github.technus.tectech.magicAddon.definitions.AspectDefinitionCompat.aspectDefinitionCompat; -import static com.github.technus.tectech.magicAddon.thing.metaTileEntity.multi.EssentiaCompat.essentiaContainerCompat; public final class MainLoader {//TODO add checks for - is mod loaded dreamcraft to enable higher tier machinery. (above UV), or implement a check for GT tier values. @@ -66,6 +66,7 @@ public final class MainLoader {//TODO add checks for - is mod loaded dreamcraft progressBarPostLoad.step("Recipes"); new RecipeLoader().run(); + TecTech.Logger.info("Recipe Init Done"); progressBarPostLoad.step("Creative Tab part1"); diff --git a/src/main/java/com/github/technus/tectech/loader/RecipeLoader.java b/src/main/java/com/github/technus/tectech/loader/RecipeLoader.java index 0f49042d76..c1589072ca 100644 --- a/src/main/java/com/github/technus/tectech/loader/RecipeLoader.java +++ b/src/main/java/com/github/technus/tectech/loader/RecipeLoader.java @@ -1,5 +1,6 @@ package com.github.technus.tectech.loader; +import com.github.technus.tectech.elementalMatter.definitions.dAtomDefinition; import cpw.mods.fml.common.Loader; /** @@ -7,6 +8,8 @@ import cpw.mods.fml.common.Loader; */ public class RecipeLoader implements Runnable { public void run() { + dAtomDefinition.setTransformation(); + // =================================================================================================== // Recipes init - common goes here rest goes into methods below // =================================================================================================== diff --git a/src/main/java/com/github/technus/tectech/magicAddon/thing/metaTileEntity/multi/EssentiaCompat.java b/src/main/java/com/github/technus/tectech/magicAddon/EssentiaCompat.java index d3d90f832c..2cc647ea7f 100644 --- a/src/main/java/com/github/technus/tectech/magicAddon/thing/metaTileEntity/multi/EssentiaCompat.java +++ b/src/main/java/com/github/technus/tectech/magicAddon/EssentiaCompat.java @@ -1,4 +1,4 @@ -package com.github.technus.tectech.magicAddon.thing.metaTileEntity.multi; +package com.github.technus.tectech.magicAddon; import com.github.technus.tectech.elementalMatter.classes.cElementalInstanceStack; import com.github.technus.tectech.thing.metaTileEntity.multi.GT_MetaTileEntity_MultiblockBase_EM; diff --git a/src/main/java/com/github/technus/tectech/magicAddon/thing/metaTileEntity/multi/EssentiaCompatEnabled.java b/src/main/java/com/github/technus/tectech/magicAddon/EssentiaCompatEnabled.java index 2fec74a87a..8e5b774a50 100644 --- a/src/main/java/com/github/technus/tectech/magicAddon/thing/metaTileEntity/multi/EssentiaCompatEnabled.java +++ b/src/main/java/com/github/technus/tectech/magicAddon/EssentiaCompatEnabled.java @@ -1,4 +1,4 @@ -package com.github.technus.tectech.magicAddon.thing.metaTileEntity.multi; +package com.github.technus.tectech.magicAddon; import com.github.technus.tectech.elementalMatter.classes.cElementalDefinition; import com.github.technus.tectech.elementalMatter.classes.cElementalInstanceStack; diff --git a/src/main/java/com/github/technus/tectech/magicAddon/definitions/dComplexAspectDefinition.java b/src/main/java/com/github/technus/tectech/magicAddon/definitions/dComplexAspectDefinition.java index 14dac06776..b7c7ee8dca 100644 --- a/src/main/java/com/github/technus/tectech/magicAddon/definitions/dComplexAspectDefinition.java +++ b/src/main/java/com/github/technus/tectech/magicAddon/definitions/dComplexAspectDefinition.java @@ -166,12 +166,12 @@ public final class dComplexAspectDefinition extends cElementalDefinition impleme } @Override - public FluidStack materializesIntoFluid() { + public FluidStack someAmountIntoFluidStack() { return null; } @Override - public ItemStack materializesIntoItem() { + public ItemStack someAmountIntoItemsStack() { return null; } diff --git a/src/main/java/com/github/technus/tectech/magicAddon/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_essentiaDequantizer.java b/src/main/java/com/github/technus/tectech/magicAddon/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_essentiaDequantizer.java index 28cf9f4c62..3ca9a96f45 100644 --- a/src/main/java/com/github/technus/tectech/magicAddon/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_essentiaDequantizer.java +++ b/src/main/java/com/github/technus/tectech/magicAddon/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_essentiaDequantizer.java @@ -3,7 +3,7 @@ package com.github.technus.tectech.magicAddon.thing.metaTileEntity.multi; import com.github.technus.tectech.CommonValues; import com.github.technus.tectech.elementalMatter.classes.cElementalInstanceStack; import com.github.technus.tectech.elementalMatter.classes.cElementalInstanceStackMap; -import com.github.technus.tectech.magicAddon.definitions.dComplexAspectDefinition; +import com.github.technus.tectech.magicAddon.definitions.ePrimalAspectDefinition; import com.github.technus.tectech.thing.block.QuantumGlassBlock; import com.github.technus.tectech.thing.metaTileEntity.iConstructible; import com.github.technus.tectech.thing.metaTileEntity.multi.GT_MetaTileEntity_MultiblockBase_EM; @@ -15,7 +15,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumChatFormatting; import static com.github.technus.tectech.Util.StructureBuilder; -import static com.github.technus.tectech.magicAddon.thing.metaTileEntity.multi.EssentiaCompat.essentiaContainerCompat; +import static com.github.technus.tectech.magicAddon.EssentiaCompat.essentiaContainerCompat; import static com.github.technus.tectech.thing.casing.GT_Container_CasingsTT.sBlockCasingsTT; import static gregtech.api.enums.GT_Values.E; import static gregtech.api.enums.GT_Values.V; @@ -68,23 +68,23 @@ public class GT_MetaTileEntity_EM_essentiaDequantizer extends GT_MetaTileEntity_ @Override public boolean EM_checkRecipe(ItemStack itemStack) { container=essentiaContainerCompat.getContainer(this); - if (eInputHatches.size() < 1) { + if (eInputHatches.size() < 1 || container==null) { stopMachine(); return false; } - cElementalInstanceStackMap inputHatchContainer=eOutputHatches.get(0).getContainerHandler(); + cElementalInstanceStackMap inputHatchContainer=eInputHatches.get(0).getContainerHandler(); if(inputHatchContainer.hasStacks()){ cElementalInstanceStack stack = inputHatchContainer.getFirst(); inputHatchContainer.removeAmount(false,new cElementalInstanceStack(stack.definition,1)); if(!essentiaContainerCompat.putElementalInstanceStack(container,stack)) - purgeInstanceStack(stack); + cleanInstanceStack(stack); mMaxProgresstime = 20; mEfficiencyIncrease = 10000; eAmpereFlow=1; - if (stack.definition instanceof dComplexAspectDefinition) { - mEUt = (int) -V[9]; - } else { + if (stack.definition instanceof ePrimalAspectDefinition) { mEUt = (int) -V[8]; + } else { + mEUt = (int) -V[9]; } return true; } diff --git a/src/main/java/com/github/technus/tectech/magicAddon/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_essentiaQuantizer.java b/src/main/java/com/github/technus/tectech/magicAddon/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_essentiaQuantizer.java index 7bb39d5d1f..44e08fe051 100644 --- a/src/main/java/com/github/technus/tectech/magicAddon/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_essentiaQuantizer.java +++ b/src/main/java/com/github/technus/tectech/magicAddon/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_essentiaQuantizer.java @@ -3,7 +3,7 @@ package com.github.technus.tectech.magicAddon.thing.metaTileEntity.multi; import com.github.technus.tectech.CommonValues; import com.github.technus.tectech.elementalMatter.classes.cElementalInstanceStack; import com.github.technus.tectech.elementalMatter.classes.cElementalInstanceStackMap; -import com.github.technus.tectech.magicAddon.definitions.dComplexAspectDefinition; +import com.github.technus.tectech.magicAddon.definitions.ePrimalAspectDefinition; import com.github.technus.tectech.thing.block.QuantumGlassBlock; import com.github.technus.tectech.thing.metaTileEntity.iConstructible; import com.github.technus.tectech.thing.metaTileEntity.multi.GT_MetaTileEntity_MultiblockBase_EM; @@ -15,7 +15,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumChatFormatting; import static com.github.technus.tectech.Util.StructureBuilder; -import static com.github.technus.tectech.magicAddon.thing.metaTileEntity.multi.EssentiaCompat.essentiaContainerCompat; +import static com.github.technus.tectech.magicAddon.EssentiaCompat.essentiaContainerCompat; import static com.github.technus.tectech.thing.casing.GT_Container_CasingsTT.sBlockCasingsTT; import static gregtech.api.enums.GT_Values.E; import static gregtech.api.enums.GT_Values.V; @@ -84,10 +84,10 @@ public class GT_MetaTileEntity_EM_essentiaQuantizer extends GT_MetaTileEntity_Mu eAmpereFlow=1; outputEM = new cElementalInstanceStackMap[1]; outputEM[0] = new cElementalInstanceStackMap(newStack); - if (newStack.definition instanceof dComplexAspectDefinition) { - mEUt = (int) -V[9]; - } else { + if (newStack.definition instanceof ePrimalAspectDefinition) { mEUt = (int) -V[8]; + } else { + mEUt = (int) -V[9]; } return true; } diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_computer.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_computer.java index 1a0f1bd04d..6e36a8b3a7 100644 --- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_computer.java +++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_computer.java @@ -5,10 +5,10 @@ import com.github.technus.tectech.TecTech; import com.github.technus.tectech.Util; import com.github.technus.tectech.auxiliary.TecTechConfig; import com.github.technus.tectech.dataFramework.quantumDataPacket; -import com.github.technus.tectech.thing.metaTileEntity.iConstructible; import com.github.technus.tectech.thing.metaTileEntity.hatch.GT_MetaTileEntity_Hatch_InputData; import com.github.technus.tectech.thing.metaTileEntity.hatch.GT_MetaTileEntity_Hatch_OutputData; import com.github.technus.tectech.thing.metaTileEntity.hatch.GT_MetaTileEntity_Hatch_Rack; +import com.github.technus.tectech.thing.metaTileEntity.iConstructible; import com.github.technus.tectech.vec3pos; import gregtech.api.enums.Textures; import gregtech.api.interfaces.ITexture; diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_junction.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_junction.java index 3d657091ca..71f9ccfdc0 100644 --- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_junction.java +++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_junction.java @@ -1,9 +1,9 @@ package com.github.technus.tectech.thing.metaTileEntity.multi; import com.github.technus.tectech.CommonValues; -import com.github.technus.tectech.thing.metaTileEntity.iConstructible; import com.github.technus.tectech.thing.metaTileEntity.hatch.GT_MetaTileEntity_Hatch_InputElemental; import com.github.technus.tectech.thing.metaTileEntity.hatch.GT_MetaTileEntity_Hatch_OutputElemental; +import com.github.technus.tectech.thing.metaTileEntity.iConstructible; import gregtech.api.interfaces.metatileentity.IMetaTileEntity; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import net.minecraft.block.Block; diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_quantizer.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_quantizer.java index b23032453a..c5ccf73946 100644 --- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_quantizer.java +++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_quantizer.java @@ -3,18 +3,11 @@ package com.github.technus.tectech.thing.metaTileEntity.multi; import com.github.technus.tectech.CommonValues; import com.github.technus.tectech.TecTech; import com.github.technus.tectech.auxiliary.TecTechConfig; -import com.github.technus.tectech.elementalMatter.classes.cElementalDefinitionStack; -import com.github.technus.tectech.elementalMatter.classes.cElementalInstanceStack; -import com.github.technus.tectech.elementalMatter.classes.cElementalInstanceStackMap; -import com.github.technus.tectech.elementalMatter.classes.tElementalException; -import com.github.technus.tectech.elementalMatter.definitions.dAtomDefinition; -import com.github.technus.tectech.elementalMatter.definitions.dHadronDefinition; -import com.github.technus.tectech.elementalMatter.definitions.eLeptonDefinition; +import com.github.technus.tectech.elementalMatter.classes.*; +import com.github.technus.tectech.elementalMatter.interfaces.iHasElementalDefinition; import com.github.technus.tectech.thing.block.QuantumGlassBlock; import com.github.technus.tectech.thing.metaTileEntity.iConstructible; import gregtech.api.GregTech_API; -import gregtech.api.enums.Materials; -import gregtech.api.enums.OrePrefixes; import gregtech.api.interfaces.metatileentity.IMetaTileEntity; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import net.minecraft.block.Block; @@ -23,12 +16,9 @@ import net.minecraft.util.EnumChatFormatting; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.oredict.OreDictionary; -import java.util.HashMap; - import static com.github.technus.tectech.Util.StructureBuilder; import static com.github.technus.tectech.Util.isInputEqual; -import static com.github.technus.tectech.elementalMatter.definitions.dAtomDefinition.getBestUnstableIsotope; -import static com.github.technus.tectech.elementalMatter.definitions.dAtomDefinition.getFirstStableIsotope; +import static com.github.technus.tectech.elementalMatter.definitions.dAtomDefinition.*; import static com.github.technus.tectech.thing.casing.GT_Container_CasingsTT.sBlockCasingsTT; import static gregtech.api.enums.GT_Values.V; @@ -36,10 +26,6 @@ import static gregtech.api.enums.GT_Values.V; * Created by danie_000 on 17.12.2016. */ public class GT_MetaTileEntity_EM_quantizer extends GT_MetaTileEntity_MultiblockBase_EM implements iConstructible { - public static HashMap<Integer, cElementalDefinitionStack> itemBinds = new HashMap<>(32); - public static HashMap<Integer, cElementalDefinitionStack> fluidBind = new HashMap<>(8); - private static float refMass, refUnstableMass; - //region Structure //use multi A energy inputs, use less power the longer it runs private static final String[][] shape = new String[][]{ @@ -88,20 +74,24 @@ public class GT_MetaTileEntity_EM_quantizer extends GT_MetaTileEntity_Multiblock } @Override - public boolean EM_checkRecipe(ItemStack itemStack) { + public boolean EM_checkRecipe(ItemStack itemStack) {//TODO implement by item quantization, implement instance quantization if (GregTech_API.sPostloadFinished) { ItemStack[] inI = getStoredInputs().toArray(new ItemStack[0]); if (inI.length > 0) { for (ItemStack is : inI) { + //TODO Here item quantizaiton + int[] oreIDs = OreDictionary.getOreIDs(is); if (TecTechConfig.DEBUG_MODE) TecTech.Logger.info("Quantifier-recipe " + is.getItem().getUnlocalizedName() + "." + is.getItemDamage() + " " + is.getDisplayName()); for (int ID : oreIDs) { if (TecTechConfig.DEBUG_MODE) TecTech.Logger.info("Quantifier-recipe " + is.getItem().getUnlocalizedName() + "." + is.getItemDamage() + " " + OreDictionary.getOreName(ID)); - cElementalDefinitionStack into = itemBinds.get(ID); + aOredictQuantizationInfo aOQI = bTransformationInfo.oredictQuantization.get(ID); + if(aOQI==null) continue; + iHasElementalDefinition into = aOQI.output(); if (into != null && isInputEqual(true, false, - nothingF, new ItemStack[]{new ItemStack(is.getItem(), 1, is.getItemDamage())}, null, inI)) { + nothingF, new ItemStack[]{new ItemStack(is.getItem(), aOQI.amount, is.getItemDamage())}, null, inI)) { mMaxProgresstime = 20; mEfficiencyIncrease = 10000; float mass = into.getMass(); @@ -112,8 +102,9 @@ public class GT_MetaTileEntity_EM_quantizer extends GT_MetaTileEntity_Multiblock } else { mEUt = (int) -V[8]; } - outputEM = new cElementalInstanceStackMap[1]; - outputEM[0] = new cElementalInstanceStackMap(new cElementalInstanceStack(into)); + outputEM = new cElementalInstanceStackMap[]{ + new cElementalInstanceStackMap(new cElementalInstanceStack(into.getDefinition(),into.getAmount())) + }; return true; } } @@ -122,9 +113,11 @@ public class GT_MetaTileEntity_EM_quantizer extends GT_MetaTileEntity_Multiblock FluidStack[] inF = getStoredFluids().toArray(new FluidStack[0]); if (inF.length > 0) { for (FluidStack fs : inF) { - cElementalDefinitionStack into = fluidBind.get(fs.getFluid().getID()); - if (into != null && fs.amount >= 144 && isInputEqual(true, false, - new FluidStack[]{new FluidStack(fs.getFluid(), 144)}, nothingI, inF, (ItemStack[]) null)) { + aFluidQuantizationInfo aFQI =bTransformationInfo.fluidQuantization.get(fs.getFluid().getID()); + if(aFQI==null)continue; + iHasElementalDefinition into = aFQI.output(); + if (into != null && fs.amount >= aFQI.input().amount && isInputEqual(true, false, + new FluidStack[]{aFQI.input()}, nothingI, inF, (ItemStack[]) null)) { mMaxProgresstime = 20; mEfficiencyIncrease = 10000; float mass = into.getMass(); @@ -135,8 +128,9 @@ public class GT_MetaTileEntity_EM_quantizer extends GT_MetaTileEntity_Multiblock } else { mEUt = (int) -V[8]; } - outputEM = new cElementalInstanceStackMap[1]; - outputEM[0] = new cElementalInstanceStackMap(new cElementalInstanceStack(into)); + outputEM = new cElementalInstanceStackMap[]{ + new cElementalInstanceStackMap(new cElementalInstanceStack(into.getDefinition(),into.getAmount())) + }; return true; } } @@ -155,236 +149,4 @@ public class GT_MetaTileEntity_EM_quantizer extends GT_MetaTileEntity_Multiblock } eOutputHatches.get(0).getContainerHandler().putUnifyAll(outputEM[0]); } - - private static int getID(OrePrefixes prefix, Materials material) { - return OreDictionary.getOreID(prefix.name() + material.mName); - } - - public static void run() { - refMass = getFirstStableIsotope(1).getMass() * 144F; - fluidBind.put(Materials.Hydrogen.mGas.getID(), new cElementalDefinitionStack(getFirstStableIsotope(1), 144)); - fluidBind.put(Materials.Helium.mGas.getID(), new cElementalDefinitionStack(getFirstStableIsotope(2), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Lithium), - new cElementalDefinitionStack(getFirstStableIsotope(3), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Beryllium), - new cElementalDefinitionStack(getFirstStableIsotope(4), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Boron), - new cElementalDefinitionStack(getFirstStableIsotope(5), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Carbon), - new cElementalDefinitionStack(getFirstStableIsotope(6), 144)); - fluidBind.put(Materials.Nitrogen.mGas.getID(), new cElementalDefinitionStack(getFirstStableIsotope(7), 144)); - fluidBind.put(Materials.Oxygen.mGas.getID(), new cElementalDefinitionStack(getFirstStableIsotope(8), 144)); - fluidBind.put(Materials.Fluorine.mGas.getID(), new cElementalDefinitionStack(getFirstStableIsotope(9), 144)); - //fluidBind.put(Materials.Neon.mGas.getID(),new cElementalDefinitionStack(getFirstStableIsotope(10),144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Sodium), - new cElementalDefinitionStack(getFirstStableIsotope(11), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Magnesium), - new cElementalDefinitionStack(getFirstStableIsotope(12), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Aluminium), - new cElementalDefinitionStack(getFirstStableIsotope(13), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Silicon), - new cElementalDefinitionStack(getFirstStableIsotope(14), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Phosphorus), - new cElementalDefinitionStack(getFirstStableIsotope(15), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Sulfur), - new cElementalDefinitionStack(getFirstStableIsotope(16), 144)); - fluidBind.put(Materials.Chlorine.mGas.getID(), new cElementalDefinitionStack(getFirstStableIsotope(17), 144)); - fluidBind.put(Materials.Argon.mGas.getID(), new cElementalDefinitionStack(getFirstStableIsotope(18), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Potassium), - new cElementalDefinitionStack(getFirstStableIsotope(19), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Calcium), - new cElementalDefinitionStack(getFirstStableIsotope(20), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Scandium), - new cElementalDefinitionStack(getFirstStableIsotope(21), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Titanium), - new cElementalDefinitionStack(getFirstStableIsotope(22), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Vanadium), - new cElementalDefinitionStack(getFirstStableIsotope(23), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Chrome), - new cElementalDefinitionStack(getFirstStableIsotope(24), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Manganese), - new cElementalDefinitionStack(getFirstStableIsotope(25), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Iron), - new cElementalDefinitionStack(getFirstStableIsotope(26), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.IronMagnetic), - new cElementalDefinitionStack(getFirstStableIsotope(26), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Cobalt), - new cElementalDefinitionStack(getFirstStableIsotope(27), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Nickel), - new cElementalDefinitionStack(getFirstStableIsotope(28), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Copper), - new cElementalDefinitionStack(getFirstStableIsotope(29), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Zinc), - new cElementalDefinitionStack(getFirstStableIsotope(30), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Gallium), - new cElementalDefinitionStack(getFirstStableIsotope(31), 144)); - //itemBinds.put(getID(OrePrefixes.dust, Materials.Germanium), - // new cElementalDefinitionStack(getFirstStableIsotope(32),144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Arsenic), - new cElementalDefinitionStack(getFirstStableIsotope(33), 144)); - //itemBinds.put(getID(OrePrefixes.dust, Materials.Selenium), - // new cElementalDefinitionStack(getFirstStableIsotope(34),144)); - //itemBinds.put(getID(OrePrefixes.dust, Materials.Bromine), - // new cElementalDefinitionStack(getFirstStableIsotope(35),144)); - //itemBinds.put(getID(OrePrefixes.dust, Materials.Krypton), - // new cElementalDefinitionStack(getFirstStableIsotope(36),144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Rubidium), - new cElementalDefinitionStack(getFirstStableIsotope(37), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Strontium), - new cElementalDefinitionStack(getFirstStableIsotope(38), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Yttrium), - new cElementalDefinitionStack(getFirstStableIsotope(39), 144)); - //itemBinds.put(getID(OrePrefixes.dust, Materials.Zirconium), - // new cElementalDefinitionStack(getFirstStableIsotope(40),144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Niobium), - new cElementalDefinitionStack(getFirstStableIsotope(41), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Molybdenum), - new cElementalDefinitionStack(getFirstStableIsotope(42), 144)); - //itemBinds.put(getID(OrePrefixes.dust, Materials.Technetium), - // new cElementalDefinitionStack(getFirstStableIsotope(43),144)); - //itemBinds.put(getID(OrePrefixes.dust, Materials.Ruthenium), - // new cElementalDefinitionStack(getFirstStableIsotope(44),144)); - //itemBinds.put(getID(OrePrefixes.dust, Materials.Rhodium), - // new cElementalDefinitionStack(getFirstStableIsotope(45),144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Palladium), - new cElementalDefinitionStack(getFirstStableIsotope(46), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Silver), - new cElementalDefinitionStack(getFirstStableIsotope(47), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Cadmium), - new cElementalDefinitionStack(getFirstStableIsotope(48), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Indium), - new cElementalDefinitionStack(getFirstStableIsotope(49), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Tin), - new cElementalDefinitionStack(getFirstStableIsotope(50), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Antimony), - new cElementalDefinitionStack(getFirstStableIsotope(51), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Tellurium), - new cElementalDefinitionStack(getFirstStableIsotope(52), 144)); - //itemBinds.put(getID(OrePrefixes.dust, Materials.Iodine), - // new cElementalDefinitionStack(getFirstStableIsotope(53),144)); - //fluidBind.put(Materials.Xenon.mGas.getID(),new cElementalDefinitionStack(getFirstStableIsotope(54),144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Caesium), - new cElementalDefinitionStack(getFirstStableIsotope(55), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Barium), - new cElementalDefinitionStack(getFirstStableIsotope(56), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Lanthanum), - new cElementalDefinitionStack(getFirstStableIsotope(57), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Cerium), - new cElementalDefinitionStack(getFirstStableIsotope(58), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Praseodymium), - new cElementalDefinitionStack(getFirstStableIsotope(59), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Neodymium), - new cElementalDefinitionStack(getFirstStableIsotope(60), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.NeodymiumMagnetic), - new cElementalDefinitionStack(getFirstStableIsotope(60), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Promethium), - new cElementalDefinitionStack(getFirstStableIsotope(61), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Samarium), - new cElementalDefinitionStack(getFirstStableIsotope(62), 144)); - //itemBinds.put(getID(OrePrefixes.dust, Materials.SamariumMagnetic), - // new cElementalDefinitionStack(getFirstStableIsotope(62),144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Europium), - new cElementalDefinitionStack(getFirstStableIsotope(63), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Gadolinium), - new cElementalDefinitionStack(getFirstStableIsotope(64), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Terbium), - new cElementalDefinitionStack(getFirstStableIsotope(65), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Dysprosium), - new cElementalDefinitionStack(getFirstStableIsotope(66), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Holmium), - new cElementalDefinitionStack(getFirstStableIsotope(67), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Erbium), - new cElementalDefinitionStack(getFirstStableIsotope(68), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Thulium), - new cElementalDefinitionStack(getFirstStableIsotope(69), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Ytterbium), - new cElementalDefinitionStack(getFirstStableIsotope(70), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Lutetium), - new cElementalDefinitionStack(getFirstStableIsotope(71), 144)); - //itemBinds.put(getID(OrePrefixes.dust, Materials.Hafnum), - // new cElementalDefinitionStack(getFirstStableIsotope(72),144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Tantalum), - new cElementalDefinitionStack(getFirstStableIsotope(73), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Tungsten), - new cElementalDefinitionStack(getFirstStableIsotope(74), 144)); - //itemBinds.put(getID(OrePrefixes.dust, Materials.Rhenium), - // new cElementalDefinitionStack(getFirstStableIsotope(75),144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Osmium), - new cElementalDefinitionStack(getFirstStableIsotope(76), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Iridium), - new cElementalDefinitionStack(getFirstStableIsotope(77), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Platinum), - new cElementalDefinitionStack(getFirstStableIsotope(78), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Gold), - new cElementalDefinitionStack(getFirstStableIsotope(79), 144)); - fluidBind.put(Materials.Mercury.mFluid.getID(), new cElementalDefinitionStack(getFirstStableIsotope(80), 144)); - //itemBinds.put(getID(OrePrefixes.dust, Materials.Thalium), - // new cElementalDefinitionStack(getFirstStableIsotope(81),144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Lead), - new cElementalDefinitionStack(getFirstStableIsotope(82), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Bismuth), - new cElementalDefinitionStack(getFirstStableIsotope(83), 144)); - //UNSTABLE ATOMS - refUnstableMass = getFirstStableIsotope(83).getMass() * 144F; - //itemBinds.put(getID(OrePrefixes.dust, Materials.Polonium), - // new cElementalDefinitionStack(getBestUnstableIsotope(84),144)); - //fluidBind.put(Materials.Astatine.mPlasma.getID(),new cElementalDefinitionStack(getBestUnstableIsotope(85),144)); - fluidBind.put(Materials.Radon.mGas.getID(), new cElementalDefinitionStack(getBestUnstableIsotope(86), 144)); - //itemBinds.put(getID(OrePrefixes.dust, Materials.Francium), - // new cElementalDefinitionStack(getBestUnstableIsotope(87),144)); - //itemBinds.put(getID(OrePrefixes.dust, Materials.Radium), - // new cElementalDefinitionStack(getBestUnstableIsotope(88),144)); - //itemBinds.put(getID(OrePrefixes.dust, Materials.Actinium), - // new cElementalDefinitionStack(getBestUnstableIsotope(89),144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Thorium), - new cElementalDefinitionStack(getBestUnstableIsotope(90), 144)); - //itemBinds.put(getID(OrePrefixes.dust, Materials.Protactinium), - // new cElementalDefinitionStack(getBestUnstableIsotope(91),144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Uranium), - new cElementalDefinitionStack(getBestUnstableIsotope(92), 144)); - //itemBinds.put(getID(OrePrefixes.dust, Materials.Neptunium), - // new cElementalDefinitionStack(getBestUnstableIsotope(93),144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Plutonium), - new cElementalDefinitionStack(getBestUnstableIsotope(94), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Americium), - new cElementalDefinitionStack(getBestUnstableIsotope(95), 144)); - /* ... */ - itemBinds.put(getID(OrePrefixes.ingotHot, Materials.Neutronium), - new cElementalDefinitionStack(dHadronDefinition.hadron_n, 100000)); - - try { - fluidBind.put(Materials.Deuterium.mGas.getID(), new cElementalDefinitionStack( - new dAtomDefinition( - eLeptonDefinition.lepton_e1, - dHadronDefinition.hadron_p1, - dHadronDefinition.hadron_n1 - ), 144)); - fluidBind.put(Materials.Tritium.mGas.getID(), new cElementalDefinitionStack( - new dAtomDefinition( - eLeptonDefinition.lepton_e1, - dHadronDefinition.hadron_p1, - dHadronDefinition.hadron_n2 - ), 144)); - fluidBind.put(Materials.Helium_3.mGas.getID(), new cElementalDefinitionStack( - new dAtomDefinition( - new cElementalDefinitionStack(eLeptonDefinition.lepton_e, 2), - dHadronDefinition.hadron_p2, - new cElementalDefinitionStack(dHadronDefinition.hadron_n, 3) - ), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Uranium235), - new cElementalDefinitionStack(new dAtomDefinition( - new cElementalDefinitionStack(eLeptonDefinition.lepton_e, 92), - new cElementalDefinitionStack(dHadronDefinition.hadron_p, 92), - new cElementalDefinitionStack(dHadronDefinition.hadron_n, 143) - ), 144)); - itemBinds.put(getID(OrePrefixes.dust, Materials.Plutonium241), - new cElementalDefinitionStack(new dAtomDefinition( - new cElementalDefinitionStack(eLeptonDefinition.lepton_e, 94), - new cElementalDefinitionStack(dHadronDefinition.hadron_p, 94), - new cElementalDefinitionStack(dHadronDefinition.hadron_n, 149) - ), 144)); - } catch (tElementalException e) { - if (TecTechConfig.DEBUG_MODE) e.printStackTrace(); - } - } } diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_research.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_research.java index 26838ba62b..f59e835652 100644 --- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_research.java +++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_research.java @@ -2,8 +2,8 @@ package com.github.technus.tectech.thing.metaTileEntity.multi; import com.github.technus.tectech.CommonValues; import com.github.technus.tectech.auxiliary.TecTechConfig; -import com.github.technus.tectech.thing.metaTileEntity.iConstructible; import com.github.technus.tectech.thing.metaTileEntity.hatch.GT_MetaTileEntity_Hatch_Holder; +import com.github.technus.tectech.thing.metaTileEntity.iConstructible; import gregtech.api.enums.Textures; import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.metatileentity.IMetaTileEntity; diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_MultiblockBase_EM.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_MultiblockBase_EM.java index 1e88ae65b8..bfd32d83b1 100644 --- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_MultiblockBase_EM.java +++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_MultiblockBase_EM.java @@ -50,7 +50,7 @@ public abstract class GT_MetaTileEntity_MultiblockBase_EM extends GT_MetaTileEnt protected final static Map<String, Method> adderMethodMap = new HashMap<>(); public static Method adderMethod; - protected cElementalInstanceStackMap[] outputEM = new cElementalInstanceStackMap[0]; + protected cElementalInstanceStackMap[] outputEM; public final static ItemStack[] nothingI = new ItemStack[0]; public final static FluidStack[] nothingF = new FluidStack[0]; @@ -542,6 +542,7 @@ public abstract class GT_MetaTileEntity_MultiblockBase_EM extends GT_MetaTileEnt if (mMaxProgresstime > 0 && ++mProgresstime >= mMaxProgresstime && recipeAt == Tick) {//progress increase and done hatchesStatusUpdate(); EM_outputFunction(); + cleanOutputEM(); if (mOutputItems != null) for (ItemStack tStack : mOutputItems) if (tStack != null) addOutput(tStack); @@ -555,7 +556,6 @@ public abstract class GT_MetaTileEntity_MultiblockBase_EM extends GT_MetaTileEnt updateSlots(); mOutputItems = null; mOutputFluids = null; - outputEM = new cElementalInstanceStackMap[0]; mProgresstime = 0; mMaxProgresstime = 0; mEfficiencyIncrease = 0; @@ -870,6 +870,7 @@ public abstract class GT_MetaTileEntity_MultiblockBase_EM extends GT_MetaTileEnt } public void cleanHatchContent(GT_MetaTileEntity_Hatch_ElementalContainer target) { + if (target == null) return; float mass = target.getContainerHandler().getMass(); if (mass > 0) { if (eMufflerHatches.size() < 1) explodeMultiblock(); @@ -881,7 +882,8 @@ public abstract class GT_MetaTileEntity_MultiblockBase_EM extends GT_MetaTileEnt } } - public void purgeInstanceStack(cElementalInstanceStack target) { + public void cleanInstanceStack(cElementalInstanceStack target) { + if (target == null) return; float mass = target.getMass(); if (mass > 0) { if (eMufflerHatches.size() < 1) explodeMultiblock(); @@ -893,6 +895,26 @@ public abstract class GT_MetaTileEntity_MultiblockBase_EM extends GT_MetaTileEnt } } + private void cleanOutputEM() { + if (outputEM == null) return; + float mass = 0; + for (cElementalInstanceStackMap map : outputEM) + mass = map.removeOverflow(0, 0); + + if (mass > 0) { + if (eMufflerHatches.size() < 1) { + explodeMultiblock(); + return; + } + mass /= eMufflerHatches.size(); + for (GT_MetaTileEntity_Hatch_MufflerElemental dump : eMufflerHatches) { + dump.overflowMatter += mass; + if (dump.overflowMatter > dump.overflowMax) explodeMultiblock(); + } + } + outputEM = null; + } + @Override public final boolean checkRecipe(ItemStack itemStack) {//do recipe checks, based on "machine content and state" hatchesStatusUpdate(); |