diff options
author | bartimaeusnek <lokko12@web.de> | 2019-11-09 16:24:16 +0100 |
---|---|---|
committer | bartimaeusnek <lokko12@web.de> | 2019-11-09 16:24:16 +0100 |
commit | 0819c0dd1f2e55d1e1e3d3a1f319cbd461d19d28 (patch) | |
tree | 795ed44e2d75fee194fc06161573cc9d2d6d9f89 /src | |
parent | 6d7a985fce0dbcb1301833e4dd9d3f02689f28fe (diff) | |
download | GT5-Unofficial-0819c0dd1f2e55d1e1e3d3a1f319cbd461d19d28.tar.gz GT5-Unofficial-0819c0dd1f2e55d1e1e3d3a1f319cbd461d19d28.tar.bz2 GT5-Unofficial-0819c0dd1f2e55d1e1e3d3a1f319cbd461d19d28.zip |
added SmallOres fortune
+modified NEI handler
Signed-off-by: bartimaeusnek <lokko12@web.de>
Former-commit-id: 67fa75d497e38016116b612f34b378f4578ec338
Diffstat (limited to 'src')
5 files changed, 106 insertions, 38 deletions
diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/mega/GT_TileEntity_MegaBlastFurnace.java b/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/mega/GT_TileEntity_MegaBlastFurnace.java index 31cf20c428..229cfa0169 100644 --- a/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/mega/GT_TileEntity_MegaBlastFurnace.java +++ b/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/mega/GT_TileEntity_MegaBlastFurnace.java @@ -27,9 +27,11 @@ import com.github.bartimaeusnek.bartworks.common.loaders.ItemRegistry; import com.github.bartimaeusnek.bartworks.util.BW_Util; import com.github.bartimaeusnek.bartworks.util.ChatColorHelper; import gregtech.api.GregTech_API; +import gregtech.api.enums.GT_Values; import gregtech.api.interfaces.metatileentity.IMetaTileEntity; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Energy; +import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Muffler; import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Output; import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_MultiBlockBase; import gregtech.api.util.GT_Recipe; @@ -39,6 +41,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.StatCollector; import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.fluids.FluidStack; @@ -79,6 +82,7 @@ public class GT_TileEntity_MegaBlastFurnace extends GT_MetaTileEntity_ElectricBl super.saveNBTData(aNBT); aNBT.setByte("glasTier",glasTier); aNBT.setByte("circuitMode",circuitMode); + aNBT.setLong("lEUt",lEUt); } @Override @@ -86,8 +90,59 @@ public class GT_TileEntity_MegaBlastFurnace extends GT_MetaTileEntity_ElectricBl super.loadNBTData(aNBT); this.circuitMode = aNBT.getByte("circuitMode"); this.glasTier = aNBT.getByte("glasTier"); + this.lEUt = aNBT.getLong("lEUt"); } + @Override + public boolean onRunningTick(ItemStack aStack) { + if (this.lEUt > 0) { + this.addEnergyOutput((long)this.lEUt * (long)this.mEfficiency / 10000L); + return true; + } else if (this.lEUt < 0 && !this.drainEnergyInput((long)(-this.lEUt) * 10000L / (long)Math.max(1000, this.mEfficiency))) { + this.stopMachine(); + return false; + } else { + return true; + } + } + + + @Override + public void stopMachine() { + this.mOutputItems = null; + this.mEUt = 0; + this.lEUt = 0; + this.mEfficiency = 0; + this.mProgresstime = 0; + this.mMaxProgresstime = 0; + this.mEfficiencyIncrease = 0; + this.getBaseMetaTileEntity().disableWorking(); + } + + public String[] getInfoData() { + int mPollutionReduction = 0; + + for (GT_MetaTileEntity_Hatch_Muffler e : this.mMufflerHatches) { + if (GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(e)) { + mPollutionReduction = Math.max(e.calculatePollutionReduction(this.mPollution), mPollutionReduction); + } + } + + long storedEnergy = 0L; + long maxEnergy = 0L; + + for (GT_MetaTileEntity_Hatch_Energy tHatch : this.mEnergyHatches) { + if (GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(tHatch)) { + storedEnergy += tHatch.getBaseMetaTileEntity().getStoredEU(); + maxEnergy += tHatch.getBaseMetaTileEntity().getEUCapacity(); + } + } + + return new String[]{StatCollector.translateToLocal("GT5U.multiblock.Progress") + ": " + EnumChatFormatting.GREEN + Integer.toString(this.mProgresstime / 20) + EnumChatFormatting.RESET + " s / " + EnumChatFormatting.YELLOW + Integer.toString(this.mMaxProgresstime / 20) + EnumChatFormatting.RESET + " s", StatCollector.translateToLocal("GT5U.multiblock.energy") + ": " + EnumChatFormatting.GREEN + Long.toString(storedEnergy) + EnumChatFormatting.RESET + " EU / " + EnumChatFormatting.YELLOW + Long.toString(maxEnergy) + EnumChatFormatting.RESET + " EU", StatCollector.translateToLocal("GT5U.multiblock.usage") + ": " + EnumChatFormatting.RED + Long.toString(-this.lEUt) + EnumChatFormatting.RESET + " EU/t", StatCollector.translateToLocal("GT5U.multiblock.mei") + ": " + EnumChatFormatting.YELLOW + Long.toString(this.getMaxInputVoltage()) + EnumChatFormatting.RESET + " EU/t(*2A) " + StatCollector.translateToLocal("GT5U.machines.tier") + ": " + EnumChatFormatting.YELLOW + GT_Values.VN[GT_Utility.getTier(this.getMaxInputVoltage())] + EnumChatFormatting.RESET, StatCollector.translateToLocal("GT5U.multiblock.problems") + ": " + EnumChatFormatting.RED + (this.getIdealStatus() - this.getRepairStatus()) + EnumChatFormatting.RESET + " " + StatCollector.translateToLocal("GT5U.multiblock.efficiency") + ": " + EnumChatFormatting.YELLOW + Float.toString((float)this.mEfficiency / 100.0F) + EnumChatFormatting.RESET + " %", StatCollector.translateToLocal("GT5U.multiblock.pollution") + ": " + EnumChatFormatting.GREEN + mPollutionReduction + EnumChatFormatting.RESET + " %"}; + } + + private long lEUt = 0; + public boolean drainEnergyInput(long aEU) { if (aEU <= 0) return true; @@ -197,23 +252,23 @@ public class GT_TileEntity_MegaBlastFurnace extends GT_MetaTileEntity_ElectricBl byte overclockCount = 0; long actualEUT = (long) (tRecipe.mEUt) * processed; - if (actualEUT > Integer.MAX_VALUE) { - byte divider = 0; - while (actualEUT > Integer.MAX_VALUE) { - actualEUT = actualEUT / 2; - divider++; - } - overclockCount = this.calculateOverclockednessEBF((int) (actualEUT / (divider * 2)), tRecipe.mDuration * (divider * 2), nominalV); - } else +// if (actualEUT > Integer.MAX_VALUE) { +// byte divider = 0; +// while (actualEUT > Integer.MAX_VALUE) { +// actualEUT = actualEUT / 2; +// divider++; +// } +// overclockCount = this.calculateOverclockednessEBF((int) (actualEUT / (divider * 2)), tRecipe.mDuration * (divider * 2), nominalV); +// } else overclockCount = this.calculateOverclockednessEBF(actualEUT, tRecipe.mDuration, nominalV); //In case recipe is too OP for that machine - if (this.mMaxProgresstime == Integer.MAX_VALUE - 1 && this.mEUt == Integer.MAX_VALUE - 1) + if (this.mMaxProgresstime == Integer.MAX_VALUE - 1 && this.lEUt == Integer.MAX_VALUE - 1) return false; - if (this.mEUt > 0) { - this.mEUt = (-this.mEUt); + if (this.lEUt > 0) { + this.lEUt = (-this.lEUt); } if (tHeatCapacityDivTiers > 0) { - this.mEUt = (int) (this.mEUt * (Math.pow(0.95, tHeatCapacityDivTiers))); + this.lEUt = (int) (this.lEUt * (Math.pow(0.95, tHeatCapacityDivTiers))); this.mMaxProgresstime >>= Math.min(tHeatCapacityDivTiers / 2, overclockCount); //extra free overclocking if possible if (this.mMaxProgresstime < 1) this.mMaxProgresstime = 1;//no eu efficiency correction @@ -245,10 +300,10 @@ public class GT_TileEntity_MegaBlastFurnace extends GT_MetaTileEntity_ElectricBl long xMaxProgresstime = ((long) aDuration) << 1; if (xMaxProgresstime > Integer.MAX_VALUE - 1) { //make impossible if too long - this.mEUt = Integer.MAX_VALUE - 1; + this.lEUt = Integer.MAX_VALUE - 1; this.mMaxProgresstime = Integer.MAX_VALUE - 1; } else { - this.mEUt = (int) (aEUt >> 2); + this.lEUt = (int) (aEUt >> 2); this.mMaxProgresstime = (int) xMaxProgresstime; } //return 0; @@ -273,12 +328,12 @@ public class GT_TileEntity_MegaBlastFurnace extends GT_MetaTileEntity_ElectricBl timesOverclocked--; } if (xEUt > Integer.MAX_VALUE - 1) { - this.mEUt = Integer.MAX_VALUE - 1; + this.lEUt = Integer.MAX_VALUE - 1; this.mMaxProgresstime = Integer.MAX_VALUE - 1; } else { - this.mEUt = (int) xEUt; - if (this.mEUt == 0) - this.mEUt = 1; + this.lEUt = (int) xEUt; + if (this.lEUt == 0) + this.lEUt = 1; if (this.mMaxProgresstime <= 0) this.mMaxProgresstime = 1;//set time to 1 tick } diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/neiHandler/BW_NEI_OreHandler.java b/src/main/java/com/github/bartimaeusnek/bartworks/neiHandler/BW_NEI_OreHandler.java index cbd5706d16..3c5d02cbb7 100644 --- a/src/main/java/com/github/bartimaeusnek/bartworks/neiHandler/BW_NEI_OreHandler.java +++ b/src/main/java/com/github/bartimaeusnek/bartworks/neiHandler/BW_NEI_OreHandler.java @@ -28,6 +28,7 @@ import codechicken.nei.recipe.GuiCraftingRecipe; import codechicken.nei.recipe.TemplateRecipeHandler; import com.github.bartimaeusnek.bartworks.MainMod; import com.github.bartimaeusnek.bartworks.system.material.BW_MetaGenerated_Ores; +import com.github.bartimaeusnek.bartworks.system.material.BW_MetaGenerated_SmallOres; import com.github.bartimaeusnek.bartworks.system.material.Werkstoff; import com.github.bartimaeusnek.bartworks.system.oregen.BW_OreLayer; import com.github.bartimaeusnek.bartworks.util.ChatColorHelper; @@ -93,20 +94,29 @@ public class BW_NEI_OreHandler extends TemplateRecipeHandler { GuiDraw.drawString(ChatColorHelper.BOLD + "DIM: " + ChatColorHelper.RESET + cachedOreRecipe.worldGen.getDimName(), 0, 40, 0, false); GuiDraw.drawString(ChatColorHelper.BOLD + "Primary:", 0, 50, 0, false); GuiDraw.drawString(this.arecipes.get(recipe).getOtherStacks().get(0).item.getDisplayName(), 0, 60, 0, false); - GuiDraw.drawString(ChatColorHelper.BOLD + "Secondary:", 0, 70, 0, false); - GuiDraw.drawString(this.arecipes.get(recipe).getOtherStacks().get(1).item.getDisplayName(), 0, 80, 0, false); - GuiDraw.drawString(ChatColorHelper.BOLD + "InBetween:", 0, 90, 0, false); - GuiDraw.drawString(this.arecipes.get(recipe).getOtherStacks().get(2).item.getDisplayName(), 0, 100, 0, false); - GuiDraw.drawString(ChatColorHelper.BOLD + "Sporadic:", 0, 110, 0, false); - GuiDraw.drawString(this.arecipes.get(recipe).getOtherStacks().get(3).item.getDisplayName(), 0, 120, 0, false); + + + + if (!cachedOreRecipe.small) { + GuiDraw.drawString(ChatColorHelper.BOLD + "Secondary:", 0, 70, 0, false); + GuiDraw.drawString(this.arecipes.get(recipe).getOtherStacks().get(1).item.getDisplayName(), 0, 80, 0, false); + GuiDraw.drawString(ChatColorHelper.BOLD + "InBetween:", 0, 90, 0, false); + GuiDraw.drawString(this.arecipes.get(recipe).getOtherStacks().get(2).item.getDisplayName(), 0, 100, 0, false); + GuiDraw.drawString(ChatColorHelper.BOLD + "Sporadic:", 0, 110, 0, false); + GuiDraw.drawString(this.arecipes.get(recipe).getOtherStacks().get(3).item.getDisplayName(), 0, 120, 0, false); + } else { + GuiDraw.drawString(ChatColorHelper.BOLD + "Amount per Chunk:",0,70,0,false); + GuiDraw.drawString(((CachedOreRecipe) this.arecipes.get(recipe)).worldGen.mDensity+"",0,80,0, false); + } } super.drawExtras(recipe); } @Override public void loadCraftingRecipes(ItemStack result) { - if (Block.getBlockFromItem(result.getItem()) instanceof BW_MetaGenerated_Ores) { - BW_OreLayer.NEIMAP.get((short) result.getItemDamage()).forEach(l -> this.arecipes.add(new CachedOreRecipe(l, result))); + Block ore = Block.getBlockFromItem(result.getItem()); + if (ore instanceof BW_MetaGenerated_Ores) { + BW_OreLayer.NEIMAP.get((short) result.getItemDamage()).forEach(l -> this.arecipes.add(new CachedOreRecipe(l, result, ore instanceof BW_MetaGenerated_SmallOres))); } } @@ -122,11 +132,12 @@ public class BW_NEI_OreHandler extends TemplateRecipeHandler { class CachedOreRecipe extends TemplateRecipeHandler.CachedRecipe{ - public CachedOreRecipe(BW_OreLayer worldGen, ItemStack result) { + public CachedOreRecipe(BW_OreLayer worldGen, ItemStack result, boolean smallOres) { this.worldGen = worldGen; this.stack = new PositionedStack(result, 0, 0); + this.small=smallOres; } - + boolean small; BW_OreLayer worldGen; PositionedStack stack ; @@ -139,7 +150,7 @@ public class BW_NEI_OreHandler extends TemplateRecipeHandler { public List<PositionedStack> getOtherStacks() { List<PositionedStack> ret = new ArrayList<>(); int x = 0; - for (int i = 0; i < 4; i++) { + for (int i = 0; i < (small ? 1 : 4); i++) { x += 20; ret.add(new PositionedStack(worldGen.getStacks().get(i), x, 12)); } diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/system/material/BW_MetaGeneratedOreTE.java b/src/main/java/com/github/bartimaeusnek/bartworks/system/material/BW_MetaGeneratedOreTE.java index 55714c38ec..df56e4359b 100644 --- a/src/main/java/com/github/bartimaeusnek/bartworks/system/material/BW_MetaGeneratedOreTE.java +++ b/src/main/java/com/github/bartimaeusnek/bartworks/system/material/BW_MetaGeneratedOreTE.java @@ -69,7 +69,7 @@ public class BW_MetaGeneratedOreTE extends TileEntity implements ITexturedTileEn aNBT.setShort("m", this.mMetaData); } - public ArrayList<ItemStack> getDrops(Block aDroppedOre) { + public ArrayList<ItemStack> getDrops(Block aDroppedOre, int aFortune) { ArrayList<ItemStack> rList = new ArrayList<ItemStack>(); if (this.mMetaData < 0) { rList.add(new ItemStack(Blocks.cobblestone, 1, 0)); diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/system/material/BW_MetaGeneratedSmallOreTE.java b/src/main/java/com/github/bartimaeusnek/bartworks/system/material/BW_MetaGeneratedSmallOreTE.java index c6baf39118..ff5c25ef7a 100644 --- a/src/main/java/com/github/bartimaeusnek/bartworks/system/material/BW_MetaGeneratedSmallOreTE.java +++ b/src/main/java/com/github/bartimaeusnek/bartworks/system/material/BW_MetaGeneratedSmallOreTE.java @@ -1,6 +1,5 @@ package com.github.bartimaeusnek.bartworks.system.material; -import gregtech.api.GregTech_API; import gregtech.api.enums.Materials; import gregtech.api.enums.OrePrefixes; import gregtech.api.interfaces.ITexture; @@ -9,7 +8,6 @@ import gregtech.api.objects.GT_RenderedTexture; import gregtech.api.objects.XSTR; import gregtech.api.util.GT_OreDictUnificator; import gregtech.api.util.GT_Utility; -import gregtech.common.blocks.GT_Block_Ores_Abstract; import net.minecraft.block.Block; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; @@ -19,8 +17,7 @@ import java.util.Random; public class BW_MetaGeneratedSmallOreTE extends BW_MetaGeneratedOreTE { - @Override - public ArrayList<ItemStack> getDrops(Block aDroppedOre) { + public ArrayList<ItemStack> getDrops(Block aDroppedOre, int aFortune) { ArrayList<ItemStack> rList = new ArrayList<>(); Materials aMaterial = Werkstoff.werkstoffHashMap.get(this.mMetaData).getBridgeMaterial(); @@ -71,9 +68,14 @@ public class BW_MetaGeneratedSmallOreTE extends BW_MetaGeneratedOreTE { } } if (tSelector.size() > 0) { - rList.add(GT_Utility.copyAmount(1L, tSelector.get(tRandom.nextInt(tSelector.size())))); + int i = 0; + + for(int j = Math.max(1, (aFortune > 0 ? tRandom.nextInt(1 + aFortune) : 0)); i < j; ++i) { + rList.add(GT_Utility.copyAmount(1L, tSelector.get(tRandom.nextInt(tSelector.size())))); + } + } - if (tRandom.nextInt(3) > 1) { + if (tRandom.nextInt(3 + aFortune) > 1) { rList.add(GT_OreDictUnificator.get(tRandom.nextInt(3) > 0 ? OrePrefixes.dustImpure : OrePrefixes.dust, Materials.Stone, 1L)); } } diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/system/material/BW_MetaGenerated_Ores.java b/src/main/java/com/github/bartimaeusnek/bartworks/system/material/BW_MetaGenerated_Ores.java index eeb1f269a9..0c8d6270b3 100644 --- a/src/main/java/com/github/bartimaeusnek/bartworks/system/material/BW_MetaGenerated_Ores.java +++ b/src/main/java/com/github/bartimaeusnek/bartworks/system/material/BW_MetaGenerated_Ores.java @@ -147,9 +147,9 @@ public class BW_MetaGenerated_Ores extends BW_TileEntityContainer { public ArrayList<ItemStack> getDrops(World aWorld, int aX, int aY, int aZ, int aMeta, int aFortune) { TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); if ((tTileEntity instanceof BW_MetaGeneratedOreTE)) { - return ((BW_MetaGeneratedOreTE) tTileEntity).getDrops(WerkstoffLoader.BWOres); + return ((BW_MetaGeneratedOreTE) tTileEntity).getDrops(WerkstoffLoader.BWOres,aFortune); } - return BW_MetaGenerated_Ores.mTemporaryTileEntity.get() == null ? new ArrayList() : BW_MetaGenerated_Ores.mTemporaryTileEntity.get().getDrops(WerkstoffLoader.BWOres); + return BW_MetaGenerated_Ores.mTemporaryTileEntity.get() == null ? new ArrayList() : BW_MetaGenerated_Ores.mTemporaryTileEntity.get().getDrops(WerkstoffLoader.BWOres,aFortune); } public int getHarvestLevel(int metadata) { |