aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com
diff options
context:
space:
mode:
authorTechnus <daniel112092@gmail.com>2017-05-21 16:24:08 +0200
committerTechnus <daniel112092@gmail.com>2017-05-21 16:24:08 +0200
commit27e36620b8639c983b59c47088e71770cab8f7d6 (patch)
treef71feeafeec53ac3dd7a691a9db92011b6b55aad /src/main/java/com
parent5154fd4aa55f39ffe3b8bb0ec5de7f8107510ee3 (diff)
downloadGT5-Unofficial-27e36620b8639c983b59c47088e71770cab8f7d6.tar.gz
GT5-Unofficial-27e36620b8639c983b59c47088e71770cab8f7d6.tar.bz2
GT5-Unofficial-27e36620b8639c983b59c47088e71770cab8f7d6.zip
ThaumcraftCompat
Diffstat (limited to 'src/main/java/com')
-rw-r--r--src/main/java/com/github/technus/tectech/TecTech.java8
-rw-r--r--src/main/java/com/github/technus/tectech/elementalMatter/definitions/dAtomDefinition.java8
-rw-r--r--src/main/java/com/github/technus/tectech/elementalMatter/definitions/dHadronDefinition.java8
-rw-r--r--src/main/java/com/github/technus/tectech/loader/ElementalLoader.java4
-rw-r--r--src/main/java/com/github/technus/tectech/loader/MachineLoader.java11
-rw-r--r--src/main/java/com/github/technus/tectech/loader/MainLoader.java68
-rw-r--r--src/main/java/com/github/technus/tectech/magicAddon/definitions/AspectDefinitionCompat.java30
-rw-r--r--src/main/java/com/github/technus/tectech/magicAddon/definitions/AspectDefinitionCompatEnabled.java81
-rw-r--r--src/main/java/com/github/technus/tectech/magicAddon/definitions/dComplexAspectDefinition.java (renamed from src/main/java/com/github/technus/tectech/elementalMatter/magicAddon/definitions/dComplexAspectDefinition.java)87
-rw-r--r--src/main/java/com/github/technus/tectech/magicAddon/definitions/ePrimalAspectDefinition.java (renamed from src/main/java/com/github/technus/tectech/elementalMatter/magicAddon/definitions/ePrimalAspectDefinition.java)31
-rw-r--r--src/main/java/com/github/technus/tectech/magicAddon/definitions/iElementalAspect.java8
-rw-r--r--src/main/java/com/github/technus/tectech/magicAddon/thing/metaTileEntity/multi/EssentiaCompat.java30
-rw-r--r--src/main/java/com/github/technus/tectech/magicAddon/thing/metaTileEntity/multi/EssentiaCompatEnabled.java69
-rw-r--r--src/main/java/com/github/technus/tectech/magicAddon/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_essentiaDequantizer.java79
-rw-r--r--src/main/java/com/github/technus/tectech/magicAddon/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_essentiaQuantizer.java112
-rw-r--r--src/main/java/com/github/technus/tectech/thing/CustomItemList.java1
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_bhg.java59
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_dequantizer.java5
18 files changed, 641 insertions, 58 deletions
diff --git a/src/main/java/com/github/technus/tectech/TecTech.java b/src/main/java/com/github/technus/tectech/TecTech.java
index ed5e1634ef..763741adbf 100644
--- a/src/main/java/com/github/technus/tectech/TecTech.java
+++ b/src/main/java/com/github/technus/tectech/TecTech.java
@@ -62,7 +62,10 @@ public class TecTech {
}
@EventHandler
- public void load(FMLInitializationEvent event) {
+ public void Load(FMLInitializationEvent event) {
+ GTCustomLoader = new MainLoader();
+ GTCustomLoader.load();
+
proxy.registerRenderInfo();
}
@@ -70,8 +73,7 @@ public class TecTech {
public void PostLoad(FMLPostInitializationEvent PostEvent) {
hasCOFH = Loader.isModLoaded(Reference.COFHCORE);
- GTCustomLoader = new MainLoader();
- GTCustomLoader.run();
+ GTCustomLoader.postLoad();
}
@EventHandler
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 d73f3730d7..d521053e6e 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
@@ -18,6 +18,7 @@ import static com.github.technus.tectech.elementalMatter.definitions.eBosonDefin
* Created by danie_000 on 18.11.2016.
*/
public final class dAtomDefinition extends cElementalDefinition {//TODO Optimize map i/o
+ private final int hash;
public static final Map<dAtomDefinition, ItemStack> itemBinds = new TreeMap<>();
public static final Map<dAtomDefinition, FluidStack> fluidBinds = new TreeMap<>();
@@ -126,6 +127,8 @@ public final class dAtomDefinition extends cElementalDefinition {//TODO Optimize
else
this.decayMode = izoDiff > 0 ? (byte) Math.min(2, 1 + izoDiffAbs / 4) : (byte) -Math.min(2, 1 + izoDiffAbs / 4);
this.stable = isStable(this.rawLifeTime);
+
+ hash=super.hashCode();
}
private static boolean isStable(float lifeTime) {
@@ -555,4 +558,9 @@ public final class dAtomDefinition extends cElementalDefinition {//TODO Optimize
public byte getClassType() {
return 64;
}
+
+ @Override
+ public int hashCode() {
+ return hash;
+ }
}
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 13c589ef6f..10bfaf86d8 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
@@ -18,6 +18,7 @@ import static com.github.technus.tectech.elementalMatter.definitions.eBosonDefin
* Created by danie_000 on 17.11.2016.
*/
public final class dHadronDefinition extends cElementalDefinition {//TODO Optimize map i/o
+ private final int hash;
public static final Map<dHadronDefinition, ItemStack> itemBinds = new TreeMap<>();
public static final Map<dHadronDefinition, FluidStack> fluidBinds = new TreeMap<>();
@@ -96,6 +97,8 @@ public final class dHadronDefinition extends cElementalDefinition {//TODO Optimi
this.rawLifeTime = (1.21F / this.mass) / (float) Math.pow(9.80, charge);
}
}
+
+ hash=super.hashCode();
}
//public but u can just try{}catch(){} the constructor it still calls this method
@@ -346,4 +349,9 @@ public final class dHadronDefinition extends cElementalDefinition {//TODO Optimi
public byte getClassType() {
return -64;
}
+
+ @Override
+ public int hashCode() {
+ return hash;
+ }
}
diff --git a/src/main/java/com/github/technus/tectech/loader/ElementalLoader.java b/src/main/java/com/github/technus/tectech/loader/ElementalLoader.java
index 93c5afbfc3..5cc1133d88 100644
--- a/src/main/java/com/github/technus/tectech/loader/ElementalLoader.java
+++ b/src/main/java/com/github/technus/tectech/loader/ElementalLoader.java
@@ -2,8 +2,8 @@ package com.github.technus.tectech.loader;
import com.github.technus.tectech.elementalMatter.classes.cElementalPrimitive;
import com.github.technus.tectech.elementalMatter.definitions.*;
-import com.github.technus.tectech.elementalMatter.magicAddon.definitions.dComplexAspectDefinition;
-import com.github.technus.tectech.elementalMatter.magicAddon.definitions.ePrimalAspectDefinition;
+import com.github.technus.tectech.magicAddon.definitions.dComplexAspectDefinition;
+import com.github.technus.tectech.magicAddon.definitions.ePrimalAspectDefinition;
/**
* Created by danie_000 on 16.11.2016.
diff --git a/src/main/java/com/github/technus/tectech/loader/MachineLoader.java b/src/main/java/com/github/technus/tectech/loader/MachineLoader.java
index 338d9d3d53..7568d2daf9 100644
--- a/src/main/java/com/github/technus/tectech/loader/MachineLoader.java
+++ b/src/main/java/com/github/technus/tectech/loader/MachineLoader.java
@@ -1,5 +1,7 @@
package com.github.technus.tectech.loader;
+import com.github.technus.tectech.magicAddon.thing.metaTileEntity.multi.GT_MetaTileEntity_EM_essentiaDequantizer;
+import com.github.technus.tectech.magicAddon.thing.metaTileEntity.multi.GT_MetaTileEntity_EM_essentiaQuantizer;
import com.github.technus.tectech.thing.metaTileEntity.hatch.*;
import com.github.technus.tectech.thing.metaTileEntity.multi.*;
import com.github.technus.tectech.thing.metaTileEntity.pipe.GT_MetaTileEntity_Pipe_Data;
@@ -125,7 +127,6 @@ public class MachineLoader implements Runnable {
eM_energymulti64_UXV.set(new GT_MetaTileEntity_Hatch_EnergyMulti(
15125, "hatch.energymulti64.tier.13", "UXV 64A Energy Hatch", 13, 64).getStackForm(1L));
-
// ===================================================================================================
// Multi AMP Power OUTPUTS
// ===================================================================================================
@@ -185,6 +186,10 @@ public class MachineLoader implements Runnable {
Machine_Multi_MatterToEM.set(new GT_MetaTileEntity_EM_quantizer(15321, "multimachine.em.mattertoem", "Matter Quantizer").getStackForm(1L));
Machine_Multi_EMToMatter.set(new GT_MetaTileEntity_EM_dequantizer(15322, "multimachine.em.emtomatter", "Matter Dequantizer").getStackForm(1L));
+ // COMPAT
+ Machine_Multi_EssentiaToEM.set(new GT_MetaTileEntity_EM_essentiaQuantizer(15323, "multimachine.em.essentiatoem", "Essentia Quantizer").getStackForm(1L));
+ Machine_Multi_EMToEssentia.set(new GT_MetaTileEntity_EM_essentiaDequantizer(15324, "multimachine.em.emtoessentia", "Essentia Dequantizer").getStackForm(1L));
+
Machine_Multi_Scanner.set(new GT_MetaTileEntity_EM_scanner(15330, "multimachine.em.scanner", "Elemental Scanner").getStackForm(1L));
Machine_Multi_Research.set(new GT_MetaTileEntity_EM_research(15331, "multimachine.em.research", "Research station").getStackForm(1L));
@@ -204,10 +209,10 @@ public class MachineLoader implements Runnable {
Machine_Multi_Annihilation.set(new GT_MetaTileEntity_EM_annihilation(15405, "multimachine.em.annihilation", "Annihilation Generator").getStackForm(1L));
Machine_Multi_BHG.set(new GT_MetaTileEntity_EM_bhg(15410, "multimachine.em.blackholegenerator", "Black Hole Generator").getStackForm(1L));
-
// ===================================================================================================
// Hatches
// ===================================================================================================
+
Parametrizer_Hatch.set(new GT_MetaTileEntity_Hatch_Param(15420, "hatch.param.tier.07", "Parametrizer", 7).getStackForm(1L));
Uncertainty_Hatch.set(new GT_MetaTileEntity_Hatch_Uncertainty(15430, "hatch.certain.tier.07", "Uncertainty Resolver", 7).getStackForm(1L));
@@ -222,6 +227,7 @@ public class MachineLoader implements Runnable {
// ===================================================================================================
// Pipes
// ===================================================================================================
+
EMpipe.set(new GT_MetaTileEntity_Pipe_EM(15460, "pipe.elementalmatter", "Quantum \"Tunnel\"").getStackForm(1L));
DATApipe.set(new GT_MetaTileEntity_Pipe_Data(15470, "pipe.datastream", "Optical Fiber Cable").getStackForm(1L));
@@ -232,7 +238,6 @@ public class MachineLoader implements Runnable {
Machine_DebugWriter.set(new GT_MetaTileEntity_DebugStructureWriter(15499, "debug.tt.writer", "Debug Structure Writer", 15).getStackForm(1L));
-
// ===================================================================================================
// MetaTE init
// ===================================================================================================
diff --git a/src/main/java/com/github/technus/tectech/loader/MainLoader.java b/src/main/java/com/github/technus/tectech/loader/MainLoader.java
index 5271e2b35c..d12636e86d 100644
--- a/src/main/java/com/github/technus/tectech/loader/MainLoader.java
+++ b/src/main/java/com/github/technus/tectech/loader/MainLoader.java
@@ -1,11 +1,16 @@
package com.github.technus.tectech.loader;
import com.github.technus.tectech.TecTech;
+import com.github.technus.tectech.magicAddon.definitions.AspectDefinitionCompat;
+import com.github.technus.tectech.magicAddon.definitions.AspectDefinitionCompatEnabled;
+import com.github.technus.tectech.magicAddon.thing.metaTileEntity.multi.EssentiaCompat;
+import com.github.technus.tectech.magicAddon.thing.metaTileEntity.multi.EssentiaCompatEnabled;
import com.github.technus.tectech.thing.block.QuantumGlassBlock;
import com.github.technus.tectech.thing.casing.GT_Container_CasingsTT;
import com.github.technus.tectech.thing.item.DebugBuilder;
import com.github.technus.tectech.thing.item.DebugContainer_EM;
import com.github.technus.tectech.thing.machineTT;
+import cpw.mods.fml.common.Loader;
import cpw.mods.fml.common.ProgressManager;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
@@ -17,23 +22,53 @@ import net.minecraft.item.ItemStack;
import java.util.List;
import static com.github.technus.tectech.TecTech.mainTab;
+import static com.github.technus.tectech.magicAddon.definitions.AspectDefinitionCompat.aspectDefinitionCompat;
+import static com.github.technus.tectech.magicAddon.thing.metaTileEntity.multi.EssentiaCompat.essentiaContainerCompat;
public final class MainLoader {//TODO add checks for - is mod loaded dreamcraft to enable higher tier machinery. (above UV), or implement a check for GT tier values.
- private static ProgressManager.ProgressBar progressBar;
- public MainLoader(){
- progressBar = ProgressManager.push("TecTech Loader", 6);
+ public void load() {
+ ProgressManager.ProgressBar progressBarLoad = ProgressManager.push("TecTech Loader", 4);
+
+ progressBarLoad.step("Elemental Things");
+ new ElementalLoader().run();
+ TecTech.Logger.info("Elemental Init Done");
+
+ progressBarLoad.step("Thaumcraft Compatibility");
+ if (Loader.isModLoaded("Thaumcraft")) {
+ essentiaContainerCompat = new EssentiaCompatEnabled();
+ essentiaContainerCompat.run();
+ } else {
+ essentiaContainerCompat = new EssentiaCompat();
+ }
+
+ progressBarLoad.step("Regular Things");
+ new ThingsLoader().run();
+ TecTech.Logger.info("Block/Item Init Done");
+
+ progressBarLoad.step("Machine Things");
+ new MachineLoader().run();
+ TecTech.Logger.info("Machine Init Done");
+
+ ProgressManager.pop(progressBarLoad);
}
- public void run(){
- progressBar.step("Loading Things");
- things();
+ public void postLoad() {
+ ProgressManager.ProgressBar progressBarPostLoad = ProgressManager.push("TecTech Post Loader", 4);
- progressBar.step("Loading Recipes");
+ progressBarPostLoad.step("Thaumcraft Compatibility");
+ if (Loader.isModLoaded("Thaumcraft")) {
+ aspectDefinitionCompat = new AspectDefinitionCompatEnabled();
+ aspectDefinitionCompat.run();
+ } else {
+ aspectDefinitionCompat = new AspectDefinitionCompat();
+ }
+
+ progressBarPostLoad.step("Recipes");
new RecipeLoader().run();
TecTech.Logger.info("Recipe Init Done");
- progressBar.step("Registering in Creative Tab");
+ progressBarPostLoad.step("Creative Tab part1");
mainTab = new CreativeTabs("TecTech") {
@SideOnly(Side.CLIENT)
@Override
@@ -51,23 +86,10 @@ public final class MainLoader {//TODO add checks for - is mod loaded dreamcraft
super.displayAllReleventItems(stuffToShow);
}
};
+ progressBarPostLoad.step("Creative Tab part2");
registerThingsInTabs();
- ProgressManager.pop(progressBar);
- }
-
- public void things() {
- progressBar.step("Loading Elemental Things");
- new ElementalLoader().run();
- TecTech.Logger.info("Elemental Init Done");
-
- progressBar.step("Loading Regular Things");
- new ThingsLoader().run();
- TecTech.Logger.info("Block/Item Init Done");
-
- progressBar.step("Loading Machine Things");
- new MachineLoader().run();
- TecTech.Logger.info("Machine Init Done");
+ ProgressManager.pop(progressBarPostLoad);
}
public void registerThingsInTabs() {
diff --git a/src/main/java/com/github/technus/tectech/magicAddon/definitions/AspectDefinitionCompat.java b/src/main/java/com/github/technus/tectech/magicAddon/definitions/AspectDefinitionCompat.java
new file mode 100644
index 0000000000..3c5d8cc507
--- /dev/null
+++ b/src/main/java/com/github/technus/tectech/magicAddon/definitions/AspectDefinitionCompat.java
@@ -0,0 +1,30 @@
+package com.github.technus.tectech.magicAddon.definitions;
+
+
+import com.github.technus.tectech.elementalMatter.classes.cElementalDefinition;
+import com.github.technus.tectech.elementalMatter.interfaces.iElementalDefinition;
+
+import java.util.HashMap;
+
+/**
+ * Created by Tec on 21.05.2017.
+ */
+public class AspectDefinitionCompat {
+ public static AspectDefinitionCompat aspectDefinitionCompat;
+ static final HashMap<cElementalDefinition,String> defToAspect = new HashMap<>();
+ public static final HashMap<String,cElementalDefinition> aspectToDef = new HashMap<>();
+
+ public void run(){}
+
+ Object getAspect(cElementalDefinition definition){
+ return null;
+ }
+
+ String getAspectTag(cElementalDefinition definition){
+ return null;
+ }
+
+ iElementalDefinition getDefinition(String aspect){
+ return null;
+ }
+}
diff --git a/src/main/java/com/github/technus/tectech/magicAddon/definitions/AspectDefinitionCompatEnabled.java b/src/main/java/com/github/technus/tectech/magicAddon/definitions/AspectDefinitionCompatEnabled.java
new file mode 100644
index 0000000000..8623b9a845
--- /dev/null
+++ b/src/main/java/com/github/technus/tectech/magicAddon/definitions/AspectDefinitionCompatEnabled.java
@@ -0,0 +1,81 @@
+package com.github.technus.tectech.magicAddon.definitions;
+
+import com.github.technus.tectech.elementalMatter.classes.cElementalDefinition;
+import com.github.technus.tectech.elementalMatter.classes.tElementalException;
+import com.github.technus.tectech.elementalMatter.interfaces.iElementalDefinition;
+import thaumcraft.api.aspects.Aspect;
+
+import java.util.ArrayList;
+
+import static com.github.technus.tectech.magicAddon.definitions.ePrimalAspectDefinition.*;
+
+/**
+ * Created by Tec on 21.05.2017.
+ */
+public final class AspectDefinitionCompatEnabled extends AspectDefinitionCompat {
+ public void run(){
+ defToAspect.put(magic_air,"aer");
+ defToAspect.put(magic_earth,"terra");
+ defToAspect.put(magic_fire,"ignis");
+ defToAspect.put(magic_water,"aqua");
+ defToAspect.put(magic_order,"ordo");
+ defToAspect.put(magic_entropy,"perditio");
+
+ aspectToDef.put("aer",magic_air);
+ aspectToDef.put("terra",magic_earth);
+ aspectToDef.put("ignis",magic_fire);
+ aspectToDef.put("aqua",magic_water);
+ aspectToDef.put("ordo",magic_order);
+ aspectToDef.put("perditio",magic_entropy);
+
+ ArrayList<Aspect> list=Aspect.getCompoundAspects();
+ Aspect[] array=list.toArray(new Aspect[0]);
+ while (!list.isEmpty()) {
+ for (Aspect aspect : array) {
+ if (list.contains(aspect)) {
+ Aspect[] content = aspect.getComponents();
+ if (content.length != 2) {
+ list.remove(aspect);
+ }else if(aspectToDef.containsKey(content[0].getTag()) &&
+ aspectToDef.containsKey(content[1].getTag())){
+ try {
+ dComplexAspectDefinition newAspect;
+ if(content[0].getTag().equals(content[1].getTag())){
+ newAspect = new dComplexAspectDefinition(
+ aspectToDef.get(content[0].getTag()).getStackForm(2)
+ );
+ }else{
+ newAspect = new dComplexAspectDefinition(
+ aspectToDef.get(content[0].getTag()).getStackForm(1),
+ aspectToDef.get(content[1].getTag()).getStackForm(1)
+ );
+ }
+ aspectToDef.put(aspect.getTag(),newAspect);
+ defToAspect.put(newAspect,aspect.getTag());
+ }catch (tElementalException e) {
+ /**/
+ }finally {
+ list.remove(aspect);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ @Override
+ Aspect getAspect(cElementalDefinition definition) {
+ return Aspect.getAspect(defToAspect.get(definition));
+ }
+
+ @Override
+ String getAspectTag(cElementalDefinition definition) {
+ return defToAspect.get(definition);
+ }
+
+ @Override
+ iElementalDefinition getDefinition(String aspect) {
+ return aspectToDef.get(aspect);
+ }
+
+}
diff --git a/src/main/java/com/github/technus/tectech/elementalMatter/magicAddon/definitions/dComplexAspectDefinition.java b/src/main/java/com/github/technus/tectech/magicAddon/definitions/dComplexAspectDefinition.java
index 9f65f600af..cfddd4c67d 100644
--- a/src/main/java/com/github/technus/tectech/elementalMatter/magicAddon/definitions/dComplexAspectDefinition.java
+++ b/src/main/java/com/github/technus/tectech/magicAddon/definitions/dComplexAspectDefinition.java
@@ -1,4 +1,4 @@
-package com.github.technus.tectech.elementalMatter.magicAddon.definitions;
+package com.github.technus.tectech.magicAddon.definitions;
import com.github.technus.tectech.TecTech;
import com.github.technus.tectech.auxiliary.TecTechConfig;
@@ -10,32 +10,90 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.fluids.FluidStack;
import static com.github.technus.tectech.elementalMatter.classes.cElementalDecay.noDecay;
+import static com.github.technus.tectech.magicAddon.definitions.AspectDefinitionCompat.aspectDefinitionCompat;
/**
* Created by Tec on 06.05.2017.
*/
-public final class dComplexAspectDefinition extends cElementalDefinition {//TODO Optimize map i/o
- //TODO aspect binding
+public final class dComplexAspectDefinition extends cElementalDefinition implements iElementalAspect {
+ private final int hash;
private static final byte nbtType = (byte) 'c';
private final cElementalDefinitionStackMap aspectStacks;
- public dComplexAspectDefinition(cElementalDefinitionStack[] tree) throws tElementalException {//todo constructors
- aspectStacks = cElementalDefinitionStackMap.empty;
+ @Deprecated
+ public dComplexAspectDefinition(cElementalDefinition... aspects) throws tElementalException {
+ this(true, new cElementalDefinitionStackMap(aspects));
+ }
+
+ @Deprecated
+ private dComplexAspectDefinition(boolean check, cElementalDefinition... aspects) throws tElementalException {
+ this(check, new cElementalDefinitionStackMap(aspects));
+ }
+
+ public dComplexAspectDefinition(cElementalDefinitionStack... aspects) throws tElementalException {
+ this(true, new cElementalDefinitionStackMap(aspects));
+ }
+
+ private dComplexAspectDefinition(boolean check, cElementalDefinitionStack... aspects) throws tElementalException {
+ this(check, new cElementalDefinitionStackMap(aspects));
+ }
+
+ public dComplexAspectDefinition(cElementalDefinitionStackMap aspects) throws tElementalException {
+ this(true, aspects);
+ }
+
+ private dComplexAspectDefinition(boolean check, cElementalDefinitionStackMap aspects) throws tElementalException {
+ if (check && !canTheyBeTogether(aspects)) throw new tElementalException("Hadron Definition error");
+ this.aspectStacks = aspects;
+
+ hash=super.hashCode();
+ }
+
+ //public but u can just try{}catch(){} the constructor it still calls this method
+ private static boolean canTheyBeTogether(cElementalDefinitionStackMap stacks) {
+ int amount = 0;
+ for (cElementalDefinitionStack aspects : stacks.values()) {
+ if (aspects.definition instanceof dComplexAspectDefinition || aspects.definition instanceof ePrimalAspectDefinition)
+ amount += aspects.amount;
+ else return false;
+ }
+ return amount==2;
+ }
+
+ //Unused outside yet still available.
+ public boolean checkThis() {
+ return canTheyBeTogether(aspectStacks);
}
@Override
- public String getName() {//todo name
- return "Aspect: ";
+ public String getName() {
+ String name= aspectDefinitionCompat.getAspectTag(this);
+ if(name!=null){
+ name=name.substring(0,1).toUpperCase()+name.substring(1);
+ }else{
+ name=getSymbol();
+ }
+ return "Aspect: "+name;
}
@Override
public String getSymbol() {
String symbol = "";
- for (cElementalDefinitionStack quark : aspectStacks.values())
- for (int i = 0; i < quark.amount; i++)
- symbol += quark.definition.getSymbol();
+ for (cElementalDefinitionStack aspect : aspectStacks.values()) {
+ if (aspect.definition instanceof ePrimalAspectDefinition) {
+ for (int i = 0; i < aspect.amount; i++) {
+ symbol += aspect.definition.getSymbol();
+ }
+ } else {
+ symbol+="(";
+ for (int i = 0; i < aspect.amount; i++) {
+ symbol += aspect.definition.getSymbol();
+ }
+ symbol+=")";
+ }
+ }
return symbol;
}
@@ -117,6 +175,10 @@ public final class dComplexAspectDefinition extends cElementalDefinition {//TODO
return null;
}
+ public Object materializeIntoAspect() {
+ return aspectDefinitionCompat.getAspect(this);
+ }
+
@Override
public iElementalDefinition getAnti() {
return null;
@@ -136,4 +198,9 @@ public final class dComplexAspectDefinition extends cElementalDefinition {//TODO
public byte getClassType() {
return -96;
}
+
+ @Override
+ public int hashCode() {
+ return hash;
+ }
}
diff --git a/src/main/java/com/github/technus/tectech/elementalMatter/magicAddon/definitions/ePrimalAspectDefinition.java b/src/main/java/com/github/technus/tectech/magicAddon/definitions/ePrimalAspectDefinition.java
index 63dc462572..64e8f4ac69 100644
--- a/src/main/java/com/github/technus/tectech/elementalMatter/magicAddon/definitions/ePrimalAspectDefinition.java
+++ b/src/main/java/com/github/technus/tectech/magicAddon/definitions/ePrimalAspectDefinition.java
@@ -1,32 +1,33 @@
-package com.github.technus.tectech.elementalMatter.magicAddon.definitions;
+package com.github.technus.tectech.magicAddon.definitions;
import com.github.technus.tectech.elementalMatter.classes.cElementalPrimitive;
import static com.github.technus.tectech.elementalMatter.classes.cElementalDecay.noDecay;
+import static com.github.technus.tectech.magicAddon.definitions.AspectDefinitionCompat.aspectDefinitionCompat;
/**
* Created by Tec on 06.05.2017.
*/
-public final class ePrimalAspectDefinition extends cElementalPrimitive {
+public final class ePrimalAspectDefinition extends cElementalPrimitive implements iElementalAspect {
public static final ePrimalAspectDefinition
- magic_order = new ePrimalAspectDefinition("Order", "o`", 0, 0F, 0, -1, 30),
- magic_entropy_ = new ePrimalAspectDefinition("Entropy", "e`", 0, 0F, 0, -1, 31),
- magic_water = new ePrimalAspectDefinition("Water", "w`", 0, 0F, 0, -1, 32),
- magic_fire_ = new ePrimalAspectDefinition("Fire", "f`", 0, 0F, 0, -1, 33),
+ magic_air = new ePrimalAspectDefinition("Air", "a`", 0, 0F, 0, -1, 35),
magic_earth = new ePrimalAspectDefinition("Earth", "e`", 0, 0F, 0, -1, 34),
- magic_air_ = new ePrimalAspectDefinition("Air", "a`", 0, 0F, 0, -1, 35);
+ magic_fire = new ePrimalAspectDefinition("Fire", "f`", 0, 0F, 0, -1, 33),
+ magic_water = new ePrimalAspectDefinition("Water", "w`", 0, 0F, 0, -1, 32),
+ magic_order = new ePrimalAspectDefinition("Order", "o`", 0, 0F, 0, -1, 30),
+ magic_entropy = new ePrimalAspectDefinition("Entropy", "e`", 0, 0F, 0, -1, 31);
private ePrimalAspectDefinition(String name, String symbol, int type, float mass, int charge, int color, int ID) {
super(name, symbol, type, mass, charge, color, ID);
}
public static void run() {
- magic_order.init(magic_entropy_, -1F, -1, -1, noDecay);
- magic_entropy_.init(magic_order, -1F, -1, -1, noDecay);
- magic_water.init(magic_fire_, -1F, -1, -1, noDecay);
- magic_fire_.init(magic_water, -1F, -1, -1, noDecay);
- magic_earth.init(magic_air_, -1F, -1, -1, noDecay);
- magic_air_.init(magic_earth, -1F, -1, -1, noDecay);
+ magic_air.init(null, -1F, -1, -1, noDecay);
+ magic_earth.init(null, -1F, -1, -1, noDecay);
+ magic_fire.init(null, -1F, -1, -1, noDecay);
+ magic_water.init(null, -1F, -1, -1, noDecay);
+ magic_order.init(null, -1F, -1, -1, noDecay);
+ magic_entropy.init(null, -1F, -1, -1, noDecay);
}
@Override
@@ -34,6 +35,8 @@ public final class ePrimalAspectDefinition extends cElementalPrimitive {
return "Primal: " + name;
}
- //TODO aspect binding
+ public Object materializeIntoAspect() {
+ return aspectDefinitionCompat.getAspect(this);
+ }
}
diff --git a/src/main/java/com/github/technus/tectech/magicAddon/definitions/iElementalAspect.java b/src/main/java/com/github/technus/tectech/magicAddon/definitions/iElementalAspect.java
new file mode 100644
index 0000000000..c8ec3c40b4
--- /dev/null
+++ b/src/main/java/com/github/technus/tectech/magicAddon/definitions/iElementalAspect.java
@@ -0,0 +1,8 @@
+package com.github.technus.tectech.magicAddon.definitions;
+
+/**
+ * Created by Tec on 21.05.2017.
+ */
+public interface iElementalAspect {
+ Object materializeIntoAspect();
+}
diff --git a/src/main/java/com/github/technus/tectech/magicAddon/thing/metaTileEntity/multi/EssentiaCompat.java b/src/main/java/com/github/technus/tectech/magicAddon/thing/metaTileEntity/multi/EssentiaCompat.java
new file mode 100644
index 0000000000..d3d90f832c
--- /dev/null
+++ b/src/main/java/com/github/technus/tectech/magicAddon/thing/metaTileEntity/multi/EssentiaCompat.java
@@ -0,0 +1,30 @@
+package com.github.technus.tectech.magicAddon.thing.metaTileEntity.multi;
+
+import com.github.technus.tectech.elementalMatter.classes.cElementalInstanceStack;
+import com.github.technus.tectech.thing.metaTileEntity.multi.GT_MetaTileEntity_MultiblockBase_EM;
+import net.minecraft.tileentity.TileEntity;
+
+/**
+ * Created by Tec on 21.05.2017.
+ */
+public class EssentiaCompat {
+ public static EssentiaCompat essentiaContainerCompat;
+
+ public void run(){}
+
+ public boolean check(GT_MetaTileEntity_MultiblockBase_EM meta){
+ return false;
+ }
+
+ public TileEntity getContainer(GT_MetaTileEntity_MultiblockBase_EM meta){
+ return null;
+ }
+
+ public boolean putElementalInstanceStack(TileEntity conatainer, cElementalInstanceStack stack){
+ return false;
+ }
+
+ public cElementalInstanceStack getFromContainer(TileEntity container){
+ return null;
+ }
+}
diff --git a/src/main/java/com/github/technus/tectech/magicAddon/thing/metaTileEntity/multi/EssentiaCompatEnabled.java b/src/main/java/com/github/technus/tectech/magicAddon/thing/metaTileEntity/multi/EssentiaCompatEnabled.java
new file mode 100644
index 0000000000..2fec74a87a
--- /dev/null
+++ b/src/main/java/com/github/technus/tectech/magicAddon/thing/metaTileEntity/multi/EssentiaCompatEnabled.java
@@ -0,0 +1,69 @@
+package com.github.technus.tectech.magicAddon.thing.metaTileEntity.multi;
+
+import com.github.technus.tectech.elementalMatter.classes.cElementalDefinition;
+import com.github.technus.tectech.elementalMatter.classes.cElementalInstanceStack;
+import com.github.technus.tectech.magicAddon.definitions.iElementalAspect;
+import com.github.technus.tectech.thing.metaTileEntity.multi.GT_MetaTileEntity_MultiblockBase_EM;
+import net.minecraft.tileentity.TileEntity;
+import thaumcraft.api.aspects.Aspect;
+import thaumcraft.api.aspects.AspectList;
+import thaumcraft.api.aspects.IAspectContainer;
+import thaumcraft.common.tiles.TileEssentiaReservoir;
+import thaumcraft.common.tiles.TileJarFillable;
+
+import static com.github.technus.tectech.magicAddon.definitions.AspectDefinitionCompat.aspectToDef;
+
+/**
+ * Created by Tec on 21.05.2017.
+ */
+public class EssentiaCompatEnabled extends EssentiaCompat {
+ @Override
+ public void run() {
+
+ }