aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTechnus <daniel112092@gmail.com>2017-12-30 14:41:48 +0100
committerTechnus <daniel112092@gmail.com>2017-12-30 14:41:48 +0100
commitdafe0cdaa493797c87463619828932acd138922b (patch)
tree9614e0f1746b6ddcfb1d58f29ba3974b2d63f8df /src
parent701be18f07ad3562a059cf934c00fa2fb2bb53ef (diff)
downloadGT5-Unofficial-dafe0cdaa493797c87463619828932acd138922b.tar.gz
GT5-Unofficial-dafe0cdaa493797c87463619828932acd138922b.tar.bz2
GT5-Unofficial-dafe0cdaa493797c87463619828932acd138922b.zip
Commands fixes changes.
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/github/technus/tectech/TecTech.java6
-rw-r--r--src/main/java/com/github/technus/tectech/Util.java46
-rw-r--r--src/main/java/com/github/technus/tectech/compatibility/thaumcraft/definitions/dComplexAspectDefinition.java2
-rw-r--r--src/main/java/com/github/technus/tectech/elementalMatter/core/commands/GiveEM.java159
-rw-r--r--src/main/java/com/github/technus/tectech/elementalMatter/core/commands/ListEM.java96
-rw-r--r--src/main/java/com/github/technus/tectech/elementalMatter/core/templates/cElementalDefinition.java10
-rw-r--r--src/main/java/com/github/technus/tectech/elementalMatter/core/templates/cElementalPrimitive.java12
-rw-r--r--src/main/java/com/github/technus/tectech/elementalMatter/core/templates/iElementalDefinition.java4
-rw-r--r--src/main/java/com/github/technus/tectech/elementalMatter/definitions/complex/atom/dAtomDefinition.java8
-rw-r--r--src/main/java/com/github/technus/tectech/elementalMatter/definitions/complex/hadron/dHadronDefinition.java2
-rw-r--r--src/main/java/com/github/technus/tectech/loader/BloodyRecipeLoader.java4
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_quantizer.java6
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_scanner.java6
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/Behaviour_Centrifuge.java31
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/Behaviour_ElectromagneticSeparator.java32
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/Behaviour_Scanner.java (renamed from src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/Behaviour_Mixer.java)4
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/GT_MetaTileEntity_EM_machine.java103
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/other todo2
18 files changed, 458 insertions, 75 deletions
diff --git a/src/main/java/com/github/technus/tectech/TecTech.java b/src/main/java/com/github/technus/tectech/TecTech.java
index 21c8d6dd39..9a4e803f67 100644
--- a/src/main/java/com/github/technus/tectech/TecTech.java
+++ b/src/main/java/com/github/technus/tectech/TecTech.java
@@ -2,6 +2,8 @@ package com.github.technus.tectech;
import com.github.technus.tectech.auxiliary.Reference;
import com.github.technus.tectech.auxiliary.TecTechConfig;
+import com.github.technus.tectech.elementalMatter.core.commands.ListEM;
+import com.github.technus.tectech.elementalMatter.core.commands.GiveEM;
import com.github.technus.tectech.loader.MainLoader;
import com.github.technus.tectech.loader.ModGuiHandler;
import com.github.technus.tectech.proxy.CommonProxy;
@@ -97,6 +99,10 @@ public class TecTech {
@Mod.EventHandler
public void serverLoad(FMLServerStartingEvent pEvent) {
+ if(DEBUG_MODE) {
+ pEvent.registerServerCommand(new GiveEM());
+ pEvent.registerServerCommand(new ListEM());
+ }
}
@Mod.EventHandler
diff --git a/src/main/java/com/github/technus/tectech/Util.java b/src/main/java/com/github/technus/tectech/Util.java
index e8786e4b84..c699077110 100644
--- a/src/main/java/com/github/technus/tectech/Util.java
+++ b/src/main/java/com/github/technus/tectech/Util.java
@@ -5,7 +5,6 @@ import cpw.mods.fml.common.registry.GameRegistry;
import gregtech.api.GregTech_API;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
-import gregtech.api.objects.GT_ItemStack;
import gregtech.api.util.GT_OreDictUnificator;
import gregtech.api.util.GT_Utility;
import net.minecraft.block.Block;
@@ -911,7 +910,7 @@ public final class Util {
return (testedValue&setBits)==setBits;
}
- public static class TT_ItemStack {
+ public static class TT_ItemStack implements Comparable<TT_ItemStack>{
public final Item mItem;
public final int mStackSize;
public final int mMetaData;
@@ -925,40 +924,43 @@ public final class Util {
public TT_ItemStack(ItemStack aStack) {
if(aStack==null){
mItem=null;
- mStackSize=0;
- mMetaData=0;
+ mStackSize=mMetaData=0;
}else{
mItem=aStack.getItem();
mStackSize=aStack.stackSize;
- mMetaData=aStack.getItemDamage();
+ mMetaData=Items.feather.getDamage(aStack);
}
}
- public TT_ItemStack(int aHashCode) {
- this(GT_Utility.intToStack(aHashCode));
- }
-
- public final ItemStack toStack() {
- return this.mItem == null?null:new ItemStack(this.mItem, 1, this.mMetaData);
- }
-
- public final boolean isStackEqual(ItemStack aStack) {
- return GT_Utility.areStacksEqual(this.toStack(), aStack);
- }
-
- public final boolean isStackEqual(GT_ItemStack aStack) {
- return GT_Utility.areStacksEqual(this.toStack(), aStack.toStack());
+ @Override
+ public int compareTo(TT_ItemStack o) {
+ if(mMetaData>o.mMetaData) return 1;
+ if(mMetaData<o.mMetaData) return -1;
+ if(mStackSize>o.mStackSize) return 1;
+ if(mStackSize<o.mStackSize) return -1;
+ if(mItem!=null && o.mItem!=null) return mItem.getUnlocalizedName().compareTo(o.mItem.getUnlocalizedName());
+ if(mItem==null && o.mItem==null) return 0;
+ if(mItem!=null) return 1;
+ return -1;
}
+ @Override
public boolean equals(Object aStack) {
return aStack == this ||
(aStack instanceof TT_ItemStack &&
- (((TT_ItemStack) aStack).mItem == this.mItem &&
- ((TT_ItemStack) aStack).mMetaData == this.mMetaData));
+ ((mItem==((TT_ItemStack) aStack).mItem) || ((TT_ItemStack) aStack).mItem.getUnlocalizedName().equals(this.mItem.getUnlocalizedName())) &&
+ ((TT_ItemStack) aStack).mStackSize == this.mStackSize &&
+ ((TT_ItemStack) aStack).mMetaData == this.mMetaData);
}
+ @Override
public int hashCode() {
- return GT_Utility.stackToInt(this.toStack());
+ return (mItem!=null?mItem.getUnlocalizedName().hashCode():0) ^ (mMetaData << 16) ^ (mStackSize<<24);
+ }
+
+ @Override
+ public String toString() {
+ return Integer.toString(hashCode())+' '+(mItem==null?"null":mItem.getUnlocalizedName())+' '+mMetaData+' '+mStackSize;
}
}
}
diff --git a/src/main/java/com/github/technus/tectech/compatibility/thaumcraft/definitions/dComplexAspectDefinition.java b/src/main/java/com/github/technus/tectech/compatibility/thaumcraft/definitions/dComplexAspectDefinition.java
index e513240dac..3d29927a6c 100644
--- a/src/main/java/com/github/technus/tectech/compatibility/thaumcraft/definitions/dComplexAspectDefinition.java
+++ b/src/main/java/com/github/technus/tectech/compatibility/thaumcraft/definitions/dComplexAspectDefinition.java
@@ -121,7 +121,7 @@ public final class dComplexAspectDefinition extends cElementalDefinition impleme
return nbt;
}
- public static iElementalDefinition fromNBT(NBTTagCompound nbt) {
+ public static dComplexAspectDefinition fromNBT(NBTTagCompound nbt) {
cElementalDefinitionStack[] stacks = new cElementalDefinitionStack[nbt.getInteger("i")];
for (int i = 0; i < stacks.length; i++) {
stacks[i] = cElementalDefinitionStack.fromNBT(nbt.getCompoundTag(Integer.toString(i)));
diff --git a/src/main/java/com/github/technus/tectech/elementalMatter/core/commands/GiveEM.java b/src/main/java/com/github/technus/tectech/elementalMatter/core/commands/GiveEM.java
new file mode 100644
index 0000000000..36a41ca323
--- /dev/null
+++ b/src/main/java/com/github/technus/tectech/elementalMatter/core/commands/GiveEM.java
@@ -0,0 +1,159 @@
+package com.github.technus.tectech.elementalMatter.core.commands;
+
+import com.github.technus.tectech.TecTech;
+import com.github.technus.tectech.elementalMatter.core.cElementalInstanceStackMap;
+import com.github.technus.tectech.elementalMatter.core.cElementalMutableDefinitionStackMap;
+import com.github.technus.tectech.elementalMatter.core.stacks.cElementalDefinitionStack;
+import com.github.technus.tectech.elementalMatter.core.stacks.cElementalInstanceStack;
+import com.github.technus.tectech.elementalMatter.core.templates.cElementalDefinition;
+import com.github.technus.tectech.elementalMatter.core.templates.cElementalPrimitive;
+import com.github.technus.tectech.elementalMatter.core.templates.iElementalDefinition;
+import com.github.technus.tectech.thing.item.DebugElementalInstanceContainer_EM;
+import net.minecraft.command.ICommand;
+import net.minecraft.command.ICommandSender;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.entity.player.EntityPlayerMP;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.util.ChatComponentText;
+
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+import static com.github.technus.tectech.auxiliary.TecTechConfig.DEBUG_MODE;
+import static com.github.technus.tectech.elementalMatter.definitions.primitive.cPrimitiveDefinition.nbtE__;
+
+/**
+ * Created by danie_000 on 30.12.2017.
+ */
+public class GiveEM implements ICommand {
+ ArrayList<String> aliases=new ArrayList<>();
+
+ public GiveEM(){
+ aliases.add("em_give");
+ aliases.add("give_em");
+ }
+
+ @Override
+ public void processCommand(ICommandSender sender, String[] args) {
+ if (sender instanceof EntityPlayerMP && !sender.getEntityWorld().isRemote) {
+ if(args.length < 3) {
+ sender.addChatMessage(new ChatComponentText(getCommandUsage(sender)));
+ }else{
+ TecTech.Logger.info("Spawninig EM for "+((EntityPlayerMP) sender).getDisplayName()+" - "+Arrays.toString(args));
+
+ ArrayList<String> list=new ArrayList<>();
+ list.addAll(Arrays.asList(args));
+ String energy=list.remove(0);
+
+ cElementalDefinitionStack def= getDefinitionStack(list);
+ cElementalInstanceStack instanceStack=new cElementalInstanceStack(def,1,0,Long.parseLong(energy));
+
+ sender.addChatMessage(new ChatComponentText(instanceStack.definition.getSymbol()+" - "+instanceStack.definition.getName()));
+
+ cElementalInstanceStackMap instanceMap=new cElementalInstanceStackMap(instanceStack);
+
+ ItemStack itemStack=new ItemStack(DebugElementalInstanceContainer_EM.INSTANCE);
+ NBTTagCompound contents=new NBTTagCompound();
+ contents.setTag("info", instanceMap.getInfoNBT());
+ contents.setTag("content", instanceMap.toNBT());
+ itemStack.setTagCompound(contents);
+
+ ((EntityPlayerMP) sender).inventory.addItemStackToInventory(itemStack);
+ }
+ }
+ }
+
+ private cElementalDefinitionStack getDefinitionStack(ArrayList<String> args){
+ if(args.get(0).equals("<")){
+ args.remove(0);
+ return null;
+ }
+ long amount=Long.parseLong(args.remove(0));
+ try{
+ int id=Integer.parseInt(args.get(0));
+ args.remove(0);
+ iElementalDefinition primitive=cElementalPrimitive.getBindsPrimitive().get(id);
+ return new cElementalDefinitionStack(primitive,amount);
+ }catch (NumberFormatException e){
+ byte clazz = (byte) args.remove(0).charAt(0);
+ Method constructor = cElementalDefinition.getBindsComplex().get(clazz);
+
+ cElementalMutableDefinitionStackMap stacks=new cElementalMutableDefinitionStackMap();
+ while(args.size()>0){
+ cElementalDefinitionStack tempStack=getDefinitionStack(args);
+ if(tempStack==null) {
+ break;
+ }else {
+ stacks.putUnify(tempStack);
+ }
+ }
+
+ try {
+ return ((iElementalDefinition) constructor.invoke(null, stacks.toNBT())).getStackForm(amount);
+ } catch (Exception e1) {
+ if (DEBUG_MODE) {
+ e.printStackTrace();
+ }
+ return nbtE__.getStackForm(amount);
+ }
+ }
+ }
+
+ @Override
+ public boolean isUsernameIndex(String[] p_82358_1_, int p_82358_2_) {
+ return false;
+ }
+
+ @Override
+ public List<String> getCommandAliases() {
+ return aliases;
+ }
+
+ @Override
+ public String getCommandName() {
+ return aliases.get(0);
+ }
+
+ @Override
+ public List<String> addTabCompletionOptions(ICommandSender sender, String[] args) {
+ if(args.length==2){
+ return completionsForClassOrID();
+ }
+ return null;
+ }
+
+ private List<String> completionsForClassOrID(){
+ ArrayList<String> strings=new ArrayList<>(8);
+ Map<Byte,Method> binds= cElementalDefinition.getBindsComplex();
+ for (Map.Entry<Byte,Method> e:binds.entrySet()) {
+ strings.add(String.valueOf((char)e.getKey().byteValue()));
+ }
+ Map<Integer, cElementalPrimitive> bindsBO = cElementalPrimitive.getBindsPrimitive();
+ for (Map.Entry<Integer,cElementalPrimitive> e:bindsBO.entrySet()) {
+ strings.add(String.valueOf(e.getKey().byteValue()));
+ }
+ return strings;
+ }
+
+ @Override
+ public String getCommandUsage(ICommandSender p_71518_1_) {
+ return "em_give energy count classOrId (count classOrId , ... <) if complex";
+ }
+
+ @Override
+ public int compareTo(Object o) {
+ if(o instanceof ICommand){
+ return getCommandName().compareTo(((ICommand) o).getCommandName());
+ }
+ return 0;
+ }
+
+ @Override
+ public boolean canCommandSenderUseCommand(ICommandSender sender) {
+ return true;
+ }
+}
diff --git a/src/main/java/com/github/technus/tectech/elementalMatter/core/commands/ListEM.java b/src/main/java/com/github/technus/tectech/elementalMatter/core/commands/ListEM.java
new file mode 100644
index 0000000000..2d296c1c9c
--- /dev/null
+++ b/src/main/java/com/github/technus/tectech/elementalMatter/core/commands/ListEM.java
@@ -0,0 +1,96 @@
+package com.github.technus.tectech.elementalMatter.core.commands;
+
+import com.github.technus.tectech.elementalMatter.core.templates.cElementalDefinition;
+import com.github.technus.tectech.elementalMatter.core.templates.cElementalPrimitive;
+import com.github.technus.tectech.elementalMatter.core.templates.iElementalDefinition;
+import net.minecraft.command.ICommand;
+import net.minecraft.command.ICommandSender;
+import net.minecraft.util.ChatComponentText;
+
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Created by danie_000 on 30.12.2017.
+ */
+public class ListEM implements ICommand {
+ ArrayList<String> aliases=new ArrayList<>();
+
+ public ListEM(){
+ aliases.add("em_list");
+ aliases.add("list_em");
+ }
+
+ @Override
+ public void processCommand(ICommandSender sender, String[] args) {
+ if (!sender.getEntityWorld().isRemote) {
+ if(args.length == 0) {
+ sender.addChatMessage(new ChatComponentText(" Available Classes: tag - name"));
+ Map<Byte,Method> binds= cElementalDefinition.getBindsComplex();
+ for (Map.Entry<Byte,Method> e:binds.entrySet()) {
+ sender.addChatMessage(new ChatComponentText(String.valueOf((char)e.getKey().byteValue())+" - "+e.getValue().getReturnType().getSimpleName()));
+ }
+ }else if(args.length==1){
+ sender.addChatMessage(new ChatComponentText(" Available Primitives: symbol - name"));
+ if(args[0].equals(String.valueOf((char)cElementalPrimitive.nbtType))){
+ Map<Integer, cElementalPrimitive> bindsBO = cElementalPrimitive.getBindsPrimitive();
+ for (Map.Entry<Integer,cElementalPrimitive> e:bindsBO.entrySet()) {
+ sender.addChatMessage(new ChatComponentText(e.getKey() + " - "+e.getValue().getName()));
+ }
+ }else{
+ sender.addChatMessage(new ChatComponentText("Complex definition - needs contents"));
+ }
+ }else{
+ sender.addChatMessage(new ChatComponentText(getCommandUsage(sender)));
+ }
+ }
+ }
+
+ @Override
+ public boolean isUsernameIndex(String[] p_82358_1_, int p_82358_2_) {
+ return false;
+ }
+
+ @Override
+ public List<String> getCommandAliases() {
+ return aliases;
+ }
+
+ @Override
+ public String getCommandName() {
+ return aliases.get(0);
+ }
+
+ @Override
+ public List<String> addTabCompletionOptions(ICommandSender sender, String[] args) {
+ if(args.length==0){
+ Map<Byte,Method> binds= cElementalDefinition.getBindsComplex();
+ ArrayList<String> strings=new ArrayList<>(binds.size());
+ for (Map.Entry<Byte,Method> e:binds.entrySet()) {
+ strings.add(String.valueOf((char)e.getKey().byteValue())+' '+e.getValue().getReturnType().getSimpleName());
+ }
+ return strings;
+ }
+ return null;
+ }
+
+ @Override
+ public String getCommandUsage(ICommandSender p_71518_1_) {
+ return "em_list (optional class tag)";
+ }
+
+ @Override
+ public int compareTo(Object o) {
+ if(o instanceof ICommand){
+ return getCommandName().compareTo(((ICommand) o).getCommandName());
+ }
+ return 0;
+ }
+
+ @Override
+ public boolean canCommandSenderUseCommand(ICommandSender sender) {
+ return true;
+ }
+}
diff --git a/src/main/java/com/github/technus/tectech/elementalMatter/core/templates/cElementalDefinition.java b/src/main/java/com/github/technus/tectech/elementalMatter/core/templates/cElementalDefinition.java
index 6ae32c00c3..505bb5ab48 100644
--- a/src/main/java/com/github/technus/tectech/elementalMatter/core/templates/cElementalDefinition.java
+++ b/src/main/java/com/github/technus/tectech/elementalMatter/core/templates/cElementalDefinition.java
@@ -25,13 +25,17 @@ public abstract class cElementalDefinition extends iElementalDefinition {
protected static void addCreatorFromNBT(byte shortcutNBT, Method constructorFromNBT,byte classID) {
if(nbtCreationBind.put(shortcutNBT, constructorFromNBT)!=null) {
- throw new Error("Duplicate NBT shortcut! " + shortcutNBT);
+ throw new Error("Duplicate NBT shortcut! " + shortcutNBT + " used for NBT based creation");
}
if(!classSet.add(classID)) {
- throw new Error("Duplicate Class ID! " + classID);
+ throw new Error("Duplicate Class ID! " + classID + " used for class comparison");
}
}
+ public static Map<Byte, Method> getBindsComplex(){
+ return nbtCreationBind;
+ }
+
@Override
public final cElementalDefinition clone() {
return this;//IMMUTABLE
@@ -96,7 +100,7 @@ public abstract class cElementalDefinition extends iElementalDefinition {
}
@Override
- public final cElementalDefinitionStack getStackForm(int i) {
+ public final cElementalDefinitionStack getStackForm(long i) {
return new cElementalDefinitionStack(this,i);
}
diff --git a/src/main/java/com/github/technus/tectech/elementalMatter/core/templates/cElementalPrimitive.java b/src/main/java/com/github/technus/tectech/elementalMatter/core/templates/cElementalPrimitive.java
index b6a877a024..ab571e9d4c 100644
--- a/src/main/java/com/github/technus/tectech/elementalMatter/core/templates/cElementalPrimitive.java
+++ b/src/main/java/com/github/technus/tectech/elementalMatter/core/templates/cElementalPrimitive.java
@@ -25,9 +25,13 @@ import static com.github.technus.tectech.thing.metaTileEntity.multi.GT_MetaTileE
* EXTEND THIS TO ADD NEW PRIMITIVES, WATCH OUT FOR ID'S!!! (-1 to 32 can be assumed as used)
*/
public abstract class cElementalPrimitive extends cElementalDefinition {
- private static final byte nbtType = (byte) 'p';
+ public static final byte nbtType = (byte) 'p';
- public static final Map<Integer, iElementalDefinition> bindsBO = new HashMap<>();
+ private static final Map<Integer, cElementalPrimitive> bindsBO = new HashMap<>();
+
+ public static Map<Integer, cElementalPrimitive> getBindsPrimitive() {
+ return bindsBO;
+ }
public final String name;
public final String symbol;
@@ -173,8 +177,8 @@ public abstract class cElementalPrimitive extends cElementalDefinition {
return nbt;
}
- public static iElementalDefinition fromNBT(NBTTagCompound content) {
- iElementalDefinition primitive = bindsBO.get(content.getInteger("c"));
+ public static cElementalPrimitive fromNBT(NBTTagCompound content) {
+ cElementalPrimitive primitive = bindsBO.get(content.getInteger("c"));
return primitive == null ? null__ : primitive;
}
diff --git a/src/main/java/com/github/technus/tectech/elementalMatter/core/templates/iElementalDefinition.java b/src/main/java/com/github/technus/tectech/elementalMatter/core/templates/iElementalDefinition.java
index 034c90c72e..23d2df06a8 100644
--- a/src/main/java/com/github/technus/tectech/elementalMatter/core/templates/iElementalDefinition.java
+++ b/src/main/java/com/github/technus/tectech/elementalMatter/core/templates/iElementalDefinition.java
@@ -64,12 +64,12 @@ public abstract class iElementalDefinition implements Comparable<iElementalDefin
public abstract NBTTagCompound toNBT();
- public abstract cElementalDefinitionStack getStackForm(int i);
+ public abstract cElementalDefinitionStack getStackForm(long i);
@Override
public abstract iElementalDefinition clone();
- final int compareClassID(iElementalDefinition obj) {
+ final /*default*/ int compareClassID(iElementalDefinition obj) {
return (int) getClassType() - obj.getClassType();
}
}
diff --git a/src/main/java/com/github/technus/tectech/elementalMatter/definitions/complex/atom/dAtomDefinition.java b/src/main/java/com/github/technus/tectech/elementalMatter/definitions/complex/atom/dAtomDefinition.java
index df795bd9ed..4fc6594a40 100644
--- a/src/main/java/com/github/technus/tectech/elementalMatter/definitions/complex/atom/dAtomDefinition.java
+++ b/src/main/java/com/github/technus/tectech/elementalMatter/definitions/complex/atom/dAtomDefinition.java
@@ -361,19 +361,19 @@ public final class dAtomDefinition extends cElementalDefinition {
int element = Math.abs(this.element);
boolean negative = element < 0;
try {
- return (negative ? "~" : "") + nomenclature.Symbol[element] + " N:" + neutralCount + " I:" + (neutralCount+element) + " C: " + getCharge();
+ return (negative ? "~" : "") + nomenclature.Symbol[element] + " N:" + neutralCount + " I:" + (neutralCount+element) + " C:" + getCharge();
} catch (Exception e) {
if (DEBUG_MODE) {
e.printStackTrace();
}
try {
int s100 = element / 100, s1 = element / 10 % 10, s10 = element % 10;
- return (negative ? "~" : "") + nomenclature.SymbolIUPAC[10 + s100] + nomenclature.SymbolIUPAC[s10] + nomenclature.SymbolIUPAC[s1] + " N:" + neutralCount + " I:" + (neutralCount+element) + " C: " + getCharge();
+ return (negative ? "~" : "") + nomenclature.SymbolIUPAC[10 + s100] + nomenclature.SymbolIUPAC[s10] + nomenclature.SymbolIUPAC[s1] + " N:" + neutralCount + " I:" + (neutralCount+element) + " C:" + getCharge();
} catch (Exception E) {
if (DEBUG_MODE) {
e.printStackTrace();
}
- return (negative ? "~" : "") + "? N:" + neutralCount + " I:" + (neutralCount+element) + " C: " + getCharge();
+ return (negative ? "~" : "") + "? N:" + neutralCount + " I:" + (neutralCount+element) + " C:" + getCharge();
}
}
}
@@ -1295,7 +1295,7 @@ public final class dAtomDefinition extends cElementalDefinition {
return nbt;
}
- public static iElementalDefinition fromNBT(NBTTagCompound nbt) {
+ public static dAtomDefinition fromNBT(NBTTagCompound nbt) {
cElementalDefinitionStack[] stacks = new cElementalDefinitionStack[nbt.getInteger("i")];
for (int i = 0; i < stacks.length; i++) {
stacks[i] = cElementalDefinitionStack.fromNBT(nbt.getCompoundTag(Integer.toString(i)));
diff --git a/src/main/java/com/github/technus/tectech/elementalMatter/definitions/complex/hadron/dHadronDefinition.java b/src/main/java/com/github/technus/tectech/elementalMatter/definitions/complex/hadron/dHadronDefinition.java
index 29d583d613..34fa55bb04 100644
--- a/src/main/java/com/github/technus/tectech/elementalMatter/definitions/complex/hadron/dHadronDefinition.java
+++ b/src/main/java/com/github/technus/tectech/elementalMatter/definitions/complex/hadron/dHadronDefinition.java
@@ -346,7 +346,7 @@ public final class dHadronDefinition extends cElementalDefinition {//TODO Optimi
return nbt;
}
- public static iElementalDefinition fromNBT(NBTTagCompound nbt) {
+ public static dHadronDefinition fromNBT(NBTTagCompound nbt) {
cElementalDefinitionStack[] stacks = new cElementalDefinitionStack[nbt.getInteger("i")];
for (int i = 0; i < stacks.length; i++) {
stacks[i] = cElementalDefinitionStack.fromNBT(nbt.getCompoundTag(Integer.toString(i)));
diff --git a/src/main/java/com/github/technus/tectech/loader/BloodyRecipeLoader.java b/src/main/java/com/github/technus/tectech/loader/BloodyRecipeLoader.java
index 67e1eef9a1..38f6610e48 100644
--- a/src/main/java/com/github/technus/tectech/loader/BloodyRecipeLoader.java
+++ b/src/main/java/com/github/technus/tectech/loader/BloodyRecipeLoader.java
@@ -21,6 +21,8 @@ import net.minecraftforge.fluids.FluidStack;
public class BloodyRecipeLoader implements Runnable {
@Override
public void run() {
+ //todo fix recipes (of assembler)
+
//Quantum Glass
GT_Values.RA.addAssemblerRecipe(new ItemStack[]{
CustomItemList.eM_Containment.get(1),
@@ -377,7 +379,7 @@ public class BloodyRecipeLoader implements Runnable {
GT_MetaTileEntity_EM_machine.registerBehaviour(new Behaviour_Centrifuge(11),ItemList.Machine_IV_Centrifuge.get(32));
GT_MetaTileEntity_EM_machine.registerBehaviour(new Behaviour_Centrifuge(12),ItemList.Machine_IV_Centrifuge.get(64));
}
-
+
GT_MetaTileEntity_EM_machine.registerBehaviour(new Behaviour_ElectromagneticSeparator(6),ItemList.Machine_IV_ElectromagneticSeparator.get(1));
try {
GT_MetaTileEntity_EM_machine.registerBehaviour(new Behaviour_ElectromagneticSeparator(7),ItemList.valueOf("Machine_LuV_ElectromagneticSeparator").get(1));
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 896746b359..ffe9b45a94 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
@@ -95,7 +95,7 @@ public class GT_MetaTileEntity_EM_quantizer extends GT_MetaTileEntity_Multiblock
}
@Override
- public boolean checkRecipe_EM(ItemStack itemStack) {//TODO implement by item quantization, implement instance quantization
+ public boolean checkRecipe_EM(ItemStack itemStack) {//TODO implement instance quantization
if (GregTech_API.sPostloadFinished) {
ArrayList<ItemStack> storedInputs = getStoredInputs();
ItemStack[] inI = storedInputs.toArray(new ItemStack[storedInputs.size()]);
@@ -104,10 +104,10 @@ public class GT_MetaTileEntity_EM_quantizer extends GT_MetaTileEntity_Multiblock
//ITEM STACK quantization
aItemQuantizationInfo aIQI = bTransformationInfo.itemQuantization.get(new aItemQuantizationInfo(is, false, null));
if (aIQI == null) {
- aIQI = bTransformationInfo.itemQuantization.get(new aItemQuantizationInfo(is, true, null));
+ aIQI = bTransformationInfo.itemQuantization.get(new aItemQuantizationInfo(is, true, null));//todo check if works?
}
if (aIQI == null) {
- //ORE DICT quantization
+ //ORE DICT quantization //todo fix for uranium?
int[] oreIDs = OreDictionary.getOreIDs(is);
for (int ID : oreIDs) {
if (DEBUG_MODE) {
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_scanner.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_scanner.java
index 4672640770..eab87fe71a 100644
--- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_scanner.java
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_scanner.java
@@ -385,9 +385,9 @@ public class GT_MetaTileEntity_EM_scanner extends GT_MetaTileEntity_MultiblockBa
}else if(objectsScanned!=null && CustomItemList.scanContainer.isStackEqual(mInventory[1], false, true)){
ElementalDefinitionScanStorage_EM.setContent(mInventory[1],objectsScanned,scanComplexity);
}
- quantumStuff(false);
objectResearched=null;
totalComputationRemaining =0;
+ quantumStuff(false);
}
@Override
@@ -434,16 +434,16 @@ public class GT_MetaTileEntity_EM_scanner extends GT_MetaTileEntity_MultiblockBa
@Override
public void onRemoval() {
- super.onRemoval();
quantumStuff(false);
+ super.onRemoval();
}
@Override
public void stopMachine() {
+ quantumStuff(false);
super.stopMachine();
totalComputationRequired = totalComputationRemaining =0;
objectResearched=null;
- quantumStuff(false);
}
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/Behaviour_Centrifuge.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/Behaviour_Centrifuge.java
index be582e1d87..c1ca644c56 100644
--- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/Behaviour_Centrifuge.java
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/Behaviour_Centrifuge.java
@@ -11,6 +11,7 @@ import java.util.Arrays;
import java.util.Comparator;
import static com.github.technus.tectech.Util.V;
+import static com.github.technus.tectech.auxiliary.TecTechConfig.DEBUG_MODE;
/**
* Created by danie_000 on 24.12.2017.
@@ -98,21 +99,24 @@ public class Behaviour_Centrifuge implements GT_MetaTileEntity_EM_machine.Behavi
cElementalInstanceStack[] stacks = input.values();
- float inputMass = input.getMass();
+ double inputMass = 0;
+ for (cElementalInstanceStack stack : stacks) {
+ inputMass += Math.abs(stack.getMass());
+ }
float excessMass = 0;
- while (inputMass > maxCapacity || -inputMass > maxCapacity) {
+ while (inputMass > maxCapacity) {
cElementalInstanceStack randomStack = stacks[TecTech.Rnd.nextInt(stacks.length)];
int amountToRemove = TecTech.Rnd.nextInt((int) randomStack.getAmount()) + 1;
randomStack.amount -= amountToRemove;//mutates the parent InstanceStackMap
if (randomStack.amount <= 0) {
input.remove(randomStack.definition);
}
- float mass = randomStack.getDefinition().getMass() * amountToRemove;
+ float mass = Math.abs(randomStack.getDefinition().getMass()) * amountToRemove;
excessMass += mass;
inputMass -= mass;
}
- inputMass = Math.abs(inputMass);
+ inputMass = Math.abs(input.getMass());
double RCF = getRCF(checkedAndFixedParameters[0]);
if (inputMass * RCF > maxForce) return new MultiblockControl<>(excessMass);//AND THEN IT EXPLODES
@@ -149,7 +153,13 @@ public class Behaviour_Centrifuge implements GT_MetaTileEntity_EM_machine.Behavi
for (cElementalInstanceStack stack : stacks) {
absMassPerOutput += Math.abs(stack.getMass());
}
+ if(DEBUG_MODE){
+ TecTech.Logger.info("absMass "+absMassPerOutput);
+ }
absMassPerOutput /= fractionCount;
+ if(DEBUG_MODE){
+ TecTech.Logger.info("absMassPerOutput "+absMassPerOutput);
+ }
nextFraction:
for (int fraction = 0; fraction < fractionCount - 1; fraction++) {
@@ -157,7 +167,13 @@ public class Behaviour_Centrifuge implements GT_MetaTileEntity_EM_machine.Behavi
for (int stackNo = 0; stackNo < stacks.length; stackNo++) {
if (stacks[stackNo] != null) {
double stackMass = Math.abs(stacks[stackNo].getMass());
- long amount = (long) (Math.abs(stacks[stackNo].definition.getMass()) / remaining);
+ long amount = (long) (remaining/Math.abs(stacks[stackNo].definition.getMass()));
+ //if(DEBUG_MODE){
+ // TecTech.Logger.info("stackMass "+stackMass);
+ // TecTech.Logger.info("defMass "+stacks[stackNo].definition.getMass());
+ // TecTech.Logger.info("remaining "+remaining);
+ // TecTech.Logger.info("amountToMoveAvailable "+amount+"/"+stacks[stackNo].amount);
+ //}
if (stackMass == 0) {
addRandomly(stacks[stackNo], outputs, fractionCount);
stacks[stackNo] = null;
@@ -170,6 +186,11 @@ public class Behaviour_Centrifuge implements GT_MetaTileEntity_EM_machine.Behavi
cElementalInstanceStack clone = stacks[stackNo].clone();
clone.amount = amount;
outputs[fraction].putReplace(clone);
+ stacks[stackNo].amount-=amount;
+ //if(DEBUG_MODE){
+ // TecTech.Logger.info("remainingAfter "+remaining);
+ // TecTech.Logger.info("amountCloneAfter "+clone.amount+"/"+stacks[stackNo].amount);
+ //}
} else {
continue nextFraction;
}
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/Behaviour_ElectromagneticSeparator.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/Behaviour_ElectromagneticSeparator.java
index 82d8c0d535..1d28db92c8 100644
--- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/Behaviour_ElectromagneticSeparator.java
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/Behaviour_ElectromagneticSeparator.java
@@ -25,7 +25,7 @@ public class Behaviour_ElectromagneticSeparator implements GT_MetaTileEntity_EM_
tier=(byte) desiredTier;
ticks =Math.max(20,(1<<(12-desiredTier))*20);
maxCapacity= dAtomDefinition.getSomethingHeavy().getMass()*(2<<tier);
- maxCharge=144*(1<<(tier-6));
+ maxCharge=144*(1<<(tier-5));
switch (tier){
case 12:
precisionFull=1;
@@ -55,9 +55,13 @@ public class Behaviour_ElectromagneticSeparator implements GT_MetaTileEntity_EM_
precisionFull=12;
precisionMinimal =3;
break;
+ case 5:
+ precisionFull=24;
+ precisionMinimal =6;
+ break;
default: precisionFull= precisionMinimal =Byte.MAX_VALUE;
}
- offsetMax=1<<(tier*2);
+ offsetMax=1<<((tier-8)<<1);
}
@Override
@@ -124,7 +128,7 @@ public class Behaviour_ElectromagneticSeparator implements GT_MetaTileEntity_EM_
te.setStatusOfParameterIn(1,0,GT_MetaTileEntity_MultiblockBase_EM.STATUS_OK);
}else if(offset>=-offsetMax){
te.setStatusOfParameterIn(1,0,GT_MetaTileEntity_MultiblockBase_EM.STATUS_LOW);
- }else if(offset<-offset){
+ }else if(offset<-offsetMax){
te.setStatusOfParameterIn(1,0,GT_MetaTileEntity_MultiblockBase_EM.STATUS_TOO_LOW);
check=false;
}else {
@@ -137,27 +141,29 @@ public class Behaviour_ElectromagneticSeparator implements GT_MetaTileEntity_EM_
@Override
public MultiblockControl<cElementalInstanceStackMap[]> process(cElementalInstanceStackMap[] inputs, double[] checkedAndFixedParameters) {
-
cElementalInstanceStackMap input = inputs[0];
if (input == null || input.isEmpty()) return null;//nothing in only valid input
cElementalInstanceStack[] stacks = input.values();
- float inputMass = input.getMass();
+ double inputMass = 0;
+ for (cElementalInstanceStack stack : stacks) {
+ inputMass += Math.abs(stack.getMass());
+ }
float excessMass = 0;
- while (inputMass > maxCapacity || -inputMass > maxCapacity) {
+ while (inputMass > maxCapacity) {
cElementalInstanceStack randomStack = stacks[TecTech.Rnd.nextInt(stacks.length)];
int amountToRemove = TecTech.Rnd.nextInt((int) randomStack.getAmount()) + 1;
randomStack.amount -= amountToRemove;//mutates the parent InstanceStackMap
if (randomStack.amount <= 0) {
input.remove(randomStack.definition);
}
- float mass = randomStack.getDefinition().getMass() * amountToRemove;
+ float mass = Math.abs(randomStack.getDefinition().getMass()) * amountToRemove;
excessMass += mass;
inputMass -= mass;
}
- long totalCharge=input.getCharge();
+ long totalCharge=Math.abs(input.getCharge());
if (totalCharge>maxCharge) return new MultiblockControl<>(excessMass);//AND THEN IT EXPLODES
int mEut=(int)(((double)totalCharge/(double) maxCharge)*V[tier]);
@@ -170,15 +176,15 @@ public class Behaviour_ElectromagneticSeparator implements GT_MetaTileEntity_EM_
outputs[i] = new cElementalInstanceStackMap();
}
+ double offsetIn=checkedAndFixedParameters[2];
double precisionFullIn=checkedAndFixedParameters[0];
double precisionMinimalIn=checkedAndFixedParameters[1];
- double levelsCount=precisionFullIn-precisionMinimalIn+1;
- double offset=checkedAndFixedParameters[2];
+ double levelsCountPlus1=precisionFullIn-precisionMinimalIn+1;
//take all from hatch handler and put into new map - this takes from hatch to inner data storage
stacks = input.takeAllToNewMap().values();//cleanup stacks
for(cElementalInstanceStack stack:stacks){
- double charge=stack.definition.getCharge()-offset;
+ double charge=stack.definition.getCharge()-offsetIn;
if(charge<precisionMinimalIn && charge>-precisionMinimalIn){
outputs[1].putReplace(stack);
}else if(charge>=precisionFullIn){
@@ -186,7 +192,7 @@ public class Behaviour_ElectromagneticSeparator implements GT_MetaTileEntity_EM_
}else if(charge<=-precisionFullIn){
outputs[0].putReplace(stack);
}else{
- long amount=(long)(stack.amount*((Math.abs(charge)-precisionMinimalIn+1)/levelsCount));
+ long amount=(long)(stack.amount*((Math.abs(charge)-precisionMinimalIn+1)/levelsCountPlus1));//todo check
if(amount>=stack.amount){
if(charge>0){
outputs[2].putReplace(stack);
@@ -208,6 +214,6 @@ public class Behaviour_ElectromagneticSeparator implements GT_MetaTileEntity_EM_
}
}
- return new MultiblockControl<>(outputs, mEut, 1, 0, 10000, mTicks, 0, excessMass);
+ return new MultiblockControl<>(outputs, mEut, 1+((int)Math.abs(offsetIn))/3, 0, 10000, mTicks, 0, excessMass);
}
}
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/Behaviour_Mixer.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/Behaviour_Scanner.java
index e8b1d7027f..020a71da5c 100644
--- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/Behaviour_Mixer.java
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/Behaviour_Scanner.java
@@ -6,9 +6,9 @@ import com.github.technus.tectech.thing.metaTileEntity.multi.base.MultiblockCont
/**
* Created by danie_000 on 24.12.2017.
*/
-public class Behaviour_Mixer implements GT_MetaTileEntity_EM_machine.Behaviour {
+public class Behaviour_Scanner implements GT_MetaTileEntity_EM_machine.Behaviour {
final int tier;
- public Behaviour_Mixer(int tier){
+ public Behaviour_Scanner(int tier){
this.tier=tier;
}
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/GT_MetaTileEntity_EM_machine.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/GT_MetaTileEntity_EM_machine.java
index a73548f63c..0936c1ad1e 100644
--- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/GT_MetaTileEntity_EM_machine.java
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/GT_MetaTileEntity_EM_machine.java
@@ -1,19 +1,26 @@
package com.github.technus.tectech.thing.metaTileEntity.multi.em_machine;
import com.github.technus.tectech.CommonValues;
+import com.github.technus.tectech.TecTech;
import com.github.technus.tectech.Util;
import com.github.technus.tectech.elementalMatter.core.cElementalInstanceStackMap;
+import com.github.technus.tectech.recipe.TT_recipe;
import com.github.technus.tectech.thing.block.QuantumGlassBlock;
+import com.github.technus.tectech.thing.block.QuantumStuffBlock;
import com.github.technus.tectech.thing.metaTileEntity.IConstructable;
import com.github.technus.tectech.thing.metaTileEntity.multi.base.GT_MetaTileEntity_MultiblockBase_EM;
import com.github.technus.tectech.thing.metaTileEntity.multi.base.MultiblockControl;
+import gregtech.api.enums.ItemList;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.objects.GT_ItemStack;
import gregtech.common.blocks.GT_Block_Machines;
import net.minecraft.block.Block;
+import net.minecraft.block.material.Material;
+import net.minecraft.init.Blocks;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumChatFormatting;
+import net.minecraftforge.common.util.ForgeDirection;
import java.util.BitSet;
import java.util.HashMap;
@@ -30,14 +37,24 @@ public class GT_MetaTileEntity_EM_machine extends GT_MetaTileEntity_MultiblockBa
public static final String machine = "EM Machinery";
//region structure
- private static final String[][] shape = new String[][]{{"B0", "A ", "0 - 0", "A ", "B0",}, {"A000", "00000", "00.00", "00000", "A000",}, {"A121", "1C1", "2C2", "1C1", "A121",}, {"A131", "1C1", "3C3", "1C1", "A131",}, {"A121", "1C1", "2C2", "1C1", "A121",}, {"A000", "00000", "00A00", "00000", "A000",}, {"B0", "A!!!", "0!\"!0", "A!!!", "B0",},};
+ private static final String[][] shape = new String[][]{
+ {"B0", "A ", "0 - 0", "A ", "B0",},
+ {"A000", "00000", "00.00", "00000", "A000",},
+ {"A121", "1C1", "2C2", "1C1", "A121",},
+ {"A131", "1C1", "3C3", "1C1", "A131",},
+ {"A121", "1C1", "2C2", "1C1", "A121",},
+ {"A000", "00000", "00A00", "00000", "A000",},
+ {"B0", "A!!!", "0!!!0", "A!!!", "B0",},};
private static final Block[] blockType = new Block[]{sBlockCasingsTT, QuantumGlassBlock.INSTANCE, sBlockCasingsTT, sBlockCasingsTT};
private static final byte[] blockMeta = new byte[]{4, 0, 5, 6};
- private static final String[] addingMethods = new String[]{"addClassicToMachineList", "addElementalToMachineList", "addElementalInputToMachineList"};
- private static final short[] casingTextures = new short[]{textureOffset, textureOffset + 4, textureOffset + 4};
- private static final Block[] blockTypeFallback = new Block[]{sBlockCasingsTT, sBlockCasingsTT, sBlockCasingsTT};
- private static final byte[] blockMetaFallback = new byte[]{0, 4, 4};
- private static final String[] description = new String[]{EnumChatFormatting.AQUA + "Hint Details:", "1 - Classic Hatches or High Power Casing", "2 - Elemental Hatches or Molecular Casing", "2 - Elemental Input Hatch",};
+ private static final String[] addingMethods = new String[]{"addClassicToMachineList", "addElementalToMachineList"};
+ private static final short[] casingTextures = new short[]{textureOffset, textureOffset + 4};
+ private static final Block[] blockTypeFallback = new Block[]{sBlockCasingsTT, sBlockCasingsTT};
+ private static final byte[] blockMetaFallback = new byte[]{0, 4};
+ private static final String[] description = new String[]{
+ EnumChatFormatting.AQUA + "Hint Details:",
+ "1 - Classic Hatches or High Power Casing",
+ "2 - Elemental Hatches or Molecular Casing",};
//endregion
public GT_MetaTileEntity_EM_machine(int aID, String aName, String aNameRegional) {
@@ -74,9 +91,41 @@ public class GT_MetaTileEntity_EM_machine extends GT_MetaTileEntity_MultiblockBa
}
@Override
+ public void onFirstTick(IGregTechTileEntity aBaseMetaTileEntity) {
+ if(aBaseMetaTileEntity.isServerSide()) {
+ quantumStuff(aBaseMetaTileEntity.isActive());
+ }
+ }
+
+ @Override
+ public void onPreTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) {
+ if(aBaseMetaTileEntity.isActive() && (aTick & 0x2)==0 && aBaseMetaTileEntity.isClientSide()){
+ int xDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetX*2+aBaseMetaTileEntity.getXCoord();
+ int yDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetY*2+aBaseMetaTileEntity.getYCoord();
+ int zDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetZ*2+aBaseMetaTileEntity.getZCoord();
+ aBaseMetaTileEntity.getWorld().markBlockRangeForRenderUpdate(xDir,yDir,zDir,xDir,yDir,zDir);
+ }
+ }
+
+ @Override
+ public void onRemoval() {
+ quantumStuff(false);
+ super.onRemoval();
+ }
+
+ @Override
public boolean checkRecipe_EM(ItemStack itemStack) {
- Behaviour currentBehaviour = GT_MetaTileEntity_EM_machine.map.get(new GT_ItemStack(itemStack));
+ Behaviour currentBehaviour = GT_MetaTileEntity_EM_machine.map.get(new Util.TT_ItemStack(itemStack));
+ //TecTech.Logger.info("Looking for "+new Util.TT_ItemStack(itemStack).toString());
if (currentBehaviour == null) {
+ setStatusOfParameterIn(0,0,GT_MetaTileEntity_MultiblockBase_EM.STATUS_UNUSED);
+ setStatusOfParameterIn(0,1,GT_MetaTileEntity_MultiblockBase_EM.STATUS_UNUSED);
+ setStatusOfParameterIn(1,0,GT_MetaTileEntity_MultiblockBase_EM.STATUS_UNUSED);
+ setStatusOfParameterIn(1,1,GT_MetaTileEntity_MultiblockBase_EM.STATUS_UNUSED);
+ setStatusOfParameterIn(2,0,GT_MetaTileEntity_MultiblockBase_EM.STATUS_UNUSED);
+ setStatusOfParameterIn(2,1,GT_MetaTileEntity_MultiblockBase_EM.STATUS_UNUSED);
+ setStatusOfParameterIn(3,0,GT_MetaTileEntity_MultiblockBase_EM.STATUS_UNUSED);
+ setStatusOfParameterIn(3,1,GT_MetaTileEntity_MultiblockBase_EM.STATUS_UNUSED);
return false;
}
//mux input
@@ -137,7 +186,15 @@ public class GT_MetaTileEntity_EM_machine extends GT_MetaTileEntity_MultiblockBa
mMaxProgresstime = control.getMaxProgressTime();
eRequiredData = control.getRequiredData();
mEfficiencyIncrease = control.getEffIncrease();
- return polluteEnvironment(control.getPollutionToAdd());
+ boolean polluted=polluteEnvironment(control.getPollutionToAdd());
+ quantumStuff(polluted);
+ return polluted;
+ }
+
+ @Override
+ protected void afterRecipeCheckFailed() {
+ quantumStuff(false);
+ super.afterRecipeCheckFailed();
}
@Override
@@ -175,10 +232,17 @@ public class GT_MetaTileEntity_EM_machine extends GT_MetaTileEntity_MultiblockBa
outputEM[i] = null;
}
}
+ quantumStuff(false);
//all other are handled by base multi block code - cleaning is automatic
}
@Override
+ public void stopMachine() {
+ quantumStuff(false);
+ super.stopMachine();
+ }
+
+ @Override
protected void parametersLoadDefault_EM() {//default routing table
setParameterPairIn_ClearOut(4, false, 1, 2);//I
setParameterPairIn_ClearOut(5, false, 3, 4);//I
@@ -263,11 +327,9 @@ public class GT_MetaTileEntity_EM_machine extends GT_MetaTileEntity_MultiblockBa
private static final HashMap<Util.TT_ItemStack, Behaviour> map = new HashMap<>();
- public static void registerBehaviour(Behaviour behaviour, Util.TT_ItemStack is) {
- map.put(is, behaviour);
- }
public static void registerBehaviour(Behaviour behaviour, ItemStack is) {
map.put(new Util.TT_ItemStack(is), behaviour);
+ TecTech.Logger.info("Registered EM machine behaviour "+behaviour.getClass().getSimpleName()+' '+new Util.TT_ItemStack(is).toString());
}
public interface Behaviour {
@@ -275,4 +337,23 @@ public class GT_MetaTileEntity_EM_machine extends GT_MetaTileEntity_MultiblockBa
MultiblockControl<cElementalInstanceStackMap[]> process(cElementalInstanceStackMap[] inputs, double[] checkedAndFixedParameters);
}
+
+ private void quantumStuff(boolean shouldExist){
+ IGregTechTileEntity base=getBaseMetaTileEntity();
+ if(base!=null && base.getWorld()!=null) {
+ int xDir = ForgeDirection.getOrientation(base.getBackFacing()).offsetX * 2+base.getXCoord();
+ int yDir = ForgeDirection.getOrientation(base.getBackFacing()).offsetY * 2+base.getYCoord();
+ int zDir = ForgeDirection.getOrientation(base.getBackFacing()).offsetZ * 2+base.getZCoord();
+ Block block = base.getWorld().getBlock(xDir, yDir, zDir);
+ if (shouldExist) {
+ if(block != null && block.getMaterial()== Material.air) {
+ base.getWorld().setBlock(xDir, yDir, zDir, QuantumStuffBlock.INSTANCE, 0, 2);
+ }
+ } else {
+ if (block instanceof QuantumStuffBlock) {
+ base.getWorld().setBlock(xDir, yDir, zDir, Blocks.air, 0, 2);
+ }
+ }
+ }
+ }
}
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/other todo b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/other todo
index b255c2013c..7059fdf6fd 100644
--- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/other todo
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/other todo
@@ -34,3 +34,5 @@ iterative halflife formula:
=prev qty* 2^(-t diff / t half)
+
+actual ion cannons