From 5c77a1ea6c67d0bcf0cb83f6bff2c9dd6e5ee979 Mon Sep 17 00:00:00 2001 From: kuba6000 Date: Fri, 27 Aug 2021 02:49:49 +0200 Subject: Rework THTR Former-commit-id: f1b8defe4cfd9116ba8db5e056b1232cb61a1547 --- .../tileentities/multis/GT_TileEntity_THTR.java | 269 ++++++++++++--------- 1 file changed, 150 insertions(+), 119 deletions(-) (limited to 'src/main/java/com') diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_THTR.java b/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_THTR.java index c7a06914f5..072606a48b 100644 --- a/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_THTR.java +++ b/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_THTR.java @@ -37,6 +37,8 @@ import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.metatileentity.IMetaTileEntity; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_MultiBlockBase; +import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_OutputBus; +import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Input; import gregtech.api.objects.XSTR; import gregtech.api.render.TextureFactory; import gregtech.api.util.GT_OreDictUnificator; @@ -56,9 +58,10 @@ public class GT_TileEntity_THTR extends GT_MetaTileEntity_MultiBlockBase { private static final int BASECASINGINDEX = 44; private static final int HELIUM_NEEDED = 730000; private int HeliumSupply; - private int BISOPeletSupply, savedBISO; - private int TRISOPeletSupply, savedTRISO; + private int fueltype = -1, fuelsupply = 0; private boolean empty; + private int emptyticksnodiff = 0; + private int coolanttaking = 0; public GT_TileEntity_THTR(int aID, String aName, String aNameRegional) { super(aID, aName, aNameRegional); @@ -77,10 +80,8 @@ public class GT_TileEntity_THTR extends GT_MetaTileEntity_MultiBlockBase { public void loadNBTData(NBTTagCompound aNBT) { super.loadNBTData(aNBT); this.HeliumSupply = aNBT.getInteger("HeliumSupply"); - this.BISOPeletSupply = aNBT.getInteger("BISOPeletSupply"); - this.TRISOPeletSupply = aNBT.getInteger("TRISOPeletSupply"); - this.savedBISO = aNBT.getInteger("savedBISO"); - this.savedTRISO = aNBT.getInteger("savedTRISO"); + this.fueltype = aNBT.getInteger("fueltype"); + this.fuelsupply = aNBT.getInteger("fuelsupply"); this.empty = aNBT.getBoolean("EmptyMode"); } @@ -88,45 +89,44 @@ public class GT_TileEntity_THTR extends GT_MetaTileEntity_MultiBlockBase { public void saveNBTData(NBTTagCompound aNBT) { super.saveNBTData(aNBT); aNBT.setInteger("HeliumSupply", this.HeliumSupply); - aNBT.setInteger("BISOPeletSupply", this.BISOPeletSupply); - aNBT.setInteger("TRISOPeletSupply", this.TRISOPeletSupply); - aNBT.setInteger("savedBISO", this.savedBISO); - aNBT.setInteger("savedTRISO", this.savedTRISO); + aNBT.setInteger("fueltype", this.fueltype); + aNBT.setInteger("fuelsupply", this.fuelsupply); aNBT.setBoolean("EmptyMode", this.empty); } @Override public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) { super.onPostTick(aBaseMetaTileEntity, aTick); - if (aBaseMetaTileEntity.isServerSide()){ + if (aBaseMetaTileEntity.isServerSide() && !this.empty){ if (this.HeliumSupply < GT_TileEntity_THTR.HELIUM_NEEDED){ for (FluidStack fluidStack : this.getStoredFluids()){ - if (fluidStack.isFluidEqual(Materials.Helium.getGas(1000))) { - while (this.HeliumSupply < GT_TileEntity_THTR.HELIUM_NEEDED && fluidStack.amount > 0) { - this.HeliumSupply++; - fluidStack.amount--; - } + if (fluidStack.isFluidEqual(Materials.Helium.getGas(1))) { + int toget = Math.min(GT_TileEntity_THTR.HELIUM_NEEDED - this.HeliumSupply, fluidStack.amount); + fluidStack.amount -= toget; + this.HeliumSupply += toget; + if(GT_TileEntity_THTR.HELIUM_NEEDED == this.HeliumSupply && fluidStack.amount == 0) + fluidStack = null; } } } for (ItemStack itemStack : this.getStoredInputs()) { - if (GT_Utility.areStacksEqual(itemStack, new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials, 1, 3))) { - if (this.BISOPeletSupply + this.TRISOPeletSupply < 675000) { - while (this.BISOPeletSupply + this.TRISOPeletSupply < 675000 && itemStack.stackSize > 0) { - itemStack.stackSize--; - this.TRISOPeletSupply++; - } - this.updateSlots(); - } - } else if (GT_Utility.areStacksEqual(itemStack, new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials, 1, 1))) { - if (this.BISOPeletSupply + this.TRISOPeletSupply < 675000) { - while (this.BISOPeletSupply + this.TRISOPeletSupply < 675000 && itemStack.stackSize > 0) { - itemStack.stackSize--; - this.BISOPeletSupply++; - - } - this.updateSlots(); - } + int type = -1; + if(GT_Utility.areStacksEqual(itemStack, new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials, 1, 1))) + type = 0; // BISO + if(GT_Utility.areStacksEqual(itemStack, new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials, 1, 3))) + type = 1; // TRISO + if(type == -1) + continue; + if(this.fueltype == -1) + this.fueltype = type; + if(this.fueltype != type) + continue; + if(this.fuelsupply < 720000) + { + int toget = Math.min(720000 - this.fuelsupply, itemStack.stackSize); + this.fuelsupply += toget; + itemStack.stackSize -= toget; + this.updateSlots(); } } } @@ -134,94 +134,104 @@ public class GT_TileEntity_THTR extends GT_MetaTileEntity_MultiBlockBase { @Override public boolean checkRecipe(ItemStack controllerStack) { - - if (!(this.HeliumSupply >= GT_TileEntity_THTR.HELIUM_NEEDED && this.BISOPeletSupply + this.TRISOPeletSupply >= 100000)) + + if(this.empty) + { + this.mEfficiency = 10000; + this.mMaxProgresstime = 100; + return true; + } + if (!(this.HeliumSupply >= GT_TileEntity_THTR.HELIUM_NEEDED && this.fuelsupply >= 72000)) return false; - reduceSupply(); - addBurnedOutBalls(); - this.updateSlots(); - - this.mOutputFluids = new FluidStack[]{FluidRegistry.getFluidStack("ic2hotcoolant",0)}; - - this.mEUt=0; - this.mMaxProgresstime=648000; - return true; - } + double eff = Math.min(Math.pow(((double)this.fuelsupply-72000D)/72000D, 2D)+19D, 100D)/100D - (double)((getIdealStatus() - getRepairStatus()) * 10); - private void reduceSupply() { - int toReduce = new XSTR().nextInt(MathUtils.floorInt(((double)this.BISOPeletSupply + (double)this.TRISOPeletSupply) / 200D)); - - this.savedBISO = BISOPeletSupply; - this.savedTRISO = TRISOPeletSupply; - - if (new XSTR().nextBoolean()) { - if (this.BISOPeletSupply > 0) - this.BISOPeletSupply -= toReduce; - else - this.TRISOPeletSupply -= toReduce; - } else { - if (this.TRISOPeletSupply > 0) - this.TRISOPeletSupply -= toReduce; - else - this.BISOPeletSupply -= toReduce; - } - } + if(eff <= 0) + return false; - private void addBurnedOutBalls() { - int burnedTRISO = this.savedTRISO - this.TRISOPeletSupply; - int burnedBISO = this.savedBISO - this.BISOPeletSupply; - int burnedTRISOBall = burnedTRISO / 64; - int burnedBISOBall = burnedBISO / 64; + int toReduce = MathUtils.floorInt((double)this.fuelsupply * 0.005D * eff); - burnedBISO -= (burnedBISOBall*64); - burnedTRISO -= (burnedTRISOBall*64); + this.fuelsupply -= toReduce; + int burnedballs = toReduce/64; + if(burnedballs > 0) + toReduce -= burnedballs*64; + + int meta = this.fueltype == 1 ? 7 : 6; this.mOutputItems = new ItemStack[] { - new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials, burnedTRISOBall, 6), - new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials, burnedTRISO, 8), - new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials, burnedBISOBall, 7), - new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials, burnedBISO, 9) + new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials, burnedballs, meta), + new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials, toReduce, meta+2) }; - } + + this.updateSlots(); + this.mEfficiency = (int)(eff*10000D); + this.mEUt=0; + this.mMaxProgresstime=72000/120; + return true; + } + @Override public boolean onRunningTick(ItemStack aStack) { - + if (this.empty){ - this.addOutput(Materials.Helium.getGas(this.HeliumSupply)); - this.addOutput(new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials, this.TRISOPeletSupply, 3)); - this.addOutput(new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials, this.BISOPeletSupply, 1)); - this.HeliumSupply = 0; - this.TRISOPeletSupply = 0; - this.BISOPeletSupply = 0; - this.savedTRISO = 0; - this.savedBISO = 0; - return true; - } - - long accessibleCoolant = 0; - for (FluidStack fluidStack : this.getStoredFluids()) { - if (fluidStack.isFluidEqual(FluidRegistry.getFluidStack("ic2coolant",1))) { - accessibleCoolant += fluidStack.amount; + if(emptyticksnodiff > 20 && emptyticksnodiff % 20 != 0){ + emptyticksnodiff++; + return true; + } + if(this.HeliumSupply > 0){ + this.addOutput(Materials.Helium.getGas(this.HeliumSupply)); + this.HeliumSupply = 0; + } + if(this.fuelsupply > 0) + { + ItemStack iStack = new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials, this.fuelsupply, this.fueltype == 1 ? 3 : 1); + boolean storedAll = false; + for (GT_MetaTileEntity_Hatch_OutputBus tHatch : this.mOutputBusses) { + if(!isValidMetaTileEntity(tHatch)) + continue; + if (tHatch.storeAll(iStack)){ + storedAll = true; + break; + } + } + if(!storedAll){ + if(this.fuelsupply == iStack.stackSize) emptyticksnodiff++; + else {this.fuelsupply = iStack.stackSize; emptyticksnodiff = 0;} + } + else{ + this.fuelsupply = 0; + this.fueltype = -1; + } } + return true; } - accessibleCoolant = Math.min((long) ((0.00711111111111111111111111111111D*(double)this.savedTRISO + 0.00474074074074074074074074074074D*(double)this.savedBISO)), accessibleCoolant); - - for (FluidStack fluidStack : this.getStoredFluids()) { - if (fluidStack.isFluidEqual(FluidRegistry.getFluidStack("ic2coolant",1))) { - if (accessibleCoolant >= fluidStack.amount) { - accessibleCoolant -= fluidStack.amount; - fluidStack.amount = 0; - } else if (accessibleCoolant > 0) { - fluidStack.amount -= accessibleCoolant; - accessibleCoolant = 0; + + int takecoolant = (int)(4000D * (this.fueltype == 1 ? 2D : 1D) * ((double)this.mEfficiency / 10000D)); // 100 LHEs btw, why? + coolanttaking = takecoolant; + int drainedamount = 0; + + for(GT_MetaTileEntity_Hatch_Input tHatch : this.mInputHatches){ + if (isValidMetaTileEntity(tHatch)) { + FluidStack tLiquid = tHatch.getFluid(); + if (tLiquid != null && tLiquid.isFluidEqual(FluidRegistry.getFluidStack("ic2coolant",1))){ + FluidStack drained = tHatch.drain(takecoolant, true); + takecoolant -= drained.amount; + drainedamount += drained.amount; + if(takecoolant <= 0) + break; } } } - this.mOutputFluids[0].amount += accessibleCoolant; + this.updateSlots(); + + if(takecoolant > 0) + this.stopMachine(); + + addOutput(FluidRegistry.getFluidStack("ic2coolant", drainedamount)); + return true; } @@ -255,7 +265,7 @@ public class GT_TileEntity_THTR extends GT_MetaTileEntity_MultiBlockBase { } -// else if (!((Math.abs(x) == 4 && Math.abs(z) == 4) || (Math.abs(x) == 3 && Math.abs(z) == 3)) && !(Math.abs(x) < 3 || Math.abs(z) < 3) && !((Math.abs(x) == Math.abs(z) && Math.abs(x) == 3) || Math.abs(x) == 4 || Math.abs(z) == 4)) { + //else if (!((Math.abs(x) == 4 && Math.abs(z) == 4) || (Math.abs(x) == 3 && Math.abs(z) == 3)) && !(Math.abs(x) < 3 || Math.abs(z) < 3) && !((Math.abs(x) == Math.abs(z) && Math.abs(x) == 3) || Math.abs(x) == 4 || Math.abs(z) == 4)) { else if (!((Math.abs(z) == xz-1 && Math.abs(x) == xz))) if (!((Math.abs(z) == xz && Math.abs(x) == xz-1))) if (!((Math.abs(x) == Math.abs(z) && Math.abs(x) == xz))) @@ -307,11 +317,12 @@ public class GT_TileEntity_THTR extends GT_MetaTileEntity_MultiBlockBase { @Override public String[] getInfoData() { return new String[]{ - "Progress:", GT_Utility.formatNumbers(this.mProgresstime / 20) + "secs", GT_Utility.formatNumbers(this.mMaxProgresstime / 20) + "secs", - "BISO-Pebbles:", GT_Utility.formatNumbers(this.BISOPeletSupply) + "pcs.", - "TRISO-Pebbles:", GT_Utility.formatNumbers(this.TRISOPeletSupply) + "pcs.", + "Mode:", this.empty ? "Emptying" : "Normal", + "Progress:", GT_Utility.formatNumbers(this.mProgresstime / 20) + "s / " + GT_Utility.formatNumbers(this.mMaxProgresstime / 20) + "s", + "Fuel type:", (this.fueltype == -1 ? "NONE" : (this.fueltype == 1 ? "TRISO" : "BISO")), + "Fuel amount:", GT_Utility.formatNumbers(this.fuelsupply) + " pcs.", "Helium-Level:", GT_Utility.formatNumbers(this.HeliumSupply) + "L / " + GT_Utility.formatNumbers(GT_TileEntity_THTR.HELIUM_NEEDED) + "L", - "Coolant/t:", GT_Utility.formatNumbers(this.savedBISO+this.savedTRISO >= 100000 ? (long) ((0.00711111111111111111111111111111D * (double) this.savedTRISO + 0.00474074074074074074074074074074D * (double) this.savedBISO)) : 0) + "L/t", + "Coolant/t:", GT_Utility.formatNumbers(coolanttaking) + "L/t", "Problems:", String.valueOf(this.getIdealStatus() - this.getRepairStatus()) }; } @@ -328,8 +339,13 @@ public class GT_TileEntity_THTR extends GT_MetaTileEntity_MultiBlockBase { @Override public void onScrewdriverRightClick(byte aSide, EntityPlayer aPlayer, float aX, float aY, float aZ) { + if(this.mMaxProgresstime > 0) + { + GT_Utility.sendChatToPlayer(aPlayer, "THTR mode cant be changed when running."); + return; + } this.empty = !this.empty; - GT_Utility.sendChatToPlayer(aPlayer, this.empty ? "THTR will now empty itself." : "THTR is back in normal Operation"); + GT_Utility.sendChatToPlayer(aPlayer, "THTR is now running in " + (this.empty ? "emptying mode." : "normal Operation")); } public static class THTRMaterials{ @@ -340,10 +356,10 @@ public class GT_TileEntity_THTR extends GT_MetaTileEntity_MultiBlockBase { "TRISOPellet", "BISOPelletBall", "TRISOPelletBall", - "BurnedOutBISOPelletBall", - "BurnedOutTRISOPelletBall", - "BurnedOutBISOPellet", - "BurnedOutTRISOPellet" + "BurnedOutBISOPelletBall", // 6 + "BurnedOutTRISOPelletBall", // 7 + "BurnedOutBISOPellet", // 8 + "BurnedOutTRISOPellet" // 9 ); public static void registeraTHR_Materials(){ GameRegistry.registerItem(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials,"bw.THTRMaterials"); @@ -366,20 +382,35 @@ public class GT_TileEntity_THTR extends GT_MetaTileEntity_MultiBlockBase { 40, BW_Util.getMachineVoltageFromTier(5) ); - GT_Values.RA.addMixerRecipe(WerkstoffLoader.Thorium232.get(OrePrefixes.dust,10),Materials.Uranium235.getDust(1),GT_Utility.getIntegratedCircuit(1),null,null,null,new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials),400,30); + GT_Values.RA.addMixerRecipe(WerkstoffLoader.Thorium232.get(OrePrefixes.dust,64),Materials.Uranium235.getDust(4),GT_Utility.getIntegratedCircuit(1),null,null,null,new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials),400,30); GT_Values.RA.addFormingPressRecipe(new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials),Materials.Graphite.getDust(64),new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials,1,4),40,30); - ItemStack[] pellets = new ItemStack[6]; + ItemStack[] pellets = new ItemStack[4]; Arrays.fill(pellets,new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials,64,1)); - GT_Recipe.GT_Recipe_Map.sCentrifugeRecipes.addRecipe(false,new ItemStack[]{new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials,1,4),GT_Utility.getIntegratedCircuit(17)}, pellets,null,null,null,null,24000,30,0); + GT_Recipe.GT_Recipe_Map.sCentrifugeRecipes.addRecipe(false,new ItemStack[]{new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials,1,4),GT_Utility.getIntegratedCircuit(17)}, pellets,null,null,null,null,16000,30,0); GT_Values.RA.addFormingPressRecipe(new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials,1,4),Materials.Silicon.getDust(64),new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials,1,2),40,30); GT_Values.RA.addFormingPressRecipe(new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials,1,2),Materials.Graphite.getDust(64),new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials,1,5),40,30); - pellets = new ItemStack[6]; + pellets = new ItemStack[4]; Arrays.fill(pellets,new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials,64,3)); - GT_Recipe.GT_Recipe_Map.sCentrifugeRecipes.addRecipe(false,new ItemStack[]{new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials,1,5),GT_Utility.getIntegratedCircuit(17)}, pellets,null,null,null,null,48000,30,0); + GT_Recipe.GT_Recipe_Map.sCentrifugeRecipes.addRecipe(false,new ItemStack[]{new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials,1,5),GT_Utility.getIntegratedCircuit(17)}, pellets,null,null,null,null,32000,30,0); GT_Recipe.GT_Recipe_Map.sCentrifugeRecipes.addRecipe(false,new ItemStack[]{new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials,1,6),GT_Utility.getIntegratedCircuit(17)}, new ItemStack[]{new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials,64,8)},null,null,null,null,48000,30,0); GT_Recipe.GT_Recipe_Map.sCentrifugeRecipes.addRecipe(false,new ItemStack[]{new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials,1,7),GT_Utility.getIntegratedCircuit(17)}, new ItemStack[]{new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials,64,9)},null,null,null,null,48000,30,0); - GT_Recipe.GT_Recipe_Map.sCentrifugeRecipes.addRecipe(false,new ItemStack[]{new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials,1,8)},new ItemStack[]{Materials.Lutetium.getDustSmall(2)},null,null,null,null,1200,30,0); - GT_Recipe.GT_Recipe_Map.sCentrifugeRecipes.addRecipe(false,new ItemStack[]{new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials,1,9)},new ItemStack[]{Materials.Lutetium.getDustSmall(4)},null,null,null,null,1200,30,0); + //old + //GT_Recipe.GT_Recipe_Map.sCentrifugeRecipes.addRecipe(false,new ItemStack[]{new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials,1,8)},new ItemStack[]{Materials.Lutetium.getDustSmall(2)},null,null,null,null,1200,30,0); + //GT_Recipe.GT_Recipe_Map.sCentrifugeRecipes.addRecipe(false,new ItemStack[]{new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials,1,9)},new ItemStack[]{Materials.Lutetium.getDustSmall(4)},null,null,null,null,1200,30,0); + GT_Values.RA.addCentrifugeRecipe( + new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials,1,8),GT_Values.NI,GT_Values.NF,GT_Values.NF, + Materials.Graphite.getDustSmall(1), + Materials.Lutetium.getDustSmall(1), WerkstoffLoader.Thorium232.get(OrePrefixes.dustSmall,1), + null, null, null, + new int[]{9000, 3750, 6250}, + 1200, 30); + GT_Values.RA.addCentrifugeRecipe( + new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials,1,9),GT_Values.NI,GT_Values.NF,GT_Values.NF, + Materials.Silicon.getDustSmall(1), Materials.Graphite.getDustSmall(2), + Materials.Lutetium.getDustSmall(1), WerkstoffLoader.Thorium232.get(OrePrefixes.dustSmall,1), + null, null, + new int[]{9000, 9000, 9000, 1000}, + 1200, 30); } } -- cgit From db1d5ea08e446637420820a40210dd8ea29a1988 Mon Sep 17 00:00:00 2001 From: kuba6000 Date: Fri, 27 Aug 2021 04:46:32 +0200 Subject: Fix calculation Former-commit-id: b07c541a2dc981743295c5476bbd3fd144216df3 --- .../bartworks/common/tileentities/multis/GT_TileEntity_THTR.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/main/java/com') diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_THTR.java b/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_THTR.java index 072606a48b..f1b50cfea7 100644 --- a/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_THTR.java +++ b/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_THTR.java @@ -144,7 +144,7 @@ public class GT_TileEntity_THTR extends GT_MetaTileEntity_MultiBlockBase { if (!(this.HeliumSupply >= GT_TileEntity_THTR.HELIUM_NEEDED && this.fuelsupply >= 72000)) return false; - double eff = Math.min(Math.pow(((double)this.fuelsupply-72000D)/72000D, 2D)+19D, 100D)/100D - (double)((getIdealStatus() - getRepairStatus()) * 10); + double eff = Math.min(Math.pow(((double)this.fuelsupply-72000D)/72000D, 2D)+19D, 100D)/100D - ((double)(getIdealStatus() - getRepairStatus()) / 10D); if(eff <= 0) return false; -- cgit From ed263ebe21ea9a60a9c950a526734532fc4fc00c Mon Sep 17 00:00:00 2001 From: kuba6000 Date: Fri, 27 Aug 2021 22:22:07 +0200 Subject: Fix structure Former-commit-id: b885dd48b0335b456faee82763c517121da7c5cb --- .../tileentities/multis/GT_TileEntity_THTR.java | 70 ++++++++++------------ 1 file changed, 31 insertions(+), 39 deletions(-) (limited to 'src/main/java/com') diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_THTR.java b/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_THTR.java index f1b50cfea7..e50f4d25c1 100644 --- a/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_THTR.java +++ b/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_THTR.java @@ -167,7 +167,7 @@ public class GT_TileEntity_THTR extends GT_MetaTileEntity_MultiBlockBase { this.mEfficiency = (int)(eff*10000D); this.mEUt=0; - this.mMaxProgresstime=72000/120; + this.mMaxProgresstime=72000; return true; } @@ -224,14 +224,15 @@ public class GT_TileEntity_THTR extends GT_MetaTileEntity_MultiBlockBase { } } } + + if(drainedamount > 0) + addOutput(FluidRegistry.getFluidStack("ic2coolant", drainedamount)); this.updateSlots(); if(takecoolant > 0) this.stopMachine(); - addOutput(FluidRegistry.getFluidStack("ic2coolant", drainedamount)); - return true; } @@ -241,51 +242,42 @@ public class GT_TileEntity_THTR extends GT_MetaTileEntity_MultiBlockBase { int xDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetX * xz; int zDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetZ * xz; for (int x = -xz; x <= xz; x++) { - for (int z = -xz; z <= xz; z++) { - for (int y = 0; y < 12; y++) { - if (y == 0 || y == 11) { + for (int z = -xz; z <= xz; z++) { + for (int y = 0; y < 12; y++) { + if (x + xDir == 0 && y == 0 && z + zDir == 0) + continue; + int ax = Math.abs(x), az = Math.abs(z); + if ( + (ax < 4 && az == 5) || // X WALLS + (az < 4 && ax == 5) || // Z WALLS + (ax == 4 && az == 4) || // CORNER WALLS + ((y == 0 || y == 11) && (!(ax >= 4 && az == 5) && !(az >= 4 && ax == 5))) // FLOOR & CEILING + ) { + if (!(aBaseMetaTileEntity.getBlockOffset(xDir + x, y, zDir + z) == GregTech_API.sBlockCasings3 && aBaseMetaTileEntity.getMetaIDOffset(xDir + x, y, zDir + z) == 12)) { + IGregTechTileEntity tEntity = aBaseMetaTileEntity.getIGregTechTileEntityOffset(xDir + x, y, zDir + z); if ( - !((Math.abs(z) == xz-1 && Math.abs(x) == xz)) && - !((Math.abs(z) == xz && Math.abs(x) == xz-1)) && - !((Math.abs(x) == Math.abs(z) && Math.abs(x) == xz)) + !(y == 11 && this.addInputToMachineList(tEntity, GT_TileEntity_THTR.BASECASINGINDEX)) && + !(y == 0 && this.addOutputToMachineList(tEntity, GT_TileEntity_THTR.BASECASINGINDEX)) && + !this.addMaintenanceToMachineList(tEntity, GT_TileEntity_THTR.BASECASINGINDEX) ) { - if (x + xDir == 0 && y == 0 && z + zDir == 0) - continue; - if (!(aBaseMetaTileEntity.getBlockOffset(xDir + x, y, zDir + z) == GregTech_API.sBlockCasings3 && aBaseMetaTileEntity.getMetaIDOffset(xDir + x, y, zDir + z) == 12)) { - if ( - ( - !(this.addInputToMachineList(aBaseMetaTileEntity.getIGregTechTileEntityOffset(xDir + x, y, zDir + z), GT_TileEntity_THTR.BASECASINGINDEX) && y == 11) && - !(this.addOutputToMachineList(aBaseMetaTileEntity.getIGregTechTileEntityOffset(xDir + x, y, zDir + z), GT_TileEntity_THTR.BASECASINGINDEX) && y == 0)) && - !this.addMaintenanceToMachineList(aBaseMetaTileEntity.getIGregTechTileEntityOffset(xDir + x, y, zDir + z), GT_TileEntity_THTR.BASECASINGINDEX) - ) { - return false; - } - } - } - } - - - //else if (!((Math.abs(x) == 4 && Math.abs(z) == 4) || (Math.abs(x) == 3 && Math.abs(z) == 3)) && !(Math.abs(x) < 3 || Math.abs(z) < 3) && !((Math.abs(x) == Math.abs(z) && Math.abs(x) == 3) || Math.abs(x) == 4 || Math.abs(z) == 4)) { - else if (!((Math.abs(z) == xz-1 && Math.abs(x) == xz))) - if (!((Math.abs(z) == xz && Math.abs(x) == xz-1))) - if (!((Math.abs(x) == Math.abs(z) && Math.abs(x) == xz))) - if (!(Math.abs(x) < xz && Math.abs(z) != xz)) - - { - if (!(aBaseMetaTileEntity.getBlockOffset(xDir + x, y, zDir + z) == GregTech_API.sBlockCasings3 && aBaseMetaTileEntity.getMetaIDOffset(xDir + x, y, zDir + z) == 12)) { - if ( - !this.addMaintenanceToMachineList(aBaseMetaTileEntity.getIGregTechTileEntityOffset(xDir + x, y, zDir + z), GT_TileEntity_THTR.BASECASINGINDEX)) - { return false; } } } + else if(!(ax >= 4 && az == 5) && !(az >= 4 && ax == 5)){ // inside + if(!aBaseMetaTileEntity.getAirOffset(xDir + x, y, zDir + z)) + return false; + } } } - } - - return this.mMaintenanceHatches.size() == 1; + return ( + this.mMaintenanceHatches.size() == 1 && + this.mInputHatches.size() > 0 && + this.mOutputHatches.size() > 0 && + this.mInputBusses.size() > 0 && + this.mOutputBusses.size() > 0 + ); } @Override -- cgit From d0a4648dfa4e3a7ba4deaf8a1d7e7cfba314e6bf Mon Sep 17 00:00:00 2001 From: kuba6000 Date: Sat, 28 Aug 2021 18:04:33 +0200 Subject: New fuels Now only in english Former-commit-id: f7305d7dee36564afd4b1e19af28ce220a45b469 --- .../tileentities/multis/GT_TileEntity_THTR.java | 250 ++++++++++++++------- 1 file changed, 166 insertions(+), 84 deletions(-) (limited to 'src/main/java/com') diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_THTR.java b/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_THTR.java index e50f4d25c1..61a1e707e4 100644 --- a/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_THTR.java +++ b/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_THTR.java @@ -44,6 +44,7 @@ import gregtech.api.render.TextureFactory; import gregtech.api.util.GT_OreDictUnificator; import gregtech.api.util.GT_Recipe; import gregtech.api.util.GT_Utility; +import gregtech.api.util.GT_LanguageManager; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -52,6 +53,7 @@ import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidStack; import java.util.Arrays; +import java.util.ArrayList; public class GT_TileEntity_THTR extends GT_MetaTileEntity_MultiBlockBase { @@ -109,25 +111,23 @@ public class GT_TileEntity_THTR extends GT_MetaTileEntity_MultiBlockBase { } } } - for (ItemStack itemStack : this.getStoredInputs()) { - int type = -1; - if(GT_Utility.areStacksEqual(itemStack, new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials, 1, 1))) - type = 0; // BISO - if(GT_Utility.areStacksEqual(itemStack, new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials, 1, 3))) - type = 1; // TRISO - if(type == -1) - continue; - if(this.fueltype == -1) - this.fueltype = type; - if(this.fueltype != type) - continue; - if(this.fuelsupply < 720000) - { + if(this.fuelsupply < 720000){ + for (ItemStack itemStack : this.getStoredInputs()) { + int type = -1; + if(itemStack == null) continue; + if(itemStack.getItem() != THTRMaterials.aTHTR_Materials) continue; + int damage = THTRMaterials.aTHTR_Materials.getDamage(itemStack); + if(!((damage + 1) % THTRMaterials.MATERIALS_PER_FUEL == THTRMaterials.USABLE_FUEL_INDEX + 1)) continue; // is fuel + type = damage / THTRMaterials.MATERIALS_PER_FUEL; + if(this.fueltype == -1) + this.fueltype = type; + if(this.fueltype != type) + continue; int toget = Math.min(720000 - this.fuelsupply, itemStack.stackSize); this.fuelsupply += toget; itemStack.stackSize -= toget; - this.updateSlots(); } + this.updateSlots(); } } } @@ -155,25 +155,30 @@ public class GT_TileEntity_THTR extends GT_MetaTileEntity_MultiBlockBase { int burnedballs = toReduce/64; if(burnedballs > 0) toReduce -= burnedballs*64; - - int meta = this.fueltype == 1 ? 7 : 6; + + int meta = (this.fueltype * THTRMaterials.MATERIALS_PER_FUEL) + THTRMaterials.BURNED_OUT_FUEL_INDEX; this.mOutputItems = new ItemStack[] { - new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials, burnedballs, meta), - new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials, toReduce, meta+2) + new ItemStack(THTRMaterials.aTHTR_Materials, burnedballs, meta), + new ItemStack(THTRMaterials.aTHTR_Materials, toReduce, meta + 1) }; this.updateSlots(); + this.coolanttaking = (int)(4000D * ((this.fueltype * 0.5D) + 1) * ((double)this.mEfficiency / 10000D)) * 20; // 100 LHEs btw, why? + this.mEfficiency = (int)(eff*10000D); this.mEUt=0; this.mMaxProgresstime=72000; return true; } + private static int runningtick = 0; + @Override public boolean onRunningTick(ItemStack aStack) { - + runningtick++; + if (this.empty){ if(emptyticksnodiff > 20 && emptyticksnodiff % 20 != 0){ emptyticksnodiff++; @@ -185,7 +190,7 @@ public class GT_TileEntity_THTR extends GT_MetaTileEntity_MultiBlockBase { } if(this.fuelsupply > 0) { - ItemStack iStack = new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials, this.fuelsupply, this.fueltype == 1 ? 3 : 1); + ItemStack iStack = new ItemStack(THTRMaterials.aTHTR_Materials, this.fuelsupply, (THTRMaterials.MATERIALS_PER_FUEL * this.fueltype) + THTRMaterials.USABLE_FUEL_INDEX); boolean storedAll = false; for (GT_MetaTileEntity_Hatch_OutputBus tHatch : this.mOutputBusses) { if(!isValidMetaTileEntity(tHatch)) @@ -207,31 +212,32 @@ public class GT_TileEntity_THTR extends GT_MetaTileEntity_MultiBlockBase { return true; } - - int takecoolant = (int)(4000D * (this.fueltype == 1 ? 2D : 1D) * ((double)this.mEfficiency / 10000D)); // 100 LHEs btw, why? - coolanttaking = takecoolant; - int drainedamount = 0; - - for(GT_MetaTileEntity_Hatch_Input tHatch : this.mInputHatches){ - if (isValidMetaTileEntity(tHatch)) { - FluidStack tLiquid = tHatch.getFluid(); - if (tLiquid != null && tLiquid.isFluidEqual(FluidRegistry.getFluidStack("ic2coolant",1))){ - FluidStack drained = tHatch.drain(takecoolant, true); - takecoolant -= drained.amount; - drainedamount += drained.amount; - if(takecoolant <= 0) - break; + if(runningtick % 20 == 0) + { + int takecoolant = coolanttaking; + int drainedamount = 0; + + for(GT_MetaTileEntity_Hatch_Input tHatch : this.mInputHatches){ + if (isValidMetaTileEntity(tHatch)) { + FluidStack tLiquid = tHatch.getFluid(); + if (tLiquid != null && tLiquid.isFluidEqual(FluidRegistry.getFluidStack("ic2coolant",1))){ + FluidStack drained = tHatch.drain(takecoolant, true); + takecoolant -= drained.amount; + drainedamount += drained.amount; + if(takecoolant <= 0) + break; + } } } - } - if(drainedamount > 0) - addOutput(FluidRegistry.getFluidStack("ic2coolant", drainedamount)); + if(drainedamount > 0) + addOutput(FluidRegistry.getFluidStack("ic2coolant", drainedamount)); - this.updateSlots(); + this.updateSlots(); - if(takecoolant > 0) - this.stopMachine(); + if(takecoolant > 0) + this.stopMachine(); + } return true; } @@ -311,10 +317,10 @@ public class GT_TileEntity_THTR extends GT_MetaTileEntity_MultiBlockBase { return new String[]{ "Mode:", this.empty ? "Emptying" : "Normal", "Progress:", GT_Utility.formatNumbers(this.mProgresstime / 20) + "s / " + GT_Utility.formatNumbers(this.mMaxProgresstime / 20) + "s", - "Fuel type:", (this.fueltype == -1 ? "NONE" : (this.fueltype == 1 ? "TRISO" : "BISO")), + "Fuel type:", (this.fueltype == -1 ? "NONE" : ("TRISO (" + THTRMaterials.sTHTR_Fuel[this.fueltype].sEnglish) + ")"), "Fuel amount:", GT_Utility.formatNumbers(this.fuelsupply) + " pcs.", "Helium-Level:", GT_Utility.formatNumbers(this.HeliumSupply) + "L / " + GT_Utility.formatNumbers(GT_TileEntity_THTR.HELIUM_NEEDED) + "L", - "Coolant/t:", GT_Utility.formatNumbers(coolanttaking) + "L/t", + "Coolant/t:", GT_Utility.formatNumbers(coolanttaking) + "L/s", "Problems:", String.valueOf(this.getIdealStatus() - this.getRepairStatus()) }; } @@ -340,20 +346,102 @@ public class GT_TileEntity_THTR extends GT_MetaTileEntity_MultiBlockBase { GT_Utility.sendChatToPlayer(aPlayer, "THTR is now running in " + (this.empty ? "emptying mode." : "normal Operation")); } + + public static class THTRMaterials{ - static final SimpleSubItemClass aTHTR_Materials = new SimpleSubItemClass( - "BISOPelletCompound", - "BISOPellet", - "TRISOPelletCompound", - "TRISOPellet", - "BISOPelletBall", - "TRISOPelletBall", - "BurnedOutBISOPelletBall", // 6 - "BurnedOutTRISOPelletBall", // 7 - "BurnedOutBISOPellet", // 8 - "BurnedOutTRISOPellet" // 9 - ); + private static class Base_{ + public String sName; + public String sEnglish; + public String sTooltip; + public Base_(String a, String b){ + this.sName = a; + this.sEnglish = b; + this.sTooltip = ""; + } + public Base_(String a, String b, String c){ + this.sName = a; + this.sEnglish = b; + this.sTooltip = c; + } + } + static class Fuel_{ + public String sName; + public String sEnglish; + public ItemStack mainItem; + public ItemStack secondaryItem; + public ItemStack[] recycledItems = { GT_Values.NI, GT_Values.NI, GT_Values.NI, GT_Values.NI, GT_Values.NI, GT_Values.NI }; + public FluidStack recycledFluid; + public int[] recycleChances; + public Fuel_(String sName, String sEnglish, ItemStack mainItem, ItemStack secondaryItem, FluidStack recycledFluid, ItemStack[] recycledItems, int[] recycleChances){ + this.sName = sName; + this.sEnglish = sEnglish; + this.mainItem = mainItem; + this.secondaryItem = secondaryItem; + this.recycledFluid = recycledFluid; + for(int i = 0; i < recycledItems.length; i++) + this.recycledItems[i] = recycledItems[i]; + this.recycleChances = recycleChances; + } + } + private static class LangEntry_{ + public String sName; + public String sEnglish; + public LangEntry_(String a, String b){ + this.sName = a; + this.sEnglish = b; + } + } + + static final Base_[] sTHTR_Bases = new Base_[]{ + new Base_("HTGRFuelMixture", "HTGR fuel mixture"), + new Base_("BISOPebbleCompound", "BISO pebble compound"), + new Base_("TRISOPebbleCompound", "TRISO pebble compound"), + new Base_("TRISOBall", "TRISO ball"), + new Base_("TRISOPebble", "TRISO pebble"), + new Base_("BurnedOutTRISOBall", "Burned out TRISO Ball"), + new Base_("BurnedOutTRISOPebble", "Burned out TRISO Pebble"), + }; + static final int MATERIALS_PER_FUEL = sTHTR_Bases.length; + static final int USABLE_FUEL_INDEX = 4; + static final int BURNED_OUT_FUEL_INDEX = 5; + static final Fuel_[] sTHTR_Fuel = new Fuel_[]{ + new Fuel_("Thorium", "Thorium", WerkstoffLoader.Thorium232.get(OrePrefixes.dust, 64), Materials.Uranium235.getDust(4), + GT_Values.NF, new ItemStack[]{ + Materials.Silicon.getDustSmall(1), Materials.Graphite.getDustSmall(1), Materials.Carbon.getDustSmall(1), + Materials.Lutetium.getDustSmall(1), WerkstoffLoader.Thorium232.get(OrePrefixes.dustSmall,1)}, + new int[]{9000, 9000, 9000, 9000, 1000}), + new Fuel_("Uranium", "Uranium", Materials.Uranium.getDust(60), Materials.Uranium235.getDust(8), + FluidRegistry.getFluidStack("krypton", 7), new ItemStack[]{ + Materials.Silicon.getDustSmall(1), Materials.Graphite.getDustSmall(1), Materials.Carbon.getDustSmall(1), + Materials.Lead.getDustSmall(1), + Materials.Uranium.getDustSmall(1)}, + new int[]{9000, 9000, 9000, 6562, 937}), + new Fuel_("Plutonium", "Plutonium", Materials.Plutonium.getDust(64), Materials.Plutonium241.getDust(4), + FluidRegistry.getFluidStack("xenon", 8), new ItemStack[]{ + Materials.Silicon.getDustSmall(1), Materials.Graphite.getDustSmall(1), Materials.Carbon.getDustSmall(1), + Materials.Lead.getDustSmall(1), + Materials.Plutonium.getDustSmall(1)}, + new int[]{9000, 9000, 9000, 7000, 1000}), + }; + static final SimpleSubItemClass aTHTR_Materials; + static final ArrayList aTHTR_Localizations = new ArrayList(); + static{ + String[] sTHTR_Materials = new String[sTHTR_Bases.length*sTHTR_Fuel.length]; + int i = 0; + for(Fuel_ fuel : sTHTR_Fuel) + for(Base_ base : sTHTR_Bases) + { + sTHTR_Materials[i] = "HTGR" + base.sName + fuel.sName; + aTHTR_Localizations.add(new LangEntry_("item." + sTHTR_Materials[i] + ".name", base.sEnglish + " (" + fuel.sEnglish + ")")); + i++; + } + aTHTR_Materials = new SimpleSubItemClass(sTHTR_Materials); + } + + public static void registeraTHR_Materials(){ + for(LangEntry_ iName : aTHTR_Localizations) + GT_LanguageManager.addStringLocalization(iName.sName, iName.sEnglish); GameRegistry.registerItem(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials,"bw.THTRMaterials"); } @@ -374,35 +462,29 @@ public class GT_TileEntity_THTR extends GT_MetaTileEntity_MultiBlockBase { 40, BW_Util.getMachineVoltageFromTier(5) ); - GT_Values.RA.addMixerRecipe(WerkstoffLoader.Thorium232.get(OrePrefixes.dust,64),Materials.Uranium235.getDust(4),GT_Utility.getIntegratedCircuit(1),null,null,null,new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials),400,30); - GT_Values.RA.addFormingPressRecipe(new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials),Materials.Graphite.getDust(64),new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials,1,4),40,30); - ItemStack[] pellets = new ItemStack[4]; - Arrays.fill(pellets,new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials,64,1)); - GT_Recipe.GT_Recipe_Map.sCentrifugeRecipes.addRecipe(false,new ItemStack[]{new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials,1,4),GT_Utility.getIntegratedCircuit(17)}, pellets,null,null,null,null,16000,30,0); - GT_Values.RA.addFormingPressRecipe(new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials,1,4),Materials.Silicon.getDust(64),new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials,1,2),40,30); - GT_Values.RA.addFormingPressRecipe(new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials,1,2),Materials.Graphite.getDust(64),new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials,1,5),40,30); - pellets = new ItemStack[4]; - Arrays.fill(pellets,new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials,64,3)); - GT_Recipe.GT_Recipe_Map.sCentrifugeRecipes.addRecipe(false,new ItemStack[]{new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials,1,5),GT_Utility.getIntegratedCircuit(17)}, pellets,null,null,null,null,32000,30,0); - GT_Recipe.GT_Recipe_Map.sCentrifugeRecipes.addRecipe(false,new ItemStack[]{new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials,1,6),GT_Utility.getIntegratedCircuit(17)}, new ItemStack[]{new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials,64,8)},null,null,null,null,48000,30,0); - GT_Recipe.GT_Recipe_Map.sCentrifugeRecipes.addRecipe(false,new ItemStack[]{new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials,1,7),GT_Utility.getIntegratedCircuit(17)}, new ItemStack[]{new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials,64,9)},null,null,null,null,48000,30,0); - //old - //GT_Recipe.GT_Recipe_Map.sCentrifugeRecipes.addRecipe(false,new ItemStack[]{new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials,1,8)},new ItemStack[]{Materials.Lutetium.getDustSmall(2)},null,null,null,null,1200,30,0); - //GT_Recipe.GT_Recipe_Map.sCentrifugeRecipes.addRecipe(false,new ItemStack[]{new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials,1,9)},new ItemStack[]{Materials.Lutetium.getDustSmall(4)},null,null,null,null,1200,30,0); - GT_Values.RA.addCentrifugeRecipe( - new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials,1,8),GT_Values.NI,GT_Values.NF,GT_Values.NF, - Materials.Graphite.getDustSmall(1), - Materials.Lutetium.getDustSmall(1), WerkstoffLoader.Thorium232.get(OrePrefixes.dustSmall,1), - null, null, null, - new int[]{9000, 3750, 6250}, - 1200, 30); - GT_Values.RA.addCentrifugeRecipe( - new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials,1,9),GT_Values.NI,GT_Values.NF,GT_Values.NF, - Materials.Silicon.getDustSmall(1), Materials.Graphite.getDustSmall(2), - Materials.Lutetium.getDustSmall(1), WerkstoffLoader.Thorium232.get(OrePrefixes.dustSmall,1), - null, null, - new int[]{9000, 9000, 9000, 1000}, - 1200, 30); + int i = 0; + for(Fuel_ fuel : sTHTR_Fuel){ + GT_Values.RA.addMixerRecipe(fuel.mainItem, fuel.secondaryItem ,GT_Utility.getIntegratedCircuit(1),null,null,null,new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials, 1, i),400,30); + GT_Values.RA.addFormingPressRecipe(new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials, 1, i), Materials.Carbon.getDust(64),new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials, 1, i + 1),40,30); + GT_Values.RA.addFormingPressRecipe(new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials, 1, i + 1), Materials.Silicon.getDust(64),new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials, 1, i + 2),40,30); + GT_Values.RA.addFormingPressRecipe(new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials, 1, i + 2), Materials.Graphite.getDust(64),new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials, 1, i + 3),40,30); + ItemStack[] pellets = new ItemStack[4]; + Arrays.fill(pellets,new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials, 64, i + 4)); + GT_Recipe.GT_Recipe_Map.sCentrifugeRecipes.addRecipe(false, new ItemStack[]{new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials, 1, i + 3), GT_Utility.getIntegratedCircuit(17)}, pellets, null, null, null, null, 32000, 30, 0); + GT_Recipe.GT_Recipe_Map.sCentrifugeRecipes.addRecipe(false, new ItemStack[]{new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials, 1, i + 5), GT_Utility.getIntegratedCircuit(17)}, new ItemStack[]{new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials, 64, i + 6)}, null, null, null, null,48000,30,0); + GT_Values.RA.addCentrifugeRecipe( + new ItemStack(GT_TileEntity_THTR.THTRMaterials.aTHTR_Materials, 1, i + 6), GT_Values.NI, GT_Values.NF, + fuel.recycledFluid, + fuel.recycledItems[0], + fuel.recycledItems[1], + fuel.recycledItems[2], + fuel.recycledItems[3], + fuel.recycledItems[4], + fuel.recycledItems[5], + fuel.recycleChances, + 1200, 30); + i += sTHTR_Bases.length; + } } } -- cgit From 80d9ff75799a07a6dd624dfdcb713c735dbe362a Mon Sep 17 00:00:00 2001 From: kuba6000 Date: Sat, 28 Aug 2021 19:31:38 +0200 Subject: Name & description changed Thorium High Temperature Reactor -> High Temeperature Gas-cooled Reactor Former-commit-id: b37a05b7dff3247bc370290c04a764855c721276 --- .../bartworks/common/loaders/ItemRegistry.java | 8 +- .../bartworks/common/loaders/RecipeLoader.java | 6 +- .../tileentities/multis/GT_TileEntity_HTGR.java | 518 +++++++++++++++++++++ .../tileentities/multis/GT_TileEntity_THTR.java | 491 ------------------- 4 files changed, 525 insertions(+), 498 deletions(-) create mode 100644 src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_HTGR.java delete mode 100644 src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_THTR.java (limited to 'src/main/java/com') diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/common/loaders/ItemRegistry.java b/src/main/java/com/github/bartimaeusnek/bartworks/common/loaders/ItemRegistry.java index 10ada4ea61..d277862e9a 100644 --- a/src/main/java/com/github/bartimaeusnek/bartworks/common/loaders/ItemRegistry.java +++ b/src/main/java/com/github/bartimaeusnek/bartworks/common/loaders/ItemRegistry.java @@ -37,7 +37,7 @@ import com.github.bartimaeusnek.bartworks.common.tileentities.debug.CreativeScan import com.github.bartimaeusnek.bartworks.common.tileentities.multis.GT_TileEntity_CircuitAssemblyLine; import com.github.bartimaeusnek.bartworks.common.tileentities.multis.GT_TileEntity_DEHP; import com.github.bartimaeusnek.bartworks.common.tileentities.multis.GT_TileEntity_ElectricImplosionCompressor; -import com.github.bartimaeusnek.bartworks.common.tileentities.multis.GT_TileEntity_THTR; +import com.github.bartimaeusnek.bartworks.common.tileentities.multis.GT_TileEntity_HTGR; import com.github.bartimaeusnek.bartworks.common.tileentities.multis.mega.GT_TileEntity_MegaBlastFurnace; import com.github.bartimaeusnek.bartworks.common.tileentities.multis.mega.GT_TileEntity_MegaDistillTower; import com.github.bartimaeusnek.bartworks.common.tileentities.multis.mega.GT_TileEntity_MegaVacuumFreezer; @@ -143,7 +143,7 @@ public class ItemRegistry { public static ItemStack[] megaMachines = new ItemStack[3]; public static ItemStack dehp; public static ItemStack[] voidminer = new ItemStack[3]; - public static ItemStack thtr; + public static ItemStack HTGR; public static ItemStack eic; public static ItemStack cal; public static ItemStack compressedHatch; @@ -185,8 +185,8 @@ public class ItemRegistry { if (ConfigHandler.creativeScannerID != 0) new CreativeScanner(ConfigHandler.creativeScannerID,"Creative Debug Scanner","Creative Debug Scanner",20); ItemRegistry.eic = new GT_TileEntity_ElectricImplosionCompressor(ConfigHandler.IDOffset + GT_Values.VN.length * 8 + 6, "ElectricImplosionCompressor", "Electric Implosion Compressor").getStackForm(1L); - ItemRegistry.thtr = new GT_TileEntity_THTR(ConfigHandler.IDOffset + GT_Values.VN.length * 8 + 5, "THTR", "Thorium High Temperature Reactor").getStackForm(1L); - GT_TileEntity_THTR.THTRMaterials.registeraTHR_Materials(); + ItemRegistry.HTGR = new GT_TileEntity_HTGR(ConfigHandler.IDOffset + GT_Values.VN.length * 8 + 5, "HTGR", "High Temperature Gas-cooled Reactor").getStackForm(1L); + GT_TileEntity_HTGR.HTGRMaterials.registeraTHR_Materials(); GT_OreDictUnificator.add(OrePrefixes.block, Materials.BorosilicateGlass, new ItemStack(ItemRegistry.bw_glasses[0], 1, 0)); GT_OreDictUnificator.registerOre(OrePrefixes.block, Materials.NickelZincFerrite, new ItemStack(ItemRegistry.BW_BLOCKS[2])); for (int i = 0; i < GT_Values.VN.length; i++) { diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/common/loaders/RecipeLoader.java b/src/main/java/com/github/bartimaeusnek/bartworks/common/loaders/RecipeLoader.java index b300adaa11..3e716ac8bf 100644 --- a/src/main/java/com/github/bartimaeusnek/bartworks/common/loaders/RecipeLoader.java +++ b/src/main/java/com/github/bartimaeusnek/bartworks/common/loaders/RecipeLoader.java @@ -26,7 +26,7 @@ import com.github.bartimaeusnek.bartworks.API.LoaderReference; import com.github.bartimaeusnek.bartworks.common.configs.ConfigHandler; import com.github.bartimaeusnek.bartworks.common.tileentities.multis.GT_TileEntity_LESU; import com.github.bartimaeusnek.bartworks.common.tileentities.multis.GT_TileEntity_ManualTrafo; -import com.github.bartimaeusnek.bartworks.common.tileentities.multis.GT_TileEntity_THTR; +import com.github.bartimaeusnek.bartworks.common.tileentities.multis.GT_TileEntity_HTGR; import com.github.bartimaeusnek.bartworks.common.tileentities.multis.GT_TileEntity_Windmill; import com.github.bartimaeusnek.bartworks.system.material.Werkstoff; import com.github.bartimaeusnek.bartworks.system.material.WerkstoffLoader; @@ -744,9 +744,9 @@ public class RecipeLoader { 'G', GT_OreDictUnificator.get(OrePrefixes.gearGt, Materials.Iron, 1L), } ); - GT_TileEntity_THTR.THTRMaterials.registerTHR_Recipes(); + GT_TileEntity_HTGR.HTGRMaterials.registerTHR_Recipes(); GT_ModHandler.addCraftingRecipe( - ItemRegistry.thtr, + ItemRegistry.HTGR, RecipeLoader.BITSD, new Object[]{ "BZB", diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_HTGR.java b/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_HTGR.java new file mode 100644 index 0000000000..eb665ec035 --- /dev/null +++ b/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_HTGR.java @@ -0,0 +1,518 @@ +/* + * Copyright (c) 2018-2020 bartimaeusnek + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package com.github.bartimaeusnek.bartworks.common.tileentities.multis; + +import com.github.bartimaeusnek.bartworks.common.items.SimpleSubItemClass; +import com.github.bartimaeusnek.bartworks.system.material.WerkstoffLoader; +import com.github.bartimaeusnek.bartworks.util.BW_Tooltip_Reference; +import com.github.bartimaeusnek.bartworks.util.BW_Util; +import com.github.bartimaeusnek.bartworks.util.MathUtils; +import cpw.mods.fml.common.registry.GameRegistry; +import gregtech.api.GregTech_API; +import gregtech.api.enums.GT_Values; +import gregtech.api.enums.Materials; +import gregtech.api.enums.OrePrefixes; +import gregtech.api.enums.Textures; +import gregtech.api.interfaces.ITexture; +import gregtech.api.interfaces.metatileentity.IMetaTileEntity; +import gregtech.api.interfaces.tileentity.IGregTechTileEntity; +import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_MultiBlockBase; +import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_OutputBus; +import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Input; +import gregtech.api.objects.XSTR; +import gregtech.api.render.TextureFactory; +import gregtech.api.util.GT_OreDictUnificator; +import gregtech.api.util.GT_Recipe; +import gregtech.api.util.GT_Utility; +import gregtech.api.util.GT_LanguageManager; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraftforge.common.util.ForgeDirection; +import net.minecraftforge.fluids.FluidRegistry; +import net.minecraftforge.fluids.FluidStack; + +import java.util.Arrays; +import java.util.List; +import java.util.ArrayList; +import java.util.HashMap; + +public class GT_TileEntity_HTGR extends GT_MetaTileEntity_MultiBlockBase { + + private static final int BASECASINGINDEX = 44; + private static final int HELIUM_NEEDED = 730000; + private int HeliumSupply; + private int fueltype = -1, fuelsupply = 0; + private boolean empty; + private int emptyticksnodiff = 0; + private int coolanttaking = 0; + + public GT_TileEntity_HTGR(int aID, String aName, String aNameRegional) { + super(aID, aName, aNameRegional); + } + + private GT_TileEntity_HTGR(String aName) { + super(aName); + } + + @Override + public boolean isCorrectMachinePart(ItemStack itemStack) { + return true; + } + + @Override + public void loadNBTData(NBTTagCompound aNBT) { + super.loadNBTData(aNBT); + this.HeliumSupply = aNBT.getInteger("HeliumSupply"); + this.fueltype = aNBT.getInteger("fueltype"); + this.fuelsupply = aNBT.getInteger("fuelsupply"); + this.empty = aNBT.getBoolean("EmptyMode"); + this.coolanttaking = aNBT.getInteger("coolanttaking"); + } + + @Override + public void saveNBTData(NBTTagCompound aNBT) { + super.saveNBTData(aNBT); + aNBT.setInteger("HeliumSupply", this.HeliumSupply); + aNBT.setInteger("fueltype", this.fueltype); + aNBT.setInteger("fuelsupply", this.fuelsupply); + aNBT.setBoolean("EmptyMode", this.empty); + aNBT.setInteger("coolanttaking", this.coolanttaking); + } + + @Override + public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) { + super.onPostTick(aBaseMetaTileEntity, aTick); + if (aBaseMetaTileEntity.isServerSide() && !this.empty){ + if (this.HeliumSupply < GT_TileEntity_HTGR.HELIUM_NEEDED){ + for (FluidStack fluidStack : this.getStoredFluids()){ + if (fluidStack.isFluidEqual(Materials.Helium.getGas(1))) { + int toget = Math.min(GT_TileEntity_HTGR.HELIUM_NEEDED - this.HeliumSupply, fluidStack.amount); + fluidStack.amount -= toget; + this.HeliumSupply += toget; + if(GT_TileEntity_HTGR.HELIUM_NEEDED == this.HeliumSupply && fluidStack.amount == 0) + fluidStack = null; + } + } + } + if(this.fuelsupply < 720000){ + for (ItemStack itemStack : this.getStoredInputs()) { + int type = -1; + if(itemStack == null) continue; + if(itemStack.getItem() != HTGRMaterials.aHTGR_Materials) continue; + int damage = HTGRMaterials.aHTGR_Materials.getDamage(itemStack); + if(!((damage + 1) % HTGRMaterials.MATERIALS_PER_FUEL == HTGRMaterials.USABLE_FUEL_INDEX + 1)) continue; // is fuel + type = damage / HTGRMaterials.MATERIALS_PER_FUEL; + if(this.fueltype == -1) + this.fueltype = type; + if(this.fueltype != type) + continue; + int toget = Math.min(720000 - this.fuelsupply, itemStack.stackSize); + this.fuelsupply += toget; + itemStack.stackSize -= toget; + } + this.updateSlots(); + } + } + } + + @Override + public boolean checkRecipe(ItemStack controllerStack) { + + if(this.empty) + { + this.mEfficiency = 10000; + this.mMaxProgresstime = 100; + return true; + } + if (!(this.HeliumSupply >= GT_TileEntity_HTGR.HELIUM_N