aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTechnus <daniel112092@gmail.com>2017-05-28 12:47:12 +0200
committerTechnus <daniel112092@gmail.com>2017-05-28 12:47:12 +0200
commit9a4e959ec14a780b6f6fe5a9990af804d6689eab (patch)
treeb4e07f54b0961c7af3b0b8b5934eb42275c1f221
parentd37b7bb680d8baf71a657655be18f3c0d679fc84 (diff)
downloadGT5-Unofficial-9a4e959ec14a780b6f6fe5a9990af804d6689eab.tar.gz
GT5-Unofficial-9a4e959ec14a780b6f6fe5a9990af804d6689eab.tar.bz2
GT5-Unofficial-9a4e959ec14a780b6f6fe5a9990af804d6689eab.zip
Dequantization done?
-rw-r--r--src/main/java/com/github/technus/tectech/elementalMatter/classes/cElementalDefinition.java1
-rw-r--r--src/main/java/com/github/technus/tectech/elementalMatter/classes/cElementalInstanceStackMap.java18
-rw-r--r--src/main/java/com/github/technus/tectech/elementalMatter/classes/cElementalMutableDefinitionStackMap.java16
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_dequantizer.java75
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_MultiblockBase_EM.java26
5 files changed, 111 insertions, 25 deletions
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 9e9b54cf0c..6e27486466 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
@@ -85,6 +85,7 @@ public abstract class cElementalDefinition implements iElementalDefinition {
@Override
public final boolean equals(Object obj) {
+ if(this==obj)return true;
if (obj instanceof iElementalDefinition)
return compareTo((iElementalDefinition) obj) == 0;
if (obj instanceof iHasElementalDefinition)
diff --git a/src/main/java/com/github/technus/tectech/elementalMatter/classes/cElementalInstanceStackMap.java b/src/main/java/com/github/technus/tectech/elementalMatter/classes/cElementalInstanceStackMap.java
index 52d8ad1e0c..6e1a0b8386 100644
--- a/src/main/java/com/github/technus/tectech/elementalMatter/classes/cElementalInstanceStackMap.java
+++ b/src/main/java/com/github/technus/tectech/elementalMatter/classes/cElementalInstanceStackMap.java
@@ -135,19 +135,19 @@ public final class cElementalInstanceStackMap implements Comparable<cElementalIn
return false;
}
- public boolean removeAmount(boolean testOnly, cElementalDefinitionStack stack) {
- final cElementalInstanceStack target = map.get(stack.definition);
+ public boolean removeAmount(boolean testOnly, iHasElementalDefinition stack) {
+ final cElementalInstanceStack target = map.get(stack.getDefinition());
if (target == null)
return false;
if (testOnly)
- return target.amount >= stack.amount;
+ return target.amount >= stack.getAmount();
else {
- final int diff = target.amount - stack.amount;
+ final int diff = target.amount - stack.getAmount();
if (diff > 0) {
target.amount = diff;
return true;
} else if (diff == 0) {
- map.remove(stack.definition);
+ map.remove(stack.getDefinition());
return true;
}
}
@@ -169,12 +169,12 @@ public final class cElementalInstanceStackMap implements Comparable<cElementalIn
return true;
}
- public boolean removeAllAmounts(boolean testOnly, cElementalDefinitionStack... stacks) {
+ public boolean removeAllAmounts(boolean testOnly, iHasElementalDefinition... stacks) {
boolean test = true;
- for (cElementalDefinitionStack stack : stacks)
+ for (iHasElementalDefinition stack : stacks)
test &= removeAmount(true, stack);
if (testOnly || !test) return test;
- for (cElementalDefinitionStack stack : stacks)
+ for (iHasElementalDefinition stack : stacks)
removeAmount(false, stack);
return true;
}
@@ -406,7 +406,7 @@ public final class cElementalInstanceStackMap implements Comparable<cElementalIn
}
@Override
- public int hashCode() {//Internal amounts should be also hashed
+ public int hashCode() {//Hash only definitions to compare contents not amounts or data
int hash = -(map.size() << 4);
for (cElementalInstanceStack s : map.values()) {
hash += s.definition.hashCode();
diff --git a/src/main/java/com/github/technus/tectech/elementalMatter/classes/cElementalMutableDefinitionStackMap.java b/src/main/java/com/github/technus/tectech/elementalMatter/classes/cElementalMutableDefinitionStackMap.java
index 3b4870185e..70931016d7 100644
--- a/src/main/java/com/github/technus/tectech/elementalMatter/classes/cElementalMutableDefinitionStackMap.java
+++ b/src/main/java/com/github/technus/tectech/elementalMatter/classes/cElementalMutableDefinitionStackMap.java
@@ -105,19 +105,19 @@ public final class cElementalMutableDefinitionStackMap extends cElementalStackMa
return false;
}
- public boolean removeAmount(boolean testOnly, cElementalDefinitionStack stack) {
- final cElementalDefinitionStack target = map.get(stack.definition);
+ public boolean removeAmount(boolean testOnly, iHasElementalDefinition stack) {
+ final cElementalDefinitionStack target = map.get(stack.getDefinition());
if (target == null)
return false;
if (testOnly)
- return target.amount >= stack.amount;
+ return target.amount >= stack.getAmount();
else {
- final int diff = target.amount - stack.amount;
+ final int diff = target.amount - stack.getAmount();
if (diff > 0) {
map.put(target.definition, new cElementalDefinitionStack(target.definition, diff));
return true;
} else if (diff == 0) {
- map.remove(stack.definition);
+ map.remove(stack.getDefinition());
return true;
}
}
@@ -139,12 +139,12 @@ public final class cElementalMutableDefinitionStackMap extends cElementalStackMa
return true;
}
- public boolean removeAllAmounts(boolean testOnly, cElementalDefinitionStack... stacks) {
+ public boolean removeAllAmounts(boolean testOnly, iHasElementalDefinition... stacks) {
boolean test = true;
- for (cElementalDefinitionStack stack : stacks)
+ for (iHasElementalDefinition stack : stacks)
test &= removeAmount(true, stack);
if (testOnly || !test) return test;
- for (cElementalDefinitionStack stack : stacks)
+ for (iHasElementalDefinition stack : stacks)
removeAmount(false, stack);
return true;
}
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_dequantizer.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_dequantizer.java
index c53fa706b8..f32ecad3dd 100644
--- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_dequantizer.java
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_dequantizer.java
@@ -1,16 +1,28 @@
package com.github.technus.tectech.thing.metaTileEntity.multi;
import com.github.technus.tectech.CommonValues;
+import com.github.technus.tectech.elementalMatter.classes.*;
+import com.github.technus.tectech.elementalMatter.interfaces.iExchangeInfo;
+import com.github.technus.tectech.elementalMatter.interfaces.iHasElementalDefinition;
import com.github.technus.tectech.thing.block.QuantumGlassBlock;
+import com.github.technus.tectech.thing.metaTileEntity.hatch.GT_MetaTileEntity_Hatch_InputElemental;
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;
+import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumChatFormatting;
+import net.minecraftforge.fluids.FluidStack;
+import net.minecraftforge.oredict.OreDictionary;
+
+import java.util.ArrayList;
import static com.github.technus.tectech.Util.StructureBuilder;
+import static com.github.technus.tectech.elementalMatter.definitions.dAtomDefinition.refMass;
+import static com.github.technus.tectech.elementalMatter.definitions.dAtomDefinition.refUnstableMass;
import static com.github.technus.tectech.thing.casing.GT_Container_CasingsTT.sBlockCasingsTT;
+import static gregtech.api.enums.GT_Values.V;
/**
* Created by danie_000 on 17.12.2016.
@@ -55,10 +67,65 @@ public class GT_MetaTileEntity_EM_dequantizer extends GT_MetaTileEntity_Multiblo
StructureBuilder(shape, blockType, blockMeta,1, 1, 0, getBaseMetaTileEntity());
}
- //@Override
- //public boolean EM_checkRecipe(ItemStack itemStack) {
- //
- //}
+ @Override
+ public boolean EM_checkRecipe(ItemStack itemStack) {
+ for (GT_MetaTileEntity_Hatch_InputElemental in : eInputHatches) {
+ cElementalInstanceStackMap map = in.getContainerHandler();
+ for (cElementalInstanceStack stack : map.values()) {
+ iExchangeInfo info = stack.getDefinition().someAmountIntoFluidStack();
+ if (info instanceof aFluidDequantizationInfo) {
+ if(map.removeAllAmounts(false,(iHasElementalDefinition) info.input())){
+ mOutputFluids=new FluidStack[]{(FluidStack) info.output()};
+ startRecipe((iHasElementalDefinition)info.input());
+ return true;
+ }
+ } else {
+ info = stack.getDefinition().someAmountIntoItemsStack();
+ if (info != null) {
+ if (info instanceof aItemDequantizationInfo) {
+ if(map.removeAllAmounts(false,(iHasElementalDefinition) info.input())){
+ mOutputItems=new ItemStack[]{(ItemStack) info.output()};
+ startRecipe((iHasElementalDefinition)info.input());
+ return true;
+ }
+ } else if (info instanceof aOredictDequantizationInfo) {
+ if(map.removeAllAmounts(false,(iHasElementalDefinition) info.input())){
+ ArrayList<ItemStack> items=OreDictionary.getOres(((aOredictDequantizationInfo) info).out);
+ if(items!=null && items.size()>0) {
+ mOutputItems = new ItemStack[]{
+ items.get(0)
+ };
+ startRecipe((iHasElementalDefinition) info.input());
+ return true;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ mEfficiencyIncrease = 0;
+ mMaxProgresstime = 0;
+ return false;
+ }
+
+ private void startRecipe(iHasElementalDefinition from) {
+ mMaxProgresstime = 20;
+ mEfficiencyIncrease = 10000;
+ float mass = from.getMass();
+ float euMult = mass / refMass;
+ eAmpereFlow = (int) Math.ceil(euMult);
+ if (mass > refUnstableMass) {
+ mEUt = (int) -V[9];
+ } else {
+ mEUt = (int) -V[8];
+ }
+ outputEM = new cElementalInstanceStackMap[]{
+ from instanceof cElementalInstanceStack ?
+ new cElementalInstanceStackMap((cElementalInstanceStack) from) :
+ new cElementalInstanceStackMap(new cElementalInstanceStack(from.getDefinition(), from.getAmount()))
+ };
+ }
@Override
public String[] getDescription() {
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 bfd32d83b1..34ef275fab 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
@@ -743,10 +743,10 @@ public abstract class GT_MetaTileEntity_MultiblockBase_EM extends GT_MetaTileEnt
EU > maxEUinputMax ||
(euVar - 1) / maxEUinputMin + 1 > eMaxAmpereFlow) {// euVar==0? --> (euVar - 1) / maxEUinputMin + 1 = 1!
if (TecTechConfig.DEBUG_MODE) {
- TecTech.Logger.debug("OMG1 " + euVar + " " + getEUVar() + " " + (euVar > getEUVar()));
- TecTech.Logger.debug("OMG2 " + EU + " " + maxEUinputMax + " " + (EU > maxEUinputMax));
- TecTech.Logger.debug("OMG3 " + euVar + " " + eMaxAmpereFlow);
- TecTech.Logger.debug("OMG4 " + ((euVar - 1) / maxEUinputMin + 1) + " " + eMaxAmpereFlow + " " + ((euVar - 1) / maxEUinputMin + 1 > eMaxAmpereFlow));
+ TecTech.Logger.debug("L1 " + euVar + " " + getEUVar() + " " + (euVar > getEUVar()));
+ TecTech.Logger.debug("L2 " + EU + " " + maxEUinputMax + " " + (EU > maxEUinputMax));
+ TecTech.Logger.debug("L3 " + euVar + " " + eMaxAmpereFlow);
+ TecTech.Logger.debug("L4 " + ((euVar - 1) / maxEUinputMin + 1) + " " + eMaxAmpereFlow + " " + ((euVar - 1) / maxEUinputMin + 1 > eMaxAmpereFlow));
}
return false;
}
@@ -799,6 +799,24 @@ public abstract class GT_MetaTileEntity_MultiblockBase_EM extends GT_MetaTileEnt
return GT_Utility.getTier(maxEUinputMin);
}
+ //new Method
+ public final cElementalInstanceStackMap EMgetInputsClone(){
+ cElementalInstanceStackMap in=new cElementalInstanceStackMap();
+ for(GT_MetaTileEntity_Hatch_ElementalContainer hatch:eInputHatches){
+ in.putUnifyAll(hatch.getContainerHandler());
+ }
+ return in.hasStacks()?in:null;
+ }
+
+ //new Method
+ public final cElementalInstanceStackMap EMgetOutputsClone(){
+ cElementalInstanceStackMap out=new cElementalInstanceStackMap();
+ for(GT_MetaTileEntity_Hatch_ElementalContainer hatch:eOutputHatches){
+ out.putUnifyAll(hatch.getContainerHandler());
+ }
+ return out.hasStacks()?out:null;
+ }
+
@Override
public final void stopMachine() {
mOutputItems = null;