aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTechnus <daniel112092@gmail.com>2017-05-12 19:25:09 +0200
committerTechnus <daniel112092@gmail.com>2017-05-12 19:25:09 +0200
commit63f3b6c2bc54eb1ca18c180468c9a0551b4707ed (patch)
tree86d4dd10a55ecfbe440b4cd060bf3b445acc20a2 /src
parent43057795e44ff2163b3b271b1d4c92968e3240b4 (diff)
downloadGT5-Unofficial-63f3b6c2bc54eb1ca18c180468c9a0551b4707ed.tar.gz
GT5-Unofficial-63f3b6c2bc54eb1ca18c180468c9a0551b4707ed.tar.bz2
GT5-Unofficial-63f3b6c2bc54eb1ca18c180468c9a0551b4707ed.zip
Refactoring 4th time
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/github/technus/tectech/elementalMatter/classes/cElementalDecay.java10
-rw-r--r--src/main/java/com/github/technus/tectech/elementalMatter/classes/cElementalDefinition.java13
-rw-r--r--src/main/java/com/github/technus/tectech/elementalMatter/classes/cElementalDefinitionStack.java7
-rw-r--r--src/main/java/com/github/technus/tectech/elementalMatter/classes/cElementalDefinitionStackMap.java123
-rw-r--r--src/main/java/com/github/technus/tectech/elementalMatter/classes/cElementalInstanceStack.java28
-rw-r--r--src/main/java/com/github/technus/tectech/elementalMatter/classes/cElementalInstanceStackMap.java107
-rw-r--r--src/main/java/com/github/technus/tectech/elementalMatter/classes/cElementalMutableDefinitionStackMap.java326
-rw-r--r--src/main/java/com/github/technus/tectech/elementalMatter/classes/cElementalPrimitive.java4
-rw-r--r--src/main/java/com/github/technus/tectech/elementalMatter/classes/rElementalRecipe.java8
-rw-r--r--src/main/java/com/github/technus/tectech/elementalMatter/classes/rElementalRecipeTree.java16
-rw-r--r--src/main/java/com/github/technus/tectech/elementalMatter/definitions/dAtomDefinition.java41
-rw-r--r--src/main/java/com/github/technus/tectech/elementalMatter/definitions/dComplexAspectDefinition.java6
-rw-r--r--src/main/java/com/github/technus/tectech/elementalMatter/definitions/dHadronDefinition.java14
-rw-r--r--src/main/java/com/github/technus/tectech/elementalMatter/interfaces/iElementalDefinition.java4
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_quantizer.java5
15 files changed, 531 insertions, 181 deletions
diff --git a/src/main/java/com/github/technus/tectech/elementalMatter/classes/cElementalDecay.java b/src/main/java/com/github/technus/tectech/elementalMatter/classes/cElementalDecay.java
index 19d3b1566b..7891c273ba 100644
--- a/src/main/java/com/github/technus/tectech/elementalMatter/classes/cElementalDecay.java
+++ b/src/main/java/com/github/technus/tectech/elementalMatter/classes/cElementalDecay.java
@@ -12,7 +12,7 @@ public final class cElementalDecay {
//Or cast null into ARRAY type but this static is more convenient!!!
public static final cElementalDecay[] noProduct = new cElementalDecay[0];
//this in turn can be used to tell that the thing should just vanish
- public final cElementalDefinitionStackMap outputStacks;
+ public final cElementalMutableDefinitionStackMap outputStacks;
public final float probability;
public cElementalDecay(iElementalDefinition... outSafe) {
@@ -24,7 +24,7 @@ public final class cElementalDecay {
for (int i = 0; i < outArr.length; i++) {
outArr[i] = new cElementalDefinitionStack(outSafe[i], 1);
}
- this.outputStacks = new cElementalDefinitionStackMap(outArr);
+ this.outputStacks = new cElementalMutableDefinitionStackMap(outArr);
this.probability = probability;
}
@@ -33,15 +33,15 @@ public final class cElementalDecay {
}
public cElementalDecay(float probability, cElementalDefinitionStack... out) {
- this.outputStacks = new cElementalDefinitionStackMap(out);
+ this.outputStacks = new cElementalMutableDefinitionStackMap(out);
this.probability = probability;
}
- public cElementalDecay(cElementalDefinitionStackMap tree) {
+ public cElementalDecay(cElementalMutableDefinitionStackMap tree) {
this(2F, tree);
}
- public cElementalDecay(float probability, cElementalDefinitionStackMap tree) {
+ public cElementalDecay(float probability, cElementalMutableDefinitionStackMap tree) {
this.outputStacks = tree;
this.probability = probability;
}
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 e1223f823b..cac239c894 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
@@ -6,6 +6,7 @@ import com.github.technus.tectech.elementalMatter.interfaces.iHasElementalDefini
import net.minecraft.nbt.NBTTagCompound;
import java.lang.reflect.Method;
+import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;
@@ -15,15 +16,19 @@ import static com.github.technus.tectech.elementalMatter.definitions.cPrimitiveD
* Created by danie_000 on 23.01.2017.
*/
public abstract class cElementalDefinition implements iElementalDefinition {
- //add text based creators for recipe formula input?
- private static final Map<Byte, Method> nbtCreationBind = new TreeMap<>();//creator methods in subclasses
+ //Nothing array
+ public static final iElementalDefinition[] nothing = new cElementalPrimitive[0];
+ //add text based creators for recipe formula input?
+ private static final Map<Byte, Method> nbtCreationBind = new HashMap<>();//creator methods in subclasses
protected static Method addCreatorFromNBT(byte b, Method m) {
return nbtCreationBind.put(b, m);
}
- //Nothing array
- public static final iElementalDefinition[] nothing = new cElementalPrimitive[0];
+ @Override
+ protected final Object clone() {
+ return this;//IMMUTABLE
+ }
public static iElementalDefinition fromNBT(NBTTagCompound nbt) {
try {
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 d32f034fb4..1bff45172a 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,8 +19,13 @@ public final class cElementalDefinitionStack implements iHasElementalDefinition
}
@Override
+ protected final Object clone() {
+ return this;//IMMUTABLE
+ }
+
+ @Override
public iElementalDefinition getDefinition() {
- return definition;
+ return definition;//IMMUTABLE
}
@Override
diff --git a/src/main/java/com/github/technus/tectech/elementalMatter/classes/cElementalDefinitionStackMap.java b/src/main/java/com/github/technus/tectech/elementalMatter/classes/cElementalDefinitionStackMap.java
index 1abffb7a26..d41554c5ef 100644
--- a/src/main/java/com/github/technus/tectech/elementalMatter/classes/cElementalDefinitionStackMap.java
+++ b/src/main/java/com/github/technus/tectech/elementalMatter/classes/cElementalDefinitionStackMap.java
@@ -6,50 +6,47 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.EnumChatFormatting;
import java.util.Map;
-import java.util.TreeMap;
import static com.github.technus.tectech.elementalMatter.definitions.cPrimitiveDefinition.debug__;
/**
- * Created by danie_000 on 22.01.2017.
+ * Created by Tec on 12.05.2017.
*/
-public final class cElementalDefinitionStackMap implements Comparable<cElementalDefinitionStackMap> {
- private Map<iElementalDefinition, cElementalDefinitionStack> tree = new TreeMap<>();
-
- //Constructors
- public cElementalDefinitionStackMap() {
+public class cElementalDefinitionStackMap/*IMMUTABLE*/ extends cElementalMutableDefinitionStackMap {//TODO MAKE IMMUTABLE
+ public cElementalDefinitionStackMap(cElementalMutableDefinitionStackMap mutable) {
+ map=mutable.Clone().map;
}
- @Deprecated
- public cElementalDefinitionStackMap(iElementalDefinition... in) {
- if (in == null) return;
- for (iElementalDefinition definition : in)
- tree.put(definition, new cElementalDefinitionStack(definition, 1));
+ //IMMUTABLES DONT NEED IT
+ @Override
+ protected Object clone() {
+ return this;
}
- public cElementalDefinitionStackMap(cElementalDefinitionStack... in) {
- if (in == null) return;
- for (cElementalDefinitionStack stack : in)
- tree.put(stack.definition, stack);
+ @Override
+ @Deprecated
+ public final cElementalMutableDefinitionStackMap Clone() {
+ return null;
}
- private cElementalDefinitionStackMap(Map<iElementalDefinition, cElementalDefinitionStack> in) {
- if (in == null) return;
- tree = in;
+ @Override
+ public final cElementalMutableDefinitionStackMap mutable() {
+ return new cElementalMutableDefinitionStackMap(map);
}
- public cElementalDefinitionStackMap(cElementalDefinitionStackMap in) {
- this(in.tree);
+ @Override
+ public cElementalDefinitionStackMap immutable() {
+ return this;
}
- @Override
- protected Object clone() throws CloneNotSupportedException {
- return new cElementalDefinitionStackMap(tree);
+ @Deprecated
+ public Map<iElementalDefinition,cElementalDefinitionStack> getRawMap() {
+ return mutable().getRawMap();
}
@Override
- public int compareTo(cElementalDefinitionStackMap o) {
- if (tree.size() != o.tree.size()) return tree.size() - o.tree.size();
+ public int compareTo(cElementalMutableDefinitionStackMap o) {
+ if (map.size() != o.map.size()) return map.size() - o.map.size();
cElementalDefinitionStack[] ofThis = values(), ofThat = o.values();
for (int i = 0; i < ofThat.length; i++) {
int result = ofThis[i].compareTo(ofThat[i]);
@@ -60,32 +57,32 @@ public final class cElementalDefinitionStackMap implements Comparable<cElemental
//Removers
public void clear() {
- tree.clear();
+ map.clear();
}
public cElementalDefinitionStack remove(iElementalDefinition def) {
- return tree.remove(def);
+ return map.remove(def);
}
@Deprecated
public cElementalDefinitionStack remove(iHasElementalDefinition has) {
- return tree.remove(has.getDefinition());
+ return map.remove(has.getDefinition());
}
public void removeAll(iElementalDefinition... definitions) {
for (iElementalDefinition def : definitions)
- tree.remove(def);
+ map.remove(def);
}
@Deprecated
private void removeAll(iHasElementalDefinition... hasElementals) {
for (iHasElementalDefinition has : hasElementals)
- tree.remove(has.getDefinition());
+ map.remove(has.getDefinition());
}
//Remove amounts
public boolean removeAmount(boolean testOnly, cElementalInstanceStack instance) {
- final cElementalDefinitionStack target = tree.get(instance.definition);
+ final cElementalDefinitionStack target = map.get(instance.definition);
if (target == null)
return false;
if (testOnly)
@@ -93,10 +90,10 @@ public final class cElementalDefinitionStackMap implements Comparable<cElemental
else {
final int diff = target.amount - instance.amount;
if (diff > 0) {
- tree.put(target.definition, new cElementalDefinitionStack(target.definition, diff));
+ map.put(target.definition, new cElementalDefinitionStack(target.definition, diff));
return true;
} else if (diff == 0) {
- tree.remove(instance.definition);
+ map.remove(instance.definition);
return true;
}
}
@@ -104,7 +101,7 @@ public final class cElementalDefinitionStackMap implements Comparable<cElemental
}
public boolean removeAmount(boolean testOnly, cElementalDefinitionStack stack) {
- final cElementalDefinitionStack target = tree.get(stack.definition);
+ final cElementalDefinitionStack target = map.get(stack.definition);
if (target == null)
return false;
if (testOnly)
@@ -112,10 +109,10 @@ public final class cElementalDefinitionStackMap implements Comparable<cElemental
else {
final int diff = target.amount - stack.amount;
if (diff > 0) {
- tree.put(target.definition, new cElementalDefinitionStack(target.definition, diff));
+ map.put(target.definition, new cElementalDefinitionStack(target.definition, diff));
return true;
} else if (diff == 0) {
- tree.remove(stack.definition);
+ map.remove(stack.definition);
return true;
}
}
@@ -155,7 +152,7 @@ public final class cElementalDefinitionStackMap implements Comparable<cElemental
return removeAllAmounts(testOnly, stacks);
}
- public boolean removeAllAmounts(boolean testOnly, cElementalDefinitionStackMap container) {
+ public boolean removeAllAmounts(boolean testOnly, cElementalMutableDefinitionStackMap container) {
return removeAllAmounts(testOnly, container.values());
}
@@ -165,25 +162,25 @@ public final class cElementalDefinitionStackMap implements Comparable<cElemental
//Put replace
public cElementalDefinitionStack putReplace(cElementalDefinitionStack defStackUnsafe) {
- return tree.put(defStackUnsafe.definition, defStackUnsafe);
+ return map.put(defStackUnsafe.definition, defStackUnsafe);
}
public void putReplaceAll(cElementalDefinitionStack... defStacks) {
for (cElementalDefinitionStack defStack : defStacks)
- this.tree.put(defStack.definition, defStack);
+ this.map.put(defStack.definition, defStack);
}
private void putReplaceAll(Map<iElementalDefinition, cElementalDefinitionStack> inTreeUnsafe) {
- this.tree.putAll(inTreeUnsafe);
+ this.map.putAll(inTreeUnsafe);
}
- public void putReplaceAll(cElementalDefinitionStackMap inContainerUnsafe) {
- putReplaceAll(inContainerUnsafe.tree);
+ public void putReplaceAll(cElementalMutableDefinitionStackMap inContainerUnsafe) {
+ putReplaceAll(inContainerUnsafe.map);
}
//Put unify
public cElementalDefinitionStack putUnify(cElementalDefinitionStack def) {
- return tree.put(def.definition, def.unifyIntoNew(tree.get(def.definition)));
+ return map.put(def.definition, def.unifyIntoNew(map.get(def.definition)));
}
@Deprecated
@@ -207,19 +204,19 @@ public final class cElementalDefinitionStackMap implements Comparable<cElemental
putUnify(in);
}
- public void putUnifyAll(cElementalDefinitionStackMap containerUnsafe) {
- putUnifyAll(containerUnsafe.tree);
+ public void putUnifyAll(cElementalMutableDefinitionStackMap containerUnsafe) {
+ putUnifyAll(containerUnsafe.map);
}
//Getters
public cElementalDefinitionStack getDefinitionStack(iElementalDefinition def) {
- return tree.get(def);
+ return map.get(def);
}
public String[] getElementalInfo() {
- final String[] info = new String[tree.size() * 3];
+ final String[] info = new String[map.size() * 3];
int i = 0;
- for (cElementalDefinitionStack defStack : tree.values()) {
+ for (cElementalDefinitionStack defStack : map.values()) {
info[i] = EnumChatFormatting.BLUE + defStack.definition.getName();
info[i + 1] = EnumChatFormatting.AQUA + defStack.definition.getSymbol();
info[i + 2] = "Amount " + EnumChatFormatting.GREEN + defStack.amount;
@@ -229,28 +226,28 @@ public final class cElementalDefinitionStackMap implements Comparable<cElemental
}
public cElementalDefinitionStack[] values() {
- return tree.values().toArray(new cElementalDefinitionStack[0]);
+ return map.values().toArray(new cElementalDefinitionStack[0]);
}
public iElementalDefinition[] keys() {
- return tree.keySet().toArray(new iElementalDefinition[0]);
+ return map.keySet().toArray(new iElementalDefinition[0]);
}
//Tests
public boolean containsDefinition(iElementalDefinition def) {
- return tree.containsKey(def);
+ return map.containsKey(def);
}
public boolean containsDefinitionStack(cElementalDefinitionStack inst) {
- return tree.containsValue(inst);
+ return map.containsValue(inst);
}
public int size() {
- return tree.size();
+ return map.size();
}
public boolean hasStacks() {
- return tree.size() > 0;
+ return map.size() > 0;
}
//NBT
@@ -272,35 +269,35 @@ public final class cElementalDefinitionStackMap implements Comparable<cElemental
public NBTTagCompound toNBT() {
final NBTTagCompound nbt = new NBTTagCompound();
- nbt.setInteger("i", tree.size());
+ nbt.setInteger("i", map.size());
int i = 0;
- for (cElementalDefinitionStack defStack : tree.values())
+ for (cElementalDefinitionStack defStack : map.values())
nbt.setTag(Integer.toString(i++), defStack.toNBT());
return nbt;
}
- public static cElementalDefinitionStackMap fromNBT(NBTTagCompound nbt) throws tElementalException {
+ public static cElementalMutableDefinitionStackMap fromNBT(NBTTagCompound nbt) throws tElementalException {
final cElementalDefinitionStack[] defStacks = new cElementalDefinitionStack[nbt.getInteger("i")];
for (int i = 0; i < defStacks.length; i++) {
defStacks[i] = cElementalDefinitionStack.fromNBT(nbt.getCompoundTag(Integer.toString(i)));
if (defStacks[i].definition.equals(debug__))
throw new tElementalException("Something went Wrong");
}
- return new cElementalDefinitionStackMap(defStacks);
+ return new cElementalMutableDefinitionStackMap(defStacks);
}
//stackUp
@Deprecated
- public static cElementalDefinitionStackMap stackUpTree(iElementalDefinition... in) {
- final cElementalDefinitionStackMap inTree = new cElementalDefinitionStackMap();
+ public static cElementalMutableDefinitionStackMap stackUpTree(iElementalDefinition... in) {
+ final cElementalMutableDefinitionStackMap inTree = new cElementalMutableDefinitionStackMap();
for (iElementalDefinition def : in) {
inTree.putUnify(new cElementalDefinitionStack(def, 1));
}
return inTree;
}
- public static cElementalDefinitionStackMap stackUpTree(cElementalDefinitionStack... in) {
- final cElementalDefinitionStackMap inTree = new cElementalDefinitionStackMap();
+ public static cElementalMutableDefinitionStackMap stackUpTree(cElementalDefinitionStack... in) {
+ final cElementalMutableDefinitionStackMap inTree = new cElementalMutableDefinitionStackMap();
inTree.putUnifyAll(in);
return inTree;
}
diff --git a/src/main/java/com/github/technus/tectech/elementalMatter/classes/cElementalInstanceStack.java b/src/main/java/com/github/technus/tectech/elementalMatter/classes/cElementalInstanceStack.java
index 0a840a20d8..a2ac4948cf 100644
--- a/src/main/java/com/github/technus/tectech/elementalMatter/classes/cElementalInstanceStack.java
+++ b/src/main/java/com/github/technus/tectech/elementalMatter/classes/cElementalInstanceStack.java
@@ -10,7 +10,7 @@ import static com.github.technus.tectech.elementalMatter.definitions.cPrimitiveD
/**
* Created by danie_000 on 22.10.2016.
*/
-public final class cElementalInstanceStack implements iHasElementalDefinition {
+public class cElementalInstanceStack implements iHasElementalDefinition {
public final iElementalDefinition definition;
//energy - if positive then particle should try to decay
public int energy;
@@ -48,6 +48,26 @@ public final class cElementalInstanceStack implements iHasElementalDefinition {
this.amount = amount;
}
+ //Clone proxy
+ private cElementalInstanceStack(cElementalInstanceStack stack){
+ definition=stack.definition;
+ energy=stack.energy;
+ color=stack.color;
+ age=stack.age;
+ amount=stack.amount;
+ lifeTime=stack.lifeTime;
+ lifeTimeMult=stack.lifeTimeMult;
+ }
+
+ @Override
+ protected final Object clone() {
+ return Clone();
+ }
+
+ public final cElementalInstanceStack Clone() {
+ return new cElementalInstanceStack(this);
+ }
+
@Override
public int getAmount() {
return amount;
@@ -192,12 +212,6 @@ public final class cElementalInstanceStack implements iHasElementalDefinition {
}
}
- public cElementalInstanceStack getCopy() {
- cElementalInstanceStack cI = new cElementalInstanceStack(definition, amount, lifeTimeMult, age, energy);
- cI.setColor(color);
- return cI;
- }
-
@Override
public int compareTo(iHasElementalDefinition o) {//use for unification
return definition.compareTo(o.getDefinition());
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 c317554a32..196dcefaec 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
@@ -13,8 +13,8 @@ import static com.github.technus.tectech.elementalMatter.definitions.cPrimitiveD
/**
* Created by danie_000 on 22.01.2017.
*/
-public final class cElementalInstanceStackMap implements Comparable<cElementalInstanceStackMap> {
- private Map<iElementalDefinition, cElementalInstanceStack> tree = new TreeMap<>();
+public class cElementalInstanceStackMap implements Comparable<cElementalInstanceStackMap> {
+ private Map<iElementalDefinition, cElementalInstanceStack> map = new TreeMap<>();
//Constructors
public cElementalInstanceStackMap() {
@@ -24,15 +24,14 @@ public final class cElementalInstanceStackMap implements Comparable<cElementalIn
this(true, inSafe);
}
- public cElementalInstanceStackMap(boolean copy, cElementalInstanceStack... in) {
- if (in == null) return;
- if (copy) {
+ public cElementalInstanceStackMap(boolean clone, cElementalInstanceStack... in) {
+ if (clone) {
for (cElementalInstanceStack instance : in) {
- tree.put(instance.definition, instance.getCopy());
+ map.put(instance.definition, instance.Clone());
}
} else {
for (cElementalInstanceStack instance : in) {
- tree.put(instance.definition, instance);
+ map.put(instance.definition, instance);
}
}
}
@@ -41,33 +40,41 @@ public final class cElementalInstanceStackMap implements Comparable<cElementalIn
this(true, inSafe);
}
- private cElementalInstanceStackMap(boolean copy, Map<iElementalDefinition, cElementalInstanceStack> in) {
- if (in == null) return;
- if (copy) {
+ private cElementalInstanceStackMap(boolean clone, Map<iElementalDefinition, cElementalInstanceStack> in) {
+ if (clone) {
for (cElementalInstanceStack instance : in.values()) {
- tree.put(instance.definition, instance.getCopy());
+ map.put(instance.definition, instance.Clone());
}
} else {
- tree = in;
+ map = in;
}
}
public cElementalInstanceStackMap(cElementalInstanceStackMap inSafe) {
- this(true, inSafe.tree);
+ this(true, inSafe.map);
}
public cElementalInstanceStackMap(boolean copy, cElementalInstanceStackMap in) {
- this(copy, in.tree);
+ this(copy, in.map);
}
@Override
- protected Object clone() throws CloneNotSupportedException {
- return new cElementalInstanceStackMap(tree);
+ protected final Object clone() {
+ return Clone();
+ }
+
+ public final cElementalInstanceStackMap Clone(){
+ return new cElementalInstanceStackMap(map);
+ }
+
+ @Deprecated
+ public Map<iElementalDefinition,cElementalInstanceStack> getRawMap() {
+ return map;
}
@Override
public int compareTo(cElementalInstanceStackMap o) {
- if (tree.size() != o.tree.size()) return tree.size() - o.tree.size();
+ if (map.size() != o.map.size()) return map.size() - o.map.size();
cElementalInstanceStack[] ofThis = values(), ofThat = o.values();
for (int i = 0; i < ofThat.length; i++) {
int result = ofThis[i].compareTo(ofThat[i]);
@@ -78,32 +85,32 @@ public final class cElementalInstanceStackMap implements Comparable<cElementalIn
//Removers
public void clear() {
- tree.clear();
+ map.clear();
}
public cElementalInstanceStack remove(iElementalDefinition def) {
- return tree.remove(def);
+ return map.remove(def);
}
@Deprecated
public cElementalInstanceStack remove(iHasElementalDefinition has) {
- return tree.remove(has.getDefinition());
+ return map.remove(has.getDefinition());
}
public void removeAll(iElementalDefinition... definitions) {
for (iElementalDefinition def : definitions)
- tree.remove(def);
+ map.remove(def);
}
@Deprecated
private void removeAll(iHasElementalDefinition... hasElementals) {
for (iHasElementalDefinition has : hasElementals)
- tree.remove(has.getDefinition());
+ map.remove(has.getDefinition());
}
//Remove amounts
public boolean removeAmount(boolean testOnly, cElementalInstanceStack instance) {
- final cElementalInstanceStack target = tree.get(instance.definition);
+ final cElementalInstanceStack target = map.get(instance.definition);
if (target == null)
return false;
if (testOnly)
@@ -114,7 +121,7 @@ public final class cElementalInstanceStackMap implements Comparable<cElementalIn
target.amount = diff;
return true;
} else if (diff == 0) {
- tree.remove(instance.definition);
+ map.remove(instance.definition);
return true;
}
}
@@ -122,7 +129,7 @@ public final class cElementalInstanceStackMap implements Comparable<cElementalIn
}
public boolean removeAmount(boolean testOnly, cElementalDefinitionStack stack) {
- final cElementalInstanceStack target = tree.get(stack.definition);
+ final cElementalInstanceStack target = map.get(stack.definition);
if (target == null)
return false;
if (testOnly)
@@ -133,7 +140,7 @@ public final class cElementalInstanceStackMap implements Comparable<cElementalIn
target.amount = diff;
return true;
} else if (diff == 0) {
- tree.remove(stack.definition);
+ map.remove(stack.definition);
return true;
}
}
@@ -173,7 +180,7 @@ public final class cElementalInstanceStackMap implements Comparable<cElementalIn
return removeAllAmounts(testOnly, stacks);
}
- public boolean removeAllAmounts(boolean testOnly, cElementalDefinitionStackMap container) {
+ public boolean removeAllAmounts(boolean testOnly, cElementalMutableDefinitionStackMap container) {
return removeAllAmounts(testOnly, container.values());
}
@@ -185,11 +192,11 @@ public final class cElementalInstanceStackMap implements Comparable<cElementalIn
public float removeOverflow(int stacksCount, int stackCapacity) {
float massRemoved = 0;
- if (tree.size() > stacksCount) {
+ if (map.size() > stacksCount) {
iElementalDefinition[] keys = this.keys();
for (int i = stacksCount; i < keys.length; i++) {
- massRemoved += tree.get(keys[i]).getDefinitionStack().getMass();
- tree.remove(keys[i]);
+ massRemoved += map.get(keys[i]).getDefinitionStack().getMass();
+ map.remove(keys[i]);
}
}
@@ -203,25 +210,25 @@ public final class cElementalInstanceStackMap implements Comparable<cElementalIn
//Put replace
public cElementalInstanceStack putReplace(cElementalInstanceStack instanceUnsafe) {
- return tree.put(instanceUnsafe.definition, instanceUnsafe);
+ return map.put(instanceUnsafe.definition, instanceUnsafe);
}
public void putReplaceAll(cElementalInstanceStack... instances) {
for (cElementalInstanceStack instance : instances)
- this.tree.put(instance.definition, instance);
+ this.map.put(instance.definition, instance);
}
private void putReplaceAll(Map<iElementalDefinition, cElementalInstanceStack> inTreeUnsafe) {
- this.tree.putAll(inTreeUnsafe);
+ this.map.putAll(inTreeUnsafe);
}
public void putReplaceAll(cElementalInstanceStackMap inContainerUnsafe) {
- putReplaceAll(inContainerUnsafe.tree);
+ putReplaceAll(inContainerUnsafe.map);
}
//Put unify
public cElementalInstanceStack putUnify(cElementalInstanceStack instance) {
- return tree.put(instance.definition, instance.unifyIntoThis(tree.get(instance.definition)));
+ return map.put(instance.definition, instance.unifyIntoThis(map.get(instance.definition)));
}
public void putUnifyAll(cElementalInstanceStack... instances) {
@@ -235,18 +242,18 @@ public final class cElementalInstanceStackMap implements Comparable<cElementalIn
}
public void putUnifyAll(cElementalInstanceStackMap containerUnsafe) {
- putUnifyAll(containerUnsafe.tree);
+ putUnifyAll(containerUnsafe.map);
}
//Getters
public cElementalInstanceStack getInstance(iElementalDefinition def) {
- return tree.get(def);
+ return map.get(def);
}
public String[] getElementalInfo() {
- final String[] info = new String[tree.size() * 3];
+ final String[] info = new String[map.size() * 3];
int i = 0;
- for (cElementalInstanceStack instance : tree.values()) {
+ for (cElementalInstanceStack instance : map.values()) {
info[i] = EnumChatFormatting.BLUE + instance.definition.getName();
info[i + 1] = EnumChatFormatting.AQUA + instance.definition.getSymbol();
info[i + 2] = "Amount " + EnumChatFormatting.GREEN + instance.amount;
@@ -256,16 +263,16 @@ public final class cElementalInstanceStackMap implements Comparable<cElementalIn
}
public cElementalInstanceStack[] values() {
- return tree.values().toArray(new cElementalInstanceStack[0]);
+ return map.values().toArray(new cElementalInstanceStack[0]);
}
public iElementalDefinition[] keys() {
- return tree.keySet().toArray(new iElementalDefinition[0]);
+ return map.keySet().toArray(new iElementalDefinition[0]);
}
public float getMass() {
float mass = 0;
- for (cElementalInstanceStack stack : tree.values()) {
+ for (cElementalInstanceStack stack : map.values()) {
mass += stack.getMass();
}
return mass;
@@ -273,19 +280,19 @@ public final class cElementalInstanceStackMap implements Comparable<cElementalIn
//Tests
public boolean containsDefinition(iElementalDefinition def) {
- return tree.containsKey(def);
+ return map.containsKey(def);
}
public boolean containsInstance(cElementalInstanceStack inst) {
- return tree.containsValue(inst);
+ return map.containsValue(inst);
}
public int size() {
- return tree.size();
+ return map.size();
}
public boolean hasStacks() {
- return tree.size() > 0;
+ return map.size() > 0;
}
//Tick Content
@@ -295,7 +302,7 @@ public final class cElementalInstanceStackMap implements Comparable<cElementalIn
if (newThings == null) {
instance.nextColor();
} else {
- tree.remove(instance.definition);
+ map.remove(instance.definition);
for (cElementalInstanceStack newInstance : newThings.values())
putUnify(newInstance);
}
@@ -309,7 +316,7 @@ public final class cElementalInstanceStackMap implements Comparable<cElementalIn
if (newThings == null) {
instance.nextColor();
} else {
- tree.remove(instance.definition);
+ map.remove(instance.definition);
for (cElementalInstanceStack newInstance : newThings.values())
putUnify(newInstance);
}
@@ -336,9 +343,9 @@ public final class cElementalInstanceStackMap implements Comparable<cElementalIn
public NBTTagCompound toNBT() {
final NBTTagCompound nbt = new NBTTagCompound();
- nbt.setInteger("i", tree.size());
+ nbt.setInteger("i", map.size());
int i = 0;
- for (cElementalInstanceStack instance : tree.values())
+ for (cElementalInstanceStack instance : map.values())
nbt.setTag(Integer.toString(i++), instance.toNBT());
return nbt;
}
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
new file mode 100644
index 0000000000..eb105870d8
--- /dev/null
+++ b/src/main/java/com/github/technus/tectech/elementalMatter/classes/cElementalMutableDefinitionStackMap.java
@@ -0,0 +1,326 @@
+package com.github.technus.tectech.elementalMatter.classes;
+
+import com.github.technus.tectech.elementalMatter.interfaces.iElementalDefinition;
+import com.github.technus.tectech.elementalMatter.interfaces.iHasElementalDefinition;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.util.EnumChatFormatting;
+
+import java.util.Map;
+import java.util.TreeMap;
+
+import static com.github.technus.tectech.elementalMatter.definitions.cPrimitiveDefinition.debug__;
+
+/**
+ * Created by danie_000 on 22.01.2017.
+ */
+public class cElementalMutableDefinitionStackMap implements Comparable<cElementalMutableDefinitionStackMap> {//TODO MAKE MUTABLE AF
+ protected Map<iElementalDefinition, cElementalDefinitionStack> map;
+
+ //Constructors + Clone, all make a whole new OBJ.
+ public cElementalMutableDefinitionStackMap() {map=new TreeMap<>();}
+
+ @Deprecated
+ public cElementalMutableDefinitionStackMap(iElementalDefinition... in) {
+ map=new TreeMap<>();
+ for (iElementalDefinition definition : in)
+ map.put(definition, new cElementalDefinitionStack(definition, 1));
+ }
+
+ public cElementalMutableDefinitionStackMap(cElementalDefinitionStack... in) {
+ map=new TreeMap<>();
+ for (cElementalDefinitionStack stack : in)
+ map.put(stack.definition, stack);
+ }
+
+ public cElementalMutableDefinitionStackMap(Map<iElementalDefinition, cElementalDefinitionStack> in) {
+ this(true,in);
+ }
+
+ public cElementalMutableDefinitionStackMap(boolean clone, Map<iElementalDefinition, cElementalDefinitionStack> in) {
+ if (clone) {
+ map = new TreeMap<>();
+ for (cElementalDefinitionStack stack : in.values())
+ map.put(stack.definition, stack);
+ } else {
+ map = in;
+ }
+ }
+
+ @Override
+ protected Object clone() {//Equal to making new obj...
+ return Clone();
+ }
+
+ public cElementalMutableDefinitionStackMap Clone(){
+ return new cElementalMutableDefinitionStackMap(map);
+ }
+
+ public cElementalDefinitionStackMap immutable() {
+ return new cElementalDefinitionStackMap(this);
+ }
+
+ public cElementalMutableDefinitionStackMap mutable() {return this;}
+
+ @Deprecated
+ public Map<iElementalDefinition,cElementalDefinitionStack> getRawMap() {
+ return map;
+ }
+
+ @Override
+ public int compareTo(cElementalMutableDefinitionStackMap o) {
+ if (map.size() != o.map.size()) return map.size() - o.map.size();
+ cElementalDefinitionStack[] ofThis = values(), ofThat = o.values();
+ for (int i = 0; i < ofThat.length; i++) {
+ int result = ofThis[i].compareTo(ofThat[i]);
+ if (result != 0) return result;
+ }
+ return 0;
+ }
+
+ //Removers
+ public void clear() {
+ map.clear();
+ }
+
+ public cElementalDefinitionStack remove(iElementalDefinition def) {
+ return map.remove(def);
+ }
+
+ @Deprecated
+ public cElementalDefinitionStack remove(iHasElementalDefinition has) {
+ return map.remove(has.getDefinition());
+ }
+
+ public void removeAll(iElementalDefinition... definitions) {
+ for (iElementalDefinition def : definitions)
+ map.remove(def);
+ }
+
+ @Deprecated
+ private void removeAll(iHasElementalDefinition... hasElementals) {
+ for (iHasElementalDefinition has : hasElementals)
+ map.remove(has.getDefinition());
+ }
+
+ //Remove amounts
+ public boolean removeAmount(boolean testOnly, cElementalInstanceStack instance) {
+ final cElementalDefinitionStack target = map.get(instance.definition);
+ if (target == null)
+ return false;
+ if (testOnly)
+ return target.amount >= instance.amount;
+ else {
+ final int diff = target.amount - instance.amount;
+ if (diff > 0) {
+ map.put(target.definition, new cElementalDefinitionStack(target.definition, diff));
+ return true;
+ } else if (diff == 0) {
+ map.remove(instance.definition);
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public boolean removeAmount(boolean testOnly, cElementalDefinitionStack stack) {
+ final cElementalDefinitionStack target = map.get(stack.definition);
+ if (target == null)
+ return false;
+ if (testOnly)
+ return target.amount >= stack.amount;
+ else {
+ final int diff = target.amount - stack.amount;
+ if (diff > 0) {
+ map.put(target.definition, new cElementalDefinitionStack(target.definition, diff));
+ return true;
+ } else if (diff == 0) {
+ map.remove(stack.definition);
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @Deprecated
+ public boolean removeAmount(boolean testOnly, iElementalDefinition def) {
+ return removeAmount(testOnly, new cElementalDefinitionStack(def, 1));
+ }
+
+ public boolean removeAllAmounts(boolean testOnly, cElementalInstanceStack... instances) {
+ boolean test = true;
+ for (cElementalInstanceStack stack : instances)
+ test &= removeAmount(true, stack);
+ if (testOnly || !test) return test;
+ for (cElementalInstanceStack stack : instances)
+ removeAmount(false, stack);
+ return true;
+ }
+
+ public boolean removeAllAmounts(boolean testOnly, cElementalDefinitionStack... stacks) {
+ boolean test = true;
+ for (cElementalDefinitionStack stack : stacks)
+ test &= removeAmount(true, stack);
+ if (testOnly || !test) return test;
+ for (cElementalDefinitionStack stack : stacks)
+ removeAmount(false, stack);
+ return true;
+ }
+
+ @Deprecated
+ public boolean removeAllAmounts(boolean testOnly, iElementalDefinition... definitions) {
+ final cElementalDefinitionStack[] stacks = new cElementalDefinitionStack[definitions.length];
+ for (int i = 0; i < stacks.length; i++)
+ stacks[i] = new cElementalDefinitionStack(definitions[i], 1);
+ return removeAllAmounts(testOnly, stacks);
+ }
+
+ public boolean removeAllAmounts(boolean testOnly, cElementalMutableDefinitionStackMap container) {
+ return removeAllAmounts(testOnly, container.values());
+ }
+
+ public boolean removeAllAmounts(boolean testOnly, cElementalInstanceStackMap container) {
+ return removeAllAmounts(testOnly, container.values());
+ }
+
+ //Put replace
+ public cElementalDefinitionStack putReplace(cElementalDefinitionStack defStackUnsafe) {
+ return map.put(defStackUnsafe.definition, defStackUnsafe);
+ }
+
+ public void putReplaceAll(cElementalDefinitionStack... defStacks) {
+ for (cElementalDefinitionStack defStack : defStacks)
+ this.map.put(defStack.definition, defStack);
+ }
+
+ private void putReplaceAll(Map<iElementalDefinition, cElementalDefinitionStack> inTreeUnsafe) {
+ this.map.putAll(inTreeUnsafe);
+ }
+
+ public void putReplaceAll(cElementalMutableDefinitionStackMap inContainerUnsafe) {
+ putReplaceAll(inContainerUnsafe.map);
+ }
+
+ //Put unify
+ public cElementalDefinitionStack putUnify(cElementalDefinitionStack def) {
+ return map.put(def.definition, def.unifyIntoNew(map.get(def.definition)));
+ }
+
+ @Deprecated
+ public cElementalDefinitionStack putUnify(iElementalDefinition def) {
+ return putUnify(new cElementalDefinitionStack(def, 1));
+ }
+
+ public void putUnifyAll(cElementalDefinitionStack... defs) {
+ for (cElementalDefinitionStack def : defs)
+ putUnify(def);
+ }
+
+ @Deprecated
+ public void putUnifyAll(iElementalDefinition... defs) {
+ for (iElementalDefinition def : defs)
+ putUnify(def);
+ }
+
+ private void putUnifyAll(Map<iElementalDefinition, cElementalDefinitionStack> inTreeUnsafe) {
+ for (cElementalDefinitionStack in : inTreeUnsafe.values())
+ putUnify(in);
+ }
+
+ public void putUnifyAll(cElementalMutableDefinitionStackMap containerUnsafe) {
+ putUnifyAll(containerUnsafe.map);
+ }
+
+ //Getters
+ public cElementalDefinitionStack getDefinitionStack(iElementalDefinition def) {
+ return map.get(def);
+ }
+
+ public String[] getElementalInfo() {
+ final String[] info = new String[map.size() * 3];
+ int i = 0;
+ for (cElementalDefinitionStack defStack : map.values()) {
+ info[i] = EnumChatFormatting.BLUE + defStack.definition.getName();
+ info[i + 1] = EnumChatFormatting.AQUA + defStack.definition.getSymbol();
+ info[i + 2] = "Amount " + EnumChatFormatting.GREEN + defStack.amount;
+ i += 3;
+ }
+ return info;
+ }
+
+ public cElementalDefinitionStack[] values() {
+ return map.values().toArray(new cElementalDefinitionStack[0]);
+ }
+
+ public iElementalDefinition[] keys() {
+ return map.keySet().toArray(new iElementalDefinition[0]);
+ }
+
+ //Tests
+ public boolean containsDefinition(iElementalDefinition def) {
+ return map.containsKey(def);
+ }
+
+ public boolean containsDefinitionStack(cElementalDefinitionStack inst) {
+ return map.containsValue(inst);
+ }
+
+ public int size() {
+ return map.size();
+ }
+
+ public boolean hasStacks() {
+ return map.size() > 0;
+ }
+
+ //NBT
+ public NBTTagCompound getInfoNBT() {
+ final NBTTagCompound nbt = new NBTTagCompound();
+ final String[] info = getElementalInfo();
+ nbt.setInteger("i", info.length);
+ for (int i = 0; i < info.length; i++)
+ nbt.setString(Integer.toString(i), info[i]);
+ return nbt;
+ }
+
+ public static String[] infoFromNBT(NBTTagCompound nbt) {
+ final String[] strings = new String[nbt.getInteger("i")];
+ for (int i = 0; i < strings.length; i++)
+ strings[i] = nbt.getString(Integer.toString(i));
+ return strings;
+ }
+
+ public NBTTagCompound toNBT() {
+ final NBTTagCompound nbt = new NBTTagCompound();
+ nbt.setInteger("i", map.size());
+ int i = 0;
+ for (cElementalDefinitionStack defStack : map.values())
+ nbt.setTag(Integer.toString(i++), defStack.toNBT());
+ return nbt;
+ }
+
+ public static cElementalMutableDefinitionStackMap fromNBT(NBTTagCompound nbt) throws tElementalException {
+ final cElementalDefinitionStack[] defStacks = new cElementalDefinitionStack[nbt.getInteger("i")];
+ for (int i = 0; i < defStacks.length; i++) {
+ defStacks[i] = cElementalDefinitionStack.fromNBT(nbt.getCompoundTag(Integer.toString(i)));
+ if (defStacks[i].definition.equals(debug__))
+ throw new tElementalException("Something went Wrong");
+ }
+ return new cElementalMutableDefinitionStackMap(defStacks);
+ }
+
+ //stackUp
+ @Deprecated
+ public static cElementalMutableDefinitionStackMap stackUpTree(iElementalDefinition... in) {
+ final cElementalMutableDefinitionStackMap inTree = new cElementalMutableDefinitionStackMap();
+ for (iElementalDefinition def : in) {
+ inTree.putUnify(new cElementalDefinitionStack(def, 1));
+ }
+ return inTree;
+ }
+
+ public static cElementalMutableDefinitionStackMap stackUpTree(cElementalDefinitionStack... in) {
+ final cElementalMutableDefinitionStackMap inTree = new cElementalMutableDefinitionStackMap();
+ inTree.putUnifyAll(in);
+ return inTree;
+ }
+}
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 2e489835e2..8aaceee368 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
@@ -34,7 +34,7 @@ public abstract class cElementalPrimitive extends cElementalDefinition {
public final byte color;
//-1/-2/-3 anti matter generations, +1/+2/+3 matter generations, 0 self anti
public final byte type;
- private cElementalPrimitive anti;
+ private cElementalPrimitive anti;//IMMUTABLE
private cElementalDecay[] elementalDecays;
private byte naturalDecayInstant;
private byte energeticDecayInstant;
@@ -120,7 +120,7 @@ public abstract class cElementalPrimitive extends cElementalDefinition {
}
@Override
- public final cElementalDefinitionStackMap getSubParticles() {
+ public final cElementalMutableDefinitionStackMap getSubParticles() {
return null;
}
diff --git a/src/main/java/com/github/technus/tectech/elementalMatter/classes/rElementalRecipe.java b/src/main/java/com/github/technus/tectech/elementalMatter/classes/rElementalRecipe.java
index 5e87924be7..c8222ef583 100644
--- a/src/main/java/com/github/technus/tectech/elementalMatter/classes/rElementalRecipe.java
+++ b/src/main/java/com/github/technus/tectech/elementalMatter/classes/rElementalRecipe.java
@@ -7,17 +7,17 @@ import net.minecraftforge.fluids.FluidStack;
* Created by Tec on 02.03.2017.
*/
public class rElementalRecipe implements Comparable<rElementalRecipe> {
- public final cElementalDefinitionStackMap inEM;
- public final cElementalDefinitionStackMap outEM;
+ public final cElementalMutableDefinitionStackMap inEM;
+ public final cElementalMutableDefinitionStackMap outEM;
public final ItemStack[] outItems;
public final FluidStack[] outFluids;
public Object[] extension = null;
public final short comparableID;
public rElementalRecipe(
- cElementalDefinitionStackMap inEMnotNull,
+ cElementalMutableDefinitionStackMap inEMnotNull,
short comparableID,
- cElementalDefinitionStackMap outEM,
+ cElementalMutableDefinitionStackMap outEM,
ItemStack[] outItems,
FluidStack[] outFluids) {
this.inEM = inEMnotNull;
diff --git a/src/main/java/com/github/technus/tectech/elementalMatter/classes/rElementalRecipeTree.java b/src/main/java/com/github/technus/tectech/elementalMatter/classes/rElementalRecipeTree.java
index c0a1dc4555..0834d2e49e 100644
--- a/src/main/java/com/github/technus/tectech/elementalMatter/classes/rElementalRecipeTree.java
+++ b/src/main/java/com/github/technus/tectech/elementalMatter/classes/rElementalRecipeTree.java
@@ -8,7 +8,7 @@ import java.util.TreeMap;
*/
public class rElementalRecipeTree {
//Multimap for multiple recipes from the same thing - you know parameters might differ the output
- private TreeMap<cElementalDefinitionStackMap, Map<Short,rElementalRecipe> > recipes = new TreeMap<>();
+ private TreeMap<cElementalMutableDefinitionStackMap, Map<Short,rElementalRecipe> > recipes = new TreeMap<>();
public rElementalRecipeTree() {}
@@ -26,33 +26,33 @@ public class rElementalRecipeTree {
put(recipe);
}
- public Map<Short,rElementalRecipe> findExact(cElementalDefinitionStackMap in) {
+ public Map<Short,rElementalRecipe> findExact(cElementalMutableDefinitionStackMap in) {
return recipes.get(in);
}
- public Map<Short,rElementalRecipe> findTopMatch(cElementalDefinitionStackMap in) {
- for (cElementalDefinitionStackMap requirement : recipes.descendingKeySet())
+ public Map<Short,rElementalRecipe> findTopMatch(cElementalMutableDefinitionStackMap in) {
+ for (cElementalMutableDefinitionStackMap requirement : recipes.descendingKeySet())
if (in.removeAllAmounts(true, requirement))
return recipes.get(requirement);
return null;
}
public Map<Short,rElementalRecipe> findTopMatch(cElementalInstanceStackMap in, boolean testOnly) {
- for (cElementalDefinitionStackMap requirement : recipes.descendingKeySet())
+ for (cElementalMutableDefinitionStackMap requirement : recipes.descendingKeySet())
if (in.removeAllAmounts(testOnly, requirement))
return recipes.get(requirement);
return null;
}
- public Map<Short,rElementalRecipe> findBottomMatch(cElementalDefinitionStackMap in) {
- for (cElementalDefinitionStackMap requirement : recipes.keySet())
+ public Map<Short,rElementalRecipe> findBottomMatch(cElementalMutableDefinitionStackMap in) {
+ for (cElementalMutableDefinitionStackMap requirement : recipes.keySet())
if (in.removeAllAmounts(true, requirement))
return recipes.get(requirement);
return null;
}
public Map<Short,rElementalRecipe> findBottomMatch(cElementalInstanceStackMap in, boolean testOnly) {
- for (cElementalDefinitionStackMap requirement : recipes.keySet())
+ for (cElementalMutableDefinitionStackMap requirement : recipes.keySet())
if (in.removeAllAmounts(testOnly, requirement))
return recipes.get(requirement);
return null;
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 5b392dc820..d369115568 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
@@ -11,7 +11,7 @@ import net.minecraftforge.fluids.FluidStack;
import java.util.*;
-import static com.github.technus.tectech.elementalMatter.classes.cElementalDefinitionStackMap.stackUpTree;
+import static com.github.technus.tectech.elementalMatter.classes.cElementalMutableDefinitionStackMap.stackUpTree;
import static com.github.technus.tectech.elementalMatter.definitions.eBosonDefinition.boson_Y__;
import static com.github.technus.tectech.elementalMatter.definitions.eBosonDefinition.deadEnd;
@@ -47,7 +47,8 @@ public final class dAtomDefinition extends cElementalDefinition {
//private final ItemStack itemThing;
public final int isotope;
public final int element;
- private final cElementalDefinitionStackMap elementalStacks;
+
+ private final cElementalMutableDefinitionStackMap elementalStacks;//CLONED I/O
//stable is rawLifeTime>=10^9
@@ -56,29 +57,29 @@ public final class dAtomDefinition extends cElementalDefinition {
@Deprecated
public dAtomDefinition(iElementalDefinition... things) throws tElementalException {
- this(true, stackUpTree(things));
+ this(false, true, stackUpTree(things));
}
@Deprecated
private dAtomDefinition(boolean check, iElementalDefinition... things) throws tElementalException {
- this(check, stackUpTree(things));
+ this(false, check, stackUpTree(things));
}
public dAtomDefinition(cElementalDefinitionStack... things) throws tElementalException {
- this(true, stackUpTree(things));
+ this(false, true, stackUpTree(things));
}
private dAtomDefinition(boolean check, cElementalDefinitionStack... things) throws tElementalException {
- this(check, stackUpTree(things));
+ this(false, check, stackUpTree(things));
}
- public dAtomDefinition(cElementalDefinitionStackMap things) throws tElementalException {
- this(true, things);
+ public dAtomDefinition(cElementalMutableDefinitionStackMap things) throws tElementalException {
+ this(true, true, things);
}
- private dAtomDefinition(boolean check, cElementalDefinitionStackMap things) throws tElementalException {
+ private dAtomDefinition(boolean clone, boolean check, cElementalMutableDefinitionStackMap things) throws tElementalException {
if (check && !canTheyBeTogether(things)) throw new tElementalException("Atom Definition error");
- this.elementalStacks = things;
+ this.elementalStacks = clone?things.Clone():things;
float mass = 0;
int cLeptons = 0;
@@ -190,7 +191,7 @@ public final class dAtomDefinition extends cElementalDefinition {
return rawLifeTime;
}
- private static boolean canTheyBeTogether(cElementalDefinitionStackMap stacks) {
+ private static boolean canTheyBeTogether(cElementalMutableDefinitionStackMap stacks) {
boolean nuclei = false;
for (cElementalDefinitionStack stack : stacks.values())
if (stack.definition instanceof dHadronDefinition) {
@@ -273,8 +274,8 @@ public final class dAtomDefinition extends cElementalDefinition {
}
@Override
- public cElementalDefinitionStackMap getSubParticles() {
- return elementalStacks;
+ public cElementalMutableDefinitionStackMap getSubParticles() {
+ return elementalStacks.Clone();
}
@Override
@@ -300,7 +301,7 @@ public final class dAtomDefinition extends cElementalDefinition {
}
private cElementalDecay[] Emmision(cElementalDefinitionStack emit) {
- final cElementalDefinitionStackMap tree = new cElementalDefinitionStackMap(elementalStacks.values());
+ final cElementalMutableDefinitionStackMap tree = new cElementalMutableDefinitionStackMap(elementalStacks.values());
if (tree.removeAmount(false, emit)) {
try {
return new cElementalDecay[]{
@@ -316,7 +317,7 @@ public final class dAtomDefinition extends cElementalDefinition {
}
private cElementalDecay[] alphaDecay() {
- final cElementalDefinitionStackMap tree = new cElementalDefinitionStackMap(elementalStacks.values());
+ final cElementalMutableDefinitionStackMap tree = new cElementalMutableDefinitionStackMap(elementalStacks.values());
if (tree.removeAllAmounts(false, dHadronDefinition.hadron_n2, dHadronDefinition.hadron_p2)) {
try {
return new cElementalDecay[]{
@@ -332,7 +333,7 @@ public final class dAtomDefinition extends cElementalDefinition {
}
private cElementalDecay[] MbetaDecay() {
- final cElementalDefinitionStackMap tree = new cElementalDefinitionStackMap(elementalStacks.values());
+ final cElementalMutableDefinitionStackMap tree = new cElementalMutableDefinitionStackMap(elementalStacks.values());
if (tree.removeAmount(false, dHadronDefinition.hadron_n1)) {
try {
tree.putUnify(dHadronDefinition.hadron_p1);
@@ -349,7 +350,7 @@ public final class dAtomDefinition extends cElementalDefinition {
}
private cElementalDecay[] PbetaDecay() {
- final cElementalDefinitionStackMap tree = new cElementalDefinitionStackMap(elementalStacks.values());
+ final cElementalMutableDefinitionStackMap tree = new cElementalMutableDefinitionStackMap(elementalStacks.values());
if (tree.removeAmount(false, dHadronDefinition.hadron_p1)) {
try {
tree.putUnify(dHadronDefinition.hadron_n1);
@@ -411,10 +412,10 @@ public final class dAtomDefinition extends cElementalDefinition {
@Override
public iElementalDefinition getAnti() {
- cElementalDefinitionStack[] elementalStacks = this.elementalStacks.values();
- cElementalDefinitionStack[] antiElements = new cElementalDefinitionStack[elementalStacks.length];
+ cElementalDefinitionStack[] antiStacks = this.elementalStacks.values();
+ cElementalDefinitionStack[] antiElements = new cElementalDefinitionStack[antiStacks.length];
for (int i = 0; i < antiElements.length; i++) {
- antiElements[i] = new cElementalDefinitionStack(elementalStacks[i].definition.getAnti(), elementalStacks[i].amount);
+ antiElements[i] = new cElementalDefinitionStack(antiStacks[i].definition.getAnti(), antiStacks[i].amount);
}
try {
return new dAtomDefinition(false, antiElements);
diff --git a/src/main/java/com/github/technus/tectech/elementalMatter/definitions/dComplexAspectDefinition.java b/src/main/java/com/github/technus/tectech/elementalMatter/definitions/dComplexAspectDefinition.java
index 17cec96169..b3c6c910d8 100644
--- a/src/main/java/com/github/technus/tectech/elementalMatter/definitions/dComplexAspectDefinition.java
+++ b/src/main/java/com/github/technus/tectech/elementalMatter/definitions/dComplexAspectDefinition.java
@@ -17,10 +17,10 @@ public class dComplexAspectDefinition extends cElementalDefinition {
private static final byte nbtType = (byte) 'c';
- private final cElementalDefinitionStackMap aspectStacks;
+ private final cElementalMutableDefinitionStackMap aspectStacks;
public dComplexAspectDefinition(cElementalDefinitionStack[] tree) throws tElementalException{//todo constructors
- aspectStacks=new cElementalDefinitionStackMap();
+ aspectStacks=new cElementalMutableDefinitionStackMap();
}
@Override
@@ -81,7 +81,7 @@ public class dComplexAspectDefinition extends cElementalDefinition {
}
@Override
- public cElementalDefinitionStackMap getSubParticles() {
+ public cElementalMutableDefinitionStackMap getSubParticles() {
return aspectStacks;
}
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 ed91c43d32..dadd3e7c79 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
@@ -11,7 +11,7 @@ import java.util.ArrayList;
import java.util.Map;
import java.util.TreeMap;
-import static com.github.technus.tectech.elementalMatter.classes.cElementalDefinitionStackMap.stackUpTree;
+import static com.github.technus.tectech.elementalMatter.classes.cElementalMutableDefinitionStackMap.stackUpTree;
import static com.github.technus.tectech.elementalMatter.definitions.eBosonDefinition.boson_Y__;
/**
@@ -37,7 +37,7 @@ public final class dHadronDefinition extends cElementalDefinition {
public final byte type;
//private final FluidStack fluidThing;
//private final ItemStack itemThing;
- private final cElementalDefinitionStackMap quarkStacks;
+ private final cElementalMutableDefinitionStackMap quarkStacks;
@Deprecated
public dHadronDefinition(eQuarkDefinition... quarks) throws tElementalException {
@@ -57,11 +57,11 @@ public final class dHadronDefinition extends cElementalDefinition {
this(check, stackUpTree(quarks));
}
- public dHadronDefinition(cElementalDefinitionStackMap quarks) throws tElementalException {
+ public dHadronDefinition(cElementalMutableDefinitionStackMap quarks) throws tElementalException {
this(true, quarks);
}
- private dHadronDefinition(boolean check, cElementalDefinitionStackMap quarks) throws tElementalException {
+ private dHadronDefinition(boolean check, cElementalMutableDefinitionStackMap quarks) throws tElementalException {
if (check && !canTheyBeTogether(quarks)) throw new tElementalException("Hadron Definition error");
this.quarkStacks = quarks;
@@ -97,7 +97,7 @@ public final class dHadronDefinition extends cElementalDefinition {
}
//public but u can just try{}catch(){} the constructor it still calls this method
- private static boolean canTheyBeTogether(cElementalDefinitionStackMap stacks) {
+ private static boolean canTheyBeTogether(cElementalMutableDefinitionStackMap stacks) {
int amount = 0;
for (cElementalDefinitionStack quarks : stacks.values()) {
if (!(quarks.definition instanceof eQuarkDefinition)) return false;
@@ -155,7 +155,7 @@ public final class dHadronDefinition extends cElementalDefinition {
}
@Override
- public cElementalDefinitionStackMap getSubParticles() {
+ public cElementalMutableDefinitionStackMap getSubParticles() {
return quarkStacks;
}
@@ -250,7 +250,7 @@ public final class dHadronDefinition extends cElementalDefinition {
@Override
public iElementalDefinition getAnti() {
- cElementalDefinitionStackMap anti = new cElementalDefinitionStackMap();
+ cElementalMutableDefinitionStackMap anti = new cElementalMutableDefinitionStackMap();
for (cElementalDefinitionStack stack : quarkStacks.values())
anti.putReplace(new cElementalDefinitionStack(stack.definition.getAnti(), stack.amount));
try {
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 90154a3c5a..cff7bd9697 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
@@ -1,7 +1,7 @@
package com.github.technus.tectech.elementalMatter.interfaces;
import com.github.technus.tectech.elementalMatter.classes.cElementalDecay;
-import com.github.technus.tectech.elementalMatter.classes.cElementalDefinitionStackMap;
+import com.github.technus.tectech.elementalMatter.classes.cElementalMutableDefinitionStackMap;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.fluids.FluidStack;
@@ -37,7 +37,7 @@ public interface iElementalDefinition extends Comparable<iElementalDefinition> {
float getRawLifeTime();//defined in static fields or generated
- cElementalDefinitionStackMap getSubParticles();//contents... null if none
+ cElementalMutableDefinitionStackMap getSubParticles();//contents... null if none
ItemStack materializesIntoItem();
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 fbde43068e..579b3c8f3a 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
@@ -11,19 +11,14 @@ 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.thing.block.QuantumGlassBlock;
-import com.github.technus.tectech.thing.casing.GT_Container_CasingsTT;
import gregtech.api.GregTech_API;
import gregtech.api.enums.Materials;
import gregtech.api.enums.OrePrefixes;
-import gregtech.api.enums.Textures;
-import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
-import gregtech.api.objects.GT_RenderedTexture;
import net.minecraft.block.Block;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumChatFormatting;
-import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.oredict.OreDictionary;