diff options
author | Technus <daniel112092@gmail.com> | 2018-01-30 22:14:14 +0100 |
---|---|---|
committer | Technus <daniel112092@gmail.com> | 2018-01-30 22:14:14 +0100 |
commit | 5232449b9b2793793b2259c8e23124205d00c38a (patch) | |
tree | 8af2f0cd3470f12f172bfa4e1364ad8c1e0859d0 /src/main/java/com | |
parent | 24f2b1f7b94bc50194fef47b16be758ad474fd58 (diff) | |
download | GT5-Unofficial-5232449b9b2793793b2259c8e23124205d00c38a.tar.gz GT5-Unofficial-5232449b9b2793793b2259c8e23124205d00c38a.tar.bz2 GT5-Unofficial-5232449b9b2793793b2259c8e23124205d00c38a.zip |
Some centrifuge work
Diffstat (limited to 'src/main/java/com')
4 files changed, 45 insertions, 28 deletions
diff --git a/src/main/java/com/github/technus/tectech/Util.java b/src/main/java/com/github/technus/tectech/Util.java index c699077110..25327e1369 100644 --- a/src/main/java/com/github/technus/tectech/Util.java +++ b/src/main/java/com/github/technus/tectech/Util.java @@ -237,7 +237,7 @@ public final class Util { if (block < ' ') {//Control chars allow skipping b -= block; break; - } else if (block > '@') //characters allow to skip check a-1 skip, b-2 skips etc. + } else if (block > '@') //characters allow to skip check A-1 skip, B-2 skips etc. { a += block - '@'; }//else if (block < '+')//used to mark THINGS diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/SoundLoop.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/SoundLoop.java index a0d7b421aa..338af1626e 100644 --- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/SoundLoop.java +++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/SoundLoop.java @@ -25,7 +25,7 @@ public class SoundLoop extends MovingSound{ zPosF=base.getZCoord(); worldID=base.getWorld().provider.dimensionId; repeat=true; - volume=0.001f; + volume=0f; } @Override @@ -40,10 +40,8 @@ public class SoundLoop extends MovingSound{ }else if(volume==0){ donePlaying=true; } - }else if(volume<1){ - volume+=0.05f; - } else { - volume=1f; + }else if(volume<1) { + volume += 0.05f; } World world=Minecraft.getMinecraft().thePlayer.worldObj; donePlaying=world.provider.dimensionId!=worldID || diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/Behaviour_Centrifuge.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/Behaviour_Centrifuge.java index c1ca644c56..fe40178e88 100644 --- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/Behaviour_Centrifuge.java +++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/Behaviour_Centrifuge.java @@ -17,15 +17,25 @@ import static com.github.technus.tectech.auxiliary.TecTechConfig.DEBUG_MODE; * Created by danie_000 on 24.12.2017. */ public class Behaviour_Centrifuge implements GT_MetaTileEntity_EM_machine.Behaviour { - private static final double MAX_RCF = (float) (Math.pow(Math.E, 15) * 12); - private final float radius, maxRPM, maxForce, maxCapacity; + private final float radius, maxRPM, maxRCF, maxForce, maxCapacity; private final byte tier; + private static final double[/*tier+5*/][/*outputHatches+2*/] MIXING_FACTORS =new double[][]{ + {.45,.85,.95,1,1,}, + {.4 ,.75,.9,.95,1,}, + {.35,.45,.75,.9,.95,}, + {.25,.3,.45,.75,.9,}, + {.2,.25,.3,.45,.75,}, + {.1,.15,.2,.3,.45,}, + {.05,.1,.15,.2,.25,}, + {.01,.05,.1,.15,.2,}, + }; + //6 to 12 recommended public Behaviour_Centrifuge(int desiredTier) { tier = (byte) desiredTier; radius = 0.5f - (12 - tier) / 64f; - float maxRCF = (float) (Math.pow(Math.E, tier) * 12); + maxRCF = (float) (Math.pow(Math.E, tier) * 12); maxRPM = (float) Math.sqrt(maxRCF / (0.001118 * radius)); float maxSafeMass = dAtomDefinition.getSomethingHeavy().getMass() * (1 << tier); maxForce = maxSafeMass * maxRCF;// (eV/c^2 * m/s) / g @@ -45,7 +55,7 @@ public class Behaviour_Centrifuge implements GT_MetaTileEntity_EM_machine.Behavi if (RPM > maxRPM) { te.setStatusOfParameterIn(0, 0, GT_MetaTileEntity_MultiblockBase_EM.STATUS_TOO_HIGH); te.setParameterOut(0, 0, maxRPM);//rpm - te.setParameterOut(0, 1, getRCF(maxRPM));//rcf + te.setParameterOut(0, 1, maxRCF);//rcf check=false; } else if (RPM > maxRPM / 3f * 2f) { te.setStatusOfParameterIn(0, 0, GT_MetaTileEntity_MultiblockBase_EM.STATUS_HIGH); @@ -87,7 +97,7 @@ public class Behaviour_Centrifuge implements GT_MetaTileEntity_EM_machine.Behavi } te.setParameterOut(3,0,(int) (Math.pow(parametersToCheckAndFix[0] / maxRPM, 3f) * V[tier]));//max eut - te.setParameterOut(3,1,(int) (20 * (MAX_RCF / getRCF(RPM)) * (fractionCount - 1)));//max time + te.setParameterOut(3,1,(int) (20 * (fractionCount - 1)));//max time return check; } @@ -128,10 +138,16 @@ public class Behaviour_Centrifuge implements GT_MetaTileEntity_EM_machine.Behavi outputs[i] = new cElementalInstanceStackMap(); } + //mixing factor... + double mixingFactor=Math.min(1d-(RCF/maxRCF)*(1d-MIXING_FACTORS[tier-5][fractionCount-2]),1); + if(DEBUG_MODE){ + TecTech.Logger.info("mixingFactor "+mixingFactor); + } + int mEut = (int) (Math.pow(checkedAndFixedParameters[0] / maxRPM, 3f) * V[tier]); mEut = Math.max(mEut, 512); mEut = -mEut; - int mTicks = (int) (20 * (MAX_RCF / RCF) * (inputMass / maxCapacity) * (fractionCount - 1)); + int mTicks = (int) (20 * (inputMass / maxCapacity) * (fractionCount - 1)); mTicks=Math.max(mTicks,20); @@ -151,11 +167,18 @@ public class Behaviour_Centrifuge implements GT_MetaTileEntity_EM_machine.Behavi double absMassPerOutput = 0;//"volume" for (cElementalInstanceStack stack : stacks) { - absMassPerOutput += Math.abs(stack.getMass()); - } - if(DEBUG_MODE){ - TecTech.Logger.info("absMass "+absMassPerOutput); + double tempMass=Math.abs(stack.getMass()); + if(tempMass!=0) { + long amount = stack.amount; + stack.amount *= mixingFactor; + addRandomly(stack, outputs, fractionCount); + stack.amount = amount - stack.amount; + absMassPerOutput += tempMass; + } } + //if(DEBUG_MODE){ + // TecTech.Logger.info("absMass "+absMassPerOutput); + //} absMassPerOutput /= fractionCount; if(DEBUG_MODE){ TecTech.Logger.info("absMassPerOutput "+absMassPerOutput); @@ -179,13 +202,13 @@ public class Behaviour_Centrifuge implements GT_MetaTileEntity_EM_machine.Behavi stacks[stackNo] = null; } else if (amount >= stacks[stackNo].amount) { remaining -= stackMass; - outputs[fraction].putReplace(stacks[stackNo]); + outputs[fraction].putUnify(stacks[stackNo]); stacks[stackNo] = null; } else if (amount > 0) { remaining -= amount * stacks[stackNo].definition.getMass(); cElementalInstanceStack clone = stacks[stackNo].clone(); clone.amount = amount; - outputs[fraction].putReplace(clone); + outputs[fraction].putUnify(clone); stacks[stackNo].amount-=amount; //if(DEBUG_MODE){ // TecTech.Logger.info("remainingAfter "+remaining); @@ -200,7 +223,7 @@ public class Behaviour_Centrifuge implements GT_MetaTileEntity_EM_machine.Behavi //add remaining for (cElementalInstanceStack stack : stacks) { if (stack != null) { - outputs[fractionCount - 1].putReplace(stack); + outputs[fractionCount - 1].putUnify(stack); } } } else { diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/GT_MetaTileEntity_EM_machine.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/GT_MetaTileEntity_EM_machine.java index 0936c1ad1e..032d4e48a8 100644 --- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/GT_MetaTileEntity_EM_machine.java +++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/GT_MetaTileEntity_EM_machine.java @@ -4,17 +4,13 @@ import com.github.technus.tectech.CommonValues; import com.github.technus.tectech.TecTech; import com.github.technus.tectech.Util; import com.github.technus.tectech.elementalMatter.core.cElementalInstanceStackMap; -import com.github.technus.tectech.recipe.TT_recipe; import com.github.technus.tectech.thing.block.QuantumGlassBlock; import com.github.technus.tectech.thing.block.QuantumStuffBlock; import com.github.technus.tectech.thing.metaTileEntity.IConstructable; import com.github.technus.tectech.thing.metaTileEntity.multi.base.GT_MetaTileEntity_MultiblockBase_EM; import com.github.technus.tectech.thing.metaTileEntity.multi.base.MultiblockControl; -import gregtech.api.enums.ItemList; import gregtech.api.interfaces.metatileentity.IMetaTileEntity; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; -import gregtech.api.objects.GT_ItemStack; -import gregtech.common.blocks.GT_Block_Machines; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.init.Blocks; @@ -40,10 +36,10 @@ public class GT_MetaTileEntity_EM_machine extends GT_MetaTileEntity_MultiblockBa private static final String[][] shape = new String[][]{ {"B0", "A ", "0 - 0", "A ", "B0",}, {"A000", "00000", "00.00", "00000", "A000",}, - {"A121", "1C1", "2C2", "1C1", "A121",}, - {"A131", "1C1", "3C3", "1C1", "A131",}, - {"A121", "1C1", "2C2", "1C1", "A121",}, - {"A000", "00000", "00A00", "00000", "A000",}, + {"A121", "1---1", "2---2", "1---1", "A121",}, + {"A131", "1---1", "3-A-3", "1---1", "A131",}, + {"A121", "1---1", "2---2", "1---1", "A121",}, + {"A000", "00000", "00-00", "00000", "A000",}, {"B0", "A!!!", "0!!!0", "A!!!", "B0",},}; private static final Block[] blockType = new Block[]{sBlockCasingsTT, QuantumGlassBlock.INSTANCE, sBlockCasingsTT, sBlockCasingsTT}; private static final byte[] blockMeta = new byte[]{4, 0, 5, 6}; @@ -72,7 +68,7 @@ public class GT_MetaTileEntity_EM_machine extends GT_MetaTileEntity_MultiblockBa @Override public boolean checkMachine_EM(IGregTechTileEntity iGregTechTileEntity, ItemStack itemStack) { - return structureCheck_EM(shape, blockType, blockMeta, addingMethods, casingTextures, blockTypeFallback, blockMetaFallback, 2, 2, 1) && eInputHatches.size() == 1 && iGregTechTileEntity.getBlockAtSideAndDistance(iGregTechTileEntity.getBackFacing(), 5) instanceof GT_Block_Machines; + return structureCheck_EM(shape, blockType, blockMeta, addingMethods, casingTextures, blockTypeFallback, blockMetaFallback, 2, 2, 1); } @Override |