aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com
diff options
context:
space:
mode:
authorTec <daniel112092@gmail.com>2020-07-18 13:01:44 +0200
committerTec <daniel112092@gmail.com>2020-07-18 13:01:44 +0200
commitd44e0b0c61384ca1a63f0dc322715d8a4e57678a (patch)
tree4566856c99d9368056c82255b928062d52a9e937 /src/main/java/com
parent7e55f6a68a7b7b307034c994f2fac95a83f3753b (diff)
downloadGT5-Unofficial-d44e0b0c61384ca1a63f0dc322715d8a4e57678a.tar.gz
GT5-Unofficial-d44e0b0c61384ca1a63f0dc322715d8a4e57678a.tar.bz2
GT5-Unofficial-d44e0b0c61384ca1a63f0dc322715d8a4e57678a.zip
Rework API
Diffstat (limited to 'src/main/java/com')
-rw-r--r--src/main/java/com/github/technus/tectech/compatibility/thaumcraft/elementalMatter/definitions/dComplexAspectDefinition.java11
-rw-r--r--src/main/java/com/github/technus/tectech/compatibility/thaumcraft/elementalMatter/definitions/ePrimalAspectDefinition.java16
-rw-r--r--src/main/java/com/github/technus/tectech/mechanics/elementalMatter/core/cElementalDecay.java27
-rw-r--r--src/main/java/com/github/technus/tectech/mechanics/elementalMatter/core/cElementalDefinitionStackMap.java2
-rw-r--r--src/main/java/com/github/technus/tectech/mechanics/elementalMatter/core/cElementalInstanceStackMap.java30
-rw-r--r--src/main/java/com/github/technus/tectech/mechanics/elementalMatter/core/cElementalMutableDefinitionStackMap.java5
-rw-r--r--src/main/java/com/github/technus/tectech/mechanics/elementalMatter/core/cElementalStackMap.java1
-rw-r--r--src/main/java/com/github/technus/tectech/mechanics/elementalMatter/core/commands/GiveEM.java4
-rw-r--r--src/main/java/com/github/technus/tectech/mechanics/elementalMatter/core/stacks/cElementalDefinitionStack.java23
-rw-r--r--src/main/java/com/github/technus/tectech/mechanics/elementalMatter/core/stacks/cElementalInstanceStack.java226
-rw-r--r--src/main/java/com/github/technus/tectech/mechanics/elementalMatter/core/stacks/iHasElementalDefinition.java6
-rw-r--r--src/main/java/com/github/technus/tectech/mechanics/elementalMatter/core/templates/cElementalDefinition.java7
-rw-r--r--src/main/java/com/github/technus/tectech/mechanics/elementalMatter/core/templates/cElementalPrimitive.java16
-rw-r--r--src/main/java/com/github/technus/tectech/mechanics/elementalMatter/core/templates/iElementalDefinition.java18
-rw-r--r--src/main/java/com/github/technus/tectech/mechanics/elementalMatter/definitions/complex/dAtomDefinition.java151
-rw-r--r--src/main/java/com/github/technus/tectech/mechanics/elementalMatter/definitions/complex/dHadronDefinition.java68
-rw-r--r--src/main/java/com/github/technus/tectech/mechanics/elementalMatter/definitions/complex/iaeaNuclide.java75
-rw-r--r--src/main/java/com/github/technus/tectech/mechanics/elementalMatter/definitions/primitive/cPrimitiveDefinition.java12
-rw-r--r--src/main/java/com/github/technus/tectech/mechanics/elementalMatter/definitions/primitive/eBosonDefinition.java14
-rw-r--r--src/main/java/com/github/technus/tectech/mechanics/elementalMatter/definitions/primitive/eLeptonDefinition.java24
-rw-r--r--src/main/java/com/github/technus/tectech/mechanics/elementalMatter/definitions/primitive/eNeutrinoDefinition.java28
-rw-r--r--src/main/java/com/github/technus/tectech/mechanics/elementalMatter/definitions/primitive/eQuarkDefinition.java78
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_collider.java76
-rw-r--r--src/main/java/com/github/technus/tectech/util/DoubleCount.java113
24 files changed, 611 insertions, 420 deletions
diff --git a/src/main/java/com/github/technus/tectech/compatibility/thaumcraft/elementalMatter/definitions/dComplexAspectDefinition.java b/src/main/java/com/github/technus/tectech/compatibility/thaumcraft/elementalMatter/definitions/dComplexAspectDefinition.java
index 070a05d7e9..ddef29b214 100644
--- a/src/main/java/com/github/technus/tectech/compatibility/thaumcraft/elementalMatter/definitions/dComplexAspectDefinition.java
+++ b/src/main/java/com/github/technus/tectech/compatibility/thaumcraft/elementalMatter/definitions/dComplexAspectDefinition.java
@@ -26,7 +26,7 @@ import static net.minecraft.util.StatCollector.translateToLocal;
*/
public final class dComplexAspectDefinition extends cElementalDefinition implements iElementalAspect {
private final int hash;
- public final float mass;
+ public final double mass;
private static final byte nbtType = (byte) 'c';
@@ -74,6 +74,9 @@ public final class dComplexAspectDefinition extends cElementalDefinition impleme
if (!(aspects.definition instanceof dComplexAspectDefinition) && !(aspects.definition instanceof ePrimalAspectDefinition)) {
return false;
}
+ if((int)aspects.amount!=aspects.amount){
+ throw new ArithmeticException("Amount cannot be safely converted to int!");
+ }
amount += aspects.amount;
}
return amount == 2;
@@ -160,7 +163,7 @@ public final class dComplexAspectDefinition extends cElementalDefinition impleme
}
@Override
- public float getRawTimeSpan(long currentEnergy) {
+ public double getRawTimeSpan(long currentEnergy) {
return -1;
}
@@ -195,7 +198,7 @@ public final class dComplexAspectDefinition extends cElementalDefinition impleme
}
@Override
- public float getEnergyDiffBetweenStates(long currentEnergyLevel, long newEnergyLevel) {
+ public double getEnergyDiffBetweenStates(long currentEnergyLevel, long newEnergyLevel) {
return iElementalDefinition.DEFAULT_ENERGY_REQUIREMENT * (newEnergyLevel - currentEnergyLevel);
}
@@ -230,7 +233,7 @@ public final class dComplexAspectDefinition extends cElementalDefinition impleme
}
@Override
- public float getMass() {
+ public double getMass() {
return mass;
}
diff --git a/src/main/java/com/github/technus/tectech/compatibility/thaumcraft/elementalMatter/definitions/ePrimalAspectDefinition.java b/src/main/java/com/github/technus/tectech/compatibility/thaumcraft/elementalMatter/definitions/ePrimalAspectDefinition.java
index bcb6e3f6fc..02e7d2fe21 100644
--- a/src/main/java/com/github/technus/tectech/compatibility/thaumcraft/elementalMatter/definitions/ePrimalAspectDefinition.java
+++ b/src/main/java/com/github/technus/tectech/compatibility/thaumcraft/elementalMatter/definitions/ePrimalAspectDefinition.java
@@ -10,14 +10,14 @@ import static net.minecraft.util.StatCollector.translateToLocal;
*/
public final class ePrimalAspectDefinition extends cElementalPrimitive implements iElementalAspect {
public static final ePrimalAspectDefinition
- magic_air = new ePrimalAspectDefinition(translateToLocal("tt.keyword.Air"), "a`", 1e1F, 35),
- magic_earth = new ePrimalAspectDefinition(translateToLocal("tt.keyword.Earth"), "e`", 1e9F, 34),
- magic_fire = new ePrimalAspectDefinition(translateToLocal("tt.keyword.Fire"), "f`", 1e3F, 33),
- magic_water = new ePrimalAspectDefinition(translateToLocal("tt.keyword.Water"), "w`", 1e7F, 32),
- magic_order = new ePrimalAspectDefinition(translateToLocal("tt.keyword.Order"), "o`", 1e5F, 30),
- magic_entropy = new ePrimalAspectDefinition(translateToLocal("tt.keyword.Entropy"), "e`", 1e5F, 31);
-
- private ePrimalAspectDefinition(String name, String symbol, float mass, int ID) {
+ magic_air = new ePrimalAspectDefinition(translateToLocal("tt.keyword.Air"), "a`", 1e1D, 35),
+ magic_earth = new ePrimalAspectDefinition(translateToLocal("tt.keyword.Earth"), "e`", 1e9D, 34),
+ magic_fire = new ePrimalAspectDefinition(translateToLocal("tt.keyword.Fire"), "f`", 1e3D, 33),
+ magic_water = new ePrimalAspectDefinition(translateToLocal("tt.keyword.Water"), "w`", 1e7D, 32),
+ magic_order = new ePrimalAspectDefinition(translateToLocal("tt.keyword.Order"), "o`", 1e5D, 30),
+ magic_entropy = new ePrimalAspectDefinition(translateToLocal("tt.keyword.Entropy"), "e`", 1e5D, 31);
+
+ private ePrimalAspectDefinition(String name, String symbol, double mass, int ID) {
super(name, symbol, 0, mass, 0, -1, ID);
}
diff --git a/src/main/java/com/github/technus/tectech/mechanics/elementalMatter/core/cElementalDecay.java b/src/main/java/com/github/technus/tectech/mechanics/elementalMatter/core/cElementalDecay.java
index 7d5e079876..3472f15cec 100644
--- a/src/main/java/com/github/technus/tectech/mechanics/elementalMatter/core/cElementalDecay.java
+++ b/src/main/java/com/github/technus/tectech/mechanics/elementalMatter/core/cElementalDecay.java
@@ -3,6 +3,7 @@ package com.github.technus.tectech.mechanics.elementalMatter.core;
import com.github.technus.tectech.mechanics.elementalMatter.core.stacks.cElementalDefinitionStack;
import com.github.technus.tectech.mechanics.elementalMatter.core.stacks.cElementalInstanceStack;
import com.github.technus.tectech.mechanics.elementalMatter.core.templates.iElementalDefinition;
+import com.github.technus.tectech.util.DoubleCount;
/**
* Created by danie_000 on 22.10.2016.
@@ -15,50 +16,50 @@ public final class cElementalDecay {
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 float probability;
+ public final double probability;
public cElementalDecay(iElementalDefinition... outSafe) {
- this(2F, outSafe);
+ this(2D, outSafe);
}
- public cElementalDecay(float probability, iElementalDefinition... outSafe) {
+ public cElementalDecay(double probability, iElementalDefinition... outSafe) {
cElementalDefinitionStack[] outArr = new cElementalDefinitionStack[outSafe.length];
for (int i = 0; i < outArr.length; i++) {
- outArr[i] = new cElementalDefinitionStack(outSafe[i], 1);
+ outArr[i] = new cElementalDefinitionStack(outSafe[i], 1D);
}
outputStacks = new cElementalDefinitionStackMap(outArr);
this.probability = probability;
}
public cElementalDecay(cElementalDefinitionStack... outSafe) {
- this(2F, outSafe);
+ this(2D, outSafe);
}
- public cElementalDecay(float probability, cElementalDefinitionStack... out) {
+ public cElementalDecay(double probability, cElementalDefinitionStack... out) {
outputStacks = new cElementalDefinitionStackMap(out);
this.probability = probability;
}
public cElementalDecay(cElementalDefinitionStackMap tree) {
- this(2F, tree);
+ this(2D, tree);
}
- public cElementalDecay(float probability, cElementalDefinitionStackMap tree) {
+ public cElementalDecay(double probability, cElementalDefinitionStackMap tree) {
outputStacks = tree;
this.probability = probability;
}
- public cElementalInstanceStackMap getResults(float lifeMult, long age, long energyTotalForProducts, long amountDecaying) {
+ public cElementalInstanceStackMap getResults(double lifeMult, double age, long energyTotalForProducts, double amountDecaying) {
cElementalInstanceStackMap decayResult = new cElementalInstanceStackMap();
if (outputStacks == null) {
return decayResult;//This is to prevent null pointer exceptions.
}
//Deny decay code is in instance!
- long qtty = 0;
+ double qtty = 0D;
for (cElementalDefinitionStack stack : outputStacks.values()) {
- qtty += stack.amount;
+ qtty= DoubleCount.add(qtty,stack.amount);
}
- if (qtty <= 0) {
+ if (qtty <= 0D) {
return decayResult;
}
//energyTotalForProducts /= qtty;
@@ -66,7 +67,7 @@ public final class cElementalDecay {
for (cElementalDefinitionStack stack : outputStacks.values()) {
decayResult.putUnify(new cElementalInstanceStack(stack.definition,
amountDecaying * stack.amount,
- lifeMult, age/*new products*/, energyTotalForProducts / Math.max(1, Math.abs(stack.amount))));//get instances from stack
+ lifeMult, age/*new products*/, (long)(energyTotalForProducts / Math.max(1D, Math.abs(stack.amount)))));//get instances from stack
}
return decayResult;
}
diff --git a/src/main/java/com/github/technus/tectech/mechanics/elementalMatter/core/cElementalDefinitionStackMap.java b/src/main/java/com/github/technus/tectech/mechanics/elementalMatter/core/cElementalDefinitionStackMap.java
index 294acfc479..ce0840bc8b 100644
--- a/src/main/java/com/github/technus/tectech/mechanics/elementalMatter/core/cElementalDefinitionStackMap.java
+++ b/src/main/java/com/github/technus/tectech/mechanics/elementalMatter/core/cElementalDefinitionStackMap.java
@@ -13,7 +13,7 @@ import static com.github.technus.tectech.mechanics.elementalMatter.definitions.p
*/
public final class cElementalDefinitionStackMap/*IMMUTABLE*/ extends cElementalStackMap {//Target class for construction of definitions/recipes
//Constructors + Clone, all make a whole new OBJ.
- public static final cElementalDefinitionStackMap empty = new cElementalDefinitionStackMap();
+ public static final cElementalDefinitionStackMap EMPTY = new cElementalDefinitionStackMap();
private cElementalDefinitionStackMap() {
map = new TreeMap<>();
diff --git a/src/main/java/com/github/technus/tectech/mechanics/elementalMatter/core/cElementalInstanceStackMap.java b/src/main/java/com/github/technus/tectech/mechanics/elementalMatter/core/cElementalInstanceStackMap.java
index 5893ac1a1f..9544d8d7e5 100644
--- a/src/main/java/com/github/technus/tectech/mechanics/elementalMatter/core/cElementalInstanceStackMap.java
+++ b/src/main/java/com/github/technus/tectech/mechanics/elementalMatter/core/cElementalInstanceStackMap.java
@@ -4,6 +4,7 @@ import com.github.technus.tectech.mechanics.elementalMatter.core.stacks.cElement
import com.github.technus.tectech.mechanics.elementalMatter.core.stacks.cElementalInstanceStack;
import com.github.technus.tectech.mechanics.elementalMatter.core.stacks.iHasElementalDefinition;
import com.github.technus.tectech.mechanics.elementalMatter.core.templates.iElementalDefinition;
+import com.github.technus.tectech.util.DoubleCount;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.EnumChatFormatting;
@@ -131,7 +132,7 @@ public final class cElementalInstanceStackMap implements Comparable<cElementalIn
if (testOnly) {
return target.amount >= instance.amount;
} else {
- long diff = target.amount - instance.amount;
+ double diff = DoubleCount.sub(target.amount,instance.amount);
if (diff > 0) {
target.amount = diff;
return true;
@@ -151,7 +152,7 @@ public final class cElementalInstanceStackMap implements Comparable<cElementalIn
if (testOnly) {
return target.amount >= stack.getAmount();
} else {
- long diff = target.amount - stack.getAmount();
+ double diff = DoubleCount.sub(target.amount,stack.getAmount());
if (diff > 0) {
target.amount = diff;
return true;
@@ -165,7 +166,7 @@ public final class cElementalInstanceStackMap implements Comparable<cElementalIn
@Deprecated
public boolean removeAmount(boolean testOnly, iElementalDefinition def) {
- return removeAmount(testOnly, new cElementalDefinitionStack(def, 1));
+ return removeAmount(testOnly, new cElementalDefinitionStack(def, 1D));
}
public boolean removeAllAmounts(boolean testOnly, cElementalInstanceStack... instances) {
@@ -234,8 +235,8 @@ public final class cElementalInstanceStackMap implements Comparable<cElementalIn
}
//Remove overflow
- public float removeOverflow(int stacksCount, long stackCapacity) {
- float massRemoved = 0;
+ public double removeOverflow(int stacksCount, double stackCapacity) {
+ double massRemoved = 0;
if (map.size() > stacksCount) {
iElementalDefinition[] keys = keys();
@@ -364,24 +365,25 @@ public final class cElementalInstanceStackMap implements Comparable<cElementalIn
return var.toArray(new iElementalDefinition[0]);
}
- public float getMass() {
- float mass = 0;
+ public double getMass() {
+ double mass = 0;
for (cElementalInstanceStack stack : map.values()) {
mass += stack.getMass();
}
return mass;
}
- public long getCharge() {
- long charge = 0;
+ public double getCharge() {
+ double charge = 0;
for (cElementalInstanceStack stack : map.values()) {
charge += stack.getCharge();
}
return charge;
}
- public long getCountOfAllAmounts(){
- long sum=0;
+ @Deprecated
+ public double getCountOfAllAmounts(){
+ double sum=0;
for(cElementalInstanceStack stack:map.values()){
sum+=stack.amount;
}
@@ -410,11 +412,11 @@ public final class cElementalInstanceStackMap implements Comparable<cElementalIn
}
//Tick Content
- public void tickContentByOneSecond(float lifeTimeMult, int postEnergize) {
- tickContent(lifeTimeMult,postEnergize,1);
+ public void tickContentByOneSecond(double lifeTimeMult, int postEnergize) {
+ tickContent(lifeTimeMult,postEnergize,1D);
}
- public void tickContent(float lifeTimeMult, int postEnergize, int seconds){
+ public void tickContent(double lifeTimeMult, int postEnergize, double seconds){
for (cElementalInstanceStack instance : values()) {
cElementalInstanceStackMap newInstances = instance.decay(lifeTimeMult, instance.age += seconds, postEnergize);
if (newInstances == null) {
diff --git a/src/main/java/com/github/technus/tectech/mechanics/elementalMatter/core/cElementalMutableDefinitionStackMap.java b/src/main/java/com/github/technus/tectech/mechanics/elementalMatter/core/cElementalMutableDefinitionStackMap.java
index 829af20ca6..5b925aeea6 100644
--- a/src/main/java/com/github/technus/tectech/mechanics/elementalMatter/core/cElementalMutableDefinitionStackMap.java
+++ b/src/main/java/com/github/technus/tectech/mechanics/elementalMatter/core/cElementalMutableDefinitionStackMap.java
@@ -4,6 +4,7 @@ import com.github.technus.tectech.mechanics.elementalMatter.core.stacks.cElement
import com.github.technus.tectech.mechanics.elementalMatter.core.stacks.cElementalInstanceStack;
import com.github.technus.tectech.mechanics.elementalMatter.core.stacks.iHasElementalDefinition;
import com.github.technus.tectech.mechanics.elementalMatter.core.templates.iElementalDefinition;
+import com.github.technus.tectech.util.DoubleCount;
import net.minecraft.nbt.NBTTagCompound;
import java.util.Map;
@@ -100,7 +101,7 @@ public final class cElementalMutableDefinitionStackMap extends cElementalStackMa
if (testOnly) {
return target.amount >= instance.amount;
} else {
- long diff = target.amount - instance.amount;
+ double diff = DoubleCount.sub(target.amount,instance.amount);
if (diff > 0) {
map.put(target.definition, new cElementalDefinitionStack(target.definition, diff));
return true;
@@ -120,7 +121,7 @@ public final class cElementalMutableDefinitionStackMap extends cElementalStackMa
if (testOnly) {
return target.amount >= stack.getAmount();
} else {
- long diff = target.amount - stack.getAmount();
+ double diff = DoubleCount.sub(target.amount,stack.getAmount());
if (diff > 0) {
map.put(target.definition, new cElementalDefinitionStack(target.definition, diff));
return true;
diff --git a/src/main/java/com/github/technus/tectech/mechanics/elementalMatter/core/cElementalStackMap.java b/src/main/java/com/github/technus/tectech/mechanics/elementalMatter/core/cElementalStackMap.java
index dbbfa7bf66..3e5a7f7b33 100644
--- a/src/main/java/com/github/technus/tectech/mechanics/elementalMatter/core/cElementalStackMap.java
+++ b/src/main/java/com/github/technus/tectech/mechanics/elementalMatter/core/cElementalStackMap.java
@@ -65,6 +65,7 @@ abstract class cElementalStackMap implements Comparable<cElementalStackMap> {
return var.toArray(new iElementalDefinition[0]);
}
+ @Deprecated
public long getCountOfAllAmounts(){
long sum=0;
for(cElementalDefinitionStack stack:map.values()){
diff --git a/src/main/java/com/github/technus/tectech/mechanics/elementalMatter/core/commands/GiveEM.java b/src/main/java/com/github/technus/tectech/mechanics/elementalMatter/core/commands/GiveEM.java
index de1934fed7..912d44ff43 100644
--- a/src/main/java/com/github/technus/tectech/mechanics/elementalMatter/core/commands/GiveEM.java
+++ b/src/main/java/com/github/technus/tectech/mechanics/elementalMatter/core/commands/GiveEM.java
@@ -50,7 +50,7 @@ public class GiveEM implements ICommand {
cElementalDefinitionStack def= getDefinitionStack(list);
if(def!=null) {
- cElementalInstanceStack instanceStack = new cElementalInstanceStack(def, 1, 0, Long.parseLong(energy));
+ cElementalInstanceStack instanceStack = new cElementalInstanceStack(def, 1D, 0D, Long.parseLong(energy));
sender.addChatMessage(new ChatComponentText(instanceStack.definition.getSymbol() + " - " + instanceStack.definition.getName()));
@@ -73,7 +73,7 @@ public class GiveEM implements ICommand {
args.remove(0);
return null;
}
- long amount=Long.parseLong(args.remove(0));
+ double amount=Double.parseDouble(args.remove(0));
try{
int id=Integer.parseInt(args.get(0));
args.remove(0);
diff --git a/src/main/java/com/github/technus/tectech/mechanics/elementalMatter/core/stacks/cElementalDefinitionStack.java b/src/main/java/com/github/technus/tectech/mechanics/elementalMatter/core/stacks/cElementalDefinitionStack.java
index 6b6fe35b41..2371b1b986 100644
--- a/src/main/java/com/github/technus/tectech/mechanics/elementalMatter/core/stacks/cElementalDefinitionStack.java
+++ b/src/main/java/com/github/technus/tectech/mechanics/elementalMatter/core/stacks/cElementalDefinitionStack.java
@@ -2,6 +2,7 @@ package com.github.technus.tectech.mechanics.elementalMatter.core.stacks;
import com.github.technus.tectech.mechanics.elementalMatter.core.templates.cElementalDefinition;
import com.github.technus.tectech.mechanics.elementalMatter.core.templates.iElementalDefinition;
+import com.github.technus.tectech.util.DoubleCount;
import net.minecraft.nbt.NBTTagCompound;
import static com.github.technus.tectech.mechanics.elementalMatter.definitions.primitive.cPrimitiveDefinition.null__;
@@ -11,9 +12,9 @@ import static com.github.technus.tectech.mechanics.elementalMatter.definitions.p
*/
public final class cElementalDefinitionStack implements iHasElementalDefinition {
public final iElementalDefinition definition;
- public final long amount;
+ public final double amount;
- public cElementalDefinitionStack(iElementalDefinition def, long amount) {
+ public cElementalDefinitionStack(iElementalDefinition def, double amount) {
definition = def == null ? null__ : def;
this.amount = amount;
}
@@ -29,47 +30,47 @@ public final class cElementalDefinitionStack implements iHasElementalDefinition
}
@Override
- public long getAmount() {
+ public double getAmount() {
return amount;
}
@Override
- public long getCharge() {
+ public double getCharge() {
return definition.getCharge() * amount;
}
@Override
- public float getMass() {
+ public double getMass() {
return definition.getMass() * amount;
}
public NBTTagCompound toNBT() {
NBTTagCompound nbt = new NBTTagCompound();
nbt.setTag("d", definition.toNBT());
- nbt.setLong("q", amount);
+ nbt.setDouble("Q", amount);
return nbt;
}
public static cElementalDefinitionStack fromNBT(NBTTagCompound nbt) {
return new cElementalDefinitionStack(
cElementalDefinition.fromNBT(nbt.getCompoundTag("d")),
- nbt.getLong("q"));
+ nbt.getLong("q")+nbt.getDouble("Q"));
}
- public cElementalDefinitionStack addAmountIntoNewInstance(long amount) {
+ public cElementalDefinitionStack addAmountIntoNewInstance(double amount) {
if(amount==0) {
return this;
}
- return new cElementalDefinitionStack(definition, amount + this.amount);
+ return new cElementalDefinitionStack(definition, DoubleCount.add(amount,this.amount));
}
public cElementalDefinitionStack addAmountIntoNewInstance(cElementalDefinitionStack... other) {
if (other == null || other.length == 0) {
return this;
}
- long l = 0;
+ double l = 0;
for (cElementalDefinitionStack stack : other) {
- l += stack.amount;
+ l=DoubleCount.add(l,stack.amount);
}
return addAmountIntoNewInstance(l);
}
diff --git a/src/main/java/com/github/technus/tectech/mechanics/elementalMatter/core/stacks/cElementalInstanceStack.java b/src/main/java/com/github/technus/tectech/mechanics/elementalMatter/core/stacks/cElementalInstanceStack.java
index c108d8c8ae..fb4f0fed33 100644
--- a/src/main/java/com/github/technus/tectech/mechanics/elementalMatter/core/stacks/cElementalInstanceStack.java
+++ b/src/main/java/com/github/technus/tectech/mechanics/elementalMatter/core/stacks/cElementalInstanceStack.java
@@ -1,12 +1,13 @@
package com.github.technus.tectech.mechanics.elementalMatter.core.stacks;
import com.github.technus.tectech.TecTech;
-import com.github.technus.tectech.util.Util;
import com.github.technus.tectech.mechanics.elementalMatter.core.cElementalDecay;
import com.github.technus.tectech.mechanics.elementalMatter.core.cElementalDefinitionStackMap;
import com.github.technus.tectech.mechanics.elementalMatter.core.cElementalInstanceStackMap;
import com.github.technus.tectech.mechanics.elementalMatter.core.templates.cElementalDefinition;
import com.github.technus.tectech.mechanics.elementalMatter.core.templates.iElementalDefinition;
+import com.github.technus.tectech.util.DoubleCount;
+import com.github.technus.tectech.util.Util;
import net.minecraft.nbt.NBTTagCompound;
import java.util.ArrayList;
@@ -14,36 +15,37 @@ import java.util.ArrayList;
import static com.github.technus.tectech.mechanics.elementalMatter.definitions.primitive.cPrimitiveDefinition.null__;
import static com.github.technus.tectech.mechanics.elementalMatter.definitions.primitive.eBosonDefinition.deadEnd;
import static com.github.technus.tectech.thing.metaTileEntity.multi.GT_MetaTileEntity_EM_scanner.*;
+import static java.lang.Math.ulp;
/**
* Created by danie_000 on 22.10.2016.
*/
public final class cElementalInstanceStack implements iHasElementalDefinition {
- public static int MIN_MULTIPLE_DECAY_CALLS=4,MAX_MULTIPLE_DECAY_CALLS=16,DECAY_CALL_PER=144;
+ public static int MIN_MULTIPLE_DECAY_CALLS=16,MAX_MULTIPLE_DECAY_CALLS=64,DECAY_CALL_PER=144;//todo
public final iElementalDefinition definition;
//energy - if positive then particle should try to decay
private long energy;
//byte color; 0=Red 1=Green 2=Blue 0=Cyan 1=Magenta 2=Yellow, else ignored (-1 - uncolorable)
private byte color;
- public long age;
- public long amount;
- private float lifeTime;
- private float lifeTimeMult;
+ public double age;
+ public double amount;
+ private double lifeTime;
+ private double lifeTimeMult;
public cElementalInstanceStack(cElementalDefinitionStack stackSafe) {
- this(stackSafe.definition, stackSafe.amount, 1F, 0, 0);
+ this(stackSafe.definition, stackSafe.amount, 1D, 0D, 0);
}
- public cElementalInstanceStack(cElementalDefinitionStack stackSafe, float lifeTimeMult, long age, long energy) {
+ public cElementalInstanceStack(cElementalDefinitionStack stackSafe, double lifeTimeMult, double age, long energy) {
this(stackSafe.definition, stackSafe.amount, lifeTimeMult, age, energy);
}
- public cElementalInstanceStack(iElementalDefinition defSafe, long amount) {
- this(defSafe, amount, 1F, 0, 0);
+ public cElementalInstanceStack(iElementalDefinition defSafe, double amount) {
+ this(defSafe, amount, 1D, 0D, 0);
}
- public cElementalInstanceStack(iElementalDefinition defSafe, long amount, float lifeTimeMult, long age, long energy) {
+ public cElementalInstanceStack(iElementalDefinition defSafe, double amount, double lifeTimeMult, double age, long energy) {
definition = defSafe == null ? null__ : defSafe;
byte bColor = definition.getColor();
if (bColor < 0 || bColor > 2) {//transforms colorable??? into proper color
@@ -75,17 +77,17 @@ public final class cElementalInstanceStack implements iHasElementalDefinition {
}
@Override
- public long getAmount() {
+ public double getAmount() {
return amount;
}
@Override
- public long getCharge() {
+ public double getCharge() {
return definition.getCharge() * amount;
}
@Override
- public float getMass() {
+ public double getMass() {
return definition.getMass() * amount;
}
@@ -98,11 +100,11 @@ public final class cElementalInstanceStack implements iHasElementalDefinition {
setLifeTimeMultiplier(getLifeTimeMultiplier());
}
- public float getEnergySettingCost(long currentEnergyLevel, long newEnergyLevel){
+ public double getEnergySettingCost(long currentEnergyLevel, long newEnergyLevel){
return definition.getEnergyDiffBetweenStates(currentEnergyLevel,newEnergyLevel)*amount;
}
- public float getEnergySettingCost(long newEnergyLevel){
+ public double getEnergySettingCost(long newEnergyLevel){
return definition.getEnergyDiffBetweenStates(energy,newEnergyLevel)*amount;
}
@@ -133,11 +135,11 @@ public final class cElementalInstanceStack implements iHasElementalDefinition {
return color = (byte) TecTech.RANDOM.nextInt(3);
}
- public float getLifeTime() {
+ public double getLifeTime() {
return lifeTime;
}
- public float setLifeTimeMultiplier(float mult) {
+ public double setLifeTimeMultiplier(double mult) {
if(mult<=0) //since infinity*0=nan
{
throw new IllegalArgumentException("multiplier must be >0");
@@ -150,15 +152,15 @@ public final class cElementalInstanceStack implements iHasElementalDefinition {
return lifeTime;
}
- public float getLifeTimeMultiplier() {
+ public double getLifeTimeMultiplier() {
return lifeTimeMult;
}
- public cElementalInstanceStackMap tickStackByOneSecond(float lifeTimeMult, int postEnergize){
- return tickStack(lifeTimeMult,postEnergize,1);
+ public cElementalInstanceStackMap tickStackByOneSecond(double lifeTimeMult, int postEnergize){
+ return tickStack(lifeTimeMult,postEnergize,1D);
}
- public cElementalInstanceStackMap tickStack(float lifeTimeMult, int postEnergize, int seconds){
+ public cElementalInstanceStackMap tickStack(double lifeTimeMult, int postEnergize, double seconds){
cElementalInstanceStackMap newInstances = decay(lifeTimeMult, age += seconds, postEnergize);
if (newInstances == null) {
nextColor();
@@ -171,14 +173,14 @@ public final class cElementalInstanceStack implements iHasElementalDefinition {
}
public cElementalInstanceStackMap decay() {
- return decay(1F, age, 0);//try to decay without changes
+ return decay(1D, ag