diff options
author | Technus <daniel112092@gmail.com> | 2017-12-16 19:35:15 +0100 |
---|---|---|
committer | Technus <daniel112092@gmail.com> | 2017-12-16 19:35:15 +0100 |
commit | 1a582d7e629e8b83c31eedd8fcb59458195e317b (patch) | |
tree | df75251a233be5ed66ad6c8bd07adc547116fab9 /src/main | |
parent | 619a01484c1f4270a337f263248fa625d860f0b4 (diff) | |
download | GT5-Unofficial-1a582d7e629e8b83c31eedd8fcb59458195e317b.tar.gz GT5-Unofficial-1a582d7e629e8b83c31eedd8fcb59458195e317b.tar.bz2 GT5-Unofficial-1a582d7e629e8b83c31eedd8fcb59458195e317b.zip |
Rework paramaterization
Diffstat (limited to 'src/main')
22 files changed, 512 insertions, 405 deletions
diff --git a/src/main/java/com/github/technus/tectech/Util.java b/src/main/java/com/github/technus/tectech/Util.java index c0aec1baf8..dfda035f19 100644 --- a/src/main/java/com/github/technus/tectech/Util.java +++ b/src/main/java/com/github/technus/tectech/Util.java @@ -31,14 +31,29 @@ import static gregtech.api.enums.GT_Values.E; * Created by Tec on 21.03.2017. */ public class Util { - public static String intToString(int number, int groupSize) { + public static String intToString(int number) { StringBuilder result = new StringBuilder(); for (int i = 31; i >= 0; i--) { int mask = 1 << i; result.append((number & mask) != 0 ? "1" : "0"); - if (i % groupSize == 0) + if (i % 8 == 0) + result.append(" "); + } + result.replace(result.length() - 1, result.length(), ""); + + return result.toString(); + } + + public static String intToShortString(int number) { + StringBuilder result = new StringBuilder(); + + for (int i = 31; i >= 0; i--) { + int mask = 1 << i; + result.append((number & mask) != 0 ? "!" : "."); + + if (i % 8 == 0) result.append(" "); } result.replace(result.length() - 1, result.length(), ""); 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 00717007c1..666053ad1f 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) { + public boolean checkRecipe_EM(ItemStack itemStack, boolean noParametrizers) { 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 b9b674f880..e5bde00836 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) { + public boolean checkRecipe_EM(ItemStack itemStack, boolean noParametrizers) { 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 0e38d253e8..2fc27ac6a2 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 @@ -1,6 +1,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 cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.relauncher.Side; @@ -52,19 +53,15 @@ public class ParametrizerMemoryCard extends Item { if (aStack.getItemDamage()==1) { //write to parametrizer parametrizer.param = tNBT.getInteger("param"); - parametrizer.data0 = tNBT.getInteger("value1"); - parametrizer.data1 = tNBT.getInteger("value2"); - parametrizer.value0f = tNBT.getFloat("value1f"); - parametrizer.value1f = tNBT.getFloat("value2f"); - parametrizer.extra = tNBT.getInteger("exponent"); + parametrizer.value0i = tNBT.getInteger("value0i"); + parametrizer.value1i = tNBT.getInteger("value1i"); + parametrizer.usesFloat = tNBT.getInteger("extra"); } else { //read from parametrizer tNBT.setInteger("param", parametrizer.param); - tNBT.setInteger("value1", parametrizer.data0); - tNBT.setInteger("value2", parametrizer.data1); - tNBT.setFloat("value2f", parametrizer.value1f); - tNBT.setFloat("value1f", parametrizer.value0f); - tNBT.setInteger("exponent", parametrizer.extra); + tNBT.setInteger("value0i", parametrizer.value0i); + tNBT.setInteger("value1i", parametrizer.value1i); + tNBT.setInteger("extra", parametrizer.usesFloat); } return true; } @@ -100,13 +97,17 @@ public class ParametrizerMemoryCard extends Item { } aList.add(EnumChatFormatting.BLUE + "Sneak right click to lock/unlock"); + int temp; if(tNBT!=null && tNBT.hasKey("param")) { aList.add("Hatch ID: "+EnumChatFormatting.AQUA + tNBT.getInteger("param")); - aList.add("Value 0|F: "+EnumChatFormatting.AQUA + tNBT.getFloat("value1f")); - aList.add("Value 1|F: "+EnumChatFormatting.AQUA + tNBT.getFloat("value2f")); - aList.add("Data 0|I: "+EnumChatFormatting.AQUA + tNBT.getInteger("value1")); - aList.add("Data 1|I: "+EnumChatFormatting.AQUA + tNBT.getInteger("value2")); - aList.add("Data x|I: "+EnumChatFormatting.AQUA + tNBT.getInteger("exponent")); + temp=tNBT.getInteger("value0i"); + aList.add("Value 0|I: "+EnumChatFormatting.AQUA + temp); + aList.add("Value 0|F: "+EnumChatFormatting.AQUA + Float.intBitsToFloat(temp)); + aList.add("Value 0|B: "+EnumChatFormatting.AQUA + Util.intToShortString(temp)); + temp=tNBT.getInteger("value1i"); + aList.add("Value 1|I: "+EnumChatFormatting.AQUA + temp); + aList.add("Value 1|F: "+EnumChatFormatting.AQUA + Float.intBitsToFloat(temp)); + aList.add("Value 1|B: "+EnumChatFormatting.AQUA + Util.intToShortString(temp)); } } diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_Param.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_Param.java index cb83c9eb93..5b9e1faa98 100644 --- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_Param.java +++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_Param.java @@ -26,14 +26,13 @@ import net.minecraftforge.fluids.FluidStack; * Created by danie_000 on 15.12.2016. */ public class GT_MetaTileEntity_Hatch_Param extends GT_MetaTileEntity_Hatch { - public int extra = 0; - public int data1 = 0; - public int data0 = 0; + private boolean usesFloat = false; + public int pointer = 0; public int param = -1; - public float value0f = 0; - public float value1f = 0; - public float input1f = 0; - public float input2f = 0; + public int value0i = 0; + public int value1i = 0; + public int input0i = 0; + public int input1i = 0; private static Textures.BlockIcons.CustomIcon ScreenON; private static Textures.BlockIcons.CustomIcon ScreenOFF; @@ -101,36 +100,24 @@ public class GT_MetaTileEntity_Hatch_Param extends GT_MetaTileEntity_Hatch { @Override public String[] getInfoData() { - int temp; - if(mTier>=10){ + if(mTier>=10) return new String[]{ "Parametrizer ID: " + EnumChatFormatting.GREEN + param, - "Value 0|F: " + EnumChatFormatting.AQUA + value0f, - "Value 0|I: " + EnumChatFormatting.AQUA + (temp=Float.floatToIntBits(value0f)), - "Value 0|B: " + EnumChatFormatting.AQUA + Util.intToString(temp,8), - "Value 1|F: " + EnumChatFormatting.BLUE + value1f, - "Value 1|I: " + EnumChatFormatting.BLUE + (temp=Float.floatToIntBits(value1f)), - "Value 1|B: " + EnumChatFormatting.BLUE + Util.intToString(temp,8), - "Input 0|F: " + EnumChatFormatting.GOLD + input1f, - "Input 0|I: " + EnumChatFormatting.GOLD + (temp=Float.floatToIntBits(input1f)), - "Input 0|B: " + EnumChatFormatting.GOLD + Util.intToString(temp,8), - "Input 1|F: " + EnumChatFormatting.YELLOW + input2f, - "Input 1|I: " + EnumChatFormatting.YELLOW + (temp=Float.floatToIntBits(input2f)), - "Input 1|B: " + EnumChatFormatting.YELLOW + Util.intToString(temp,8), - "Data 0|I" + data0, - "Data 1|I" + data1, - "Data x|I" + extra, + "Value 0I: " + EnumChatFormatting.AQUA + value0i, + "Value 0FB: " + EnumChatFormatting.AQUA + Float.intBitsToFloat(value0i)+" "+ Util.intToShortString(value0i), + "Value 1I: " + EnumChatFormatting.BLUE + value1i, + "Value 1FB: " + EnumChatFormatting.BLUE + Float.intBitsToFloat(value1i)+" "+ Util.intToShortString(value1i), + "Input 0I: " + EnumChatFormatting.GOLD + input0i, + "Input 0FB: " + EnumChatFormatting.GOLD + Float.intBitsToFloat(input0i)+" "+ Util.intToShortString(input0i), + "Input 1I: " + EnumChatFormatting.YELLOW + input1i, + "Input 1FB: " + EnumChatFormatting.YELLOW + Float.intBitsToFloat(input1i)+" "+ Util.intToShortString(input1i), }; - } return new String[]{ "Parametrizer ID: " + EnumChatFormatting.GREEN + param, - "Value 0|F: " + EnumChatFormatting.AQUA + value0f, - "Value 1|F: " + EnumChatFormatting.BLUE + value1f, - "Input 0|F: " + EnumChatFormatting.GOLD + input1f, - "Input 1|F: " + EnumChatFormatting.YELLOW + input2f, - "Data 0|I" + data0, - "Data 1|I" + data1, - "Data x|I" + extra, + "Value 0I: " + EnumChatFormatting.AQUA + value0i, + "Value 1I: " + EnumChatFormatting.BLUE + value1i, + "Input 0I: " + EnumChatFormatting.GOLD + input0i, + "Input 1I: " + EnumChatFormatting.YELLOW + input1i, }; } @@ -151,30 +138,24 @@ public class GT_MetaTileEntity_Hatch_Param extends GT_MetaTileEntity_Hatch { public void saveNBTData(NBTTagCompound aNBT) { super.saveNBTData(aNBT); - aNBT.setInteger("mEXP", extra); - if(mTier>=10) { - aNBT.setInteger("mV2", Float.floatToIntBits(value1f)); - aNBT.setInteger("mV1", Float.floatToIntBits(value0f)); - }else { - aNBT.setInteger("mV2", data1); - aNBT.setInteger("mV1", data0); - } - aNBT.setInteger("mParam", param); + aNBT.setBoolean("eFloats", usesFloat); + aNBT.setInteger("ePointer", pointer); + aNBT.setInteger("eValue0i", value0i); + aNBT.setInteger("eValue1i", value1i); + aNBT.setInteger("eInput0i", value0i); + aNBT.setInteger("eInput1i", value1i); + aNBT.setInteger("eParam", param); } public void loadNBTData(NBTTagCompound aNBT) { super.loadNBTData(aNBT); - extra = aNBT.getInteger("mEXP"); - data1 = aNBT.getInteger("mV2"); - data0 = aNBT.getInteger("mV1"); - param = aNBT.getInteger("mParam"); - if(mTier>=10) { - value0f =Float.intBitsToFloat(data0); - value1f =Float.intBitsToFloat(data1); - }else{ - value0f = (float) (data0 * Math.pow(2, extra)); - value1f = (float) (data1 * Math.pow(2, extra)); - } + usesFloat = aNBT.getBoolean("eFloats"); + pointer = aNBT.getInteger("ePointer"); + value0i=aNBT.getInteger("eValue0i"); + value1i=aNBT.getInteger("eValue1i"); + value0i=aNBT.getInteger("eInput0i"); + value1i=aNBT.getInteger("eInput1i"); + param = aNBT.getInteger("eParam"); } @Override @@ -217,4 +198,16 @@ public class GT_MetaTileEntity_Hatch_Param extends GT_MetaTileEntity_Hatch { EnumChatFormatting.AQUA.toString() + EnumChatFormatting.BOLD + "E=mine*craft^2" }; } + + public boolean isUsingFloats() { + return mTier >= 10 && usesFloat; + } + + public boolean setUsingFloats(boolean value){ + if(mTier>=10){ + usesFloat=value; + return value; + } + return false; + } } diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/gui/GT_Container_Param.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/gui/GT_Container_Param.java index 56b66a46d8..22142b7d12 100644 --- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/gui/GT_Container_Param.java +++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/gui/GT_Container_Param.java @@ -15,16 +15,11 @@ import net.minecraft.item.ItemStack; import java.util.Iterator; public class GT_Container_Param extends GT_ContainerMetaTile_Machine { - public int extra = 0; - public int data1 = 0; - public int data0 = 0; public int param = 0; - public float value1f = 0; - public float value0f = 0; - public float input0f = 0; - public float input1f = 0; - private int input0Bits = 0; - private int input1Bits = 0; + public int value0f = 0; + public int value1f = 0; + public int input0f = 0; + public int input1f = 0; public GT_Container_Param(InventoryPlayer aInventoryPlayer, IGregTechTileEntity aTileEntity) { super(aInventoryPlayer, aTileEntity); @@ -64,52 +59,56 @@ public class GT_Container_Param extends GT_ContainerMetaTile_Machine { GT_MetaTileEntity_Hatch_Param paramH = (GT_MetaTileEntity_Hatch_Param) this.mTileEntity.getMetaTileEntity(); switch (aSlotIndex) { case 0: - paramH.param -= (aShifthold == 1 ? 512 : 64); + paramH.param -= (aShifthold == 1 ? 16 : 4); break; case 1: - paramH.data0 -= (aShifthold == 1 ? 512 : 64); + paramH.value0i -= (aShifthold == 1 ? 512 : 64); break; case 2: - paramH.data1 -= (aShifthold == 1 ? 512 : 64); + paramH.value1i -= (aShifthold == 1 ? 512 : 64); break; case 3: - paramH.extra -= (aShifthold == 1 ? 16 : 8); + paramH.value0i >>= aShifthold == 1 ? 16 : 4; + paramH.value1i >>= aShifthold == 1 ? 16 : 4; break; case 4: - paramH.param -= (aShifthold == 1 ? 16 : 1); + paramH.param -= (aShifthold == 1 ? 2 : 1); break; case 5: - paramH.data0 -= (aShifthold == 1 ? 16 : 1); + paramH.value0i -= (aShifthold == 1 ? 16 : 1); break; case 6: - paramH.data1 -= (aShifthold == 1 ? 16 : 1); + paramH.value1i -= (aShifthold == 1 ? 16 : 1); break; case 7: - paramH.extra -= (aShifthold == 1 ? 4 : 1); + paramH.value0i >>= aShifthold == 1 ? 2 : 1; + paramH.value1i >>= aShifthold == 1 ? 2 : 1; break; case 8: - paramH.param += (aShifthold == 1 ? 512 : 64); + paramH.param += (aShifthold == 1 ? 16 : 4); break; case 9: - paramH.data0 += (aShifthold == 1 ? 512 : 64); + paramH.value0i += (aShifthold == 1 ? 512 : 64); break; case 10: - paramH.data1 += (aShifthold == 1 ? 512 : 64); + paramH.value1i += (aShifthold == 1 ? 512 : 64); break; case 11: - paramH.extra += (aShifthold == 1 ? 16 : 8); + paramH.value0i <<= aShifthold == 1 ? 16 : 4; + paramH.value1i <<= aShifthold == 1 ? 16 : 4; break; case 12: - paramH.param += (aShifthold == 1 ? 16 : 1); + paramH.param += (aShifthold == 1 ? 2 : 1); break; case 13: - paramH.data0 += (aShifthold == 1 ? 16 : 1); + paramH.value0i += (aShifthold == 1 ? 16 : 1); break; case 14: - paramH.data1 += (aShifthold == 1 ? 16 : 1); + paramH.value1i += (aShifthold == 1 ? 16 : 1); break; case 15: - paramH.extra += (aShifthold == 1 ? 4 : 1); + paramH.value0i <<= aShifthold == 1 ? 2 : 1; + paramH.value1i <<= aShifthold == 1 ? 2 : 1; break; default: doStuff = false; @@ -117,8 +116,6 @@ public class GT_Container_Param extends GT_ContainerMetaTile_Machine { if (doStuff) { if (paramH.param > 9) paramH.param = 9; else if (paramH.param < -1) paramH.param = -1; - paramH.value0f =Float.intBitsToFloat(Float.floatToIntBits((float) (paramH.data0 * Math.pow(2, paramH.extra)))); - paramH.value1f =Float.intBitsToFloat(Float.floatToIntBits((float) (paramH.data1 * Math.pow(2, paramH.extra)))); } } return super.slotClick(aSlotIndex, aMouseclick, aShifthold, aPlayer); @@ -131,27 +128,24 @@ public class GT_Container_Param extends GT_ContainerMetaTile_Machine { return; } this.param = ((GT_MetaTileEntity_Hatch_Param) this.mTileEntity.getMetaTileEntity()).param; - this.data0 = ((GT_MetaTileEntity_Hatch_Param) this.mTileEntity.getMetaTileEntity()).data0; - this.data1 = ((GT_MetaTileEntity_Hatch_Param) this.mTileEntity.getMetaTileEntity()).data1; - this.extra = ((GT_MetaTileEntity_Hatch_Param) this.mTileEntity.getMetaTileEntity()).extra; - this.input0Bits = Float.floatToIntBits(((GT_MetaTileEntity_Hatch_Param) this.mTileEntity.getMetaTileEntity()).input1f); - this.input1Bits = Float.floatToIntBits(((GT_MetaTileEntity_Hatch_Param) this.mTileEntity.getMetaTileEntity()).input2f); + this.value0f = ((GT_MetaTileEntity_Hatch_Param) this.mTileEntity.getMetaTileEntity()).value0i; + this.value1f = ((GT_MetaTileEntity_Hatch_Param) this.mTileEntity.getMetaTileEntity()).value1i; + this.input0f = ((GT_MetaTileEntity_Hatch_Param) this.mTileEntity.getMetaTileEntity()).input0i; + this.input1f = ((GT_MetaTileEntity_Hatch_Param) this.mTileEntity.getMetaTileEntity()).input1i; Iterator var2 = this.crafters.iterator(); while (var2.hasNext()) { ICrafting var1 = (ICrafting) var2.next(); var1.sendProgressBarUpdate(this, 100, this.param & 0xFFFF); var1.sendProgressBarUpdate(this, 101, this.param >>> 16); - var1.sendProgressBarUpdate(this, 102, this.data0 & 0xFFFF); - var1.sendProgressBarUpdate(this, 103, this.data0 >>> 16); - var1.sendProgressBarUpdate(this, 104, this.data1 & 0xFFFF); - var1.sendProgressBarUpdate(this, 105, this.data1 >>> 16); - var1.sendProgressBarUpdate(this, 106, this.extra & 0xFFFF); - var1.sendProgressBarUpdate(this, 107, this.extra >>> 16); - var1.sendProgressBarUpdate(this, 108, this.input0Bits & 0xFFFF); - var1.sendProgressBarUpdate(this, 109, this.input0Bits >>> 16); - var1.sendProgressBarUpdate(this, 110, this.input1Bits & 0xFFFF); - var1.sendProgressBarUpdate(this, 111, this.input1Bits >>> 16); + var1.sendProgressBarUpdate(this, 102, this.value0f & 0xFFFF); + var1.sendProgressBarUpdate(this, 103, this.value0f >>> 16); + var1.sendProgressBarUpdate(this, 104, this.value1f & 0xFFFF); + var1.sendProgressBarUpdate(this, 105, this.value1f >>> 16); + var1.sendProgressBarUpdate(this, 106, this.input0f & 0xFFFF); + var1.sendProgressBarUpdate(this, 107, this.input0f >>> 16); + var1.sendProgressBarUpdate(this, 108, this.input1f & 0xFFFF); + var1.sendProgressBarUpdate(this, 109, this.input1f >>> 16); } } @@ -166,43 +160,30 @@ public class GT_Container_Param extends GT_ContainerMetaTile_Machine { this.param = (this.param & 0xFFFF | (par2 << 16)); return; case 102: - this.data0 = (this.data0 & 0xFFFF0000 | par2); + this.value0f = (this.value0f & 0xFFFF0000 | par2); break; case 103: - this.data0 = (this.data0 & 0xFFFF | (par2 << 16)); + this.value0f = (this.value0f & 0xFFFF | (par2 << 16)); break; case 104: - this.data1 = (this.data1 & 0xFFFF0000 | par2); + this.value1f = (this.value1f & 0xFFFF0000 | par2); break; case 105: - this.data1 = (this.data1 & 0xFFFF | (par2 << 16)); + this.value1f = (this.value1f & 0xFFFF | (par2 << 16)); break; case 106: - this.extra = (this.extra & 0xFFFF0000 | par2); + this.input0f = (this.input0f & 0xFFFF0000 | par2); break; case 107: - this.extra = (this.extra & 0xFFFF | (par2 << 16)); + this.input0f = (this.input0f & 0xFFFF | (par2 << 16)); break; case 108: - this.input0Bits = (this.input0Bits & 0xFFFF0000 | par2); - this.input0f = Float.intBitsToFloat(input0Bits); + this.input1f = (this.input1f & 0xFFFF0000 | par2); return; case 109: - this.input0Bits = (this.input0Bits & 0xFFFF | (par2 << 16)); - this.input0f = Float.intBitsToFloat(input0Bits); - return; - case 110: - this.input1Bits = (this.input1Bits & 0xFFFF0000 | par2); - this.input1f = Float.intBitsToFloat(input1Bits); - return; - case 111: - this.input1Bits = (this.input1Bits & 0xFFFF | (par2 << 16)); - this.input1f = Float.intBitsToFloat(input1Bits); + this.input1f = (this.input1f & 0xFFFF | (par2 << 16)); return; default: - return; } - this.value0f = (float) (this.data0 * Math.pow(2, this.extra)); - this.value1f = (float) (this.data1 * Math.pow(2, this.extra)); } } diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/gui/GT_Container_ParamAdv.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/gui/GT_Container_ParamAdv.java index 5c67caa42a..2c4670e52f 100644 --- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/gui/GT_Container_ParamAdv.java +++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/gui/GT_Container_ParamAdv.java @@ -15,16 +15,13 @@ import net.minecraft.item.ItemStack; import java.util.Iterator; public class GT_Container_ParamAdv extends GT_ContainerMetaTile_Machine { - public int extra = 0; - public int data1 = 0; - public int data0 = 0; + public boolean usesFloats = false; + public int pointer=0; public int param = 0; - public float value1f = 0; - public float value0f = 0; - public float input0f = 0; - public float input1f = 0; - private int input0Bits = 0; - private int input1Bits = 0; + public int value1f = 0; + public int value0f = 0; + public int input0f = 0; + public int input1f = 0; public GT_Container_ParamAdv(InventoryPlayer aInventoryPlayer, IGregTechTileEntity aTileEntity) { super(aInventoryPlayer, aTileEntity); @@ -62,84 +59,83 @@ public class GT_Container_ParamAdv extends GT_ContainerMetaTile_Machine { boolean doStuff = true; if ((tSlot != null) && (this.mTileEntity.getMetaTileEntity() != null)) { GT_MetaTileEntity_Hatch_Param paramH = (GT_MetaTileEntity_Hatch_Param) this.mTileEntity.getMetaTileEntity(); - int columnPointer=paramH.extra&0xff; - boolean secondRow=(paramH.extra&0x0100)!=0; - boolean showInts=(paramH.extra&0x10000)!=0; + int columnPointer=paramH.pointer &0xff; + boolean secondRow=(paramH.pointer &0x0100)!=0; + boolean showInts=!paramH.isUsingFloats(); switch (aSlotIndex) { case 0: paramH.param -= (aShifthold == 1 ? 16 : 4); break; case 1: - if (secondRow) {secondRow=false;} else {columnPointer -= (aShifthold == 1 ? 16 : 4);} + if (secondRow) secondRow = false; + else columnPointer -= (aShifthold == 1 ? 16 : 4); break; case 2: - if (secondRow) {columnPointer -= (aShifthold == 1 ? 16 : 4);} else {secondRow=true;} + if (secondRow) columnPointer -= (aShifthold == 1 ? 16 : 4); + else secondRow = true; break; case 3: - if(aShifthold==1){ - if(secondRow) data1=0xFFFFFFFF; - else data0=0xFFFFFFFF; - }else { - if(secondRow){ - data1|=1<<columnPointer; - }else { - data0|=1<<columnPointer; - } + if (aShifthold == 1) { + if (secondRow) paramH.value1i = 0xFFFFFFFF; + else paramH.value0i = 0xFFFFFFFF; + } else { + if (secondRow) paramH.value1i |= 1 << columnPointer; + else paramH.value0i |= 1 << columnPointer; } break; case 4: paramH.param -= (aShifthold == 1 ? 2 : 1); break; case 5: - if (secondRow) {secondRow=false;} else {columnPointer -= (aShifthold == 1 ? 2 : 1);} + if (secondRow) secondRow = false; + else columnPointer -= (aShifthold == 1 ? 2 : 1); break; case 6: - if (secondRow) {columnPointer -= (aShifthold == 1 ? 2 : 1);} else {secondRow=true;} + if (secondRow) columnPointer -= (aShifthold == 1 ? 2 : 1); + else secondRow = true; break; case 7: - if(aShifthold==1){ - if(secondRow) data1=0; - else data0=0; - }else { - if(secondRow){ - data1&=~(1<<columnPointer); - }else { - data0&=~(1<<columnPointer); - } + if (aShifthold == 1) { + if (secondRow) paramH.value1i = 0; + else paramH.value0i = 0; + } else { + if (secondRow) paramH.value1i &= ~(1 << columnPointer); + else paramH.value0i &= ~(1 << columnPointer); } break; case 8: paramH.param += (aShifthold == 1 ? 16 : 4); break; case 9: - if (secondRow) {secondRow=false;} else {columnPointer += (aShifthold == 1 ? 16 : 4);} + if (secondRow) secondRow = false; + else columnPointer += (aShifthold == 1 ? 16 : 4); break; case 10: - if (secondRow) {columnPointer += (aShifthold == 1 ? 16 : 4);} else {secondRow=true;} + if (secondRow) columnPointer += (aShifthold == 1 ? 16 : 4); + else secondRow = true; break; case 11: - if(aShifthold==1){ - if(secondRow) data1^=0xFFFFFFFF; - else data0^=0xFFFFFFFF; - }else { - if(secondRow){ - data1^=1<<columnPointer; - }else { - data0^=1<<columnPointer; - } - } + showInts ^= true; break; case 12: paramH.param += (aShifthold == 1 ? 2 : 1); break; case 13: - if (secondRow) {secondRow=false;} else {columnPointer += (aShifthold == 1 ? 2 : 1);} + if (secondRow) secondRow = false; + else columnPointer += (aShifthold == 1 ? 2 : 1); break; case 14: - if (secondRow) {columnPointer += (aShifthold == 1 ? 2 : 1);} else {secondRow=true;} + if (secondRow) columnPointer += (aShifthold == 1 ? 2 : 1); + else secondRow = true; break; case 15: - showInts^=true; + if (aShifthold == 1) { + if (secondRow) paramH.value1i ^= 0xFFFFFFFF; + else paramH.value0i ^= 0xFFFFFFFF; + } else { + if (secondRow) paramH.value1i ^= 1 << columnPointer; + else paramH.value0i ^= 1 << columnPointer; + } break; default: doStuff = false; @@ -147,13 +143,10 @@ public class GT_Container_ParamAdv extends GT_ContainerMetaTile_Machine { if (doStuff) { if(columnPointer>=32) columnPointer=31; else if(columnPointer<0) columnPointer=0; - paramH.extra=columnPointer; - if(secondRow) paramH.extra|=0x0100; - if(showInts) paramH.extra|=0x10000; + paramH.pointer=secondRow?columnPointer+0x100:columnPointer; + paramH.setUsingFloats(!showInts); if (paramH.param > 9) paramH.param = 9; else if (paramH.param < -1) paramH.param = -1; - paramH.value0f =Float.intBitsToFloat(Float.floatToIntBits(paramH.data0)); - paramH.value1f =Float.intBitsToFloat(Float.floatToIntBits(paramH.data1)); } } return super.slotClick(aSlotIndex, aMouseclick, aShifthold, aPlayer); @@ -166,27 +159,27 @@ public class GT_Container_ParamAdv extends GT_ContainerMetaTile_Machine { return; } this.param = ((GT_MetaTileEntity_Hatch_Param) this.mTileEntity.getMetaTileEntity()).param; - this.data0 = ((GT_MetaTileEntity_Hatch_Param) this.mTileEntity.getMetaTileEntity()).data0; - this.data1 = ((GT_MetaTileEntity_Hatch_Param) this.mTileEntity.getMetaTileEntity()).data1; - this.extra = ((GT_MetaTileEntity_Hatch_Param) this.mTileEntity.getMetaTileEntity()).extra; - this.input0Bits = Float.floatToIntBits(((GT_MetaTileEntity_Hatch_Param) this.mTileEntity.getMetaTileEntity()).input1f); - this.input1Bits = Float.floatToIntBits(((GT_MetaTileEntity_Hatch_Param) this.mTileEntity.getMetaTileEntity()).input2f); + this.value0f = ((GT_MetaTileEntity_Hatch_Param) this.mTileEntity.getMetaTileEntity()).value0i; + this.value1f = ((GT_MetaTileEntity_Hatch_Param) this.mTileEntity.getMetaTileEntity()).value1i; + this.input0f = ((GT_MetaTileEntity_Hatch_Param) this.mTileEntity.getMetaTileEntity()).input0i; + this.input1f = ((GT_MetaTileEntity_Hatch_Param) this.mTileEntity.getMetaTileEntity()).input1i; + this.pointer = ((GT_MetaTileEntity_Hatch_Param) this.mTileEntity.getMetaTileEntity()).pointer; + this.usesFloats =((GT_MetaTileEntity_Hatch_Param) this.mTileEntity.getMetaTileEntity()).isUsingFloats(); Iterator var2 = this.crafters.iterator(); while (var2.hasNext()) { ICrafting var1 = (ICrafting) var2.next(); var1.sendProgressBarUpdate(this, 100, this.param & 0xFFFF); var1.sendProgressBarUpdate(this, 101, this.param >>> 16); - var1.sendProgressBarUpdate(this, 102, this.data0 & 0xFFFF); - var1.sendProgressBarUpdate(this, 103, this.data0 >>> 16); - var1.sendProgressBarUpdate(this, 104, this.data1 & 0xFFFF); - var1.sendProgressBarUpdate(this, 105, this.data1 >>> 16); - var1.sendProgressBarUpdate(this, 106, this.extra & 0xFFFF); - var1.sendProgressBarUpdate(this, 107, this.extra >>> 16); - var1.sendProgressBarUpdate(this, 108, this.input0Bits & 0xFFFF); - var1.sendProgressBarUpdate(this, 109, this.input0Bits >>> 16); - var1.sendProgressBarUpdate(this, 110, this.input1Bits & 0xFFFF); - var1.sendProgressBarUpdate(this, 111, this.input1Bits >>> 16); + var1.sendProgressBarUpdate(this, 102, this.value0f & 0xFFFF); + var1.sendProgressBarUpdate(this, 103, this.value0f >>> 16); + var1.sendProgressBarUpdate(this, 104, this.value1f & 0xFFFF); + var1.sendProgressBarUpdate(this, 105, this.value1f >>> 16); + var1.sendProgressBarUpdate(this, 106, this.input0f & 0xFFFF); + var1.sendProgressBarUpdate(this, 107, this.input0f >>> 16); + var1.sendProgressBarUpdate(this, 108, this.input1f & 0xFFFF); + var1.sendProgressBarUpdate(this, 109, this.input1f >>> 16); + var1.sendProgressBarUpdate(this, 110, this.usesFloats?this.pointer+0x10000:this.pointer); } } @@ -201,43 +194,33 @@ public class GT_Container_ParamAdv extends GT_ContainerMetaTile_Machine { this.param = (this.param & 0xFFFF | (par2 << 16)); return; case 102: - this.data0 = (this.data0 & 0xFFFF0000 | par2); + this.value0f = (this.value0f & 0xFFFF0000 | par2); break; case 103: - this.data0 = (this.data0 & 0xFFFF | (par2 << 16)); + this.value0f = (this.value0f & 0xFFFF | (par2 << 16)); break; case 104: - this.data1 = (this.data1 & 0xFFFF0000 | par2); + this.value1f = (this.value1f & 0xFFFF0000 | par2); break; case 105: - this.data1 = (this.data1 & 0xFFFF | (par2 << 16)); + this.value1f = (this.value1f & 0xFFFF | (par2 << 16)); break; case 106: - this.extra = (this.extra & 0xFFFF0000 | par2); + this.input0f = (this.input0f & 0xFFFF0000 | par2); break; case 107: - this.extra = (this.extra & 0xFFFF | (par2 << 16)); + this.input0f = (this.input0f & 0xFFFF | (par2 << 16)); break; case 108: - this.input0Bits = (this.input0Bits & 0xFFFF0000 | par2); - this.input0f = Float.intBitsToFloat(input0Bits); + this.input1f = (this.input1f & 0xFFFF0000 | par2); return; case 109: - this.input0Bits = (this.input0Bits & 0xFFFF | (par2 << 16)); - this.input0f = Float.intBitsToFloat(input0Bits); + this.input1f = (this.input1f & 0xFFFF | (par2 << 16)); return; case 110: - this.input1Bits = (this.input1Bits & 0xFFFF0000 | par2); - this.input1f = Float.intBitsToFloat(input1Bits); - return; - case 111: - this.input1Bits = (this.input1Bits & 0xFFFF | (par2 << 16)); - this.input1f = Float.intBitsToFloat(input1Bits); - return; + this.pointer = par2 & 0xFFFF; + this.usesFloats=par2>=0x10000; default: - return; } - value0f =Float.intBitsToFloat(data0); - value1f =Float.intBitsToFloat(data1); } } diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/gui/GT_GUIContainer_Param.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/gui/GT_GUIContainer_Param.java index 25945608d9..0741c69235 100644 --- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/gui/GT_GUIContainer_Param.java +++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/gui/GT_GUIContainer_Param.java @@ -1,9 +1,12 @@ package com.github.technus.tectech.thing.metaTileEntity.hatch.gui; +import com.github.technus.tectech.Util; import gregtech.api.gui.GT_GUIContainerMetaTile_Machine; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import net.minecraft.entity.player.InventoryPlayer; +import java.util.Locale; + import static com.github.technus.tectech.TecTech.proxy; import static gregtech.api.enums.GT_Values.RES_PATH_GUI; @@ -14,16 +17,16 @@ public class GT_GUIContainer_Param extends GT_GUIContainerMetaTile_Machine { protected void drawGuiContainerForegroundLayer(int par1, int par2) { if (this.mContainer != null) { - proxy.renderUnicodeString("Parametrizer: " + ((GT_Container_Param) this.mContainer).param, 46, 7, 167, 0xffffff); - proxy.renderUnicodeString("\u24EA\u2b07|F" + String.format(java.util.Locale.ENGLISH, "%+.5E", ((GT_Container_Param) this.mContainer).input0f), 46, 16, 167, 0x22ddff); - proxy.renderUnicodeString("\u2460\u2b07|F" + String.format(java.util.Locale.ENGLISH, "%+.5E", ((GT_Container_Param) this.mContainer).input1f), 46, 24, 167, 0x00ffff); - proxy.renderUnicodeString("\u24EA\u2b06|F" + String.format(java.util.Locale.ENGLISH, "%+.5E", ((GT_Container_Param) this.mContainer).value0f), 46, 33, 167, 0x00bbff); - proxy.renderUnicodeString("\u2460\u2b06|F" + String.format(java.util.Locale.ENGLISH, "%+.5E", ((GT_Container_Param) this.mContainer).value1f), 46, 41, 167, 0x0077ff); - proxy.renderUnicodeString("M\u24EA: " + ((GT_Container_Param) this.mContainer).data0, 46, 50, 167, 0x00bbff); - proxy.renderUnicodeString("M\u2460: " + ((GT_Container_Param) this.mContainer).data1, 46, 58, 167, 0x0077ff); - proxy.renderUnicodeString("E\u24EA\u2460: " + ((GT_Container_Param) this.mContainer).extra, 46, 66, 167, 0x0033ff); + proxy.renderUnicodeString("Parameters: " + ((GT_Container_Param) this.mContainer).param, 46, 7, 167, 0xffffff); + Locale locale=java.util.Locale.getDefault(); + proxy.renderUnicodeString("\u24EA\u2b07" + String.format(locale, "%+d", ((GT_Container_Param) this.mContainer).input0f), 46, 16, 167, 0x22ddff); + proxy.renderUnicodeString("\u2460\u2b07" + String.format(locale, "%+d", ((GT_Container_Param) this.mContainer).input1f), 46, 24, 167, 0x00ffff); + proxy.renderUnicodeString("\u24EA\u2b06" + String.format(locale, "%+d", ((GT_Container_Param) this.mContainer).value0f), 46, 33, 167, 0x00bbff); + proxy.renderUnicodeString("\u2460\u2b06" + String.format(locale, "%+d", ((GT_Container_Param) this.mContainer).value1f), 46, 41, 167, 0x0077ff); + proxy.renderUnicodeString("\u24EA\u2b06" + Util.intToShortString(((GT_Container_Param) this.mContainer).value0f), 46, 50, 167, 0x00bbff); + proxy.renderUnicodeString("\u2460\u2b06" + Util.intToShortString(((GT_Container_Param) this.mContainer).value1f), 46, 58, 167, 0x0077ff); } else { - proxy.renderUnicodeString("Parametrizer", 46, 7, 167, 0xffffff); + proxy.renderUnicodeString("Parameters", 46, 7, 167, 0xffffff); } } diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/gui/GT_GUIContainer_ParamAdv.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/gui/GT_GUIContainer_ParamAdv.java index 04ded38c18..d7ecba8a86 100644 --- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/gui/GT_GUIContainer_ParamAdv.java +++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/gui/GT_GUIContainer_ParamAdv.java @@ -1,9 +1,12 @@ package com.github.technus.tectech.thing.metaTileEntity.hatch.gui; +import com.github.technus.tectech.Util; import gregtech.api.gui.GT_GUIContainerMetaTile_Machine; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import net.minecraft.entity.player.InventoryPlayer; +import java.util.Locale; + import static com.github.technus.tectech.TecTech.proxy; import static gregtech.api.enums.GT_Values.RES_PATH_GUI; @@ -14,23 +17,24 @@ public class GT_GUIContainer_ParamAdv extends GT_GUIContainerMetaTile_Machine { protected void drawGuiContainerForegroundLayer(int par1, int par2) { if (this.mContainer != null) { - proxy.renderUnicodeString("Parametrizer X: " + ((GT_Container_ParamAdv) this.mContainer).param, 46, 7, 167, 0xffffff); - if (((GT_Container_ParamAdv) this.mContainer).extra >= 0x10000) { - proxy.renderUnicodeString("\u24EA\u2b07|I" + String.format(java.util.Locale.ENGLISH, "%d", Float.floatToIntBits(((GT_Container_ParamAdv) this.mContainer).input0f)), 46, 16, 167, 0x22ddff); - proxy.renderUnicodeString("\u2460\u2b07|I" + String.format(java.util.Locale.ENGLISH, "%d", Float.floatToIntBits(((GT_Container_ParamAdv) this.mContainer).input1f)), 46, 24, 167, 0x00ffff); - proxy.renderUnicodeString("\u24EA\u2b06|I" + String.format(java.util.Locale.ENGLISH, "%d", Float.floatToIntBits(((GT_Container_ParamAdv) this.mContainer).input0f)), 46, 33, 167, 0x00bbff); - proxy.renderUnicodeString("\u2460\u2b06|I" + String.format(java.util.Locale.ENGLISH, "%d", Float.floatToIntBits(((GT_Container_ParamAdv) this.mContainer).input1f)), 46, 41, 167, 0x0077ff); + proxy.renderUnicodeString("Parameters X: " + ((GT_Container_ParamAdv) this.mContainer).param, 46, 7, 167, 0xffffff); + Locale locale=java.util.Locale.getDefault(); + if (((GT_Container_ParamAdv) this.mContainer).usesFloats) { + proxy.renderUnicodeString("\u24EA\u2b07" + String.format(locale, "%+d", ((GT_Container_ParamAdv) this.mContainer).input0f), 46, 16, 167, 0x22ddff); + proxy.renderUnicodeString("\u2460\u2b07" + String.format(locale, "%+d", ((GT_Container_ParamAdv) this.mContainer).input1f), 46, 24, 167, 0x00ffff); + proxy.renderUnicodeString("\u24EA\u2b06" + String.format(locale, "%+d", ((GT_Container_ParamAdv) this.mContainer).input0f), 46, 33, 167, 0x00bbff); + proxy.renderUnicodeString("\u2460\u2b06" + String.format(locale, "%+d", ((GT_Container_ParamAdv) this.mContainer).input1f), 46, 41, 167, 0x0077ff); } else { - proxy.renderUnicodeString("\u24EA\u2b07|F" + String.format(java.util.Locale.ENGLISH, "%+.5E", ((GT_Container_ParamAdv) this.mContainer).input0f), 46, 16, 167, 0x22ddff); - proxy.renderUnicodeString("\u2460\u2b07|F" + String.format(java.util.Locale.ENGLISH, "%+.5E", ((GT_Container_ParamAdv) this.mContainer).input1f), 46, 24, 167, 0x00ffff); - proxy.renderUnicodeString("\u24EA\u2b06|F" + String.format(java.util.Locale.ENGLISH, "%+.5E", ((GT_Container_ParamAdv) this.mContainer).value0f), 46, 33, 167, 0x00bbff); - proxy.renderUnicodeString("\u2460\u2b06|F" + String.format(java.util.Locale.ENGLISH, "%+.5E", ((GT_Container_ParamAdv) this.mContainer).value1f), 46, 41, 167, 0x0077ff); + proxy.renderUnicodeString("\u24EA\u2b07" + String.format(locale, "%+.5E", Float.intBitsToFloat(((GT_Container_ParamAdv) this.mContainer).input0f)), 46, 16, 167, 0x22ddff); + proxy.renderUnicodeString("\u2460\u2b07" + String.format(locale, "%+.5E", Float.intBitsToFloat(((GT_Container_ParamAdv) this.mContainer).input1f)), 46, 24, 167, 0x00ffff); + proxy.renderUnicodeString("\u24EA\u2b06" + String.format(locale, "%+.5E", Float.intBitsToFloat(((GT_Container_ParamAdv) this.mContainer).value0f)), 46, 33, 167, 0x00bbff); + proxy.renderUnicodeString("\u2460\u2b06" + String.format(locale, "%+.5E", Float.intBitsToFloat(((GT_Container_ParamAdv) this.mContainer).value1f)), 46, 41, 167, 0x0077ff); } - proxy.renderUnicodeString("\u24EA\u2b06|B" + ((GT_Container_ParamAdv) this.mContainer).data0, 46, 50, 167, 0x00bbff); - proxy.renderUnicodeString("\u2460\u2b06|B" + ((GT_Container_ParamAdv) this.mContainer).data1, 46, 58, 167, 0x0077ff); - proxy.renderUnicodeString("Pointer: 0x" + Integer.toHexString(((((GT_Container_ParamAdv) this.mContainer).extra & 0xFFFF)) | 0x10000).substring(1), 46, 66, 167, 0x0033ff); + proxy.renderUnicodeString("\u24EA\u2b06" + Util.intToShortString(((GT_Container_ParamAdv) this.mContainer).value0f), 46, 50, 167, 0x00bbff); + proxy.renderUnicodeString("\u2460\u2b06" + Util.intToShortString(((GT_Container_ParamAdv) this.mContainer).value1f), 46, 58, 167, 0x0077ff); + proxy.renderUnicodeString("Pointer " + Integer.toHexString(((GT_Container_ParamAdv) this.mContainer).pointer | 0x10000).substring(1), 46, 66, 167, 0x0033ff); } else { - proxy.renderUnicodeString("Parametrizer X", 46, 7, 167, 0xffffff); + proxy.renderUnicodeString("Parameters X", 46, 7, 167, 0xffffff); } } 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 9a1d4397f5..bc43f05787 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 @@ -40,7 +40,7 @@ public class GT_MetaTileEntity_EM_computer extends GT_MetaTileEntity_MultiblockB private static Textures.BlockIcons.CustomIcon ScreenON; private final ArrayList<GT_MetaTileEntity_Hatch_Rack> eRacks = new ArrayList<>(); - private int maxTemp = 0; + private int maxCurrentTemp = 0; //region Structure private static final String[][] front = new String[][]{{"A ", "A ", "A. ", "A ",},}; @@ -93,11 +93,19 @@ public class GT_MetaTileEntity_EM_computer extends GT_MetaTileEntity_MultiblockB } @Override - public boolean checkRecipe_EM(ItemStack itemStack) { + public boolean checkRecipe_EM(ItemStack itemStack, boolean noParametrizers) { eAvailableData = 0; - maxTemp = 0; - if(eParamsIn[0]>=0 && eParamsIn[10]>=0){ - float eut=V[8] * eParamsIn[10]; + maxCurrentTemp = 0; + double overClockRatio,overVoltageRatio; + if (noParametrizers) { + overVoltageRatio=overClockRatio=1; + } else { + overClockRatio=getParameterInSafely(0,0); + overVoltageRatio=getParameterInSafely(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; if(eut<Integer.MAX_VALUE-7) mEUt = -(int)eut; else{ @@ -111,15 +119,15 @@ public class GT_MetaTileEntity_EM_computer extends GT_MetaTileEntity_MultiblockB short thingsActive = 0; int rackComputation; - for (GT_MetaTileEntity_Hatch_Rack r : eRacks) { - if (!isValidMetaTileEntity(r)) continue; - if (r.heat > maxTemp) maxTemp = r.heat; - rackComputation = r.tickComponents(eParamsIn[0], eParamsIn[10]); + for (GT_MetaTileEntity_Hatch_Rack rack : eRacks) { + if (!isValidMetaTileEntity(rack)) continue; + if (rack.heat > maxCurrentTemp) maxCurrentTemp = rack.heat; + rackComputation = rack.tickComponents((float) overClockRatio, (float) overVoltageRatio); if (rackComputation > 0) { eAvailableData += rackComputation; thingsActive += 4; } - r.getBaseMetaTileEntity().setActive(true); + rack.getBaseMetaTileEntity().setActive(true); } for (GT_MetaTileEntity_Hatch_InputData di : eInputData) @@ -154,39 +162,51 @@ public class GT_MetaTileEntity_EM_computer extends GT_MetaTileEntity_MultiblockB } @Override - public void updateParameters_EM() { - if (eParamsIn[0] < 0) - eParamsInStatus[0] = PARAM_TOO_LOW; - else if (eParamsIn[0] < 1) - eParamsInStatus[0] = PARAM_LOW; - else if (eParamsIn[0] == 1) - eParamsInStatus[0] = PARAM_OK; - else if (eParamsIn[0] <= 3) - eParamsInStatus[0] = PARAM_HIGH; - else eParamsInStatus[0] = PARAM_TOO_HIGH; - - if (eParamsIn[10] < 0.7f) - eParamsInStatus[10] = PARAM_TOO_LOW; - else if (eParamsIn[10] < 0.8f) - eParamsInStatus[10] = PARAM_LOW; - else if (eParamsIn[10] <= 1.2f) - eParamsInStatus[10] = PARAM_OK; - else if (eParamsIn[10] <= 2) - eParamsInStatus[10] = PARAM_HIGH; - else eParamsInStatus[10] = PARAM_TOO_HIGH; - - eParamsOut[0] = maxTemp; - eParamsOut[10] = eAvailableData; - - if (maxTemp < -10000) - eParamsOutStatus[0] = PARAM_TOO_LOW; - else if (maxTemp < 0) - eParamsOutStatus[0] = PARAM_LOW; - else if (maxTemp == 0) - eParamsOutStatus[0] = PARAM_OK; - else if (maxTemp <= 5000) - eParamsOutStatus[0] = PARAM_HIGH; - else eParamsOutStatus[0] = PARAM_TOO_HIGH; + public void updateParameters_EM(boolean busy) { + double ocRatio=getParameterInSafely(0,0); + if (ocRatio < 0) + setStatusOfParameterIn(0,0,STATUS_TOO_LOW); + else if (ocRatio < 1) + setStatusOfParameterIn(0,0,STATUS_LOW); + else if (ocRatio == 1) + setStatusOfParameterIn(0,0,STATUS_OK); + else if (ocRatio <= 3) + setStatusOfParameterIn(0,0,STATUS_HIGH); + else if(Double.isNaN(ocRatio)) + setStatusOfParameterIn(0,0,STATUS_WRONG); + else setStatusOfParameterIn(0,0,STATUS_TOO_HIGH); + + double ovRatio=getParameterInSafely(0,1); + if (ovRatio < 0.7f) + setStatusOfParameterIn(0,1,STATUS_TOO_LOW); + else if (ovRatio < 0.8f) + setStatusOfParameterIn(0,1,STATUS_LOW); + else if (ovRatio <= 1.2f) + setStatusOfParameterIn(0,1,STATUS_OK); + else if (ovRatio <= 2) + setStatusOfParameterIn(0,1,STATUS_HIGH); + else if(Double.isNaN(ovRatio)) + setStatusOfParameterIn(0,1,STATUS_WRONG); + else setStatusOfParameterIn(0,1,STATUS_TOO_HIGH); + + setParameterOutSafely(0,0, maxCurrentTemp); + setParameterOutSafely(0,1, eAvailableData); + + if (maxCurrentTemp < -10000) + setStatusOfParameterOut(0,0,STATUS_TOO_LOW); + else if (maxCurrentTemp < 0) + setStatusOfParameterOut(0,0,STATUS_LOW); + else if (maxCurrentTemp == 0) + setStatusOfParameterOut(0,0,STATUS_OK); + else if (maxCurrentTemp <= 5000) + setStatusOfParameterOut(0,0,STATUS_HIGH); + else setStatusOfParameterOut(0,0,STATUS_TOO_HIGH); + + if(!busy) + setStatusOfParameterOut(0,1,STATUS_WRONG); + else if(eAvailableData<=0) + setStatusOfParameterOut(0,1,STATUS_TOO_LOW); + else setStatusOfParameterOut(0,1,STATUS_OK); } @Override @@ -280,7 +300,7 @@ public class GT_MetaTileEntity_EM_computer extends GT_MetaTileEntity_MultiblockB public String[] getDescription() { return new String[]{ CommonValues.TEC_MARK_EM, - Util.intToString(TecTech.Rnd.nextInt(), 8), + Util.intToString(TecTech.Rnd.nextInt()), EnumChatFormatting.AQUA.toString() + EnumChatFormatting.BOLD + "You need it to process the number above" }; } 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 477d573de8..66ba0d8433 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 @@ -110,7 +110,7 @@ public class GT_MetaTileEntity_EM_decay extends GT_MetaTileEntity_MultiblockBase } @Override - public boolean checkRecipe_EM(ItemStack itemStack) { + public boolean checkRecipe_EM(ItemStack itemStack, boolean noParametrizers) { 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 1b6d7b49a6..0b3fdb5523 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 @@ -82,7 +82,7 @@ public class GT_MetaTileEntity_EM_dequantizer extends GT_MetaTileEntity_Multiblo } @Override - public boolean checkRecipe_EM(ItemStack itemStack) { + public boolean checkRecipe_EM(ItemStack itemStack, boolean noParametrizers) { 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 276e536fb6..573cf8a5be 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 @@ -91,7 +91,7 @@ public class GT_MetaTileEntity_EM_infuser extends GT_MetaTileEntity_MultiblockBa } @Override - public boolean checkRecipe_EM(ItemStack itemStack) { + public boolean checkRecipe_EM(ItemStack itemStack, boolean noParametrizers) { 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 3b6c3be66a..3d6b11bd79 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 @@ -77,27 +77,33 @@ public class GT_MetaTileEntity_EM_junction extends GT_MetaTileEntity_MultiblockB } @Override - public void updateParameters_EM() { + public void updateParameters_EM(boolean busy) { + double src,dest; for (int i = 0; i < 10; i++) { - if ((int) eParamsIn[i] < 0) eParamsInStatus[i] = PARAM_TOO_LOW; - else if ((int) eParamsIn[i] == 0) eParamsInStatus[i] = PARAM_UNUSED; - else if ((int) eParamsIn[i] > eInputHatches.size()) eParamsInStatus[i] = PARAM_TOO_HIGH; - else eParamsInStatus[i] = PARAM_OK; - } - for (int i = 10; i < 20; i++) { - if (eParamsInStatus[i - 10] == PARAM_OK) { - if ((int) eParamsIn[i] < 0) eParamsInStatus[i] = PARAM_TOO_LOW; - else if ((int) eParamsIn[i] == 0) eParamsInStatus[i] = PARAM_LOW; - else if ((int) eParamsIn[i] > eOutputHatches.size()) eParamsInStatus[i] = PARAM_TOO_HIGH; - else eParamsInStatus[i] = PARAM_OK; + src=getParameterInSafely(i,0); + if (src <= 0){ + setStatusOfParameterIn(i,0,STATUS_TOO_LOW); + setStatusOfParameterIn(i,1,STATUS_UNUSED); + } else if (src > eInputHatches.size()){ + setStatusOfParameterIn(i,0,STATUS_TOO_HIGH); + setStatusOfParameterIn(i,1,STATUS_UNUSED); + } else if(Double.isNaN(src)){ + setStatusOfParameterIn(i,0,STATUS_WRONG); + setStatusOfParameterIn(i,1,STATUS_UNUSED); } else { - eParamsInStatus[i] = PARAM_UNUSED; + setStatusOfParameterIn(i,0,STATUS_OK); + dest=getParameterInSafely(i,1); + if(dest<0) setStatusOfParameterIn(i,1,STATUS_TOO_LOW); + else if(dest==0) setStatusOfParameterIn(i,1,STATUS_LOW); + else if(dest>eOutputHatches.size()) setStatusOfParameterIn(i,1,STATUS_TOO_HIGH); + else if(Double.isNaN(dest)) setStatusOfParameterIn(i,1,STATUS_WRONG); + else setStatusOfParameterIn(i,1,STATUS_OK); } } } @Override - public boolean checkRecipe_EM(ItemStack itemStack) { + public boolean checkRecipe_EM(ItemStack itemStack, boolean noParametrizers) { for (GT_MetaTileEntity_Hatch_InputElemental in : eInputHatches) if (in.getContainerHandler().hasStacks()) { mEUt = -(int) V[8]; @@ -113,15 +119,18 @@ public class GT_MetaTileEntity_EM_junction extends GT_MetaTileEntity_MultiblockB @Override public void outputAfterRecipe_EM() { + double src,dest; for (int i = 0; i < 10; i++) { - final int inIndex = (int) (eParamsIn[i]) - 1; - if (inIndex < 0 || inIndex > eInputHatches.size()) continue; - final int outIndex = (int) (eParamsIn[i + 10]) - 1; + src=getParameterInSafely(i,0); + dest=getParameterInSafely(i,1); + final int inIndex = (int)src - 1; + if (inIndex < 0 || inIndex >= eInputHatches.size() || Double.isNaN(src) || Double.isNaN(dest)) continue; + final int outIndex = (int)dest - 1; GT_MetaTileEntity_Hatch_InputElemental in = eInputHatches.get(inIndex); if (outIndex == -1) {//param==0 -> null the content cleanHatchContentEM_EM(in); } else { - if (outIndex < 0 || outIndex > eOutputHatches.size()) continue; + if (outIndex < 0 || outIndex >= eOutputHatches.size()) continue; GT_MetaTileEntity_Hatch_OutputElemental out = eOutputHatches.get(outIndex); out.getContainerHandler().putUnifyAll(in.getContainerHandler()); in.getContainerHandler().clear(); 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 ac3ff9030b..fac96beee7 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 @@ -91,7 +91,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, boolean noParametrizers) {//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 6ee2e7f88f..ada50c3094 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 @@ -176,7 +176,7 @@ public class GT_MetaTileEntity_EM_research extends GT_MetaTileEntity_MultiblockB } @Override - public boolean checkRecipe_EM(ItemStack itemStack) { + public boolean checkRecipe_EM(ItemStack itemStack, boolean noParametrizers) { 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 60af83bdd7..65b2fbf855 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 @@ -177,7 +177,7 @@ public class GT_MetaTileEntity_EM_scanner extends GT_MetaTileEntity_MultiblockBa } @Override - public boolean checkRecipe_EM(ItemStack itemStack) { + public boolean checkRecipe_EM(ItemStack itemStack, boolean noParametrizers) { 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 d1717d2a84..6207dfe08a 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 @@ -79,7 +79,7 @@ public class GT_MetaTileEntity_EM_switch extends GT_MetaTileEntity_MultiblockBas } @Override - public boolean checkRecipe_EM(ItemStack itemStack) { + public boolean checkRecipe_EM(ItemStack itemStack, boolean noParametrizers) { short thingsActive = 0; for (GT_MetaTileEntity_Hatch_InputData di : eInputData) if (di.q != null) @@ -102,11 +102,14 @@ public class GT_MetaTileEntity_EM_switch extends GT_MetaTileEntity_MultiblockBas public void outputAfterRecipe_EM() { if (eOutputData.size() > 0) { float total = 0; + double dest; + double weight; for (int i = 0; i < 10; i++) {//each param pair - if (eParamsIn[i] > 0 && eParamsIn[i + 10] >= 0) - total += eParamsIn[i];//Total weighted div + dest=getParameterInSafely(i,1); + weight=getParameterInSafely(i,0); + if (weight > 0 && dest >= 0 && !Double.isNaN(dest)) + total += weight;//Total weighted div } - total += total / 100F; final Vec3pos pos = new Vec3pos(getBaseMetaTileEntity()); QuantumDataPacket pack = new QuantumDataPacket(pos, 0); @@ -119,11 +122,13 @@ public class GT_MetaTileEntity_EM_switch extends GT_MetaTileEntity_MultiblockBas long remaining = pack.computation; for (int i = 0; i < 10; i++) { - if (eParamsIn[i] > 0) { - final int outIndex = (int) (eParamsIn[i + 10]) - 1; - if (outIndex < 0 || outIndex > eOutputData.size()) continue; + dest=getParameterInSafely(i,1); + weight=getParameterInSafely(i,0); + if (weight > 0 && dest >= 0 && !Double.isNaN(dest)) { + final int outIndex = (int)dest - 1; + if (outIndex < 0 || outIndex >= eOutputData.size()) continue; GT_MetaTileEntity_Hatch_OutputData out = eOutputData.get(outIndex); - final long part = (long) ((pack.computation * eParamsIn[i]) / total); + final long part = (long)Math.floor((pack.computation * weight) / total); if (part > 0) { remaining -= part; if (remaining > 0) @@ -139,20 +144,28 @@ public class GT_MetaTileEntity_EM_switch extends GT_MetaTileEntity_MultiblockBas } @Override - public void updateParameters_EM() { + public void updateParameters_EM(boolean busy) { + double weight,dest; for (int i = 0; i < 10; i++) { - if (eParamsIn[i] < 0) eParamsInStatus[i] = PARAM_TOO_LOW; - else if (eParamsIn[i] == 0) eParamsInStatus[i] = PARAM_UNUSED; - else if (eParamsIn[i] == Float.POSITIVE_INFINITY) eParamsInStatus[i] = PARAM_TOO_HIGH; - else eParamsInStatus[i] = PARAM_OK; - } - for (int i = 10; i < 20; i++) { - if (eParamsInStatus[i - 10] == PARAM_OK) { - if ((int) eParamsIn[i] <= 0) eParamsInStatus[i] = PARAM_LOW; - else if ((int) eParamsIn[i] > eOutputData.size()) eParamsInStatus[i] = PARAM_TOO_HIGH; - else eParamsInStatus[i] = PARAM_OK; - } else { - eParamsInStatus[i] = PARAM_UNUSED; + weight=getParameterInSafely(i,0); + if(weight<=0) { + setStatusOfParameterIn(i, 0, STATUS_TOO_LOW); + setStatusOfParameterIn(i, 1, STATUS_UNUSED); + }else if (Double.isNaN(weight)) { + setStatusOfParameterIn(i, 0, STATUS_WRONG); + setStatusOfParameterIn(i, 1, STATUS_UNUSED); + }else { + setStatusOfParameterIn(i,0,STATUS_OK); + dest=getParameterInSafely(i,1); + if(dest<0) + setStatusOfParameterIn(i,1,STATUS_TOO_LOW); + else if(dest==0) + setStatusOfParameterIn(i,1,STATUS_LOW); + else if(dest>eOutputData.size()) + setStatusOfParameterIn(i,1,STATUS_TOO_HIGH); + else if(Double.isNaN(dest)) + setStatusOfParameterIn(i,1,STATUS_WRONG); + else setStatusOfParameterIn(i,1,STATUS_OK); } } } 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 36b0a106eb..83a7415d02 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 @@ -111,7 +111,7 @@ public class GT_MetaTileEntity_EM_transformer extends GT_MetaTileEntity_Multiblo } @Override - public boolean checkRecipe_EM(ItemStack itemStack) { + public boolean checkRecipe_EM(ItemStack itemStack, boolean noParametrizers) { if (ePowerPass) { mEfficiencyIncrease = 10000; mMaxProgresstime = 20; diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_MultiblockBase_EM.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_MultiblockBase_EM.java index 41bb3f9998..65a0b7c3bf 100644 --- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_MultiblockBase_EM.java +++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_MultiblockBase_EM.java @@ -71,14 +71,16 @@ public abstract class GT_MetaTileEntity_MultiblockBase_EM extends GT_MetaTileEnt // 0 and 10 are from first parametrizer // 1 and 11 are from second etc... - public final float[] eParamsIn = new float[20];//float number I from parametrizers - public final float[] eParamsOut = new float[20];//float number O to parametrizers - public final byte[] eParamsInStatus = new byte[20];//LED status for I - public final byte[] eParamsOutStatus = new byte[20];//LED status for O - public final static byte PARAM_UNUSED = 0, - PARAM_TOO_LOW = 1, PARAM_LOW = 2, - PARAM_WRONG = 3, PARAM_OK = 4, - PARAM_TOO_HIGH = 5, PARAM_HIGH = 6; + private final int[] iParamsIn = new int[20];//number I from parametrizers + private final int[] iParamsOut = new int[20];//number O to parametrizers + private final boolean[] bParamsAreFloats = new boolean[10]; + + private final byte[] eParamsInStatus = new byte[20];//LED status for I + private final byte[] eParamsOutStatus = new byte[20];//LED status for O + public final static byte STATUS_UNUSED = 0, + STATUS_TOO_LOW = 1, STATUS_LOW = 2, + STATUS_WRONG = 3, STATUS_OK = 4, + STATUS_TOO_HIGH = 5, STATUS_HIGH = 6; // 0,2,4,6 - ok // 1,3,5 - nok @@ -103,13 +105,13 @@ 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) { + public boolean checkRecipe_EM(ItemStack itemStack, boolean noParametrizers) { 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() { + public void updateParameters_EM(boolean busy) { } // update status of parameters in guis and "machine state" // Called before check recipe, before outputting, and every second the machine is active @@ -302,22 +304,27 @@ public abstract class GT_MetaTileEntity_MultiblockBase_EM extends GT_MetaTileEnt } NBTTagCompound paramI = new NBTTagCompound(); - for (int i = 0; i < 20; i++) - paramI.setFloat(Integer.toString(i), eParamsIn[i]); + for (int i = 0; i < iParamsIn.length; i++) + paramI.setInteger(Integer.toString(i), iParamsIn[i]); aNBT.setTag("eParamsIn", paramI); NBTTagCompound paramO = new NBTTagCompound(); - for (int i = 0; i < 20; i++) - paramO.setFloat(Integer.toString(i), eParamsOut[i]); + for (int i = 0; i < iParamsOut.length; i++) + paramO.setInteger(Integer.toString(i), iParamsOut[i]); aNBT.setTag("eParamsOut", paramO); + NBTTagCompound paramB = new NBTTagCompound(); + for (int i = 0; i < bParamsAreFloats.length; i++) + paramB.setBoolean(Integer.toString(i), bParamsAreFloats[i]); + aNBT.setTag("eParamsB", paramB); + NBTTagCompound paramIs = new NBTTagCompound(); - for (int i = 0; i < 20; i++) + for (int i = 0; i < eParamsInStatus.length; i++) paramIs.setByte(Integer.toString(i), eParamsInStatus[i]); aNBT.setTag("eParamsInS", paramIs); NBTTagCompound paramOs = new NBTTagCompound(); - for (int i = 0; i < 20; i++) + for (int i = 0; i < eParamsOutStatus.length; i++) paramOs.setByte(Integer.toString(i), eParamsOutStatus[i]); aNBT.setTag("eParamsOutS", paramOs); } @@ -371,12 +378,16 @@ public abstract class GT_MetaTileEntity_MultiblockBase_EM extends GT_MetaTileEnt } else outputEM = new cElementalInstanceStackMap[0]; NBTTagCompound paramI = aNBT.getCompoundTag("eParamsIn"); - for (int i = 0; i < eParamsIn.length; i++) - eParamsIn[i] = paramI.getFloat(Integer.toString(i)); + for (int i = 0; i < iParamsIn.length; i++) + iParamsIn[i] = paramI.getInteger(Integer.toString(i)); NBTTagCompound paramO = aNBT.getCompoundTag("eParamsOut"); - for (int i = 0; i < eParamsOut.length; i++) - eParamsOut[i] = paramO.getFloat(Integer.toString(i)); + for (int i = 0; i < iParamsOut.length; i++) + iParamsOut[i] = paramO.getInteger(Integer.toString(i)); + + NBTTagCompound paramB = aNBT.getCompoundTag("eParamsB"); + for (int i = 0; i < bParamsAreFloats.length; i++) + bParamsAreFloats[i] = paramB.getBoolean(Integer.toString(i)); NBTTagCompound paramIs = aNBT.getCompoundTag("eParamsInS"); for (int i = 0; i < eParamsInStatus.length; i++) @@ -395,6 +406,61 @@ public abstract class GT_MetaTileEntity_MultiblockBase_EM extends GT_MetaTileEnt return false; } + //Param methods + public final boolean isParametrizerUsingFloat(int hatchNo){ + return bParamsAreFloats[hatchNo]; + } + + public final double getParameterInSafely(int hatchNo, int paramID){ + return bParamsAreFloats[hatchNo]?Float.intBitsToFloat(iParamsIn[hatchNo+10*paramID]):iParamsIn[hatchNo+10*paramID]; + } + + public final int getParameterInInt(int hatchNo, int paramID){ + return iParamsIn[hatchNo+10*paramID]; + } + + public final float getParameterInFloat(int hatchNo, int paramID){ + return Float.intBitsToFloat(iParamsIn[hatchNo+10*paramID]); + } + + public final void setParameterOutSafely(int hatchNo, int paramID, double value){ + if(bParamsAreFloats[hatchNo]) { + iParamsOut[hatchNo+10*paramID]=Float.floatToIntBits((float) value); + }else{ + iParamsOut[hatchNo+10*paramID]=(int)value; + } + } + + public final boolean setParameterOutInt(int hatchNo, int paramID, int value){ + if(bParamsAreFloats[hatchNo]) return false; + iParamsOut[hatchNo+10*paramID]=value; + return true; + } + + public final boolean setParameterOutFloat(int hatchNo, int paramID, float value){ + if(bParamsAreFloats[hatchNo]) { + iParamsOut[hatchNo + 10 * paramID] = Float.floatToIntBits(value); + return true; + } + return false; + } + + public final byte getStatusOfParameterIn(int hatchNo, int paramID){ + return eParamsInStatus[hatchNo+10*paramID]; + } + + public final void setStatusOfParameterIn(int hatchNo, int paramID, byte status){ + eParamsInStatus[hatchNo+10*paramID]=status; + } + + public final byte getStatusOfParameterOut(int hatchNo, int paramID){ + return eParamsOutStatus[hatchNo+10*paramID]; + } + + public final void setStatusOfParameterOut(int hatchNo, int paramID, byte status){ + eParamsOutStatus[hatchNo+10*paramID]=status; + } + @Override public final boolean checkMachine(IGregTechTileEntity iGregTechTileEntity, ItemStack itemStack) { return checkMachine_EM(iGregTechTileEntity, itemStack); @@ -527,8 +593,12 @@ public abstract class GT_MetaTileEntity_MultiblockBase_EM extends GT_MetaTileEnt for (GT_MetaTileEntity_Hatch_Uncertainty hatch : eUncertainHatches) if (isValidMetaTileEntity(hatch)) hatch.getBaseMetaTileEntity().setActive(true); - for (GT_MetaTileEntity_Hatch_Param hatch : eParamHatches) - if (isValidMetaTileEntity(hatch)) hatch.getBaseMetaTileEntity().setActive(true); + for (GT_MetaTileEntity_Hatch_Param hatch : eParamHatches){ + if (isValidMetaTileEntity(hatch)) { + hatch.getBaseMetaTileEntity().setActive(true); + if(hatch.param>=0) bParamsAreFloats[hatch.param]=hatch.isUsingFloats(); + } + } } else { maxEUinputMin = 0; maxEUinputMax = 0; @@ -675,6 +745,8 @@ public abstract class GT_MetaTileEntity_MultiblockBase_EM extends GT_MetaTileEnt if (aBaseMetaTileEntity.isAllowedToWork()) { if (checkRecipe(mInventory[1])) { mEfficiency = Math.max(0, Math.min(mEfficiency + mEfficiencyIncrease, getMaxEfficiency(mInventory[1]) - ((getIdealStatus() - getRepairStatus()) * 1000))); + }else { + mMaxProgresstime=0; } updateSlots(); } else notAllowedToWork_stopMachine_EM(); @@ -686,6 +758,8 @@ public abstract class GT_MetaTileEntity_MultiblockBase_EM extends GT_MetaTileEnt if (aBaseMetaTileEntity.isAllowedToWork()) { if (checkRecipe(mInventory[1])) { mEfficiency = Math.max(0, Math.min(mEfficiency + mEfficiencyIncrease, getMaxEfficiency(mInventory[1]) - ((getIdealStatus() - getRepairStatus()) * 1000))); + }else { + mMaxProgresstime=0; } updateSlots(); } //else notAllowedToWork_stopMachine_EM(); //it is already stopped here @@ -1043,19 +1117,20 @@ 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(); - return checkRecipe_EM(itemStack); + return checkRecipe_EM(itemStack, eParamHatches.size()==0); } private void hatchesStatusUpdate_EM() { - for (GT_MetaTileEntity_Hatch_Param param : eParamHatches) { - final int paramID = param.param; - if (paramID < 0) continue; - eParamsIn[paramID] = param.value0f; - eParamsIn[paramID + 10] = param.value1f; - param.input1f = eParamsOut[paramID]; - param.input2f = eParamsOut[paramID + 10]; - } - updateParameters_EM(); + for (GT_MetaTileEntity_Hatch_Param hatch : eParamHatches) { + if (!isValidMetaTileEntity(hatch) || hatch.param < 0) continue; + final int paramID = hatch.param; + iParamsIn[paramID] = hatch.value0i; + iParamsIn[paramID + 10] = hatch.value1i; + hatch.input0i = iParamsOut[paramID]; + hatch.input1i = iParamsOut[paramID + 10]; + bParamsAreFloats[hatch.param]=hatch.isUsingFloats(); + } + updateParameters_EM(mMaxProgresstime>0); eAvailableData = getAvailableData_EM(); 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 8360b09708..45267e3490 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 @@ -34,10 +34,11 @@ import static gregtech.api.GregTech_API.sBlockCasings4; * Created by danie_000 on 17.12.2016. */ public class GT_MetaTileEntity_TM_microwave extends GT_MetaTileEntity_MultiblockBase_EM implements IConstructable { - private int powerSetting = 1000; - private int timerSetting = 360; + 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 boolean hasBeenPausedThisCycle =false; + private boolean hasBeenPausedThisCycle=false; private boolean flipped=false; //region Structure @@ -72,14 +73,10 @@ public class GT_MetaTileEntity_TM_microwave extends GT_MetaTileEntity_Multiblock public GT_MetaTileEntity_TM_microwave(int aID, String aName, String aNameRegional) { super(aID, aName, aNameRegional); - eParamsIn[0] =powerSetting; - eParamsIn[10]=timerSetting; } public GT_MetaTileEntity_TM_microwave(String aName) { super(aName); - eParamsIn[0] =powerSetting; - eParamsIn[10]=timerSetting; } public IMetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) { @@ -103,7 +100,7 @@ public class GT_MetaTileEntity_TM_microwave extends GT_MetaTileEntity_Multiblock @Override public Object getClientGUI(int aID, InventoryPlayer aPlayerInventory, IGregTechTileEntity aBaseMetaTileEntity) { - return new GT_GUIContainer_MultiMachineEM(aPlayerInventory, aBaseMetaTileEntity, this.getLocalName(), "EMDisplay.png", false, false, true); + return new GT_GUIContainer_MultiMachineEM(aPlayerInventory, aBaseMetaTileEntity, this.getLocalName(), "EMDisplay.png", false, false, true);//todo texture } @Override @@ -157,9 +154,13 @@ public class GT_MetaTileEntity_TM_microwave extends GT_MetaTileEntity_Multiblock } @Override - public boolean checkRecipe_EM(ItemStack itemStack) { + public boolean checkRecipe_EM(ItemStack itemStack, boolean noParametrizers) { hasBeenPausedThisCycle =false; - if(powerSetting<=300 || eParamsInStatus[0] == PARAM_TOO_HIGH || timerSetting<=0 || timerSetting>3000) return false; + if(noParametrizers){ + powerSetting=POWER_SETTING_DEFAULT; + timerSetting=TIMER_SETTING_DEFAULT; + } + if(powerSetting<300 || timerSetting<=0 || timerSetting>3000) return false; if (timerValue <= 0) { timerValue=timerSetting; } @@ -239,27 +240,36 @@ public class GT_MetaTileEntity_TM_microwave extends GT_MetaTileEntity_Multiblock } @Override - public void updateParameters_EM() { - if (eParamsIn[0] <= 300) - eParamsInStatus[0] = PARAM_TOO_LOW; - else if (eParamsIn[0] < 1000) - eParamsInStatus[0] = PARAM_LOW; - else if (eParamsIn[0] == 1000) - eParamsInStatus[0] = PARAM_OK; - else if (eParamsIn[0] <= Integer.MAX_VALUE) - eParamsInStatus[0] = PARAM_HIGH; - else eParamsInStatus[0] = PARAM_TOO_HIGH; - - if (eParamsIn[10] <= 1) - eParamsInStatus[10] = PARAM_TOO_LOW; - else if (eParamsIn[10] <= 3000) - eParamsInStatus[10] = PARAM_OK; - else eParamsInStatus[10] = PARAM_TOO_HIGH; - - powerSetting = (int)eParamsIn[0]; - timerSetting = (int)eParamsIn[10]; - - eParamsOut[0] = timerValue; + public void updateParameters_EM(boolean machineIsBusy) { + double powerParameter= getParameterInSafely(0,0); + if (powerParameter < 300) + setStatusOfParameterIn(0,0, STATUS_TOO_LOW); + else if (powerParameter < 1000) + setStatusOfParameterIn(0,0, STATUS_LOW); + else if (powerParameter == 1000) + setStatusOfParameterIn(0,0, STATUS_OK); + else if (powerParameter==Double.POSITIVE_INFINITY) + setStatusOfParameterIn(0,0, STATUS_TOO_HIGH); + else if (Double.isNaN(powerParameter)) + setStatusOfParameterIn(0,0, STATUS_WRONG); + else setStatusOfParameterOut(0,0,STATUS_HIGH); + + double timerParameter= getParameterInSafely(0,1); + if (timerParameter <= 1) + setStatusOfParameterIn(0,1,STATUS_TOO_LOW); + else if (timerParameter <= 3000) + setStatusOfParameterIn(0,0,STATUS_OK); + else if (Double.isNaN(timerParameter)) + setStatusOfParameterIn(0,1,STATUS_WRONG); + else setStatusOfParameterIn(0,1,STATUS_TOO_HIGH); + + setParameterOutSafely(0,0,timerValue); + setParameterOutSafely(0,1,timerSetting-timerValue); + + if(machineIsBusy) return; + + powerSetting = (int)powerParameter; + timerSetting = (int)timerParameter; } @Override diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/gui/GT_GUIContainer_MultiMachineEM.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/gui/GT_GUIContainer_MultiMachineEM.java index 98e60e4498..f5a39ae779 100644 --- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/gui/GT_GUIContainer_MultiMachineEM.java +++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/gui/GT_GUIContainer_MultiMachineEM.java @@ -173,7 +173,7 @@ public class GT_GUIContainer_MultiMachineEM extends GT_GUIContainerMetaTile_Mach private void LEDdrawP(int x, int y, int i, int j, byte status) { final int v = 192, su = 8, sv = 6, u = 11; switch (status) { - case PARAM_WRONG: + case STATUS_WRONG: if (counter < 2) { drawTexturedModalRect(x + su * i, y + sv * j, u + su * i, v + sv * j, su, sv); break; @@ -181,23 +181,23 @@ public class GT_GUIContainer_MultiMachineEM extends GT_GUIContainerMetaTile_Mach drawTexturedModalRect(x + su * i, y + sv * j, u + su * i, v + sv * (8 + j), su, sv); break; } - case PARAM_OK://ok + case STATUS_OK://ok drawTexturedModalRect(x + su * i, y + sv * j, u + su * i, v + sv * (4 + j), su, sv); break; - case PARAM_TOO_LOW://too low blink + case STATUS_TOO_LOW://too low blink if (counter < 3) { drawTexturedModalRect(x + su * i, y + sv * j, u + su * i, v + sv * j, su, sv); break; } - case PARAM_LOW:// too low + case STATUS_LOW:// too low drawTexturedModalRect(x + su * i, y + sv * j, u + su * i, v + sv * (2 + j), su, sv); break; - case PARAM_TOO_HIGH://too high blink + case STATUS_TOO_HIGH://too high blink if (counter < 3) { drawTexturedModalRect(x + su * i, y + sv * j, u + su * i, v + sv * (8 + j), su, sv); break; } - case PARAM_HIGH:// too high + case STATUS_HIGH:// too high drawTexturedModalRect(x + su * i, y + sv * j, u + su * i, v + sv * (6 + j), su, sv); break; } |