From 91a57a990837879d5cb8e8e04ed0c7a6f973618c Mon Sep 17 00:00:00 2001 From: miozune Date: Fri, 6 Oct 2023 01:44:24 +0900 Subject: [PATCH] Cleanup isValidMetaTileEntity and some more (#245) * Cleanup isValidMetaTileEntity * Remove empty Javadoc tags * Remove unused classes --- .../multi/GT_MetaTileEntity_EM_computer.java | 42 +- .../multi/GT_MetaTileEntity_EM_research.java | 30 +- .../multi/GT_MetaTileEntity_TM_teslaCoil.java | 30 +- .../GT_MetaTileEntity_MultiblockBase_EM.java | 409 ++---- .../technus/tectech/util/DoubleCount.java | 126 -- .../technus/tectech/util/LightingHelper.java | 1308 ----------------- 6 files changed, 182 insertions(+), 1763 deletions(-) delete mode 100644 src/main/java/com/github/technus/tectech/util/DoubleCount.java delete mode 100644 src/main/java/com/github/technus/tectech/util/LightingHelper.java 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 46f325988..37fa0837e 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 @@ -14,6 +14,7 @@ import static gregtech.api.enums.GT_HatchElement.Energy; import static gregtech.api.enums.GT_HatchElement.Maintenance; import static gregtech.api.util.GT_StructureUtility.buildHatchAdder; +import static gregtech.api.util.GT_Utility.filterValidMTEs; import static net.minecraft.util.StatCollector.translateToLocal; import java.util.ArrayList; @@ -55,7 +56,6 @@ import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import gregtech.api.metatileentity.MetaTileEntity; import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch; -import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_MultiBlockBase; import gregtech.api.recipe.check.CheckRecipeResult; import gregtech.api.recipe.check.CheckRecipeResultRegistry; import gregtech.api.recipe.check.SimpleCheckRecipeResult; @@ -164,10 +164,8 @@ protected void parametersInstantiation_EM() { @Override public boolean checkMachine_EM(IGregTechTileEntity iGregTechTileEntity, ItemStack itemStack) { - for (GT_MetaTileEntity_Hatch_Rack rack : eRacks) { - if (GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(rack)) { - rack.getBaseMetaTileEntity().setActive(false); - } + for (GT_MetaTileEntity_Hatch_Rack rack : filterValidMTEs(eRacks)) { + rack.getBaseMetaTileEntity().setActive(false); } eRacks.clear(); if (!structureCheck_EM("front", 1, 2, 0)) { @@ -194,10 +192,8 @@ public boolean checkMachine_EM(IGregTechTileEntity iGregTechTileEntity, ItemStac return false; } eCertainMode = (byte) Math.min(totalLen / 3, 5); - for (GT_MetaTileEntity_Hatch_Rack rack : eRacks) { - if (GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(rack)) { - rack.getBaseMetaTileEntity().setActive(iGregTechTileEntity.isActive()); - } + for (GT_MetaTileEntity_Hatch_Rack rack : filterValidMTEs(eRacks)) { + rack.getBaseMetaTileEntity().setActive(iGregTechTileEntity.isActive()); } return eUncertainHatches.size() == 1; } @@ -224,10 +220,7 @@ public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) { && !aBaseMetaTileEntity.isActive() && aTick % 20 == MULTI_CHECK_AT) { double maxTemp = 0; - for (GT_MetaTileEntity_Hatch_Rack rack : eRacks) { - if (!GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(rack)) { - continue; - } + for (GT_MetaTileEntity_Hatch_Rack rack : filterValidMTEs(eRacks)) { if (rack.heat > maxTemp) { maxTemp = rack.heat; } @@ -258,10 +251,7 @@ protected CheckRecipeResult checkProcessing_EM() { short thingsActive = 0; int rackComputation; - for (GT_MetaTileEntity_Hatch_Rack rack : eRacks) { - if (!GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(rack)) { - continue; - } + for (GT_MetaTileEntity_Hatch_Rack rack : filterValidMTEs(eRacks)) { if (rack.heat > maxTemp) { maxTemp = rack.heat; } @@ -409,10 +399,8 @@ protected ResourceLocation getActivitySound() { @Override public void onRemoval() { super.onRemoval(); - for (GT_MetaTileEntity_Hatch_Rack rack : eRacks) { - if (GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(rack)) { - rack.getBaseMetaTileEntity().setActive(false); - } + for (GT_MetaTileEntity_Hatch_Rack rack : filterValidMTEs(eRacks)) { + rack.getBaseMetaTileEntity().setActive(false); } } @@ -432,20 +420,16 @@ protected long getAvailableData_EM() { public void stopMachine() { super.stopMachine(); eAvailableData = 0; - for (GT_MetaTileEntity_Hatch_Rack rack : eRacks) { - if (GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(rack)) { - rack.getBaseMetaTileEntity().setActive(false); - } + for (GT_MetaTileEntity_Hatch_Rack rack : filterValidMTEs(eRacks)) { + rack.getBaseMetaTileEntity().setActive(false); } } @Override protected void afterRecipeCheckFailed() { super.afterRecipeCheckFailed(); - for (GT_MetaTileEntity_Hatch_Rack rack : eRacks) { - if (GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(rack)) { - rack.getBaseMetaTileEntity().setActive(false); - } + for (GT_MetaTileEntity_Hatch_Rack rack : filterValidMTEs(eRacks)) { + rack.getBaseMetaTileEntity().setActive(false); } } 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 a1fcf4420..b6e5c1629 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 @@ -11,6 +11,7 @@ import static gregtech.api.enums.GT_HatchElement.Energy; import static gregtech.api.enums.GT_HatchElement.Maintenance; import static gregtech.api.util.GT_StructureUtility.buildHatchAdder; +import static gregtech.api.util.GT_Utility.filterValidMTEs; import static mcp.mobius.waila.api.SpecialChars.GREEN; import static mcp.mobius.waila.api.SpecialChars.RED; import static mcp.mobius.waila.api.SpecialChars.RESET; @@ -56,7 +57,6 @@ import gregtech.api.metatileentity.MetaTileEntity; import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch; import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Energy; -import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_MultiBlockBase; import gregtech.api.recipe.check.CheckRecipeResult; import gregtech.api.recipe.check.CheckRecipeResultRegistry; import gregtech.api.recipe.check.SimpleCheckRecipeResult; @@ -330,10 +330,8 @@ public IMetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) { @Override public boolean checkMachine_EM(IGregTechTileEntity iGregTechTileEntity, ItemStack itemStack) { - for (GT_MetaTileEntity_Hatch_Holder rack : eHolders) { - if (GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(rack)) { - rack.getBaseMetaTileEntity().setActive(false); - } + for (GT_MetaTileEntity_Hatch_Holder rack : filterValidMTEs(eHolders)) { + rack.getBaseMetaTileEntity().setActive(false); } eHolders.clear(); @@ -341,10 +339,8 @@ public boolean checkMachine_EM(IGregTechTileEntity iGregTechTileEntity, ItemStac return false; } - for (GT_MetaTileEntity_Hatch_Holder rack : eHolders) { - if (GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(rack)) { - rack.getBaseMetaTileEntity().setActive(iGregTechTileEntity.isActive()); - } + for (GT_MetaTileEntity_Hatch_Holder rack : filterValidMTEs(eHolders)) { + rack.getBaseMetaTileEntity().setActive(iGregTechTileEntity.isActive()); } return eHolders.size() == 1; } @@ -487,17 +483,13 @@ public GT_Multiblock_Tooltip_Builder createTooltip() { public String[] getInfoData() { long storedEnergy = 0; long maxEnergy = 0; - for (GT_MetaTileEntity_Hatch_Energy tHatch : mEnergyHatches) { - if (GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(tHatch)) { - storedEnergy += tHatch.getBaseMetaTileEntity().getStoredEU(); - maxEnergy += tHatch.getBaseMetaTileEntity().getEUCapacity(); - } + for (GT_MetaTileEntity_Hatch_Energy tHatch : filterValidMTEs(mEnergyHatches)) { + storedEnergy += tHatch.getBaseMetaTileEntity().getStoredEU(); + maxEnergy += tHatch.getBaseMetaTileEntity().getEUCapacity(); } - for (GT_MetaTileEntity_Hatch_EnergyMulti tHatch : eEnergyMulti) { - if (GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(tHatch)) { - storedEnergy += tHatch.getBaseMetaTileEntity().getStoredEU(); - maxEnergy += tHatch.getBaseMetaTileEntity().getEUCapacity(); - } + for (GT_MetaTileEntity_Hatch_EnergyMulti tHatch : filterValidMTEs(eEnergyMulti)) { + storedEnergy += tHatch.getBaseMetaTileEntity().getStoredEU(); + maxEnergy += tHatch.getBaseMetaTileEntity().getEUCapacity(); } return new String[] { translateToLocalFormatted("tt.keyphrase.Energy_Hatches", clientLocale) + ":", diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_TM_teslaCoil.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_TM_teslaCoil.java index 193a958c5..4ed3520b8 100644 --- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_TM_teslaCoil.java +++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_TM_teslaCoil.java @@ -17,6 +17,7 @@ import static com.gtnewhorizon.structurelib.structure.StructureUtility.transpose; import static gregtech.api.enums.GT_HatchElement.*; import static gregtech.api.util.GT_StructureUtility.buildHatchAdder; +import static gregtech.api.util.GT_Utility.filterValidMTEs; import static java.lang.Math.min; import static net.minecraft.util.StatCollector.translateToLocal; @@ -90,7 +91,6 @@ import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Input; import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Maintenance; import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Output; -import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_MultiBlockBase; import gregtech.api.recipe.check.CheckRecipeResult; import gregtech.api.recipe.check.SimpleCheckRecipeResult; import gregtech.api.util.GT_Multiblock_Tooltip_Builder; @@ -540,20 +540,16 @@ public IMetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) { @Override public boolean checkMachine_EM(IGregTechTileEntity iGregTechTileEntity, ItemStack itemStack) { - for (GT_MetaTileEntity_Hatch_Capacitor cap : eCapacitorHatches) { - if (isValidMetaTileEntity(cap)) { - cap.getBaseMetaTileEntity().setActive(false); - } + for (GT_MetaTileEntity_Hatch_Capacitor cap : filterValidMTEs(eCapacitorHatches)) { + cap.getBaseMetaTileEntity().setActive(false); } eCapacitorHatches.clear(); mTier = -1; if (structureCheck_EM("main", 3, 16, 0)) { - for (GT_MetaTileEntity_Hatch_Capacitor cap : eCapacitorHatches) { - if (isValidMetaTileEntity(cap)) { - cap.getBaseMetaTileEntity().setActive(iGregTechTileEntity.isActive()); - } + for (GT_MetaTileEntity_Hatch_Capacitor cap : filterValidMTEs(eCapacitorHatches)) { + cap.getBaseMetaTileEntity().setActive(iGregTechTileEntity.isActive()); } // Only recalculate offsets on orientation or rotation change @@ -600,10 +596,7 @@ protected CheckRecipeResult checkProcessing_EM() { mMaxProgresstime = 20; vTier = -1; long[] capacitorData; - for (GT_MetaTileEntity_Hatch_Capacitor cap : eCapacitorHatches) { - if (!GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(cap)) { - continue; - } + for (GT_MetaTileEntity_Hatch_Capacitor cap : filterValidMTEs(eCapacitorHatches)) { if (cap.getCapacitors()[0] > vTier) { vTier = (int) cap.getCapacitors()[0]; } @@ -621,10 +614,7 @@ protected CheckRecipeResult checkProcessing_EM() { } outputVoltageMax = V[vTier + 1]; - for (GT_MetaTileEntity_Hatch_Capacitor cap : eCapacitorHatches) { - if (!GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(cap)) { - continue; - } + for (GT_MetaTileEntity_Hatch_Capacitor cap : filterValidMTEs(eCapacitorHatches)) { cap.getBaseMetaTileEntity().setActive(true); capacitorData = cap.getCapacitors(); if (capacitorData[0] < vTier) { @@ -701,10 +691,8 @@ public void onRemoval() { super.onRemoval(); if (!getBaseMetaTileEntity().isClientSide()) { teslaSimpleNodeSetRemove(this); - for (GT_MetaTileEntity_Hatch_Capacitor cap : eCapacitorHatches) { - if (GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(cap)) { - cap.getBaseMetaTileEntity().setActive(false); - } + for (GT_MetaTileEntity_Hatch_Capacitor cap : filterValidMTEs(eCapacitorHatches)) { + cap.getBaseMetaTileEntity().setActive(false); } } } diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/GT_MetaTileEntity_MultiblockBase_EM.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/GT_MetaTileEntity_MultiblockBase_EM.java index 1daee413e..534b0d6d1 100644 --- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/GT_MetaTileEntity_MultiblockBase_EM.java +++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/GT_MetaTileEntity_MultiblockBase_EM.java @@ -7,6 +7,7 @@ import static com.github.technus.tectech.util.TT_Utility.getTier; import static gregtech.api.enums.GT_HatchElement.*; import static gregtech.api.metatileentity.BaseTileEntity.TOOLTIP_DELAY; +import static gregtech.api.util.GT_Utility.filterValidMTEs; import static java.lang.Math.min; import java.util.ArrayList; @@ -315,11 +316,6 @@ public void outputAfterRecipe_EM() {} // region tooltip and scanner result - /** - * @param hatchNo - * @param paramID - * @return - */ public ArrayList getFullLedDescriptionIn(int hatchNo, int paramID) { ArrayList list = new ArrayList<>(); list.add( @@ -347,11 +343,6 @@ public ArrayList getFullLedDescriptionIn(int hatchNo, int paramID) { return list; } - /** - * @param hatchNo - * @param paramID - * @return - */ public ArrayList getFullLedDescriptionOut(int hatchNo, int paramID) { ArrayList list = new ArrayList<>(); list.add( @@ -388,24 +379,18 @@ protected GT_Multiblock_Tooltip_Builder createTooltip() { /** * scanner gives it - * - * @return */ @Override public String[] getInfoData() { // TODO Do it long storedEnergy = 0; long maxEnergy = 0; - for (GT_MetaTileEntity_Hatch_Energy tHatch : mEnergyHatches) { - if (GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(tHatch)) { - storedEnergy += tHatch.getBaseMetaTileEntity().getStoredEU(); - maxEnergy += tHatch.getBaseMetaTileEntity().getEUCapacity(); - } + for (GT_MetaTileEntity_Hatch_Energy tHatch : filterValidMTEs(mEnergyHatches)) { + storedEnergy += tHatch.getBaseMetaTileEntity().getStoredEU(); + maxEnergy += tHatch.getBaseMetaTileEntity().getEUCapacity(); } - for (GT_MetaTileEntity_Hatch_EnergyMulti tHatch : eEnergyMulti) { - if (GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(tHatch)) { - storedEnergy += tHatch.getBaseMetaTileEntity().getStoredEU(); - maxEnergy += tHatch.getBaseMetaTileEntity().getEUCapacity(); - } + for (GT_MetaTileEntity_Hatch_EnergyMulti tHatch : filterValidMTEs(eEnergyMulti)) { + storedEnergy += tHatch.getBaseMetaTileEntity().getStoredEU(); + maxEnergy += tHatch.getBaseMetaTileEntity().getEUCapacity(); } return new String[] { "Progress:", @@ -469,8 +454,6 @@ public String[] getInfoData() { // TODO Do it /** * should it work with scanner? HELL YES - * - * @return */ @Override public boolean isGivingInformation() { @@ -483,8 +466,6 @@ public boolean isGivingInformation() { /** * add more textures - * - * @param aBlockIconRegister */ @Override @SideOnly(Side.CLIENT) @@ -496,14 +477,6 @@ public void registerIcons(IIconRegister aBlockIconRegister) { /** * actually use textures - * - * @param aBaseMetaTileEntity - * @param side - * @param facing - * @param colorIndex - * @param aActive - * @param aRedstone - * @return */ @Override public ITexture[] getTexture(IGregTechTileEntity aBaseMetaTileEntity, ForgeDirection side, ForgeDirection facing, @@ -517,8 +490,6 @@ public ITexture[] getTexture(IGregTechTileEntity aBaseMetaTileEntity, ForgeDirec /** * should return your activity sound - * - * @return */ @SideOnly(Side.CLIENT) protected ResourceLocation getActivitySound() { @@ -527,8 +498,6 @@ protected ResourceLocation getActivitySound() { /** * plays the sounds auto magically - * - * @param activitySound */ @SideOnly(Side.CLIENT) protected void soundMagic(ResourceLocation activitySound) { @@ -550,9 +519,6 @@ protected void soundMagic(ResourceLocation activitySound) { /** * is the thing inside controller a valid item to make the machine work - * - * @param itemStack - * @return */ @Override public boolean isCorrectMachinePart(ItemStack itemStack) { @@ -561,9 +527,6 @@ public boolean isCorrectMachinePart(ItemStack itemStack) { /** * how much damage to apply to thing in controller - not sure how it does it - * - * @param itemStack - * @return */ @Override public int getDamageToComponent(ItemStack itemStack) { @@ -589,11 +552,9 @@ public void onRemoval() { /** * prevents spontaneous explosions when the chunks unloading would cause them should cover 3 chunks radius - * - * @return */ protected boolean areChunksAroundLoaded_EM() { - if (GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(this) && getBaseMetaTileEntity().isServerSide()) { + if (this.isValid() && getBaseMetaTileEntity().isServerSide()) { IGregTechTileEntity base = getBaseMetaTileEntity(); return base.getWorld().doChunksNearChunkExist(base.getXCoord(), base.getYCoord(), base.getZCoord(), 3); // todo check if it is actually checking if chunks are loaded @@ -736,8 +697,6 @@ protected void notAllowedToWork_stopMachine_EM() { /** * store data - * - * @param aNBT */ @Override public void saveNBTData(NBTTagCompound aNBT) { @@ -814,8 +773,6 @@ public void saveNBTData(NBTTagCompound aNBT) { /** * load data - * - * @param aNBT */ @Override public void loadNBTData(NBTTagCompound aNBT) { @@ -942,8 +899,6 @@ protected void afterRecipeCheckFailed() { /** * cyclic check even when not working, called LESS frequently - * - * @return */ private boolean cyclicUpdate() { if (cyclicUpdate_EM()) { @@ -955,8 +910,6 @@ private boolean cyclicUpdate() { /** * mining level... - * - * @return */ @Override public byte getTileEntityBaseType() { @@ -969,10 +922,6 @@ public byte getTileEntityBaseType() { /** * internal check machine - * - * @param iGregTechTileEntity - * @param itemStack - * @return */ @Override public final boolean checkMachine(IGregTechTileEntity iGregTechTileEntity, ItemStack itemStack) { @@ -981,9 +930,6 @@ public final boolean checkMachine(IGregTechTileEntity iGregTechTileEntity, ItemS /** * internal check recipe - * - * @param itemStack - * @return */ @Override public final boolean checkRecipe(ItemStack itemStack) { // do recipe checks, based on "machine content and state" @@ -1013,8 +959,8 @@ protected void hatchesStatusUpdate_EM() { } boolean busy = mMaxProgresstime > 0; if (busy) { // write from buffer to hatches only - for (GT_MetaTileEntity_Hatch_Param hatch : eParamHatches) { - if (!GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(hatch) || hatch.param < 0) { + for (GT_MetaTileEntity_Hatch_Param hatch : filterValidMTEs(eParamHatches)) { + if (hatch.param < 0) { continue; } int hatchId = hatch.param; @@ -1026,8 +972,8 @@ protected void hatchesStatusUpdate_EM() { hatch.input1D = parametrization.iParamsOut[hatchId + 10]; } } else { // if has nothing to do update all - for (GT_MetaTileEntity_Hatch_Param hatch : eParamHatches) { - if (!GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(hatch) || hatch.param < 0) { + for (GT_MetaTileEntity_Hatch_Param hatch : filterValidMTEs(eParamHatches)) { + if (hatch.param < 0) { continue; } int hatchId = hatch.param; @@ -1065,9 +1011,6 @@ public final void onFirstTick(IGregTechTileEntity aBaseMetaTileEntity) { /** * called every tick the machines is active - * - * @param aStack - * @return */ @Override public boolean onRunningTick(ItemStack aStack) { @@ -1274,38 +1217,36 @@ protected void maintenance_EM() { mSolderingTool = true; mCrowbar = true; } else { - for (GT_MetaTileEntity_Hatch_Maintenance tHatch : mMaintenanceHatches) { - if (GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(tHatch)) { - if (tHatch.mAuto - && !(mWrench && mScrewdriver && mSoftHammer && mHardHammer && mSolderingTool && mCrowbar)) { - tHatch.autoMaintainance(); - } - if (tHatch.mWrench) { - mWrench = true; - } - if (tHatch.mScrewdriver) { - mScrewdriver = true; - } - if (tHatch.mSoftHammer) { - mSoftHammer = true; - } - if (tHatch.mHardHammer) { - mHardHammer = true; - } - if (tHatch.mSolderingTool) { - mSolderingTool = true; - } - if (tHatch.mCrowbar) { - mCrowbar = true; - } - - tHatch.mWrench = false; - tHatch.mScrewdriver = false; - tHatch.mSoftHammer = false; - tHatch.mHardHammer = false; - tHatch.mSolderingTool = false; - tHatch.mCrowbar = false; + for (GT_MetaTileEntity_Hatch_Maintenance tHatch : filterValidMTEs(mMaintenanceHatches)) { + if (tHatch.mAuto + && !(mWrench && mScrewdriver && mSoftHammer && mHardHammer && mSolderingTool && mCrowbar)) { + tHatch.autoMaintainance(); + } + if (tHatch.mWrench) { + mWrench = true; + } + if (tHatch.mScrewdriver) { + mScrewdriver = true; } + if (tHatch.mSoftHammer) { + mSoftHammer = true; + } + if (tHatch.mHardHammer) { + mHardHammer = true; + } + if (tHatch.mSolderingTool) { + mSolderingTool = true; + } + if (tHatch.mCrowbar) { + mCrowbar = true; + } + + tHatch.mWrench = false; + tHatch.mScrewdriver = false; + tHatch.mSoftHammer = false; + tHatch.mHardHammer = false; + tHatch.mSolderingTool = false; + tHatch.mCrowbar = false; } } } @@ -1321,26 +1262,18 @@ protected void clearHatches_EM() { mMufflerHatches.clear(); mMaintenanceHatches.clear(); - for (GT_MetaTileEntity_Hatch_DataConnector hatch_data : eOutputData) { - if (GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(hatch_data)) { - hatch_data.id = -1; - } + for (GT_MetaTileEntity_Hatch_DataConnector hatch_data : filterValidMTEs(eOutputData)) { + hatch_data.id = -1; } - for (GT_MetaTileEntity_Hatch_DataConnector hatch_data : eInputData) { - if (GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(hatch_data)) { - hatch_data.id = -1; - } + for (GT_MetaTileEntity_Hatch_DataConnector hatch_data : filterValidMTEs(eInputData)) { + hatch_data.id = -1; } - for (GT_MetaTileEntity_Hatch_Uncertainty hatch : eUncertainHatches) { - if (GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(hatch)) { - hatch.getBaseMetaTileEntity().setActive(false); - } + for (GT_MetaTileEntity_Hatch_Uncertainty hatch : filterValidMTEs(eUncertainHatches)) { + hatch.getBaseMetaTileEntity().setActive(false); } - for (GT_MetaTileEntity_Hatch_Param hatch : eParamHatches) { - if (GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(hatch)) { - hatch.getBaseMetaTileEntity().setActive(false); - } + for (GT_MetaTileEntity_Hatch_Param hatch : filterValidMTEs(eParamHatches)) { + hatch.getBaseMetaTileEntity().setActive(false); } eUncertainHatches.clear(); @@ -1354,27 +1287,19 @@ protected void clearHatches_EM() { protected void setupHatches_EM() { short id = 1; - for (GT_MetaTileEntity_Hatch_DataConnector hatch_data : eOutputData) { - if (GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(hatch_data)) { - hatch_data.id = id++; - } + for (GT_MetaTileEntity_Hatch_DataConnector hatch_data : filterValidMTEs(eOutputData)) { + hatch_data.id = id++; } id = 1; - for (GT_MetaTileEntity_Hatch_DataConnector hatch_data : eInputData) { - if (GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(hatch_data)) { - hatch_data.id = id++; - } + for (GT_MetaTileEntity_Hatch_DataConnector hatch_data : filterValidMTEs(eInputData)) { + hatch_data.id = id++; } - for (GT_MetaTileEntity_Hatch_Uncertainty hatch : eUncertainHatches) { - if (GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(hatch)) { - hatch.getBaseMetaTileEntity().setActive(true); - } + for (GT_MetaTileEntity_Hatch_Uncertainty hatch : filterValidMTEs(eUncertainHatches)) { + hatch.getBaseMetaTileEntity().setActive(true); } - for (GT_MetaTileEntity_Hatch_Param hatch : eParamHatches) { - if (GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(hatch)) { - hatch.getBaseMetaTileEntity().setActive(true); - } + for (GT_MetaTileEntity_Hatch_Param hatch : filterValidMTEs(eParamHatches)) { + hatch.getBaseMetaTileEntity().setActive(true); } } @@ -1386,68 +1311,52 @@ protected void setupEnergyHatchesVariables_EM() { maxEUinputMax = V[0]; maxEUoutputMin = V[15]; maxEUoutputMax = V[0]; - for (GT_MetaTileEntity_Hatch_Energy hatch : mEnergyHatches) { - if (GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(hatch)) { - if (hatch.maxEUInput() < maxEUinputMin) { - maxEUinputMin = hatch.maxEUInput(); - } - if (hatch.maxEUInput() > maxEUinputMax) { - maxEUinputMax = hatch.maxEUInput(); - } + for (GT_MetaTileEntity_Hatch_Energy hatch : filterValidMTEs(mEnergyHatches)) { + if (hatch.maxEUInput() < maxEUinputMin) { + maxEUinputMin = hatch.maxEUInput(); + } + if (hatch.maxEUInput() > maxEUinputMax) { + maxEUinputMax = hatch.maxEUInput(); } } - for (GT_MetaTileEntity_Hatch_EnergyMulti hatch : eEnergyMulti) { - if (GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(hatch)) { - if (hatch.maxEUInput() < maxEUinputMin) { - maxEUinputMin = hatch.maxEUInput(); - } - if (hatch.maxEUInput() > maxEUinputMax) { - maxEUinputMax = hatch.maxEUInput(); - } + for (GT_MetaTileEntity_Hatch_EnergyMulti hatch : filterValidMTEs(eEnergyMulti)) { + if (hatch.maxEUInput() < maxEUinputMin) { + maxEUinputMin = hatch.maxEUInput(); + } + if (hatch.maxEUInput() > maxEUinputMax) { + maxEUinputMax = hatch.maxEUInput(); } } - for (GT_MetaTileEntity_Hatch_Dynamo hatch : mDynamoHatches) { - if (GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(hatch)) { - if (hatch.maxEUOutput() < maxEUoutputMin) { - maxEUoutputMin = hatch.maxEUOutput(); - } - if (hatch.maxEUOutput() > maxEUoutputMax) { - maxEUoutputMax = hatch.maxEUOutput(); - } + for (GT_MetaTileEntity_Hatch_Dynamo hatch : filterValidMTEs(mDynamoHatches)) { + if (hatch.maxEUOutput() < maxEUoutputMin) { + maxEUoutputMin = hatch.maxEUOutput(); + } + if (hatch.maxEUOutput() > maxEUoutputMax) { + maxEUoutputMax = hatch.maxEUOutput(); } } - for (GT_MetaTileEntity_Hatch_DynamoMulti hatch : eDynamoMulti) { - if (GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(hatch)) { - if (hatch.maxEUOutput() < maxEUoutputMin) { - maxEUoutputMin = hatch.maxEUOutput(); - } - if (hatch.maxEUOutput() > maxEUoutputMax) { - maxEUoutputMax = hatch.maxEUOutput(); - } + for (GT_MetaTileEntity_Hatch_DynamoMulti hatch : filterValidMTEs(eDynamoMulti)) { + if (hatch.maxEUOutput() < maxEUoutputMin) { + maxEUoutputMin = hatch.maxEUOutput(); + } + if (hatch.maxEUOutput() > maxEUoutputMax) { + maxEUoutputMax = hatch.maxEUOutput(); } } eMaxAmpereFlow = 0; eMaxAmpereGen = 0; // counts only full amps - for (GT_MetaTileEntity_Hatch_Energy hatch : mEnergyHatches) { - if (GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(hatch)) { - eMaxAmpereFlow += hatch.maxEUInput() / maxEUinputMin; - } + for (GT_MetaTileEntity_Hatch_Energy hatch : filterValidMTEs(mEnergyHatches)) { + eMaxAmpereFlow += hatch.maxEUInput() / maxEUinputMin; } - for (GT_MetaTileEntity_Hatch_EnergyMulti hatch : eEnergyMulti) { - if (GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(hatch)) { - eMaxAmpereFlow += hatch.maxEUInput() / maxEUinputMin * hatch.Amperes; - } + for (GT_MetaTileEntity_Hatch_EnergyMulti hatch : filterValidMTEs(eEnergyMulti)) { + eMaxAmpereFlow += hatch.maxEUInput() / maxEUinputMin * hatch.Amperes; } - for (GT_MetaTileEntity_Hatch_Dynamo hatch : mDynamoHatches) { - if (GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(hatch)) { - eMaxAmpereGen += hatch.maxEUOutput() / maxEUoutputMin; - } + for (GT_MetaTileEntity_Hatch_Dynamo hatch : filterValidMTEs(mDynamoHatches)) { + eMaxAmpereGen += hatch.maxEUOutput() / maxEUoutputMin; } - for (GT_MetaTileEntity_Hatch_DynamoMulti hatch : eDynamoMulti) { - if (GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(hatch)) { - eMaxAmpereGen += hatch.maxEUOutput() / maxEUoutputMin * hatch.Amperes; - } + for (GT_MetaTileEntity_Hatch_DynamoMulti hatch : filterValidMTEs(eDynamoMulti)) { + eMaxAmpereGen += hatch.maxEUOutput() / maxEUoutputMin * hatch.Amperes; } } else { maxEUinputMin = 0; @@ -1467,44 +1376,36 @@ protected void dischargeController_EM(IGregTechTileEntity aBaseMetaTileEntity) { protected final void powerPass(IGregTechTileEntity aBaseMetaTileEntity) { long euVar; - for (GT_MetaTileEntity_Hatch_Dynamo tHatch : mDynamoHatches) { - if (GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(tHatch)) { - euVar = tHatch.maxEUOutput() * tHatch.maxAmperesOut(); - if (tHatch.getBaseMetaTileEntity().getStoredEU() <= tHatch.maxEUStore() - euVar && aBaseMetaTileEntity - .decreaseStoredEnergyUnits(euVar + Math.max(euVar / 24576, tHatch.maxAmperesOut()), false)) { - tHatch.setEUVar(tHatch.getBaseMetaTileEntity().getStoredEU() + euVar); - } + for (GT_MetaTileEntity_Hatch_Dynamo tHatch : filterValidMTEs(mDynamoHatches)) { + euVar = tHatch.maxEUOutput() * tHatch.maxAmperesOut(); + if (tHatch.getBaseMetaTileEntity().getStoredEU() <= tHatch.maxEUStore() - euVar && aBaseMetaTileEntity + .decreaseStoredEnergyUnits(euVar + Math.max(euVar / 24576, tHatch.maxAmperesOut()), false)) { + tHatch.setEUVar(tHatch.getBaseMetaTileEntity().getStoredEU() + euVar); } } - for (GT_MetaTileEntity_Hatch_DynamoMulti tHatch : eDynamoMulti) { - if (GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(tHatch)) { - euVar = tHatch.maxEUOutput() * tHatch.maxAmperesOut(); - if (tHatch.getBaseMetaTileEntity().getStoredEU() <= tHatch.maxEUStore() - euVar && aBaseMetaTileEntity - .decreaseStoredEnergyUnits(euVar + Math.max(euVar / 24576, tHatch.maxAmperesOut()), false)) { - tHatch.setEUVar(tHatch.getBaseMetaTileEntity().getStoredEU() + euVar); - } + for (GT_MetaTileEntity_Hatch_DynamoMulti tHatch : filterValidMTEs(eDynamoMulti)) { + euVar = tHatch.maxEUOutput() * tHatch.maxAmperesOut(); + if (tHatch.getBaseMetaTileEntity().getStoredEU() <= tHatch.maxEUStore() - euVar && aBaseMetaTileEntity + .decreaseStoredEnergyUnits(euVar + Math.max(euVar / 24576, tHatch.maxAmperesOut()), false)) { + tHatch.setEUVar(tHatch.getBaseMetaTileEntity().getStoredEU() + euVar); } } } protected final void powerPass_EM(IGregTechTileEntity aBaseMetaTileEntity) { long euVar; - for (GT_MetaTileEntity_Hatch_Dynamo tHatch : mDynamoHatches) { - if (GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(tHatch)) { - euVar = tHatch.maxEUOutput(); - if (tHatch.getBaseMetaTileEntity().getStoredEU() <= tHatch.maxEUStore() - euVar - && aBaseMetaTileEntity.decreaseStoredEnergyUnits(euVar + Math.max(euVar / 24576, 1), false)) { - tHatch.setEUVar(tHatch.getBaseMetaTileEntity().getStoredEU() + euVar); - } + for (GT_MetaTileEntity_Hatch_Dynamo tHatch : filterValidMTEs(mDynamoHatches)) { + euVar = tHatch.maxEUOutput(); + if (tHatch.getBaseMetaTileEntity().getStoredEU() <= tHatch.maxEUStore() - euVar + && aBaseMetaTileEntity.decreaseStoredEnergyUnits(euVar + Math.max(euVar / 24576, 1), false)) { + tHatch.setEUVar(tHatch.getBaseMetaTileEntity().getStoredEU() + euVar); } } - for (GT_MetaTileEntity_Hatch_DynamoMulti tHatch : eDynamoMulti) { - if (GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(tHatch)) { - euVar = tHatch.maxEUOutput() * tHatch.Amperes; - if (tHatch.getBaseMetaTileEntity().getStoredEU() <= tHatch.maxEUStore() - euVar && aBaseMetaTileEntity - .decreaseStoredEnergyUnits(euVar + Math.max(euVar / 24576, tHatch.Amperes), false)) { - tHatch.setEUVar(tHatch.getBaseMetaTileEntity().getStoredEU() + euVar); - } + for (GT_MetaTileEntity_Hatch_DynamoMulti tHatch : filterValidMTEs(eDynamoMulti)) { + euVar = tHatch.maxEUOutput() * tHatch.Amperes; + if (tHatch.getBaseMetaTileEntity().getStoredEU() <= tHatch.maxEUStore() - euVar && aBaseMetaTileEntity + .decreaseStoredEnergyUnits(euVar + Math.max(euVar / 24576, tHatch.Amperes), false)) { + tHatch.setEUVar(tHatch.getBaseMetaTileEntity().getStoredEU() + euVar); } } } @@ -1515,52 +1416,44 @@ protected void chargeController_EM(IGregTechTileEntity aBaseMetaTileEntity) { protected final void powerInput() { long euVar; - for (GT_MetaTileEntity_Hatch_Energy tHatch : mEnergyHatches) { + for (GT_MetaTileEntity_Hatch_Energy tHatch : filterValidMTEs(mEnergyHatches)) { if (getEUVar() > getMinimumStoredEU()) { break; } - if (GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(tHatch)) { - euVar = Math.min(tHatch.maxEUInput() * tHatch.maxAmperesIn(), tHatch.getEUVar()); - if (tHatch.getBaseMetaTileEntity().decreaseStoredEnergyUnits(euVar, false)) { - setEUVar(getEUVar() + euVar); - } + euVar = Math.min(tHatch.maxEUInput() * tHatch.maxAmperesIn(), tHatch.getEUVar()); + if (tHatch.getBaseMetaTileEntity().decreaseStoredEnergyUnits(euVar, false)) { + setEUVar(getEUVar() + euVar); } } - for (GT_MetaTileEntity_Hatch_EnergyMulti tHatch : eEnergyMulti) { + for (GT_MetaTileEntity_Hatch_EnergyMulti tHatch : filterValidMTEs(eEnergyMulti)) { if (getEUVar() > getMinimumStoredEU()) { break; } - if (GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(tHatch)) { - euVar = Math.min(tHatch.maxEUInput() * tHatch.maxAmperesIn(), tHatch.getEUVar()); - if (tHatch.getBaseMetaTileEntity().decreaseStoredEnergyUnits(euVar, false)) { - setEUVar(getEUVar() + euVar); - } + euVar = Math.min(tHatch.maxEUInput() * tHatch.maxAmperesIn(), tHatch.getEUVar()); + if (tHatch.getBaseMetaTileEntity().decreaseStoredEnergyUnits(euVar, false)) { + setEUVar(getEUVar() + euVar); } } } protected final void powerInput_EM() { long euVar; - for (GT_MetaTileEntity_Hatch_Energy tHatch : mEnergyHatches) { + for (GT_MetaTileEntity_Hatch_Energy tHatch : filterValidMTEs(mEnergyHatches)) { if (getEUVar() > getMinimumStoredEU()) { break; } - if (GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(tHatch)) { - euVar = tHatch.maxEUInput(); - if (tHatch.getBaseMetaTileEntity().decreaseStoredEnergyUnits(euVar, false)) { - setEUVar(getEUVar() + euVar); - } + euVar = tHatch.maxEUInput(); + if (tHatch.getBaseMetaTileEntity().decreaseStoredEnergyUnits(euVar, false)) { + setEUVar(getEUVar() + euVar); } } - for (GT_MetaTileEntity_Hatch_EnergyMulti tHatch : eEnergyMulti) { + for (GT_MetaTileEntity_Hatch_EnergyMulti tHatch : filterValidMTEs(eEnergyMulti)) { if (getEUVar() > getMinimumStoredEU()) { break; } - if (GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(tHatch)) { - euVar = tHatch.maxEUInput() * tHatch.Amperes; - if (tHatch.getBaseMetaTileEntity().decreaseStoredEnergyUnits(euVar, false)) { - setEUVar(getEUVar() + euVar); - } + euVar = tHatch.maxEUInput() * tHatch.Amperes; + if (tHatch.getBaseMetaTileEntity().decreaseStoredEnergyUnits(euVar, false)) { + setEUVar(getEUVar() + euVar); } } } @@ -1661,37 +1554,33 @@ public boolean addEnergyOutput_EM(long EU, long Amperes) { } long euVar = EU * Amperes; long diff; - for (GT_MetaTileEntity_Hatch_Dynamo tHatch : mDynamoHatches) { - if (GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(tHatch)) { - if (tHatch.maxEUOutput() < EU) { - explodeMultiblock(); - } - diff = tHatch.maxEUStore() - tHatch.getBaseMetaTileEntity().getStoredEU(); - if (diff > 0) { - if (euVar > diff) { - tHatch.setEUVar(tHatch.maxEUStore()); - euVar -= diff; - } else if (euVar <= diff) { - tHatch.setEUVar(tHatch.getBaseMetaTileEntity().getStoredEU() + euVar); - return true; - } + for (GT_MetaTileEntity_Hatch_Dynamo tHatch : filterValidMTEs(mDynamoHatches)) { + if (tHatch.maxEUOutput() < EU) { + explodeMultiblock(); + } + diff = tHatch.maxEUStore() - tHatch.getBaseMetaTileEntity().getStoredEU(); + if (diff > 0) { + if (euVar > diff) { + tHatch.setEUVar(tHatch.maxEUStore()); + euVar -= diff; + } else if (euVar <= diff) { + tHatch.setEUVar(tHatch.getBaseMetaTileEntity().getStoredEU() + euVar); + return true; } } } - for (GT_MetaTileEntity_Hatch_DynamoMulti tHatch : eDynamoMulti) { - if (GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(tHatch)) { - if (tHatch.maxEUOutput() < EU) { - explodeMultiblock(); - } - diff = tHatch.maxEUStore() - tHatch.getBaseMetaTileEntity().getStoredEU(); - if (diff > 0) { - if (euVar > diff) { - tHatch.setEUVar(tHatch.maxEUStore()); - euVar -= diff; - } else if (euVar <= diff) { - tHatch.setEUVar(tHatch.getBaseMetaTileEntity().getStoredEU() + euVar); - return true; - } + for (GT_MetaTileEntity_Hatch_DynamoMulti tHatch : filterValidMTEs(eDynamoMulti)) { + if (tHatch.maxEUOutput() < EU) { + explodeMultiblock(); + } + diff = tHatch.maxEUStore() - tHatch.getBaseMetaTileEntity().getStoredEU(); + if (diff > 0) { + if (euVar > diff) { + tHatch.setEUVar(tHatch.maxEUStore()); + euVar -= diff; + } else if (euVar <= diff) { + tHatch.setEUVar(tHatch.getBaseMetaTileEntity().getStoredEU() + euVar); + return true; } } } diff --git a/src/main/java/com/github/technus/tectech/util/DoubleCount.java b/src/main/java/com/github/technus/tectech/util/DoubleCount.java deleted file mode 100644 index 25fa086d7..000000000 --- a/src/main/java/com/github/technus/tectech/util/DoubleCount.java +++ /dev/null @@ -1,126 +0,0 @@ -package com.github.technus.tectech.util; - -import static java.lang.Math.abs; -import static java.lang.Math.ulp; - -import java.util.Arrays; - -public class DoubleCount { - - /** - * Distributes count across probabilities - * - * @param count the count to divide - * @param probabilities probability ratios to divide by, descending - * @return divided count - * @throws ArithmeticException - */ - public static double[] distribute(double count, double... probabilities) throws ArithmeticException { - if (probabilities == null || Double.isNaN(count)) { - return null; - } else if (count == 0) { - return new double[probabilities.length]; - } else if (Double.isInfinite(count)) { - double[] doubles = new double[probabilities.length]; - Arrays.fill(doubles, count); - return doubles; - } else { - switch (probabilities.length) { - default: { - int size = probabilities.length; - double[] output = new double[size]; - size--; - double remaining = count, previous = probabilities[size], probability, out; - for (int i = size - 1; i >= 0; i--) { - probability = probabilities[i]; - out = count * probability; - out -= ulpSigned(out); - - remaining -= out; - output[i] = out; - - if (previous < probability) { - throw new ArithmeticException( - "Malformed probability order: " + Arrays.toString(probabilities)); - } - previous = probability; - if (probability >= 1) { - break; - } - } - if (remaining * count < 0) { // overshoot - finishIt(size, output, remaining); - } else { - output[size] = remaining; - } - return output; - } - case 1: - return new double[] { count }; - case 0: - return probabilities; // empty array at hand... - } - } - } - - public static double ulpSigned(double number) { - if (number == 0) { - return 0; - } - return number > 0 ? ulp(number) : -ulp(number); - } - - private static void finishIt(int size, double[] output, double remaining) { - for (int i = size - 1; i >= 0; i--) { - if (abs(output[i]) >= abs(remaining)) { - output[i] -= remaining; - break; - } else { - remaining += output[i]; - output[i] = 0; - } - } - } - - public static double div(double count, double divisor) { - if (count == 0 || abs(divisor) == 1 || abs(count) == abs(divisor)) { - return count / divisor; - } else { - double result = count / divisor; - return result - ulpSigned(result); - } - } - - public static double mul(double count, double multiplier) { - if (count == 0 || multiplier == 0 || abs(multiplier) == 1 || abs(count) == 1) { - return count * multiplier; - } else { - double result = count * multiplier; - return result - ulpSigned(result); - } - } - - public static double sub(double count, double value) { - if (count == 0 || value == 0 || count == value) { - return count - value; - } else { - double result = count - value; - if (result == count || result == value) { - return result; - } - return result - ulpSigned(result); - } - } - - public static double add(double count, double value) { - if (count == 0 || value == 0 || count == -value) { - return count + value; - } else { - double result = count + value; - if (result == count || result == value) { - return result; - } - return result - ulpSigned(result); - } - } -} diff --git a/src/main/java/com/github/technus/tectech/util/LightingHelper.java b/src/main/java/com/github/technus/tectech/util/LightingHelper.java deleted file mode 100644 index a3ac23d73..000000000 --- a/src/main/java/com/github/technus/tectech/util/LightingHelper.java +++ /dev/null @@ -1,1308 +0,0 @@ -/* - * LightingHelper - Derived and adapted from @Mineshopper / carpentersblocks Copyright (c) 2013-2021. This library is - * free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation version 2.1 of the License. This library is distributed in the hope that it - * will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A - * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of - * the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -package com.github.technus.tectech.util; - -import net.minecraft.block.Block; -import net.minecraft.client.renderer.EntityRenderer; -import net.minecraft.client.renderer.RenderBlocks; -import net.minecraft.client.renderer.Tessellator; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -// This is duplicated in newer GT5u on the GTNH Branch inside the gregtech.api.util package -// But I include it here as the easiest way to implement backwards compat with non-NH stuff -// Yes, it could be done in a cleaner way. If you would like to, you're welcome to make your own PR and @basdxz -@SuppressWarnings("unused") -@SideOnly(Side.CLIENT) -public class LightingHelper { - - public static final int NORMAL_BRIGHTNESS = 0xff00ff; - public static final int MAX_BRIGHTNESS = 0xf000f0; - protected static final float[] LIGHTNESS = { 0.5F, 1.0F, 0.8F, 0.8F, 0.6F, 0.6F }; - private final RenderBlocks renderBlocks; - /** - * Brightness for side. - */ - private int brightness; - /** - * Ambient occlusion values for all four corners of side. - */ - private float aoTopLeft, aoBottomLeft, aoBottomRight, aoTopRight; - - private boolean hasLightnessOverride; - private float lightnessOverride; - private boolean hasBrightnessOverride; - private int brightnessOverride; - private boolean hasColorOverride; - private int colorOverride = 0xffffff; - - /** - * Class constructor specifying the {@link RenderBlocks}. - * - * @param renderBlocks the {@link RenderBlocks} - */ - public LightingHelper(RenderBlocks renderBlocks) { - this.renderBlocks = renderBlocks; - } - - /** - * Gets average brightness from two brightness values. - * - * @param brightnessA the first brightness value - * @param brightnessB the second brightness value - * @return the mixed brightness - */ - public static int getAverageBrightness(int brightnessA, int brightnessB) { - int sectionA1 = brightnessA >> 16 & 0xff; - int sectionA2 = brightnessA & 255; - - int sectionB1 = brightnessB >> 16 & 0xff; - int sectionB2 = brightnessB & 255; - - int difference1 = (int) ((sectionA1 + sectionB1) / 2.0F); - int difference2 = (int) ((sectionA2 + sectionB2) / 2.0F); - - return difference1 << 16 | difference2; - } - - /** - * Gets rgb color from RGBA array. - * - * @param color the integer color - * @return a float array with rgb values - */ - public static float[] getRGB(short[] color) { - float red = color[0] / 255.0F; - float green = color[1] / 255.0F; - float blue = color[2] / 255.0F; - - return new float[] { red, green, blue }; - } - - /** - * Clears brightness override. - */ - public void clearBrightnessOverride() { - hasBrightnessOverride = false; - } - - /** - * Clears color override. - */ - public void clearColorOverride() { - hasColorOverride = false; - } - - /** - * Clears lightness override. - */ - public void clearLightnessOverride() { - hasLightnessOverride = false; - } - - /** - * @return the Ambient Occlusion for Bottom-Left corner - */ - public float getAoBottomLeft() { - return aoBottomLeft; - } - - /** - * @return the Ambient Occlusion for Bottom-Right corner - */ - public float getAoBottomRight() { - return aoBottomRight; - } - - /** - * @return the Ambient Occlusion for Top-Left corner - */ - public float getAoTopLeft() { - return aoTopLeft; - } - - /** - * @return the Ambient Occlusion for Top-Right corner - */ - public float getAoTopRight() { - return aoTopRight; - } - - /** - * Sets brightness override. - * - * @param brightness the brightness override - * @return the {@link LightingHelper} - */ - public LightingHelper setBrightnessOverride(int brightness) { - hasBrightnessOverride = true; - brightnessOverride = brightness; - return this; - } - - public LightingHelper setColorOverride(short[] color) { - return setColorOverride(getColor(color)); - } - - /** - * Sets color override. - * - * @param color the color override - * @return the {@link LightingHelper} - */ - public LightingHelper setColorOverride(int color) { - hasColorOverride = true; - colorOverride = color; - return this; - } - - /** - * Gets int color from RGBA array. - * - * @param rgba the short RGBA color array - * @return int color - */ - public static int getColor(short[] rgba) { - return (rgba[2] & 0xff) | (rgba[1] & 0xff) << 8 | (rgba[0] & 0xff) << 16; - } - - /** - * Sets lightness override. - * - * @param lightness the lightness override - * @return the {@link LightingHelper} - */ - public LightingHelper setLightnessOverride(float lightness) { - hasLightnessOverride = true; - lightnessOverride = lightness; - return this; - } - - /** - * Sets up the color using lightness, brightness, and the primary color value (usually the dye color) for the side. - * - * @param side the side - * @param rgba the primary short[] RGBA color array - */ - public void setupColor(int side, short[] rgba) { - setupColor(side, getColor(rgba)); - } - - /** - * Sets up the color using lightness, brightness, and the primary color value (usually the dye color) for the side. - * - * @param side the side - * @param hexColor the primary color - */ - public void setupColor(int side, int hexColor) { - Tessellator tessellator = Tessellator.instance; - float lightness = hasLightnessOverride ? lightnessOverride : LIGHTNESS[side]; - float[] rgb = getRGB(hexColor); - - if (hasColorOverride && !renderBlocks.hasOverrideBlockTexture()) { - rgb = getRGB(colorOverride); - } - - applyAnaglyph(rgb); - - if (renderBlocks.enableAO) { - tessellator.setBrightness(hasBrightnessOverride ? brightnessOverride : brightness); - - if (renderBlocks.hasOverrideBlockTexture()) { - - renderBlocks.colorRedTopLeft = renderBlocks.colorRedBottomLeft = renderBlocks.colorRedBottomRight = renderBlocks.colorRedTopRight = rgb[0]; - renderBlocks.colorGreenTopLeft = renderBlocks.colorGreenBottomLeft = renderBlocks.colorGreenBottomRight = renderBlocks.colorGreenTopRight = rgb[1]; - renderBlocks.colorBlueTopLeft = renderBlocks.colorBlueBottomLeft = renderBlocks.colorBlueBottomRight = renderBlocks.colorBlueTopRight = rgb[2]; - - } else { - - renderBlocks.colorRedTopLeft = renderBlocks.colorRedBottomLeft = renderBlocks.colorRedBottomRight = renderBlocks.colorRedTopRight = rgb[0] - * lightness; - renderBlocks.colorGreenTopLeft = renderBlocks.colorGreenBottomLeft = renderBlocks.colorGreenBottomRight = renderBlocks.colorGreenTopRight = rgb[1] - * lightness; - renderBlocks.colorBlueTopLeft = renderBlocks.colorBlueBottomLeft = renderBlocks.colorBlueBottomRight = renderBlocks.colorBlueTopRight = rgb[2] - * lightness; - - renderBlocks.colorRedTopLeft *= aoTopLeft; - renderBlocks.colorGreenTopLeft *= aoTopLeft; - renderBlocks.colorBlueTopLeft *= aoTopLeft; - renderBlocks.colorRedBottomLeft *= aoBottomLeft; - renderBlocks.colorGreenBottomLeft *= aoBottomLeft; - renderBlocks.colorBlueBottomLeft *= aoBottomLeft; - renderBlocks.colorRedBottomRight *= aoBottomRight; - renderBlocks.colorGreenBottomRight *= aoBottomRight; - renderBlocks.colorBlueBottomRight *= aoBottomRight; - renderBlocks.colorRedTopRight *= aoTopRight; - renderBlocks.colorGreenTopRight *= aoTopRight; - renderBlocks.colorBlueTopRight *= aoTopRight; - } - - } else { - - tessellator.setColorOpaque_F(rgb[0] * lightness, rgb[1] * lightness, rgb[2] * lightness); - } - } - - /** - * Gets rgb color from integer. - * - * @param color the integer color - * @return a float array with rgb values - */ - public static float[] getRGB(int color) { - float red = (color >> 16 & 0xff) / 255.0F; - float green = (color >> 8 & 0xff) / 255.0F; - float blue = (color & 0xff) / 255.0F; - - return new float[] { red, green, blue }; - } - - /** - * Will apply anaglyph color multipliers to RGB float array. - *

- * If {@link EntityRenderer#anaglyphEnable} is false, will do nothing. - * - * @param rgb array containing red, green and blue float values - */ - public void applyAnaglyph(float[] rgb) { - if (EntityRenderer.anaglyphEnable) { - rgb[0] = (rgb[0] * 30.0F + rgb[1] * 59.0F + rgb[2] * 11.0F) / 100.0F; - rgb[1] = (rgb[0] * 30.0F + rgb[1] * 70.0F) / 100.0F; - rgb[2] = (rgb[0] * 30.0F + rgb[2] * 70.0F) / 100.0F; - } - } - - /** - * Gets mixed ambient occlusion value from two inputs, with a ratio applied to the final result. - * - * @param ao1 the first ambient occlusion value - * @param ao2 the second ambient occlusion value - * @param ratio the ratio for mixing - * @return the mixed red, green, blue float values - */ - public static float getMixedAo(float ao1, float ao2, double ratio) { - float diff = (float) (Math.abs(ao1 - ao2) * (1.0F - ratio)); - - return ao1 > ao2 ? ao1 - diff : ao1 + diff; - } - - /** - * Sets up lighting for the West face and returns the {@link LightingHelper}. - *

- * This is a consolidated method that sets side shading with respect to the following attributes: - *

- *

    - *
  • {@link RenderBlocks#enableAO}
  • - *
  • {@link RenderBlocks#partialRenderBounds}
  • - *
- * - * @param block the block {@link Block} - * @param x the x coordinate - * @param y the y coordinate - * @param z the z coordinate - * @return the {@link LightingHelper} - */ - public LightingHelper setupLightingXNeg(Block block, int x, int y, int z) { - - if (renderBlocks.enableAO) { - - int xOffset = renderBlocks.renderMinX > 0.0F ? x : x - 1; - - int mixedBrightness = block.getMixedBrightnessForBlock(renderBlocks.blockAccess, xOffset, y, z); - brightness = mixedBrightness; - - float ratio = (float) (1.0F - renderBlocks.renderMinX); - float aoLightValue = renderBlocks.blockAccess.getBlock(x - 1, y, z).getAmbientOcclusionLightValue(); - - renderBlocks.aoBrightnessXYNN = block - .getMixedBrightnessForBlock(renderBlocks.blockAccess, xOffset, y - 1, z); - renderBlocks.aoBrightnessXZNN = block - .getMixedBrightnessForBlock(renderBlocks.blockAccess, xOffset, y, z - 1); - renderBlocks.aoBrightnessXZNP = block - .getMixedBrightnessForBlock(renderBlocks.blockAccess, xOffset, y, z + 1); - renderBlocks.aoBrightnessXYNP = block - .getMixedBrightnessForBlock(renderBlocks.blockAccess, xOffset, y + 1, z); - renderBlocks.aoBrightnessXYZNNN = block - .getMixedBrightnessForBlock(renderBlocks.blockAccess, xOffset, y - 1, z - 1); - renderBlocks.aoBrightnessXYZNNP = block - .getMixedBrightnessForBlock(renderBlocks.blockAccess, xOffset, y - 1, z + 1); - renderBlocks.aoBrightnessXYZNPN = block - .getMixedBrightnessForBlock(renderBlocks.blockAccess, xOffset, y + 1, z - 1); - renderBlocks.aoBrightnessXYZNPP = block - .getMixedBrightnessForBlock(renderBlocks.blockAccess, xOffset, y + 1, z + 1); - renderBlocks.aoLightValueScratchXYNN = getMixedAo( - renderBlocks.blockAccess.getBlock(x - 1, y - 1, z).getAmbientOcclusionLightValue(), - renderBlocks.blockAccess.getBlock(x, y - 1, z).getAmbientOcclusionLightValue(), - ratio); - renderBlocks.aoLightValueScratchXZNN = getMixedAo( - renderBlocks.blockAccess.getBlock(x - 1, y, z - 1).getAmbientOcclusionLightValue(), - renderBlocks.blockAccess.getBlock(x, y, z - 1).getAmbientOcclusionLightValue(), - ratio); - renderBlocks.aoLightValueScratchXZNP = getMixedAo( - renderBlocks.blockAccess.getBlock(x - 1, y, z + 1).getAmbientOcclusionLightValue(), - renderBlocks.blockAccess.getBlock(x, y, z + 1).getAmbientOcclusionLightValue(), - ratio); - renderBlocks.aoLightValueScratchXYNP = getMixedAo( - renderBlocks.blockAccess.getBlock(x - 1, y + 1, z).getAmbientOcclusionLightValue(), - renderBlocks.blockAccess.getBlock(x, y + 1, z).getAmbientOcclusionLightValue(), - ratio); - renderBlocks.aoLightValueScratchXYZNNN = getMixedAo( - renderBlocks.blockAccess.getBlock(x - 1, y - 1, z - 1).getAmbientOcclusionLightValue(), - renderBlocks.blockAccess.getBlock(x, y - 1, z - 1).getAmbientOcclusionLightValue(), - ratio); - renderBlocks.aoLightValueScratchXYZNNP = getMixedAo( - renderBlocks.blockAccess.getBlock(x - 1, y - 1, z + 1).getAmbientOcclusionLightValue(), - renderBlocks.blockAccess.getBlock(x, y - 1, z + 1).getAmbientOcclusionLightValue(), - ratio); - renderBlocks.aoLightValueScratchXYZNPN = getMixedAo( - renderBlocks.blockAccess.getBlock(x - 1, y + 1, z - 1).getAmbientOcclusionLightValue(), - renderBlocks.blockAccess.getBlock(x, y + 1, z - 1).getAmbientOcclusionLightValue(), - ratio); - renderBlocks.aoLightValueScratchXYZNPP = getMixedAo( - renderBlocks.blockAccess.getBlock(x - 1, y + 1, z + 1).getAmbientOcclusionLightValue(), - renderBlocks.blockAccess.getBlock(x, y + 1, z + 1).getAmbientOcclusionLightValue(), - ratio); - - int brightnessMixedXYZNPN = renderBlocks.getAoBrightness( - renderBlocks.aoBrightnessXZNN, - renderBlocks.aoBrightnessXYZNPN, - renderBlocks.aoBrightnessXYNP, - mixedBrightness); - int brightnessMixedXYZNNN = renderBlocks.getAoBrightness( - renderBlocks.aoBrightnessXYZNNN, - renderBlocks.aoBrightnessXYNN, - renderBlocks.aoBrightnessXZNN, - mixedBrightness); - int brightnessMixedXYZNNP = renderBlocks.getAoBrightness( - renderBlocks.aoBrightnessXYNN, - renderBlocks.aoBrightnessXYZNNP, - renderBlocks.aoBrightnessXZNP, - mixedBrightness); - int brightnessMixedXYZNPP = renderBlocks.getAoBrightness( - renderBlocks.aoBrightnessXZNP, - renderBlocks.aoBrightnessXYNP, - renderBlocks.aoBrightnessXYZNPP, - mixedBrightness); - - float aoMixedXYZNPN = (renderBlocks.aoLightValueScratchXZNN + aoLightValue - + renderBlocks.aoLightValueScratchXYZNPN - + renderBlocks.aoLightValueScratchXYNP) / 4.0F; - float aoMixedXYZNNN = (renderBlocks.aoLightValueScratchXYZNNN + renderBlocks.aoLightValueScratchXYNN - + renderBlocks.aoLightValueScratchXZNN - + aoLightValue) / 4.0F; - float aoMixedXYZNNP = (renderBlocks.aoLightValueScratchXYNN + renderBlocks.aoLightValueScratchXYZNNP - + aoLightValue - + renderBlocks.aoLightValueScratchXZNP) / 4.0F; - float aoMixedXYZNPP = (aoLightValue + renderBlocks.aoLightValueScratchXZNP - + renderBlocks.aoLightValueScratchXYNP - + renderBlocks.aoLightValueScratchXYZNPP) / 4.0F; - - aoTopLeft = (float) (aoMixedXYZNPP * renderBlocks.renderMaxY * renderBlocks.renderMaxZ - + aoMixedXYZNPN * renderBlocks.renderMaxY * (1.0D - renderBlocks.renderMaxZ) - + aoMixedXYZNNN * (1.0D - renderBlocks.renderMaxY) * (1.0D - renderBlocks.renderMaxZ) - + aoMixedXYZNNP * (1.0D - renderBlocks.renderMaxY) * renderBlocks.renderMaxZ); - aoBottomLeft = (float) (aoMixedXYZNPP * renderBlocks.renderMaxY * renderBlocks.renderMinZ - + aoMixedXYZNPN * renderBlocks.renderMaxY * (1.0D - renderBlocks.renderMinZ) - + aoMixedXYZNNN * (1.0D - renderBlocks.renderMaxY) * (1.0D - renderBlocks.renderMinZ) - + aoMixedXYZNNP * (1.0D - renderBlocks.renderMaxY) * renderBlocks.renderMinZ); - aoBottomRight = (float) (aoMixedXYZNPP * renderBlocks.renderMinY * renderBlocks.renderMinZ - + aoMixedXYZNPN * renderBlocks.renderMinY * (1.0D - renderBlocks.renderMinZ) - + aoMixedXYZNNN * (1.0D - renderBlocks.renderMinY) * (1.0D - renderBlocks.renderMinZ) - + aoMixedXYZNNP * (1.0D - renderBlocks.renderMinY) * renderBlocks.renderMinZ); - aoTopRight = (float) (aoMixedXYZNPP * renderBlocks.renderMinY * renderBlocks.renderMaxZ - + aoMixedXYZNPN * renderBlocks.renderMinY * (1.0D - renderBlocks.renderMaxZ) - + aoMixedXYZNNN * (1.0D - renderBlocks.renderMinY) * (1.0D - renderBlocks.renderMaxZ) - + aoMixedXYZNNP * (1.0D - renderBlocks.renderMinY) * renderBlocks.renderMaxZ); - - renderBlocks.brightnessTopLeft = renderBlocks.mixAoBrightness( - brightnessMixedXYZNPP, - brightnessMixedXYZNPN, - brightnessMixedXYZNNN, - brightnessMixedXYZNNP, - renderBlocks.renderMaxY * renderBlocks.renderMaxZ, - renderBlocks.renderMaxY * (1.0D - renderBlocks.renderMaxZ), - (1.0D - renderBlocks.renderMaxY) * (1.0D - renderBlocks.renderMaxZ), - (1.0D - renderBlocks.renderMaxY) * renderBlocks.renderMaxZ); - renderBlocks.brightnessBottomLeft = renderBlocks.mixAoBrightness( - brightnessMixedXYZNPP, - brightnessMixedXYZNPN, - brightnessMixedXYZNNN, - brightnessMixedXYZNNP, - renderBlocks.renderMaxY * renderBlocks.renderMinZ, - renderBlocks.renderMaxY * (1.0D - renderBlocks.renderMinZ), - (1.0D - renderBlocks.renderMaxY) * (1.0D - renderBlocks.renderMinZ), - (1.0D - renderBlocks.renderMaxY) * renderBlocks.renderMinZ); - renderBlocks.brightnessBottomRight = renderBlocks.mixAoBrightness( - brightnessMixedXYZNPP, - brightnessMixedXYZNPN, - brightnessMixedXYZNNN, - brightnessMixedXYZNNP, - renderBlocks.renderMinY * renderBlocks.renderMinZ, - renderBlocks.renderMinY * (1.0D - renderBlocks.renderMinZ), - (1.0D - renderBlocks.renderMinY) * (1.0D - renderBlocks.renderMinZ), - (1.0D - renderBlocks.renderMinY) * renderBlocks.renderMinZ); - renderBlocks.brightnessTopRight = renderBlocks.mixAoBrightness( - brightnessMixedXYZNPP, - brightnessMixedXYZNPN, - brightnessMixedXYZNNN, - brightnessMixedXYZNNP, - renderBlocks.renderMinY * renderBlocks.renderMaxZ, - renderBlocks.renderMinY * (1.0D - renderBlocks.renderMaxZ), - (1.0D - renderBlocks.renderMinY) * (1.0D - renderBlocks.renderMaxZ), - (1.0D - renderBlocks.renderMinY) * renderBlocks.renderMaxZ); - } - - return this; - } - - /** - * Sets up lighting for the East face and returns the {@link LightingHelper}. - *

- * This is a consolidated method that sets side shading with respect to the following attributes: - *

- *

    - *
  • {@link RenderBlocks#enableAO}
  • - *
  • {@link RenderBlocks#partialRenderBounds}
  • - *
- * - * @param block the block {@link Block} - * @param x the x coordinate - * @param y the y coordinate - * @param z the z coordinate - * @return the {@link LightingHelper} - */ - public LightingHelper setupLightingXPos(Block block, int x, int y, int z) { - - if (renderBlocks.enableAO) { - - int xOffset = renderBlocks.renderMaxX < 1.0F ? x : x + 1; - - int mixedBrightness = block.getMixedBrightnessForBlock(renderBlocks.blockAccess, xOffset, y, z); - brightness = mixedBrightness; - - float aoLightValue = renderBlocks.blockAccess.getBlock(x + 1, y, z).getAmbientOcclusionLightValue(); - - renderBlocks.aoBrightnessXYPN = block - .getMixedBrightnessForBlock(renderBlocks.blockAccess, xOffset, y - 1, z); - renderBlocks.aoBrightnessXZPN = block - .getMixedBrightnessForBlock(renderBlocks.blockAccess, xOffset, y, z - 1); - renderBlocks.aoBrightnessXZPP = block - .getMixedBrightnessForBlock(renderBlocks.blockAccess, xOffset, y, z + 1); - renderBlocks.aoBrightnessXYPP = block - .getMixedBrightnessForBlock(renderBlocks.blockAccess, xOffset, y + 1, z); - renderBlocks.aoBrightnessXYZPNN = block - .getMixedBrightnessForBlock(renderBlocks.blockAccess, xOffset, y - 1, z - 1); - renderBlocks.aoBrightnessXYZPNP = block - .getMixedBrightnessForBlock(renderBlocks.blockAccess, xOffset, y - 1, z + 1); - renderBlocks.aoBrightnessXYZPPN = block - .getMixedBrightnessForBlock(renderBlocks.blockAccess, xOffset, y + 1, z - 1); - renderBlocks.aoBrightnessXYZPPP = block - .getMixedBrightnessForBlock(renderBlocks.blockAccess, xOffset, y + 1, z + 1); - renderBlocks.aoLightValueScratchXYPN = getMixedAo( - renderBlocks.blockAccess.getBlock(x + 1, y - 1, z).getAmbientOcclusionLightValue(), - renderBlocks.blockAccess.getBlock(x, y - 1, z).getAmbientOcclusionLightValue(), - renderBlocks.renderMaxX); - renderBlocks.aoLightValueScratchXZPN = getMixedAo( - renderBlocks.blockAccess.getBlock(x + 1, y, z - 1).getAmbientOcclusionLightValue(), - renderBlocks.blockAccess.getBlock(x, y, z - 1).getAmbientOcclusionLightValue(), - renderBlocks.renderMaxX); - renderBlocks.aoLightValueScratchXZPP = getMixedAo( - renderBlocks.blockAccess.getBlock(x + 1, y, z + 1).getAmbientOcclusionLightValue(), - renderBlocks.blockAccess.getBlock(x, y, z + 1).getAmbientOcclusionLightValue(), - renderBlocks.renderMaxX); - renderBlocks.aoLightValueScratchXYPP = getMixedAo( - renderBlocks.blockAccess.getBlock(x + 1, y + 1, z).getAmbientOcclusionLightValue(), - renderBlocks.blockAccess.getBlock(x, y + 1, z).getAmbientOcclusionLightValue(), - renderBlocks.renderMaxX); - renderBlocks.aoLightValueScratchXYZPNN = getMixedAo( - renderBlocks.blockAccess.getBlock(x + 1, y - 1, z - 1).getAmbientOcclusionLightValue(), - renderBlocks.blockAccess.getBlock(x, y - 1, z - 1).getAmbientOcclusionLightValue(), - renderBlocks.renderMaxX); - renderBlocks.aoLightValueScratchXYZPNP = getMixedAo( - renderBlocks.blockAccess.getBlock(x + 1, y - 1, z + 1).getAmbientOcclusionLightValue(), - renderBlocks.blockAccess.getBlock(x, y - 1, z + 1).getAmbientOcclusionLightValue(), - renderBlocks.renderMaxX); - renderBlocks.aoLightValueScratchXYZPPN = getMixedAo( - renderBlocks.blockAccess.getBlock(x + 1, y + 1, z - 1).getAmbientOcclusionLightValue(), - renderBlocks.blockAccess.getBlock(x, y + 1, z - 1).getAmbientOcclusionLightValue(), - renderBlocks.renderMaxX); - renderBlocks.aoLightValueScratchXYZPPP = getMixedAo( - renderBlocks.blockAccess.getBlock(x + 1, y + 1, z + 1).getAmbientOcclusionLightValue(), - renderBlocks.blockAccess.getBlock(x, y + 1, z + 1).getAmbientOcclusionLightValue(), - renderBlocks.renderMaxX); - - int brightnessMixedXYZPPP = renderBlocks.getAoBrightness( - renderBlocks.aoBrightnessXZPP, - renderBlocks.aoBrightnessXYPP, - renderBlocks.aoBrightnessXYZPPP, - mixedBrightness); - int brightnessMixedXYZPNP = renderBlocks.getAoBrightness( - renderBlocks.aoBrightnessXYPN, - renderBlocks.aoBrightnessXYZPNP, - renderBlocks.aoBrightnessXZPP, - mixedBrightness); - int brightnessMixedXYZPNN = renderBlocks.getAoBrightness( - renderBlocks.aoBrightnessXYZPNN, - renderBlocks.aoBrightnessXYPN, - renderBlocks.aoBrightnessXZPN, - mixedBrightness); - int brightnessMixedXYZPPN = renderBlocks.getAoBrightness( - renderBlocks.aoBrightnessXZPN, - renderBlocks.aoBrightnessXYZPPN, - renderBlocks.aoBrightnessXYPP, - mixedBrightness); - - float aoMixedXYZPPP = (aoLightValue + renderBlocks.aoLightValueScratchXZPP - + renderBlocks.aoLightValueScratchXYPP - + renderBlocks.aoLightValueScratchXYZPPP) / 4.0F; - float aoMixedXYZPNP = (renderBlocks.aoLightValueScratchXYPN + renderBlocks.aoLightValueScratchXYZPNP - + aoLightValue - + renderBlocks.aoLightValueScratchXZPP) / 4.0F; - float aoMixedXYZPNN = (renderBlocks.aoLightValueScratchXYZPNN + renderBlocks.aoLightValueScratchXYPN - + renderBlocks.aoLightValueScratchXZPN - + aoLightValue) / 4.0F; - float aoMixedXYZPPN = (renderBlocks.aoLightValueScratchXZPN + aoLightValue - + renderBlocks.aoLightValueScratchXYZPPN - + renderBlocks.aoLightValueScratchXYPP) / 4.0F; - - aoTopLeft = (float) (aoMixedXYZPNP * (1.0D - renderBlocks.renderMinY) * renderBlocks.renderMaxZ - + aoMixedXYZPNN * (1.0D - renderBlocks.renderMinY) * (1.0D - renderBlocks.renderMaxZ) - + aoMixedXYZPPN * renderBlocks.renderMinY * (1.0D - renderBlocks.renderMaxZ) - + aoMixedXYZPPP * renderBlocks.renderMinY * renderBlocks.renderMaxZ); - aoBottomLeft = (float) (aoMixedXYZPNP * (1.0D - renderBlocks.renderMinY) * renderBlocks.renderMinZ - + aoMixedXYZPNN * (1.0D - renderBlocks.renderMinY) * (1.0D - renderBlocks.renderMinZ) - + aoMixedXYZPPN * renderBlocks.renderMinY * (1.0D - renderBlocks.renderMinZ) - + aoMixedXYZPPP * renderBlocks.renderMinY * renderBlocks.renderMinZ); - aoBottomRight = (float) (aoMixedXYZPNP * (1.0D - renderBlocks.renderMaxY) * renderBlocks.renderMinZ - + aoMixedXYZPNN * (1.0D - renderBlocks.renderMaxY) * (1.0D - renderBlocks.renderMinZ) - + aoMixedXYZPPN * renderBlocks.renderMaxY * (1.0D - renderBlocks.renderMinZ) - + aoMixedXYZPPP * renderBlocks.renderMaxY * renderBlocks.renderMinZ); - aoTopRight = (float) (aoMixedXYZPNP * (1.0D - renderBlocks.renderMaxY) * renderBlocks.renderMaxZ - + aoMixedXYZPNN * (1.0D - renderBlocks.renderMaxY) * (1.0D - renderBlocks.renderMaxZ) - + aoMixedXYZPPN * renderBlocks.renderMaxY * (1.0D - renderBlocks.renderMaxZ) - + aoMixedXYZPPP * renderBlocks.renderMaxY * renderBlocks.renderMaxZ); - - renderBlocks.brightnessTopLeft = renderBlocks.mixAoBrightness( - brightnessMixedXYZPNP, - brightnessMixedXYZPNN, - brightnessMixedXYZPPN, - brightnessMixedXYZPPP, - (1.0D - renderBlocks.renderMinY) * renderBlocks.renderMaxZ, - (1.0D - renderBlocks.renderMinY) * (1.0D - renderBlocks.renderMaxZ), - renderBlocks.renderMinY * (1.0D - renderBlocks.renderMaxZ), - renderBlocks.renderMinY * renderBlocks.renderMaxZ); - renderBlocks.brightnessBottomLeft = renderBlocks.mixAoBrightness( - brightnessMixedXYZPNP, - brightnessMixedXYZPNN, - brightnessMixedXYZPPN, - brightnessMixedXYZPPP, - (1.0D - renderBlocks.renderMinY) * renderBlocks.renderMinZ, - (1.0D - renderBlocks.renderMinY) * (1.0D - renderBlocks.renderMinZ), - renderBlocks.renderMinY * (1.0D - renderBlocks.renderMinZ), - renderBlocks.renderMinY * renderBlocks.renderMinZ); - renderBlocks.brightnessBottomRight = renderBlocks.mixAoBrightness( - brightnessMixedXYZPNP, - brightnessMixedXYZPNN, - brightnessMixedXYZPPN, - brightnessMixedXYZPPP, - (1.0D - renderBlocks.renderMaxY) * renderBlocks.renderMinZ, - (1.0D - renderBlocks.renderMaxY) * (1.0D - renderBlocks.renderMinZ), - renderBlocks.renderMaxY * (1.0D - renderBlocks.renderMinZ), - renderBlocks.renderMaxY * renderBlocks.renderMinZ); - renderBlocks.brightnessTopRight = renderBlocks.mixAoBrightness( - brightnessMixedXYZPNP, - brightnessMixedXYZPNN, - brightnessMixedXYZPPN, - brightnessMixedXYZPPP, - (1.0D - renderBlocks.renderMaxY) * renderBlocks.renderMaxZ, - (1.0D - renderBlocks.renderMaxY) * (1.0D - renderBlocks.renderMaxZ), - renderBlocks.renderMaxY * (1.0D - renderBlocks.renderMaxZ), - renderBlocks.renderMaxY * renderBlocks.renderMaxZ); - } - - return this; - } - - /** - * Sets up lighting for the bottom face and returns the {@link LightingHelper}. - *

- * This is a consolidated method that sets side shading with respect to the following attributes: - *

- *

    - *
  • {@link RenderBlocks#enableAO}
  • - *
  • {@link RenderBlocks#partialRenderBounds}
  • - *
- * - * @param block the block {@link Block} - * @param x the x coordinate - * @param y the y coordinate - * @param z the z coordinate - * @return the {@link LightingHelper} - */ - public LightingHelper setupLightingYNeg(Block block, int x, int y, int z) { - - if (renderBlocks.enableAO) { - - int yOffset = renderBlocks.renderMinY > 0.0F ? y : y - 1; - - int mixedBrightness = block.getMixedBrightnessForBlock(renderBlocks.blockAccess, x, yOffset, z); - brightness = mixedBrightness; - - float ratio = (float) (1.0F - renderBlocks.renderMinY); - float aoLightValue = renderBlocks.blockAccess.getBlock(x, y - 1, z).getAmbientOcclusionLightValue(); - - renderBlocks.aoBrightnessXYNN = block - .getMixedBrightnessForBlock(renderBlocks.blockAccess, x - 1, yOffset, z); - renderBlocks.aoBrightnessYZNN = block - .getMixedBrightnessForBlock(renderBlocks.blockAccess, x, yOffset, z - 1); - renderBlocks.aoBrightnessYZNP = block - .getMixedBrightnessForBlock(renderBlocks.blockAccess, x, yOffset, z + 1); - renderBlocks.aoBrightnessXYPN = block - .getMixedBrightnessForBlock(renderBlocks.blockAccess, x + 1, yOffset, z); - renderBlocks.aoBrightnessXYZNNN = block - .getMixedBrightnessForBlock(renderBlocks.blockAccess, x - 1, yOffset, z - 1); - renderBlocks.aoBrightnessXYZNNP = block - .getMixedBrightnessForBlock(renderBlocks.blockAccess, x - 1, yOffset, z + 1); - renderBlocks.aoBrightnessXYZPNN = block - .getMixedBrightnessForBlock(renderBlocks.blockAccess, x + 1, yOffset, z - 1); - renderBlocks.aoBrightnessXYZPNP = block - .getMixedBrightnessForBlock(renderBlocks.blockAccess, x + 1, yOffset, z + 1); - renderBlocks.aoLightValueScratchXYNN = getMixedAo( - renderBlocks.blockAccess.getBlock(x - 1, y - 1, z).getAmbientOcclusionLightValue(), - renderBlocks.blockAccess.getBlock(x - 1, y, z).getAmbientOcclusionLightValue(), - ratio); - renderBlocks.aoLightValueScratchYZNN = getMixedAo( - renderBlocks.blockAccess.getBlock(x, y - 1, z - 1).getAmbientOcclusionLightValue(), - renderBlocks.blockAccess.getBlock(x, y, z - 1).getAmbientOcclusionLightValue(), - ratio); - renderBlocks.aoLightValueScratchYZNP = getMixedAo( - renderBlocks.blockAccess.getBlock(x, y - 1, z + 1).getAmbientOcclusionLightValue(), - renderBlocks.blockAccess.getBlock(x, y, z + 1).getAmbientOcclusionLightValue(), - ratio); - renderBlocks.aoLightValueScratchXYPN = getMixedAo( - renderBlocks.blockAccess.getBlock(x + 1, y - 1, z).getAmbientOcclusionLightValue(), - renderBlocks.blockAccess.getBlock(x + 1, y, z).getAmbientOcclusionLightValue(), - ratio); - renderBlocks.aoLightValueScratchXYZNNN = getMixedAo( - renderBlocks.blockAccess.getBlock(x - 1, y - 1, z - 1).getAmbientOcclusionLightValue(), - renderBlocks.blockAccess.getBlock(x - 1, y, z - 1).getAmbientOcclusionLightValue(), - ratio); - renderBlocks.aoLightValueScratchXYZNNP = getMixedAo( - renderBlocks.blockAccess.getBlock(x - 1, y - 1, z + 1).getAmbientOcclusionLightValue(), - renderBlocks.blockAccess.getBlock(x - 1, y, z + 1).getAmbientOcclusionLightValue(), - ratio); - renderBlocks.aoLightValueScratchXYZPNN = getMixedAo( - renderBlocks.blockAccess.getBlock(x + 1, y - 1, z - 1).getAmbientOcclusionLightValue(), - renderBlocks.blockAccess.getBlock(x + 1, y, z - 1).getAmbientOcclusionLightValue(), - ratio); - renderBlocks.aoLightValueScratchXYZPNP = getMixedAo( - renderBlocks.blockAccess.getBlock(x + 1, y - 1, z + 1).getAmbientOcclusionLightValue(), - renderBlocks.blockAccess.getBlock(x + 1, y, z + 1).getAmbientOcclusionLightValue(), - ratio); - - int brightnessMixedXYZPNP = renderBlocks.getAoBrightness( - renderBlocks.aoBrightnessYZNP, - renderBlocks.aoBrightnessXYZPNP, - renderBlocks.aoBrightnessXYPN, - mixedBrightness); - int brightnessMixedXYZPNN = renderBlocks.getAoBrightness( - renderBlocks.aoBrightnessYZNN, - renderBlocks.aoBrightnessXYPN, - renderBlocks.aoBrightnessXYZPNN, - mixedBrightness); - int brightnessMixedXYZNNN = renderBlocks.getAoBrightness( - renderBlocks.aoBrightnessXYNN, - renderBlocks.aoBrightnessXYZNNN, - renderBlocks.aoBrightnessYZNN, - mixedBrightness); - int brightnessMixedXYZNNP = renderBlocks.getAoBrightness( - renderBlocks.aoBrightnessXYZNNP, - renderBlocks.aoBrightnessXYNN, - renderBlocks.aoBrightnessYZNP, - mixedBrightness); - - float aoMixedXYZPNP = (renderBlocks.aoLightValueScratchYZNP + aoLightValue - + renderBlocks.aoLightValueScratchXYZPNP - + renderBlocks.aoLightValueScratchXYPN) / 4.0F; - float aoMixedXYZPNN = (aoLightValue + renderBlocks.aoLightValueScratchYZNN - + renderBlocks.aoLightValueScratchXYPN - + renderBlocks.aoLightValueScratchXYZPNN) / 4.0F; - float aoMixedXYZNNN = (renderBlocks.aoLightValueScratchXYNN + renderBlocks.aoLightValueScratchXYZNNN - + aoLightValue - + renderBlocks.aoLightValueScratchYZNN) / 4.0F; - float aoMixedXYZNNP = (renderBlocks.aoLightValueScratchXYZNNP + renderBlocks.aoLightValueScratchXYNN - + renderBlocks.aoLightValueScratchYZNP - + aoLightValue) / 4.0F; - - aoTopLeft = (float) (aoMixedXYZNNP * renderBlocks.renderMaxZ * (1.0D - renderBlocks.renderMinX) - + aoMixedXYZPNP * renderBlocks.renderMaxZ * renderBlocks.renderMinX - + aoMixedXYZPNN * (1.0D - renderBlocks.renderMaxZ) * renderBlocks.renderMinX - + aoMixedXYZNNN * (1.0D - renderBlocks.renderMaxZ) * (1.0D - renderBlocks.renderMinX)); - aoBottomLeft = (float) (aoMixedXYZNNP * renderBlocks.renderMinZ * (1.0D - renderBlocks.renderMinX) - + aoMixedXYZPNP * renderBlocks.renderMinZ * renderBlocks.renderMinX - + aoMixedXYZPNN * (1.0D - renderBlocks.renderMinZ) * renderBlocks.renderMinX - + aoMixedXYZNNN * (1.0D - renderBlocks.renderMinZ) * (1.0D - renderBlocks.renderMinX)); - aoBottomRight = (float) (aoMixedXYZNNP * renderBlocks.renderMinZ * (1.0D - renderBlocks.renderMaxX) - + aoMixedXYZPNP * renderBlocks.renderMinZ * renderBlocks.renderMaxX - + aoMixedXYZPNN * (1.0D - renderBlocks.renderMinZ) * renderBlocks.renderMaxX - + aoMixedXYZNNN * (1.0D - renderBlocks.renderMinZ) * (1.0D - renderBlocks.renderMaxX)); - aoTopRight = (float) (aoMixedXYZNNP * renderBlocks.renderMaxZ * (1.0D - renderBlocks.renderMaxX) - + aoMixedXYZPNP * renderBlocks.renderMaxZ * renderBlocks.renderMaxX - + aoMixedXYZPNN * (1.0D - renderBlocks.renderMaxZ) * renderBlocks.renderMaxX - + aoMixedXYZNNN * (1.0D - renderBlocks.renderMaxZ) * (1.0D - renderBlocks.renderMaxX)); - - renderBlocks.brightnessTopLeft = renderBlocks.mixAoBrightness( - brightnessMixedXYZNNP, - brightnessMixedXYZPNP, - brightnessMixedXYZPNN, - brightnessMixedXYZNNN, - renderBlocks.renderMaxZ * (1.0D - renderBlocks.renderMinX), - renderBlocks.renderMaxZ * renderBlocks.renderMinX, - (1.0D - renderBlocks.renderMaxZ) * renderBlocks.renderMinX, - (1.0D - renderBlocks.renderMaxZ) * (1.0D - renderBlocks.renderMinX)); - renderBlocks.brightnessBottomLeft = renderBlocks.mixAoBrightness( - brightnessMixedXYZNNP, - brightnessMixedXYZPNP, - brightnessMixedXYZPNN, - brightnessMixedXYZNNN, - renderBlocks.renderMinZ * (1.0D - renderBlocks.renderMinX), - renderBlocks.renderMinZ * renderBlocks.renderMinX, - (1.0D - renderBlocks.renderMinZ) * renderBlocks.renderMinX, - (1.0D - renderBlocks.renderMinZ) * (1.0D - renderBlocks.renderMinX)); - renderBlocks.brightnessBottomRight = renderBlocks.mixAoBrightness( - brightnessMixedXYZNNP, - brightnessMixedXYZPNP, - brightnessMixedXYZPNN, - brightnessMixedXYZNNN, - renderBlocks.renderMinZ * (1.0D - renderBlocks.renderMaxX), - renderBlocks.renderMinZ * renderBlocks.renderMaxX, - (1.0D - renderBlocks.renderMinZ) * renderBlocks.renderMaxX, - (1.0D - renderBlocks.renderMinZ) * (1.0D - renderBlocks.renderMaxX)); - renderBlocks.brightnessTopRight = renderBlocks.mixAoBrightness( - brightnessMixedXYZNNP, - brightnessMixedXYZPNP, - brightnessMixedXYZPNN, - brightnessMixedXYZNNN, - renderBlocks.renderMaxZ * (1.0D - renderBlocks.renderMaxX), - renderBlocks.renderMaxZ * renderBlocks.renderMaxX, - (1.0D - renderBlocks.renderMaxZ) * renderBlocks.renderMaxX, - (1.0D - renderBlocks.renderMaxZ) * (1.0D - renderBlocks.renderMaxX)); - } - - return this; - } - - /** - * Sets up lighting for the top face and returns the {@link LightingHelper}. - *

- * This is a consolidated method that sets side shading with respect to the following attributes: - *

- *

    - *
  • {@link RenderBlocks#enableAO}
  • - *
  • {@link RenderBlocks#partialRenderBounds}
  • - *
- * - * @param block the block {@link Block} - * @param x the x coordinate - * @param y the y coordinate - * @param z the z coordinate - * @return the {@link LightingHelper} - */ - public LightingHelper setupLightingYPos(Block block, int x, int y, int z) { - - if (renderBlocks.enableAO) { - - int yOffset = renderBlocks.renderMaxY < 1.0F ? y : y + 1; - - int mixedBrightness = block.getMixedBrightnessForBlock(renderBlocks.blockAccess, x, yOffset, z); - brightness = mixedBrightness; - - float aoLightValue = renderBlocks.blockAccess.getBlock(x, y + 1, z).getAmbientOcclusionLightValue(); - - renderBlocks.aoBrightnessXYNP = block - .getMixedBrightnessForBlock(renderBlocks.blockAccess, x - 1, yOffset, z); - renderBlocks.aoBrightnessXYPP = block - .getMixedBrightnessForBlock(renderBlocks.blockAccess, x + 1, yOffset, z); - renderBlocks.aoBrightnessYZPN = block - .getMixedBrightnessForBlock(renderBlocks.blockAccess, x, yOffset, z - 1); - renderBlocks.aoBrightnessYZPP = block - .getMixedBrightnessForBlock(renderBlocks.blockAccess, x, yOffset, z + 1); - renderBlocks.aoBrightnessXYZNPN = block - .getMixedBrightnessForBlock(renderBlocks.blockAccess, x - 1, yOffset, z - 1); - renderBlocks.aoBrightnessXYZPPN = block - .getMixedBrightnessForBlock(renderBlocks.blockAccess, x + 1, yOffset, z - 1); - renderBlocks.aoBrightnessXYZNPP = block - .getMixedBrightnessForBlock(renderBlocks.blockAccess, x - 1, yOffset, z + 1); - renderBlocks.aoBrightnessXYZPPP = block - .getMixedBrightnessForBlock(renderBlocks.blockAccess, x + 1, yOffset, z + 1); - renderBlocks.aoLightValueScratchXYNP = getMixedAo( - renderBlocks.blockAccess.getBlock(x - 1, y + 1, z).getAmbientOcclusionLightValue(), - renderBlocks.blockAccess.getBlock(x - 1, y, z).getAmbientOcclusionLightValue(), - renderBlocks.renderMaxY); - renderBlocks.aoLightValueScratchXYPP = getMixedAo( - renderBlocks.blockAccess.getBlock(x + 1, y + 1, z).getAmbientOcclusionLightValue(), - renderBlocks.blockAccess.getBlock(x + 1, y, z).getAmbientOcclusionLightValue(), - renderBlocks.renderMaxY); - renderBlocks.aoLightValueScratchYZPN = getMixedAo( - renderBlocks.blockAccess.getBlock(x, y + 1, z - 1).getAmbientOcclusionLightValue(), - renderBlocks.blockAccess.getBlock(x, y, z - 1).getAmbientOcclusionLightValue(), - renderBlocks.renderMaxY); - renderBlocks.aoLightValueScratchYZPP = getMixedAo( - renderBlocks.blockAccess.getBlock(x, y + 1, z + 1).getAmbientOcclusionLightValue(), - renderBlocks.blockAccess.getBlock(x, y, z + 1).getAmbientOcclusionLightValue(), - renderBlocks.renderMaxY); - renderBlocks.aoLightValueScratchXYZNPN = getMixedAo( - renderBlocks.blockAccess.getBlock(x - 1, y + 1, z - 1).getAmbientOcclusionLightValue(), - renderBlocks.blockAccess.getBlock(x - 1, y, z - 1).getAmbientOcclusionLightValue(), - renderBlocks.renderMaxY); - renderBlocks.aoLightValueScratchXYZPPN = getMixedAo( - renderBlocks.blockAccess.getBlock(x + 1, y + 1, z - 1).getAmbientOcclusionLightValue(), - renderBlocks.blockAccess.getBlock(x + 1, y, z - 1).getAmbientOcclusionLightValue(), - renderBlocks.renderMaxY); - renderBlocks.aoLightValueScratchXYZNPP = getMixedAo( - renderBlocks.blockAccess.getBlock(x - 1, y + 1, z + 1).getAmbientOcclusionLightValue(), - renderBlocks.blockAccess.getBlock(x - 1, y, z + 1).getAmbientOcclusionLightValue(), - renderBlocks.renderMaxY); - renderBlocks.aoLightValueScratchXYZPPP = getMixedAo( - renderBlocks.blockAccess.getBlock(x + 1, y + 1, z + 1).getAmbientOcclusionLightValue(), - renderBlocks.blockAccess.getBlock(x + 1, y, z + 1).getAmbientOcclusionLightValue(), - renderBlocks.renderMaxY); - - int brightnessMixedXYZPPP = renderBlocks.getAoBrightness( - renderBlocks.aoBrightnessYZPP, - renderBlocks.aoBrightnessXYZPPP, - renderBlocks.aoBrightnessXYPP, - mixedBrightness); - int brightnessMixedXYZPPN = renderBlocks.getAoBrightness( - renderBlocks.aoBrightnessYZPN, - renderBlocks.aoBrightnessXYPP, - renderBlocks.aoBrightnessXYZPPN, - mixedBrightness); - int brightnessMixedXYZNPN = renderBlocks.getAoBrightness( - renderBlocks.aoBrightnessXYNP, - renderBlocks.aoBrightnessXYZNPN, - renderBlocks.aoBrightnessYZPN, - mixedBrightness); - int brightnessMixedXYZNPP = renderBlocks.getAoBrightness( - renderBlocks.aoBrightnessXYZNPP, - renderBlocks.aoBrightnessXYNP, - renderBlocks.aoBrightnessYZPP, - mixedBrightness); - - float aoMixedXYZPPP = (renderBlocks.aoLightValueScratchYZPP + aoLightValue - + renderBlocks.aoLightValueScratchXYZPPP - + renderBlocks.aoLightValueScratchXYPP) / 4.0F; - float aoMixedXYZPPN = (aoLightValue + renderBlocks.aoLightValueScratchYZPN - + renderBlocks.aoLightValueScratchXYPP - + renderBlocks.aoLightValueScratchXYZPPN) / 4.0F; - float aoMixedXYZNPN = (renderBlocks.aoLightValueScratchXYNP + renderBlocks.aoLightValueScratchXYZNPN - + aoLightValue - + renderBlocks.aoLightValueScratchYZPN) / 4.0F; - float aoMixedXYZNPP = (renderBlocks.aoLightValueScratchXYZNPP + renderBlocks.aoLightValueScratchXYNP - + renderBlocks.aoLightValueScratchYZPP - + aoLightValue) / 4.0F; - - aoTopLeft /* SE */ = (float) (aoMixedXYZNPP * renderBlocks.renderMaxZ * (1.0D - renderBlocks.renderMaxX) - + aoMixedXYZPPP * renderBlocks.renderMaxZ * renderBlocks.renderMaxX - + aoMixedXYZPPN * (1.0D - renderBlocks.renderMaxZ) * renderBlocks.renderMaxX - + aoMixedXYZNPN * (1.0D - renderBlocks.renderMaxZ) * (1.0D - renderBlocks.renderMaxX)); - aoBottomLeft /* NE */ = (float) (aoMixedXYZNPP * renderBlocks.renderMinZ * (1.0D - renderBlocks.renderMaxX) - + aoMixedXYZPPP * renderBlocks.renderMinZ * renderBlocks.renderMaxX - + aoMixedXYZPPN * (1.0D - renderBlocks.renderMinZ) * renderBlocks.renderMaxX - + aoMixedXYZNPN * (1.0D - renderBlocks.renderMinZ) * (1.0D - renderBlocks.renderMaxX)); - aoBottomRight /* NW */ = (float) (aoMixedXYZNPP * renderBlocks.renderMinZ * (1.0D - renderBlocks.renderMinX) - + aoMixedXYZPPP * renderBlocks.renderMinZ * renderBlocks.renderMinX - + aoMixedXYZPPN * (1.0D - renderBlocks.renderMinZ) * renderBlocks.renderMinX - + aoMixedXYZNPN * (1.0D - renderBlocks.renderMinZ) * (1.0D - renderBlocks.renderMinX)); - aoTopRight /* SW */ = (float) (aoMixedXYZNPP * renderBlocks.renderMaxZ * (1.0D - renderBlocks.renderMinX) - + aoMixedXYZPPP * renderBlocks.renderMaxZ * renderBlocks.renderMinX - + aoMixedXYZPPN * (1.0D - renderBlocks.renderMaxZ) * renderBlocks.renderMinX - + aoMixedXYZNPN * (1.0D - renderBlocks.renderMaxZ) * (1.0D - renderBlocks.renderMinX)); - - renderBlocks.brightnessTopLeft = renderBlocks.mixAoBrightness( - brightnessMixedXYZNPP, - brightnessMixedXYZPPP, - brightnessMixedXYZPPN, - brightnessMixedXYZNPN, - renderBlocks.renderMaxZ * (1.0D - renderBlocks.renderMaxX), - renderBlocks.renderMaxZ * renderBlocks.renderMaxX, - (1.0D - renderBlocks.renderMaxZ) * renderBlocks.renderMaxX, - (1.0D - renderBlocks.renderMaxZ) * (1.0D - renderBlocks.renderMaxX)); - renderBlocks.brightnessBottomLeft = renderBlocks.mixAoBrightness( - brightnessMixedXYZNPP, - brightnessMixedXYZPPP, - brightnessMixedXYZPPN, - brightnessMixedXYZNPN, - renderBlocks.renderMinZ * (1.0D - renderBlocks.renderMaxX), - renderBlocks.renderMinZ * renderBlocks.renderMaxX, - (1.0D - renderBlocks.renderMinZ) * renderBlocks.renderMaxX, - (1.0D - renderBlocks.renderMinZ) * (1.0D - renderBlocks.renderMaxX)); - renderBlocks.brightnessBottomRight = renderBlocks.mixAoBrightness( - brightnessMixedXYZNPP, - brightnessMixedXYZPPP, - brightnessMixedXYZPPN, - brightnessMixedXYZNPN, - renderBlocks.renderMinZ * (1.0D - renderBlocks.renderMinX), - renderBlocks.renderMinZ * renderBlocks.renderMinX, - (1.0D - renderBlocks.renderMinZ) * renderBlocks.renderMinX, - (1.0D - renderBlocks.renderMinZ) * (1.0D - renderBlocks.renderMinX)); - renderBlocks.brightnessTopRight = renderBlocks.mixAoBrightness( - brightnessMixedXYZNPP, - brightnessMixedXYZPPP, - brightnessMixedXYZPPN, - brightnessMixedXYZNPN, - renderBlocks.renderMaxZ * (1.0D - renderBlocks.renderMinX), - renderBlocks.renderMaxZ * renderBlocks.renderMinX, - (1.0D - renderBlocks.renderMaxZ) * renderBlocks.renderMinX, - (1.0D - renderBlocks.renderMaxZ) * (1.0D - renderBlocks.renderMinX)); - } - - return this; - } - - /** - * Sets up lighting for the North face and returns the {@link LightingHelper}. - *

- * This is a consolidated method that sets side shading with respect to the following attributes: - *

- *

    - *
  • {@link RenderBlocks#enableAO}
  • - *
  • {@link RenderBlocks#partialRenderBounds}
  • - *
- * - * @param block the block {@link Block} - * @param x the x coordinate - * @param y the y coordinate - * @param z the z coordinate - * @return the {@link LightingHelper} - */ - public LightingHelper setupLightingZNeg(Block block, int x, int y, int z) { - - if (renderBlocks.enableAO) { - - int zOffset = renderBlocks.renderMinZ > 0.0F ? z : z - 1; - - int mixedBrightness = block.getMixedBrightnessForBlock(renderBlocks.blockAccess, x, y, zOffset); - brightness = mixedBrightness; - - float ratio = (float) (1.0F - renderBlocks.renderMinZ); - float aoLightValue = renderBlocks.blockAccess.getBlock(x, y, z - 1).getAmbientOcclusionLightValue(); - - renderBlocks.aoBrightnessXZNN = block - .getMixedBrightnessForBlock(renderBlocks.blockAccess, x - 1, y, zOffset); - renderBlocks.aoBrightnessYZNN = block - .getMixedBrightnessForBlock(renderBlocks.blockAccess, x, y - 1, zOffset); - renderBlocks.aoBrightnessYZPN = block - .getMixedBrightnessForBlock(renderBlocks.blockAccess, x, y + 1, zOffset); - renderBlocks.aoBrightnessXZPN = block - .getMixedBrightnessForBlock(renderBlocks.blockAccess, x + 1, y, zOffset); - renderBlocks.aoBrightnessXYZNNN = block - .getMixedBrightnessForBlock(renderBlocks.blockAccess, x - 1, y - 1, zOffset); - renderBlocks.aoBrightnessXYZNPN = block - .getMixedBrightnessForBlock(renderBlocks.blockAccess, x - 1, y + 1, zOffset); - renderBlocks.aoBrightnessXYZPNN = block - .getMixedBrightnessForBlock(renderBlocks.blockAccess, x + 1, y - 1, zOffset); - renderBlocks.aoBrightnessXYZPPN = block - .getMixedBrightnessForBlock(renderBlocks.blockAccess, x + 1, y + 1, zOffset); - renderBlocks.aoLightValueScratchXZNN = getMixedAo( - renderBlocks.blockAccess.getBlock(x - 1, y, z - 1).getAmbientOcclusionLightValue(), - renderBlocks.blockAccess.getBlock(x - 1, y, z).getAmbientOcclusionLightValue(), - ratio); - renderBlocks.aoLightValueScratchYZNN = getMixedAo( - renderBlocks.blockAccess.getBlock(x, y - 1, z - 1).getAmbientOcclusionLightValue(), - renderBlocks.blockAccess.getBlock(x, y - 1, z).getAmbientOcclusionLightValue(), - ratio); - renderBlocks.aoLightValueScratchYZPN = getMixedAo( - renderBlocks.blockAccess.getBlock(x, y + 1, z - 1).getAmbientOcclusionLightValue(), - renderBlocks.blockAccess.getBlock(x, y + 1, z).getAmbientOcclusionLightValue(), - ratio); - renderBlocks.aoLightValueScratchXZPN = getMixedAo( - renderBlocks.blockAccess.getBlock(x + 1, y, z - 1).getAmbientOcclusionLightValue(), - renderBlocks.blockAccess.getBlock(x + 1, y, z).getAmbientOcclusionLightValue(), - ratio); - renderBlocks.aoLightValueScratchXYZNNN = getMixedAo( - renderBlocks.blockAccess.getBlock(x - 1, y - 1, z - 1).getAmbientOcclusionLightValue(), - renderBlocks.blockAccess.getBlock(x - 1, y - 1, z).getAmbientOcclusionLightValue(), - ratio); - renderBlocks.aoLightValueScratchXYZNPN = getMixedAo( - renderBlocks.blockAccess.getBlock(x - 1, y + 1, z - 1).getAmbientOcclusionLightValue(), - renderBlocks.blockAccess.getBlock(x - 1, y + 1, z).getAmbientOcclusionLightValue(), - ratio); - renderBlocks.aoLightValueScratchXYZPNN = getMixedAo( - renderBlocks.blockAccess.getBlock(x + 1, y - 1, z - 1).getAmbientOcclusionLightValue(), - renderBlocks.blockAccess.getBlock(x + 1, y - 1, z).getAmbientOcclusionLightValue(), - ratio); - renderBlocks.aoLightValueScratchXYZPPN = getMixedAo( - renderBlocks.blockAccess.getBlock(x + 1, y + 1, z - 1).getAmbientOcclusionLightValue(), - renderBlocks.blockAccess.getBlock(x + 1, y + 1, z).getAmbientOcclusionLightValue(), - ratio); - - int brightnessMixedXYZPPN = renderBlocks.getAoBrightness( - renderBlocks.aoBrightnessYZPN, - renderBlocks.aoBrightnessXZPN, - renderBlocks.aoBrightnessXYZPPN, - mixedBrightness); - int brightnessMixedXYZPNN = renderBlocks.getAoBrightness( - renderBlocks.aoBrightnessYZNN, - renderBlocks.aoBrightnessXYZPNN, - renderBlocks.aoBrightnessXZPN, - mixedBrightness); - int brightnessMixedXYZNNN = renderBlocks.getAoBrightness( - renderBlocks.aoBrightnessXYZNNN, - renderBlocks.aoBrightnessXZNN, - renderBlocks.aoBrightnessYZNN, - mixedBrightness); - int brightnessMixedXYZNPN = renderBlocks.getAoBrightness( - renderBlocks.aoBrightnessXZNN, - renderBlocks.aoBrightnessXYZNPN, - renderBlocks.aoBrightnessYZPN, - mixedBrightness); - - float aoMixedXYZPPN = (aoLightValue + renderBlocks.aoLightValueScratchYZPN - + renderBlocks.aoLightValueScratchXZPN - + renderBlocks.aoLightValueScratchXYZPPN) / 4.0F; - float aoMixedXYZPNN = (renderBlocks.aoLightValueScratchYZNN + aoLightValue - + renderBlocks.aoLightValueScratchXYZPNN - + renderBlocks.aoLightValueScratchXZPN) / 4.0F; - float aoMixedXYZNNN = (renderBlocks.aoLightValueScratchXYZNNN + renderBlocks.aoLightValueScratchXZNN - + renderBlocks.aoLightValueScratchYZNN - + aoLightValue) / 4.0F; - float aoMixedXYZNPN = (renderBlocks.aoLightValueScratchXZNN + renderBlocks.aoLightValueScratchXYZNPN - + aoLightValue - + renderBlocks.aoLightValueScratchYZPN) / 4.0F; - - aoTopLeft = (float) (aoMixedXYZNPN * renderBlocks.renderMaxY * (1.0D - renderBlocks.renderMinX) - + aoMixedXYZPPN * renderBlocks.renderMaxY * renderBlocks.renderMinX - + aoMixedXYZPNN * (1.0D - renderBlocks.renderMaxY) * renderBlocks.renderMinX - + aoMixedXYZNNN * (1.0D - renderBlocks.renderMaxY) * (1.0D - renderBlocks.renderMinX)); - aoBottomLeft = (float) (aoMixedXYZNPN * renderBlocks.renderMaxY * (1.0D - renderBlocks.renderMaxX) - + aoMixedXYZPPN * renderBlocks.renderMaxY * renderBlocks.renderMaxX - + aoMixedXYZPNN * (1.0D - renderBlocks.renderMaxY) * renderBlocks.renderMaxX - + aoMixedXYZNNN * (1.0D - renderBlocks.renderMaxY) * (1.0D - renderBlocks.renderMaxX)); - aoBottomRight = (float) (aoMixedXYZNPN * renderBlocks.renderMinY * (1.0D - renderBlocks.renderMaxX) - + aoMixedXYZPPN * renderBlocks.renderMinY * renderBlocks.renderMaxX - + aoMixedXYZPNN * (1.0D - renderBlocks.renderMinY) * renderBlocks.renderMaxX - + aoMixedXYZNNN * (1.0D - renderBlocks.renderMinY) * (1.0D - renderBlocks.renderMaxX)); - aoTopRight = (float) (aoMixedXYZNPN * renderBlocks.renderMinY * (1.0D - renderBlocks.renderMinX) - + aoMixedXYZPPN * renderBlocks.renderMinY * renderBlocks.renderMinX - + aoMixedXYZPNN * (1.0D - renderBlocks.renderMinY) * renderBlocks.renderMinX - + aoMixedXYZNNN * (1.0D - renderBlocks.renderMinY) * (1.0D - renderBlocks.renderMinX)); - - renderBlocks.brightnessTopLeft = renderBlocks.mixAoBrightness( - brightnessMixedXYZNPN, - brightnessMixedXYZPPN, - brightnessMixedXYZPNN, - brightnessMixedXYZNNN, - renderBlocks.renderMaxY * (1.0D - renderBlocks.renderMinX), - renderBlocks.renderMaxY * renderBlocks.renderMinX, - (1.0D - renderBlocks.renderMaxY) * renderBlocks.renderMinX, - (1.0D - renderBlocks.renderMaxY) * (1.0D - renderBlocks.renderMinX)); - renderBlocks.brightnessBottomLeft = renderBlocks.mixAoBrightness( - brightnessMixedXYZNPN, - brightnessMixedXYZPPN, - brightnessMixedXYZPNN, - brightnessMixedXYZNNN, - renderBlocks.renderMaxY * (1.0D - renderBlocks.renderMaxX), - renderBlocks.renderMaxY * renderBlocks.renderMaxX, - (1.0D - renderBlocks.renderMaxY) * renderBlocks.renderMaxX, - (1.0D - renderBlocks.renderMaxY) * (1.0D - renderBlocks.renderMaxX)); - renderBlocks.brightnessBottomRight = renderBlocks.mixAoBrightness( - brightnessMixedXYZNPN, - brightnessMixedXYZPPN, - brightnessMixedXYZPNN, - brightnessMixedXYZNNN, - renderBlocks.renderMinY * (1.0D - renderBlocks.renderMaxX), - renderBlocks.renderMinY * renderBlocks.renderMaxX, - (1.0D - renderBlocks.renderMinY) * renderBlocks.renderMaxX, - (1.0D - renderBlocks.renderMinY) * (1.0D - renderBlocks.renderMaxX)); - renderBlocks.brightnessTopRight = renderBlocks.mixAoBrightness( - brightnessMixedXYZNPN, - brightnessMixedXYZPPN, - brightnessMixedXYZPNN, - brightnessMixedXYZNNN, - renderBlocks.renderMinY * (1.0D - renderBlocks.renderMinX), - renderBlocks.renderMinY * renderBlocks.renderMinX, - (1.0D - renderBlocks.renderMinY) * renderBlocks.renderMinX, - (1.0D - renderBlocks.renderMinY) * (1.0D - renderBlocks.renderMinX)); - } - - return this; - } - - /** - * Sets up lighting for the South face and returns the {@link LightingHelper}. - *

- * This is a consolidated method that sets side shading with respect to the following attributes: - *

- *

    - *
  • {@link RenderBlocks#enableAO}
  • - *
  • {@link RenderBlocks#partialRenderBounds}
  • - *
- * - * @param block the block {@link Block} - * @param x the x coordinate - * @param y the y coordinate - * @param z the z coordinate - * @return the {@link LightingHelper} - */ - public LightingHelper setupLightingZPos(Block block, int x, int y, int z) { - - if (renderBlocks.enableAO) { - - int zOffset = renderBlocks.renderMaxZ < 1.0F ? z : z + 1; - - int mixedBrightness = block.getMixedBrightnessForBlock(renderBlocks.blockAccess, x, y, zOffset); - brightness = mixedBrightness; - - float aoLightValue = renderBlocks.blockAccess.getBlock(x, y, z + 1).getAmbientOcclusionLightValue(); - - renderBlocks.aoBrightnessXZNP = block - .getMixedBrightnessForBlock(renderBlocks.blockAccess, x - 1, y, zOffset); - renderBlocks.aoBrightnessXZPP = block - .getMixedBrightnessForBlock(renderBlocks.blockAccess, x + 1, y, zOffset); - renderBlocks.aoBrightnessYZNP = block - .getMixedBrightnessForBlock(renderBlocks.blockAccess, x, y - 1, zOffset); - renderBlocks.aoBrightnessYZPP = block - .getMixedBrightnessForBlock(renderBlocks.blockAccess, x, y + 1, zOffset); - renderBlocks.aoBrightnessXYZNNP = block - .getMixedBrightnessForBlock(renderBlocks.blockAccess, x - 1, y - 1, zOffset); - renderBlocks.aoBrightnessXYZNPP = block - .getMixedBrightnessForBlock(renderBlocks.blockAccess, x - 1, y + 1, zOffset); - renderBlocks.aoBrightnessXYZPNP = block - .getMixedBrightnessForBlock(renderBlocks.blockAccess, x + 1, y - 1, zOffset); - renderBlocks.aoBrightnessXYZPPP = block - .getMixedBrightnessForBlock(renderBlocks.blockAccess, x + 1, y + 1, zOffset); - renderBlocks.aoLightValueScratchXZNP = getMixedAo( - renderBlocks.blockAccess.getBlock(x - 1, y, z + 1).getAmbientOcclusionLightValue(), - renderBlocks.blockAccess.getBlock(x - 1, y, z).getAmbientOcclusionLightValue(), - renderBlocks.renderMaxZ); - renderBlocks.aoLightValueScratchXZPP = getMixedAo( - renderBlocks.blockAccess.getBlock(x + 1, y, z + 1).getAmbientOcclusionLightValue(), - renderBlocks.blockAccess.getBlock(x + 1, y, z).getAmbientOcclusionLightValue(), - renderBlocks.renderMaxZ); - renderBlocks.aoLightValueScratchYZNP = getMixedAo( - renderBlocks.blockAccess.getBlock(x, y - 1, z + 1).getAmbientOcclusionLightValue(), - renderBlocks.blockAccess.getBlock(x, y - 1, z).getAmbientOcclusionLightValue(), - renderBlocks.renderMaxZ); - renderBlocks.aoLightValueScratchYZPP = getMixedAo( - renderBlocks.blockAccess.getBlock(x, y + 1, z + 1).getAmbientOcclusionLightValue(), - renderBlocks.blockAccess.getBlock(x, y + 1, z).getAmbientOcclusionLightValue(), - renderBlocks.renderMaxZ); - renderBlocks.aoLightValueScratchXYZNNP = getMixedAo( - renderBlocks.blockAccess.getBlock(x - 1, y - 1, z + 1).getAmbientOcclusionLightValue(), - renderBlocks.blockAccess.getBlock(x - 1, y - 1, z).getAmbientOcclusionLightValue(), - renderBlocks.renderMaxZ); - renderBlocks.aoLightValueScratchXYZNPP = getMixedAo( - renderBlocks.blockAccess.getBlock(x - 1, y + 1, z + 1).getAmbientOcclusionLightValue(), - renderBlocks.blockAccess.getBlock(x - 1, y + 1, z).getAmbientOcclusionLightValue(), - renderBlocks.renderMaxZ); - renderBlocks.aoLightValueScratchXYZPNP = getMixedAo( - renderBlocks.blockAccess.getBlock(x + 1, y - 1, z + 1).getAmbientOcclusionLightValue(), - renderBlocks.blockAccess.getBlock(x + 1, y - 1, z).getAmbientOcclusionLightValue(), - renderBlocks.renderMaxZ); - renderBlocks.aoLightValueScratchXYZPPP = getMixedAo( - renderBlocks.blockAccess.getBlock(x + 1, y + 1, z + 1).getAmbientOcclusionLightValue(), - renderBlocks.blockAccess.getBlock(x + 1, y + 1, z).getAmbientOcclusionLightValue(), - renderBlocks.renderMaxZ); - - int brightnessMixedXYZNPP = renderBlocks.getAoBrightness( - renderBlocks.aoBrightnessXZNP, - renderBlocks.aoBrightnessXYZNPP, - renderBlocks.aoBrightnessYZPP, - mixedBrightness); - int brightnessMixedXYZNNP = renderBlocks.getAoBrightness( - renderBlocks.aoBrightnessXYZNNP, - renderBlocks.aoBrightnessXZNP, - renderBlocks.aoBrightnessYZNP, - mixedBrightness); - int brightnessMixedXYZPNP = renderBlocks.getAoBrightness( - renderBlocks.aoBrightnessYZNP, - renderBlocks.aoBrightnessXYZPNP, - renderBlocks.aoBrightnessXZPP, - mixedBrightness); - int brightnessMixedXYZPPP = renderBlocks.getAoBrightness( - renderBlocks.aoBrightnessYZPP, - renderBlocks.aoBrightnessXZPP, - renderBlocks.aoBrightnessXYZPPP, - mixedBrightness); - - float aoMixedXYZNPP = (renderBlocks.aoLightValueScratchXZNP + renderBlocks.aoLightValueScratchXYZNPP - + aoLightValue - + renderBlocks.aoLightValueScratchYZPP) / 4.0F; - float aoMixedXYZNNP = (renderBlocks.aoLightValueScratchXYZNNP + renderBlocks.aoLightValueScratchXZNP - + renderBlocks.aoLightValueScratchYZNP - + aoLightValue) / 4.0F; - float aoMixedXYZPNP = (renderBlocks.aoLightValueScratchYZNP + aoLightValue - + renderBlocks.aoLightValueScratchXYZPNP - + renderBlocks.aoLightValueScratchXZPP) / 4.0F; - float aoMixedXYZPPP = (aoLightValue + renderBlocks.aoLightValueScratchYZPP - + renderBlocks.aoLightValueScratchXZPP - + renderBlocks.aoLightValueScratchXYZPPP) / 4.0F; - - aoTopLeft = (float) (aoMixedXYZNPP * renderBlocks.renderMaxY * (1.0D - renderBlocks.renderMinX) - + aoMixedXYZPPP * renderBlocks.renderMaxY * renderBlocks.renderMinX - + aoMixedXYZPNP * (1.0D - renderBlocks.renderMaxY) * renderBlocks.renderMinX - + aoMixedXYZNNP * (1.0D - renderBlocks.renderMaxY) * (1.0D - renderBlocks.renderMinX)); - aoBottomLeft = (float) (aoMixedXYZNPP * renderBlocks.renderMinY * (1.0D - renderBlocks.renderMinX) - + aoMixedXYZPPP * renderBlocks.renderMinY * renderBlocks.renderMinX - + aoMixedXYZPNP * (1.0D - renderBlocks.renderMinY) * renderBlocks.renderMinX - + aoMixedXYZNNP * (1.0D - renderBlocks.renderMinY) * (1.0D - renderBlocks.renderMinX)); - aoBottomRight = (float) (aoMixedXYZNPP * renderBlocks.renderMinY * (1.0D - renderBlocks.renderMaxX) - + aoMixedXYZPPP * renderBlocks.renderMinY * renderBlocks.renderMaxX - + aoMixedXYZPNP * (1.0D - renderBlocks.renderMinY) * renderBlocks.renderMaxX - + aoMixedXYZNNP * (1.0D - renderBlocks.renderMinY) * (1.0D - renderBlocks.renderMaxX)); - aoTopRight = (float) (aoMixedXYZNPP * renderBlocks.renderMaxY * (1.0D - renderBlocks.renderMaxX) - + aoMixedXYZPPP * renderBlocks.renderMaxY * renderBlocks.renderMaxX - + aoMixedXYZPNP * (1.0D - renderBlocks.renderMaxY) * renderBlocks.renderMaxX - + aoMixedXYZNNP * (1.0D - renderBlocks.renderMaxY) * (1.0D - renderBlocks.renderMaxX)); - - renderBlocks.brightnessTopLeft = renderBlocks.mixAoBrightness( - brightnessMixedXYZNPP, - brightnessMixedXYZNNP, - brightnessMixedXYZPNP, - brightnessMixedXYZPPP, - renderBlocks.renderMaxY * (1.0D - renderBlocks.renderMinX), - (1.0D - renderBlocks.renderMaxY) * (1.0D - renderBlocks.renderMinX), - (1.0D - renderBlocks.renderMaxY) * renderBlocks.renderMinX, - renderBlocks.renderMaxY * renderBlocks.renderMinX); - renderBlocks.brightnessBottomLeft = renderBlocks.mixAoBrightness( - brightnessMixedXYZNPP, - brightnessMixedXYZNNP, - brightnessMixedXYZPNP, - brightnessMixedXYZPPP, - renderBlocks.renderMinY * (1.0D - renderBlocks.renderMinX), - (1.0D - renderBlocks.renderMinY) * (1.0D - renderBlocks.renderMinX), - (1.0D - renderBlocks.renderMinY) * renderBlocks.renderMinX, - renderBlocks.renderMinY * renderBlocks.renderMinX); - renderBlocks.brightnessBottomRight = renderBlocks.mixAoBrightness( - brightnessMixedXYZNPP, - brightnessMixedXYZNNP, - brightnessMixedXYZPNP, - brightnessMixedXYZPPP, - renderBlocks.renderMinY * (1.0D - renderBlocks.renderMaxX), - (1.0D - renderBlocks.renderMinY) * (1.0D - renderBlocks.renderMaxX), - (1.0D - renderBlocks.renderMinY) * renderBlocks.renderMaxX, - renderBlocks.renderMinY * renderBlocks.renderMaxX); - renderBlocks.brightnessTopRight = renderBlocks.mixAoBrightness( - brightnessMixedXYZNPP, - brightnessMixedXYZNNP, - brightnessMixedXYZPNP, - brightnessMixedXYZPPP, - renderBlocks.renderMaxY * (1.0D - renderBlocks.renderMaxX), - (1.0D - renderBlocks.renderMaxY) * (1.0D - renderBlocks.renderMaxX), - (1.0D - renderBlocks.renderMaxY) * renderBlocks.renderMaxX, - renderBlocks.renderMaxY * renderBlocks.renderMaxX); - } - - return this; - } -}