From a428d6f99e99499f20f380d5cc650261e5b4e30e Mon Sep 17 00:00:00 2001 From: Technus Date: Sat, 23 Dec 2017 19:48:04 +0100 Subject: Prepare initial code for em machine --- .../GT_MetaTileEntity_EM_essentiaDequantizer.java | 2 +- .../GT_MetaTileEntity_EM_essentiaQuantizer.java | 2 +- .../tectech/thing/item/ParametrizerMemoryCard.java | 64 ++++++++++++------- .../multi/GT_MetaTileEntity_EM_computer.java | 72 +++++++++++----------- .../multi/GT_MetaTileEntity_EM_decay.java | 2 +- .../multi/GT_MetaTileEntity_EM_dequantizer.java | 2 +- .../multi/GT_MetaTileEntity_EM_infuser.java | 2 +- .../multi/GT_MetaTileEntity_EM_junction.java | 4 +- .../multi/GT_MetaTileEntity_EM_machine.java | 40 +++++++----- .../multi/GT_MetaTileEntity_EM_quantizer.java | 2 +- .../multi/GT_MetaTileEntity_EM_research.java | 2 +- .../multi/GT_MetaTileEntity_EM_scanner.java | 2 +- .../multi/GT_MetaTileEntity_EM_switch.java | 4 +- .../multi/GT_MetaTileEntity_EM_transformer.java | 2 +- .../multi/GT_MetaTileEntity_TM_microwave.java | 32 +++++----- .../base/GT_MetaTileEntity_MultiblockBase_EM.java | 66 +++++++++++++------- 16 files changed, 177 insertions(+), 123 deletions(-) (limited to 'src') diff --git a/src/main/java/com/github/technus/tectech/compatibility/thaumcraft/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_essentiaDequantizer.java b/src/main/java/com/github/technus/tectech/compatibility/thaumcraft/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_essentiaDequantizer.java index 8f4d48b798..374fad20d3 100644 --- a/src/main/java/com/github/technus/tectech/compatibility/thaumcraft/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_essentiaDequantizer.java +++ b/src/main/java/com/github/technus/tectech/compatibility/thaumcraft/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_essentiaDequantizer.java @@ -101,7 +101,7 @@ public class GT_MetaTileEntity_EM_essentiaDequantizer extends GT_MetaTileEntity_ } @Override - public boolean checkRecipe_EM(ItemStack itemStack, boolean hadNoParametrizationHatches) { + public boolean checkRecipe_EM(ItemStack itemStack) { container=essentiaContainerCompat.getContainer(this); if (eInputHatches.size() < 1 || container==null) { stopMachine(); diff --git a/src/main/java/com/github/technus/tectech/compatibility/thaumcraft/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_essentiaQuantizer.java b/src/main/java/com/github/technus/tectech/compatibility/thaumcraft/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_essentiaQuantizer.java index bb04d81089..65a43c76ab 100644 --- a/src/main/java/com/github/technus/tectech/compatibility/thaumcraft/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_essentiaQuantizer.java +++ b/src/main/java/com/github/technus/tectech/compatibility/thaumcraft/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_essentiaQuantizer.java @@ -110,7 +110,7 @@ public class GT_MetaTileEntity_EM_essentiaQuantizer extends GT_MetaTileEntity_Mu } @Override - public boolean checkRecipe_EM(ItemStack itemStack, boolean hadNoParametrizationHatches) { + public boolean checkRecipe_EM(ItemStack itemStack) { container=essentiaContainerCompat.getContainer(this); cElementalInstanceStack newStack=essentiaContainerCompat.getFromContainer(container); if(newStack!=null){ diff --git a/src/main/java/com/github/technus/tectech/thing/item/ParametrizerMemoryCard.java b/src/main/java/com/github/technus/tectech/thing/item/ParametrizerMemoryCard.java index 003720de76..67fcf320f4 100644 --- a/src/main/java/com/github/technus/tectech/thing/item/ParametrizerMemoryCard.java +++ b/src/main/java/com/github/technus/tectech/thing/item/ParametrizerMemoryCard.java @@ -3,6 +3,7 @@ package com.github.technus.tectech.thing.item; import com.github.technus.tectech.CommonValues; import com.github.technus.tectech.Util; import com.github.technus.tectech.thing.metaTileEntity.hatch.GT_MetaTileEntity_Hatch_Param; +import com.github.technus.tectech.thing.metaTileEntity.multi.base.GT_MetaTileEntity_MultiblockBase_EM; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -47,28 +48,47 @@ public class ParametrizerMemoryCard extends Item { aStack.stackSize = 1; if (tTileEntity != null && tTileEntity instanceof IGregTechTileEntity) { IMetaTileEntity metaTE = ((IGregTechTileEntity) tTileEntity).getMetaTileEntity(); - if (metaTE != null && metaTE instanceof GT_MetaTileEntity_Hatch_Param) { - GT_MetaTileEntity_Hatch_Param parametrizer = ((GT_MetaTileEntity_Hatch_Param) metaTE); - if(aStack.getTagCompound()==null) aStack.setTagCompound(new NBTTagCompound()); - NBTTagCompound tNBT=aStack.getTagCompound(); - if (aStack.getItemDamage()==1) { - //write to parametrizer - parametrizer.param = tNBT.getInteger("param"); - if(parametrizer.setUsingFloats(tNBT.getBoolean("usesFloats"))) { - parametrizer.value0i = (int)Float.intBitsToFloat(tNBT.getInteger("value0i")); - parametrizer.value1i = (int)Float.intBitsToFloat(tNBT.getInteger("value1i")); - }else{ - parametrizer.value0i = tNBT.getInteger("value0i"); - parametrizer.value1i = tNBT.getInteger("value1i"); + if (metaTE != null) { + if (metaTE instanceof GT_MetaTileEntity_Hatch_Param) { + GT_MetaTileEntity_Hatch_Param parametrizer = ((GT_MetaTileEntity_Hatch_Param) metaTE); + if (aStack.getTagCompound() == null) aStack.setTagCompound(new NBTTagCompound()); + NBTTagCompound tNBT = aStack.getTagCompound(); + if (aStack.getItemDamage() == 1) { + //write to parametrizer + parametrizer.param = tNBT.getInteger("param"); + if (parametrizer.setUsingFloats(tNBT.getBoolean("usesFloats"))) { + parametrizer.value0i = (int) Float.intBitsToFloat(tNBT.getInteger("value0i")); + parametrizer.value1i = (int) Float.intBitsToFloat(tNBT.getInteger("value1i")); + } else { + parametrizer.value0i = tNBT.getInteger("value0i"); + parametrizer.value1i = tNBT.getInteger("value1i"); + } + } else { + //read from parametrizer + tNBT.setInteger("param", parametrizer.param); + tNBT.setBoolean("usesFloats", parametrizer.isUsingFloats()); + tNBT.setInteger("value0i", parametrizer.value0i); + tNBT.setInteger("value1i", parametrizer.value1i); + } + return true; + }else if(metaTE instanceof GT_MetaTileEntity_MultiblockBase_EM){ + GT_MetaTileEntity_MultiblockBase_EM base = ((GT_MetaTileEntity_MultiblockBase_EM) metaTE); + if (aStack.getTagCompound() == null) aStack.setTagCompound(new NBTTagCompound()); + NBTTagCompound tNBT = aStack.getTagCompound(); + if(aStack.getItemDamage()== 1){ + //write to base + if(tNBT.getBoolean("usesFloats")){ + base.setParameterPairIn_ClearOut(tNBT.getInteger("param"),true + ,Float.intBitsToFloat(tNBT.getInteger("value0i")) + ,Float.intBitsToFloat(tNBT.getInteger("value1i"))); + }else{ + base.setParameterPairIn_ClearOut(tNBT.getInteger("param"),false + ,tNBT.getInteger("value0i") + ,tNBT.getInteger("value1i")); + } + return true; } - } else { - //read from parametrizer - tNBT.setInteger("param", parametrizer.param); - tNBT.setBoolean("usesFloats", parametrizer.isUsingFloats()); - tNBT.setInteger("value0i", parametrizer.value0i); - tNBT.setInteger("value1i", parametrizer.value1i); } - return true; } } } @@ -96,9 +116,9 @@ public class ParametrizerMemoryCard extends Item { aList.add("Stores Parameters"); if(aStack.getItemDamage()==1) { - aList.add(EnumChatFormatting.BLUE + "Use on Parametrizer to configure it"); + aList.add(EnumChatFormatting.BLUE + "Use on Parametrizer/Controller to configure it"); }else{ - aList.add(EnumChatFormatting.BLUE + "Use on Parametrizer to save parameters"); + aList.add(EnumChatFormatting.BLUE + "Use on Parametrizer to store parameters"); } aList.add(EnumChatFormatting.BLUE + "Sneak right click to lock/unlock"); diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_computer.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_computer.java index 0c80e315ab..c921a2abbe 100644 --- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_computer.java +++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_computer.java @@ -94,20 +94,13 @@ public class GT_MetaTileEntity_EM_computer extends GT_MetaTileEntity_MultiblockB } @Override - public boolean checkRecipe_EM(ItemStack itemStack, boolean hadNoParametrizationHatches) { + public boolean checkRecipe_EM(ItemStack itemStack) { eAvailableData = 0; maxCurrentTemp = 0; - double overClockRatio,overVoltageRatio; - if (hadNoParametrizationHatches) { - overVoltageRatio=overClockRatio=1; - } else { - overClockRatio= getParameterIn(0,0); - overVoltageRatio= getParameterIn(0,1); - if(Double.isNaN(overClockRatio) || Double.isNaN(overVoltageRatio)) { - for (GT_MetaTileEntity_Hatch_Rack r : eRacks) - r.getBaseMetaTileEntity().setActive(false);//todo might be not needed - return false; - } + double overClockRatio= getParameterIn(0,0); + double overVoltageRatio= getParameterIn(0,1); + if(Double.isNaN(overClockRatio) || Double.isNaN(overVoltageRatio)) { + return false; } if(overClockRatio>0 && overVoltageRatio>=0.7f && overClockRatio<=3 && overVoltageRatio<=2){ float eut=V[8] * (float)overVoltageRatio * (float)overClockRatio; @@ -115,8 +108,6 @@ public class GT_MetaTileEntity_EM_computer extends GT_MetaTileEntity_MultiblockB mEUt = -(int)eut; else{ mEUt = -(int)V[8]; - for (GT_MetaTileEntity_Hatch_Rack r : eRacks) - r.getBaseMetaTileEntity().setActive(false);//todo might be not needed return false; } short thingsActive = 0; @@ -152,18 +143,46 @@ public class GT_MetaTileEntity_EM_computer extends GT_MetaTileEntity_MultiblockB return true; } } - for (GT_MetaTileEntity_Hatch_Rack r : eRacks) - r.getBaseMetaTileEntity().setActive(false); return false; } + @Override + public void outputAfterRecipe_EM() { + if (eOutputData.size() > 0) { + final Vec3pos pos = new Vec3pos(getBaseMetaTileEntity()); + QuantumDataPacket pack = new QuantumDataPacket(pos, eAvailableData); + for (GT_MetaTileEntity_Hatch_InputData i : eInputData) { + if (i.q == null || i.q.contains(pos)) continue; + pack = pack.unifyPacketWith(i.q); + if (pack == null) return; + } + + pack.computation /= eOutputData.size(); + + for (GT_MetaTileEntity_Hatch_OutputData o : eOutputData) + o.q = pack; + } + } + @Override protected long getAvailableData_EM() { return eAvailableData; } @Override - public void updateParameters_EM(boolean busy) { + protected void afterRecipeCheckFailed() { + super.afterRecipeCheckFailed(); + for (GT_MetaTileEntity_Hatch_Rack r : eRacks) + r.getBaseMetaTileEntity().setActive(false); + } + + @Override + protected void parametersLoadDefault_EM() { + setParameterPairIn_ClearOut(0, false, 1, 1); + } + + @Override + public void parametersOutAndStatusesWrite_EM(boolean machineBusy) { double ocRatio = getParameterIn(0, 0); if (ocRatio < 0) setStatusOfParameterIn(0, 0, STATUS_TOO_LOW); else if (ocRatio < 1) setStatusOfParameterIn(0, 0, STATUS_LOW); @@ -189,28 +208,11 @@ public class GT_MetaTileEntity_EM_computer extends GT_MetaTileEntity_MultiblockB else if (maxCurrentTemp <= 5000) setStatusOfParameterOut(0, 0, STATUS_HIGH); else setStatusOfParameterOut(0, 0, STATUS_TOO_HIGH); - if (!busy) setStatusOfParameterOut(0, 1, STATUS_WRONG); + if (!machineBusy) setStatusOfParameterOut(0, 1, STATUS_UNUSED); else if (eAvailableData <= 0) setStatusOfParameterOut(0, 1, STATUS_TOO_LOW); else setStatusOfParameterOut(0, 1, STATUS_OK); } - @Override - public void outputAfterRecipe_EM() { - if (eOutputData.size() > 0) { - final Vec3pos pos = new Vec3pos(getBaseMetaTileEntity()); - QuantumDataPacket pack = new QuantumDataPacket(pos, eAvailableData); - for (GT_MetaTileEntity_Hatch_InputData i : eInputData) { - if (i.q == null || i.q.contains(pos)) continue; - pack = pack.unifyPacketWith(i.q); - if (pack == null) return; - } - - pack.computation /= eOutputData.size(); - - for (GT_MetaTileEntity_Hatch_OutputData o : eOutputData) - o.q = pack; - } - } @Override public void onRemoval() { diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_decay.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_decay.java index 9410842520..1471940085 100644 --- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_decay.java +++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_decay.java @@ -111,7 +111,7 @@ public class GT_MetaTileEntity_EM_decay extends GT_MetaTileEntity_MultiblockBase } @Override - public boolean checkRecipe_EM(ItemStack itemStack, boolean hadNoParametrizationHatches) { + public boolean checkRecipe_EM(ItemStack itemStack) { cElementalInstanceStackMap map= getInputsClone_EM(); if(map!=null && map.hasStacks() && map.getFirst().getLifeTime()< STABLE_RAW_LIFE_TIME){ return startRecipe(map.getFirst()); diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_dequantizer.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_dequantizer.java index 48353603f8..eb1ed256e4 100644 --- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_dequantizer.java +++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_dequantizer.java @@ -83,7 +83,7 @@ public class GT_MetaTileEntity_EM_dequantizer extends GT_MetaTileEntity_Multiblo } @Override - public boolean checkRecipe_EM(ItemStack itemStack, boolean hadNoParametrizationHatches) { + public boolean checkRecipe_EM(ItemStack itemStack) { for (GT_MetaTileEntity_Hatch_InputElemental in : eInputHatches) { cElementalInstanceStackMap map = in.getContainerHandler(); for (cElementalInstanceStack stack : map.values()) { diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_infuser.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_infuser.java index d86cce6170..a440ece804 100644 --- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_infuser.java +++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_infuser.java @@ -92,7 +92,7 @@ public class GT_MetaTileEntity_EM_infuser extends GT_MetaTileEntity_MultiblockBa } @Override - public boolean checkRecipe_EM(ItemStack itemStack, boolean hadNoParametrizationHatches) { + public boolean checkRecipe_EM(ItemStack itemStack) { if (itemStack != null && itemStack.stackSize == 1) { Item ofThis = itemStack.getItem(); if (ofThis instanceof IElectricItem) { diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_junction.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_junction.java index 91163d5c6d..9e16f179e3 100644 --- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_junction.java +++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_junction.java @@ -78,7 +78,7 @@ public class GT_MetaTileEntity_EM_junction extends GT_MetaTileEntity_MultiblockB } @Override - public void updateParameters_EM(boolean busy) { + public void parametersOutAndStatusesWrite_EM(boolean machineBusy) { double src, dest; for (int i = 0; i < 10; i++) { src = getParameterIn(i, 0); @@ -104,7 +104,7 @@ public class GT_MetaTileEntity_EM_junction extends GT_MetaTileEntity_MultiblockB } @Override - public boolean checkRecipe_EM(ItemStack itemStack, boolean hadNoParametrizationHatches) { + public boolean checkRecipe_EM(ItemStack itemStack) { for (GT_MetaTileEntity_Hatch_InputElemental in : eInputHatches) if (in.getContainerHandler().hasStacks()) { mEUt = -(int) V[8]; diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_machine.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_machine.java index 6e5a16f5a5..68e6c6f4c9 100644 --- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_machine.java +++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_machine.java @@ -4,8 +4,6 @@ import com.github.technus.tectech.CommonValues; import com.github.technus.tectech.elementalMatter.core.cElementalInstanceStackMap; import com.github.technus.tectech.thing.block.QuantumGlassBlock; import com.github.technus.tectech.thing.metaTileEntity.IConstructable; -import com.github.technus.tectech.thing.metaTileEntity.hatch.GT_MetaTileEntity_Hatch_InputElemental; -import com.github.technus.tectech.thing.metaTileEntity.hatch.GT_MetaTileEntity_Hatch_OutputElemental; 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.interfaces.metatileentity.IMetaTileEntity; @@ -16,7 +14,6 @@ import net.minecraft.block.Block; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; -import java.util.ArrayList; import java.util.HashMap; import static com.github.technus.tectech.Util.StructureBuilder; @@ -91,24 +88,17 @@ public class GT_MetaTileEntity_EM_machine extends GT_MetaTileEntity_MultiblockBa } @Override - public boolean checkRecipe_EM(ItemStack itemStack, boolean hadNoParametrizationHatches) { + public boolean checkRecipe_EM(ItemStack itemStack) { Behaviour currentBehaviour=map.get(new GT_ItemStack(itemStack)); if(currentBehaviour==null) return false; //mux input + double[] parameters=new double[]{getParameterIn(0,0),getParameterIn(0,1),getParameterIn(1,0),getParameterIn(1,1), + getParameterIn(2,0),getParameterIn(2,1),getParameterIn(3,0),getParameterIn(3,1)}; + if(!currentBehaviour.setAndCheckParametersOutAndStatuses(this,parameters))return false; cElementalInstanceStackMap[] handles=new cElementalInstanceStackMap[3]; - if(hadNoParametrizationHatches){ - try { - handles[0] = eInputHatches.get(0).getContainerHandler(); - handles[1] = eInputHatches.get(1).getContainerHandler(); - handles[2] = eInputHatches.get(2).getContainerHandler(); - }catch (Exception ignored){} - }else{ - try { - - }catch (Exception ignored){} - } - MultiblockControl control=currentBehaviour.process(handles, hadNoParametrizationHatches); + MultiblockControl control=currentBehaviour.process(handles,parameters); if(control==null) return false; + //update other pare outputEM=control.getValues(); mEUt=control.getEUT(); eAmpereFlow=control.getAmperage(); @@ -118,6 +108,21 @@ public class GT_MetaTileEntity_EM_machine extends GT_MetaTileEntity_MultiblockBa return true; } + @Override + protected void parametersLoadDefault_EM() {//default 1 to 1 routing table + setParameterPairIn_ClearOut(4,false,1,1);//I + setParameterPairIn_ClearOut(5,false,2,2);//I + setParameterPairIn_ClearOut(6,false,3,3);//I + setParameterPairIn_ClearOut(7,false,1,1);//O + setParameterPairIn_ClearOut(8,false,2,2);//O + setParameterPairIn_ClearOut(9,false,3,3);//O + } + + @Override + public void parametersOutAndStatusesWrite_EM(boolean machineBusy) { + //update routing + } + @Override public void outputAfterRecipe_EM() { //mux output @@ -132,6 +137,7 @@ public class GT_MetaTileEntity_EM_machine extends GT_MetaTileEntity_MultiblockBa } } - public abstract MultiblockControl process(cElementalInstanceStackMap[] inputs, boolean noParametrizationHatches, double... parameters); + public abstract boolean setAndCheckParametersOutAndStatuses(GT_MetaTileEntity_EM_machine te, double[] parameters); + public abstract MultiblockControl process(cElementalInstanceStackMap[] inputs, double[] parameters); } } 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 f06ce1ba82..e2b485c2ba 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 @@ -92,7 +92,7 @@ public class GT_MetaTileEntity_EM_quantizer extends GT_MetaTileEntity_Multiblock } @Override - public boolean checkRecipe_EM(ItemStack itemStack, boolean hadNoParametrizationHatches) {//TODO implement by item quantization, implement instance quantization + public boolean checkRecipe_EM(ItemStack itemStack) {//TODO implement by item quantization, implement instance quantization if (GregTech_API.sPostloadFinished) { ItemStack[] inI = getStoredInputs().toArray(new ItemStack[0]); if (inI.length > 0) { diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_research.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_research.java index ccd5bc79e4..b82bd55428 100644 --- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_research.java +++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_research.java @@ -177,7 +177,7 @@ public class GT_MetaTileEntity_EM_research extends GT_MetaTileEntity_MultiblockB } @Override - public boolean checkRecipe_EM(ItemStack itemStack, boolean hadNoParametrizationHatches) { + public boolean checkRecipe_EM(ItemStack itemStack) { tRecipe=null; aRecipe=null; if(eHolders.size()>0 && eHolders.get(0).mInventory[0]!=null) { 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 c2b9f3a13f..91c638fce9 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 @@ -195,7 +195,7 @@ public class GT_MetaTileEntity_EM_scanner extends GT_MetaTileEntity_MultiblockBa } @Override - public boolean checkRecipe_EM(ItemStack itemStack, boolean hadNoParametrizationHatches) { + public boolean checkRecipe_EM(ItemStack itemStack) { eRecipe=null; if(eInputHatches.size()>0 && eInputHatches.get(0).getContainerHandler().hasStacks() && !eOutputHatches.isEmpty()) { cElementalInstanceStackMap researchEM = eInputHatches.get(0).getContainerHandler(); diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_switch.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_switch.java index cef1965174..af304aee65 100644 --- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_switch.java +++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_switch.java @@ -80,7 +80,7 @@ public class GT_MetaTileEntity_EM_switch extends GT_MetaTileEntity_MultiblockBas } @Override - public boolean checkRecipe_EM(ItemStack itemStack, boolean hadNoParametrizationHatches) { + public boolean checkRecipe_EM(ItemStack itemStack) { short thingsActive = 0; for (GT_MetaTileEntity_Hatch_InputData di : eInputData) if (di.q != null) @@ -149,7 +149,7 @@ public class GT_MetaTileEntity_EM_switch extends GT_MetaTileEntity_MultiblockBas } @Override - public void updateParameters_EM(boolean busy) { + public void parametersOutAndStatusesWrite_EM(boolean machineBusy) { double weight, dest; for (int i = 0; i < 10; i++) { weight = getParameterIn(i, 0); diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_transformer.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_transformer.java index a5d6d6ad8c..f547b444ac 100644 --- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_transformer.java +++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_transformer.java @@ -112,7 +112,7 @@ public class GT_MetaTileEntity_EM_transformer extends GT_MetaTileEntity_Multiblo } @Override - public boolean checkRecipe_EM(ItemStack itemStack, boolean hadNoParametrizationHatches) { + public boolean checkRecipe_EM(ItemStack itemStack) { if (ePowerPass) { mEfficiencyIncrease = 10000; mMaxProgresstime = 20; diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_TM_microwave.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_TM_microwave.java index 65ebabb7ac..e634bde66c 100644 --- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_TM_microwave.java +++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_TM_microwave.java @@ -36,9 +36,7 @@ import static gregtech.api.GregTech_API.sBlockCasings4; */ public class GT_MetaTileEntity_TM_microwave extends GT_MetaTileEntity_MultiblockBase_EM implements IConstructable { public final static int POWER_SETTING_DEFAULT=1000, TIMER_SETTING_DEFAULT=360; - private int powerSetting = POWER_SETTING_DEFAULT; - private int timerSetting = TIMER_SETTING_DEFAULT; - private int timerValue = 0; + private int powerSetting,timerSetting,timerValue; private boolean hasBeenPausedThisCycle=false; private boolean flipped=false; @@ -155,12 +153,8 @@ public class GT_MetaTileEntity_TM_microwave extends GT_MetaTileEntity_Multiblock } @Override - public boolean checkRecipe_EM(ItemStack itemStack, boolean hadNoParametrizationHatches) { + public boolean checkRecipe_EM(ItemStack itemStack) { hasBeenPausedThisCycle =false; - if(hadNoParametrizationHatches){ - powerSetting=POWER_SETTING_DEFAULT; - timerSetting=TIMER_SETTING_DEFAULT; - } if(powerSetting<300 || timerSetting<=0 || timerSetting>3000) return false; if (timerValue <= 0) { timerValue=timerSetting; @@ -241,7 +235,20 @@ public class GT_MetaTileEntity_TM_microwave extends GT_MetaTileEntity_Multiblock } @Override - public void updateParameters_EM(boolean machineIsBusy) { + protected void parametersLoadDefault_EM() { + powerSetting = POWER_SETTING_DEFAULT; + timerSetting = TIMER_SETTING_DEFAULT; + setParameterPairIn_ClearOut(0,false,POWER_SETTING_DEFAULT,TIMER_SETTING_DEFAULT); + } + + @Override + protected void parametersInRead_EM() { + powerSetting = (int) getParameterIn(0, 0); + timerSetting = (int) getParameterIn(0, 1); + } + + @Override + public void parametersOutAndStatusesWrite_EM(boolean machineBusy) { double powerParameter = getParameterIn(0, 0); if (powerParameter < 300) setStatusOfParameterIn(0, 0, STATUS_TOO_LOW); else if (powerParameter < 1000) setStatusOfParameterIn(0, 0, STATUS_LOW); @@ -258,16 +265,11 @@ public class GT_MetaTileEntity_TM_microwave extends GT_MetaTileEntity_Multiblock setParameterOut(0, 0, timerValue); setParameterOut(0, 1, timerSetting - timerValue); - - if (machineIsBusy) return; - - powerSetting = (int) powerParameter; - timerSetting = (int) timerParameter; } @Override public boolean onRunningTick(ItemStack aStack) { - if(eSafeVoid) hasBeenPausedThisCycle =true; + if(eSafeVoid) hasBeenPausedThisCycle = true; return hasBeenPausedThisCycle || super.onRunningTick(aStack);//consume eu and other resources if not paused } diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/GT_MetaTileEntity_MultiblockBase_EM.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/GT_MetaTileEntity_MultiblockBase_EM.java index 972d2df54e..22f4179290 100644 --- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/GT_MetaTileEntity_MultiblockBase_EM.java +++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/GT_MetaTileEntity_MultiblockBase_EM.java @@ -94,7 +94,7 @@ public abstract class GT_MetaTileEntity_MultiblockBase_EM extends GT_MetaTileEnt protected long eRequiredData = 0; // data required to operate protected long eAvailableData = 0; // data being available - private boolean explodedThisTick=false, eHadNoParametrizationHatches = true; + private boolean explodedThisTick=false; //init param states in constructor, or implement it in checkrecipe/outputfunction @@ -103,13 +103,17 @@ public abstract class GT_MetaTileEntity_MultiblockBase_EM extends GT_MetaTileEnt //if you want to add checks that run periodically when machine works then make onRunningTick better //if you want to add checks that run periodically when machine is built then use check params - public boolean checkRecipe_EM(ItemStack itemStack, boolean hadNoParametrizationHatches) { + public boolean checkRecipe_EM(ItemStack itemStack) { return false; } // My code handles AMPS, if you want overclocking just modify mEUt and mMaxProgressTime, leave amps as usual! // Set mEUt, Efficiencies, required computation, time, check input etc. - public void updateParameters_EM(boolean busy) { + protected void parametersInRead_EM(){ + + } + + public void parametersOutAndStatusesWrite_EM(boolean machineBusy) { } // update status of parameters in guis and "machine state" // Called before check recipe, before outputting, and every second the machine is active @@ -246,10 +250,12 @@ public abstract class GT_MetaTileEntity_MultiblockBase_EM extends GT_MetaTileEnt public GT_MetaTileEntity_MultiblockBase_EM(int aID, String aName, String aNameRegional) { super(aID, aName, aNameRegional); + parametersLoadDefault_EM(); } public GT_MetaTileEntity_MultiblockBase_EM(String aName) { super(aName); + parametersLoadDefault_EM(); } @Override @@ -299,7 +305,6 @@ public abstract class GT_MetaTileEntity_MultiblockBase_EM extends GT_MetaTileEnt aNBT.setBoolean("eVoid", eSafeVoid); aNBT.setBoolean("eBoom", eDismantleBoom); aNBT.setBoolean("eOK", mMachine); - aNBT.setBoolean("eHadNoParam", eHadNoParametrizationHatches); //Ensures compatibility if (mOutputItems != null) { @@ -378,7 +383,6 @@ public abstract class GT_MetaTileEntity_MultiblockBase_EM extends GT_MetaTileEnt eSafeVoid = aNBT.getBoolean("eVoid"); eDismantleBoom = aNBT.getBoolean("eBoom"); mMachine = aNBT.getBoolean("eOK"); - eHadNoParametrizationHatches = aNBT.getBoolean("eHadNoParam"); //Ensures compatibility int aOutputItemsLength = aNBT.getInteger("mOutputItemsLength"); @@ -439,6 +443,26 @@ public abstract class GT_MetaTileEntity_MultiblockBase_EM extends GT_MetaTileEnt } //Param methods + //called in creator + protected void parametersLoadDefault_EM(){ + //load default parameters with setParameterPairIn_ClearOut + } + + public final boolean setParameterPairIn_ClearOut(int hatchNo, boolean usesFloats, double value0, double value1) { + if (mMaxProgresstime > 0) return false; + bParamsAreFloats[hatchNo] = usesFloats; + if (usesFloats) { + iParamsIn[hatchNo] = Float.floatToIntBits((float) value0); + iParamsIn[hatchNo + 10] = Float.floatToIntBits((float) value1); + } else { + iParamsIn[hatchNo] = (int) value0; + iParamsIn[hatchNo + 10] = (int) value1; + } + iParamsOut[hatchNo] = 0; + iParamsOut[hatchNo + 10] = 0; + return true; + } + public final boolean isParametrizerUsingFloat(int hatchNo){ return bParamsAreFloats[hatchNo]; } @@ -631,7 +655,6 @@ public abstract class GT_MetaTileEntity_MultiblockBase_EM extends GT_MetaTileEnt if(hatch.param>=0) bParamsAreFloats[hatch.param]=hatch.isUsingFloats(); } } - eHadNoParametrizationHatches &=eParamHatches.size()==0; } else { maxEUinputMin = 0; maxEUinputMax = 0; @@ -1152,23 +1175,14 @@ public abstract class GT_MetaTileEntity_MultiblockBase_EM extends GT_MetaTileEnt @Override public final boolean checkRecipe(ItemStack itemStack) {//do recipe checks, based on "machine content and state" hatchesStatusUpdate_EM(); - boolean result= checkRecipe_EM(itemStack, eHadNoParametrizationHatches);//if had no - set default params + boolean result= checkRecipe_EM(itemStack);//if had no - set default params hatchesStatusUpdate_EM(); return result; } private void hatchesStatusUpdate_EM() { - if(mMaxProgresstime==0) { - for (GT_MetaTileEntity_Hatch_Param hatch : eParamHatches) { - if (!isValidMetaTileEntity(hatch) || hatch.param < 0) continue; - final int paramID = hatch.param; - bParamsAreFloats[hatch.param] = hatch.isUsingFloats(); - iParamsIn[paramID] = hatch.value0i; - iParamsIn[paramID + 10] = hatch.value1i; - hatch.input0i = iParamsOut[paramID]; - hatch.input1i = iParamsOut[paramID + 10]; - } - }else {//write to hatches only + boolean busy=mMaxProgresstime>0; + if (busy) {//write from buffer to hatches only for (GT_MetaTileEntity_Hatch_Param hatch : eParamHatches) { if (!isValidMetaTileEntity(hatch) || hatch.param < 0) continue; final int paramID = hatch.param; @@ -1183,12 +1197,22 @@ public abstract class GT_MetaTileEntity_MultiblockBase_EM extends GT_MetaTileEnt hatch.input1i = (int)Float.intBitsToFloat(iParamsOut[paramID + 10]); } } + parametersInRead_EM(); + } else {//if has nothing to do update all + for (GT_MetaTileEntity_Hatch_Param hatch : eParamHatches) { + if (!isValidMetaTileEntity(hatch) || hatch.param < 0) continue; + final int paramID = hatch.param; + bParamsAreFloats[hatch.param] = hatch.isUsingFloats(); + iParamsIn[paramID] = hatch.value0i; + iParamsIn[paramID + 10] = hatch.value1i; + hatch.input0i = iParamsOut[paramID]; + hatch.input1i = iParamsOut[paramID + 10]; + } } - updateParameters_EM(mMaxProgresstime>0); - eAvailableData = getAvailableData_EM(); - for (GT_MetaTileEntity_Hatch_Uncertainty uncertainty : eUncertainHatches) eCertainStatus = uncertainty.update(eCertainMode); + eAvailableData = getAvailableData_EM(); + parametersOutAndStatusesWrite_EM(busy); } @Override -- cgit