From e3581dee99f21dc0da66c3eaaaff8cf82b20fb16 Mon Sep 17 00:00:00 2001 From: Technus Date: Fri, 26 May 2017 19:21:47 +0200 Subject: cleanup quantization/dequantization --- .../classes/aFluidDequantizationInfo.java | 49 ++++ .../classes/aFluidQuantizationInfo.java | 49 ++++ .../classes/aItemDequantizationInfo.java | 46 ++++ .../classes/aItemQuantizationInfo.java | 64 +++++ .../classes/aOredictDequantizationInfo.java | 57 +++++ .../classes/aOredictQuantizationInfo.java | 56 +++++ .../classes/bTransformationInfo.java | 82 ++++++ .../classes/cElementalDefinition.java | 2 +- .../classes/cElementalDefinitionStack.java | 2 +- .../classes/cElementalPrimitive.java | 7 +- .../definitions/cPrimitiveDefinition.java | 4 +- .../definitions/dAtomDefinition.java | 174 ++++++++++++- .../definitions/dHadronDefinition.java | 6 +- .../interfaces/iElementalDefinition.java | 8 +- .../interfaces/iElementalInstanceContainer.java | 2 +- .../elementalMatter/interfaces/iExchangeInfo.java | 11 + .../interfaces/iHasElementalDefinition.java | 8 +- .../technus/tectech/loader/MachineLoader.java | 1 - .../github/technus/tectech/loader/MainLoader.java | 7 +- .../technus/tectech/loader/RecipeLoader.java | 3 + .../technus/tectech/magicAddon/EssentiaCompat.java | 30 +++ .../tectech/magicAddon/EssentiaCompatEnabled.java | 69 +++++ .../definitions/dComplexAspectDefinition.java | 4 +- .../thing/metaTileEntity/multi/EssentiaCompat.java | 30 --- .../multi/EssentiaCompatEnabled.java | 69 ----- .../GT_MetaTileEntity_EM_essentiaDequantizer.java | 16 +- .../GT_MetaTileEntity_EM_essentiaQuantizer.java | 10 +- .../multi/GT_MetaTileEntity_EM_computer.java | 2 +- .../multi/GT_MetaTileEntity_EM_junction.java | 2 +- .../multi/GT_MetaTileEntity_EM_quantizer.java | 280 ++------------------- .../multi/GT_MetaTileEntity_EM_research.java | 2 +- .../multi/GT_MetaTileEntity_MultiblockBase_EM.java | 28 ++- 32 files changed, 772 insertions(+), 408 deletions(-) create mode 100644 src/main/java/com/github/technus/tectech/elementalMatter/classes/aFluidDequantizationInfo.java create mode 100644 src/main/java/com/github/technus/tectech/elementalMatter/classes/aFluidQuantizationInfo.java create mode 100644 src/main/java/com/github/technus/tectech/elementalMatter/classes/aItemDequantizationInfo.java create mode 100644 src/main/java/com/github/technus/tectech/elementalMatter/classes/aItemQuantizationInfo.java create mode 100644 src/main/java/com/github/technus/tectech/elementalMatter/classes/aOredictDequantizationInfo.java create mode 100644 src/main/java/com/github/technus/tectech/elementalMatter/classes/aOredictQuantizationInfo.java create mode 100644 src/main/java/com/github/technus/tectech/elementalMatter/classes/bTransformationInfo.java create mode 100644 src/main/java/com/github/technus/tectech/elementalMatter/interfaces/iExchangeInfo.java create mode 100644 src/main/java/com/github/technus/tectech/magicAddon/EssentiaCompat.java create mode 100644 src/main/java/com/github/technus/tectech/magicAddon/EssentiaCompatEnabled.java delete mode 100644 src/main/java/com/github/technus/tectech/magicAddon/thing/metaTileEntity/multi/EssentiaCompat.java delete mode 100644 src/main/java/com/github/technus/tectech/magicAddon/thing/metaTileEntity/multi/EssentiaCompatEnabled.java (limited to 'src/main/java/com') 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 fluidQuantization=new HashMap<>(32); + public HashMap fluidDequantization; + + final static public HashMap itemQuantization=new HashMap<>(32); + public HashMap itemDequantization; + + final static public HashMap oredictQuantization=new HashMap<>(32); + public HashMap 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 itemBinds = new TreeMap<>(); - public static final Map fluidBinds = new TreeMap<>(); - private static final byte nbtType = (byte) 'p'; public static final Map 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 itemBinds = new TreeMap<>(); - public static final Map 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 itemBinds = new TreeMap<>(); - public static final Map 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 {//IMMUTABLE +public interface iElementalDefinition extends Comparable,Cloneable {//IMMUTABLE //Nomenclature String getName(); @@ -41,11 +41,13 @@ public interface iElementalDefinition extends Comparable { 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 { +public interface iHasElementalDefinition extends Comparable,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/EssentiaCompat.java b/src/main/java/com/github/technus/tectech/magicAddon/EssentiaCompat.java new file mode 100644 index 0000000000..2cc647ea7f --- /dev/null +++ b/src/main/java/com/github/technus/tectech/magicAddon/EssentiaCompat.java @@ -0,0 +1,30 @@ +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; +import net.minecraft.tileentity.TileEntity; + +/** + * Created by Tec on 21.05.2017. + */ +public class EssentiaCompat { + public static EssentiaCompat essentiaContainerCompat; + + public void run(){} + + public boolean check(GT_MetaTileEntity_MultiblockBase_EM meta){ + return false; + } + + public TileEntity getContainer(GT_MetaTileEntity_MultiblockBase_EM meta){ + return null; + } + + public boolean putElementalInstanceStack(TileEntity conatainer, cElementalInstanceStack stack){ + return false; + } + + public cElementalInstanceStack getFromContainer(TileEntity container){ + return null; + } +} diff --git a/src/main/java/com/github/technus/tectech/magicAddon/EssentiaCompatEnabled.java b/src/main/java/com/github/technus/tectech/magicAddon/EssentiaCompatEnabled.java new file mode 100644 index 0000000000..8e5b774a50 --- /dev/null +++ b/src/main/java/com/github/technus/tectech/magicAddon/EssentiaCompatEnabled.java @@ -0,0 +1,69 @@ +package com.github.technus.tectech.magicAddon; + +import com.github.technus.tectech.elementalMatter.classes.cElementalDefinition; +import com.github.technus.tectech.elementalMatter.classes.cElementalInstanceStack; +import com.github.technus.tectech.magicAddon.definitions.iElementalAspect; +import com.github.technus.tectech.thing.metaTileEntity.multi.GT_MetaTileEntity_MultiblockBase_EM; +import net.minecraft.tileentity.TileEntity; +import thaumcraft.api.aspects.Aspect; +import thaumcraft.api.aspects.AspectList; +import thaumcraft.api.aspects.IAspectContainer; +import thaumcraft.common.tiles.TileEssentiaReservoir; +import thaumcraft.common.tiles.TileJarFillable; + +import static com.github.technus.tectech.magicAddon.definitions.AspectDefinitionCompat.aspectToDef; + +/** + * Created by Tec on 21.05.2017. + */ +public class EssentiaCompatEnabled extends EssentiaCompat { + @Override + public void run() { + + } + + @Override + public boolean check(GT_MetaTileEntity_MultiblockBase_EM meta) { + TileEntity tile =meta.getBaseMetaTileEntity().getTileEntityAtSide(meta.getBaseMetaTileEntity().getBackFacing()); + return tile!=null && (tile instanceof TileEssentiaReservoir) || (tile instanceof TileJarFillable); + } + + @Override + public TileEntity getContainer(GT_MetaTileEntity_MultiblockBase_EM meta) { + TileEntity tile =meta.getBaseMetaTileEntity().getTileEntityAtSide(meta.getBaseMetaTileEntity().getBackFacing()); + return tile!=null && !tile.isInvalid() && (tile instanceof TileEssentiaReservoir) || (tile instanceof TileJarFillable)?tile:null; + } + + @Override + public boolean putElementalInstanceStack(TileEntity container,cElementalInstanceStack stack){ + if(container==null || container.isInvalid())return false; + if((container instanceof IAspectContainer) && (stack.definition instanceof iElementalAspect)){ + Aspect aspect=(Aspect)(((iElementalAspect) stack.definition).materializeIntoAspect()); + if(aspect!=null){ + ((IAspectContainer) container).addToContainer(aspect,1); + return true; + } + } + return false; + } + + @Override + public cElementalInstanceStack getFromContainer(TileEntity container){ + if(container==null || container.isInvalid())return null; + if(container instanceof IAspectContainer){ + AspectList aspects=((IAspectContainer) container).getAspects(); + if(aspects!=null){ + Aspect[] aspectsArr= aspects.getAspects(); + if(aspectsArr!=null && aspectsArr[0]!=null){ + if (((IAspectContainer) container).takeFromContainer(aspectsArr[0],1)){ + cElementalDefinition def=aspectToDef.get(aspectsArr[0].getTag()); + if(def!=null){ + return new cElementalInstanceStack(def,1); + } + } + } + } + } + return null; + } +} 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/EssentiaCompat.java b/src/main/java/com/github/technus/tectech/magicAddon/thing/metaTileEntity/multi/EssentiaCompat.java deleted file mode 100644 index d3d90f832c..0000000000 --- a/src/main/java/com/github/technus/tectech/magicAddon/thing/metaTileEntity/multi/EssentiaCompat.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.github.technus.tectech.magicAddon.thing.metaTileEntity.multi; - -import com.github.technus.tectech.elementalMatter.classes.cElementalInstanceStack; -import com.github.technus.tectech.thing.metaTileEntity.multi.GT_MetaTileEntity_MultiblockBase_EM; -import net.minecraft.tileentity.TileEntity; - -/** - * Created by Tec on 21.05.2017. - */ -public class EssentiaCompat { - public static EssentiaCompat essentiaContainerCompat; - - public void run(){} - - public boolean check(GT_MetaTileEntity_MultiblockBase_EM meta){ - return false; - } - - public TileEntity getContainer(GT_MetaTileEntity_MultiblockBase_EM meta){ - return null; - } - - public boolean putElementalInstanceStack(TileEntity conatainer, cElementalInstanceStack stack){ - return false; - } - - public cElementalInstanceStack getFromContainer(TileEntity container){ - return null; - } -} 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/thing/metaTileEntity/multi/EssentiaCompatEnabled.java deleted file mode 100644 index 2fec74a87a..0000000000 --- a/src/main/java/com/github/technus/tectech/magicAddon/thing/metaTileEntity/multi/EssentiaCompatEnabled.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.github.technus.tectech.magicAddon.thing.metaTileEntity.multi; - -import com.github.technus.tectech.elementalMatter.classes.cElementalDefinition; -import com.github.technus.tectech.elementalMatter.classes.cElementalInstanceStack; -import com.github.technus.tectech.magicAddon.definitions.iElementalAspect; -import com.github.technus.tectech.thing.metaTileEntity.multi.GT_MetaTileEntity_MultiblockBase_EM; -import net.minecraft.tileentity.TileEntity; -import thaumcraft.api.aspects.Aspect; -import thaumcraft.api.aspects.AspectList; -import thaumcraft.api.aspects.IAspectContainer; -import thaumcraft.common.tiles.TileEssentiaReservoir; -import thaumcraft.common.tiles.TileJarFillable; - -import static com.github.technus.tectech.magicAddon.definitions.AspectDefinitionCompat.aspectToDef; - -/** - * Created by Tec on 21.05.2017. - */ -public class EssentiaCompatEnabled extends EssentiaCompat { - @Override - public void run() { - - } - - @Override - public boolean check(GT_MetaTileEntity_MultiblockBase_EM meta) { - TileEntity tile =meta.getBaseMetaTileEntity().getTileEntityAtSide(meta.getBaseMetaTileEntity().getBackFacing()); - return tile!=null && (tile instanceof TileEssentiaReservoir) || (tile instanceof TileJarFillable); - } - - @Override - public TileEntity getContainer(GT_MetaTileEntity_MultiblockBase_EM meta) { - TileEntity tile =meta.getBaseMetaTileEntity().getTileEntityAtSide(meta.getBaseMetaTileEntity().getBackFacing()); - return tile!=null && !tile.isInvalid() && (tile instanceof TileEssentiaReservoir) || (tile instanceof TileJarFillable)?tile:null; - } - - @Override - public boolean putElementalInstanceStack(TileEntity container,cElementalInstanceStack stack){ - if(container==null || container.isInvalid())return false; - if((container instanceof IAspectContainer) && (stack.definition instanceof iElementalAspect)){ - Aspect aspect=(Aspect)(((iElementalAspect) stack.definition).materializeIntoAspect()); - if(aspect!=null){ - ((IAspectContainer) container).addToContainer(aspect,1); - return true; - } - } - return false; - } - - @Override - public cElementalInstanceStack getFromContainer(TileEntity container){ - if(container==null || container.isInvalid())return null; - if(container instanceof IAspectContainer){ - AspectList aspects=((IAspectContainer) container).getAspects(); - if(aspects!=null){ - Aspect[] aspectsArr= aspects.getAspects(); - if(aspectsArr!=null && aspectsArr[0]!=null){ - if (((IAspectContainer) container).takeFromContainer(aspectsArr[0],1)){ - cElementalDefinition def=aspectToDef.get(aspectsArr[0].getTag()); - if(def!=null){ - return new cElementalInstanceStack(def,1); - } - } - } - } - } - 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];