diff --git a/src/main/java/net/PeytonPlayz585/shadow/Config.java b/src/main/java/net/PeytonPlayz585/shadow/Config.java index 8dfd1bb..6f40d01 100644 --- a/src/main/java/net/PeytonPlayz585/shadow/Config.java +++ b/src/main/java/net/PeytonPlayz585/shadow/Config.java @@ -109,6 +109,22 @@ public class Config { public static boolean isBetterGrassFancy() { return Minecraft.getMinecraft().gameSettings.ofBetterGrass == 2; } + + public static boolean isFogFancy() { + return Minecraft.getMinecraft().gameSettings.ofFogType == 2; + } + + public static boolean isFogFast() { + return Minecraft.getMinecraft().gameSettings.ofFogType == 1; + } + + public static boolean isFogOff() { + return Minecraft.getMinecraft().gameSettings.ofFogType == 3; + } + + public static float getFogStart() { + return Minecraft.getMinecraft().gameSettings.ofFogStart; + } public static int limit(int p_limit_0_, int p_limit_1_, int p_limit_2_) { return p_limit_0_ < p_limit_1_ ? p_limit_1_ : (p_limit_0_ > p_limit_2_ ? p_limit_2_ : p_limit_0_); diff --git a/src/main/java/net/minecraft/client/gui/GuiVideoSettings.java b/src/main/java/net/minecraft/client/gui/GuiVideoSettings.java index f1d955e..0e51251 100644 --- a/src/main/java/net/minecraft/client/gui/GuiVideoSettings.java +++ b/src/main/java/net/minecraft/client/gui/GuiVideoSettings.java @@ -54,7 +54,11 @@ public class GuiVideoSettings extends GuiScreen { GameSettings.Options.AO_LEVEL, GameSettings.Options.VIEW_BOBBING, GameSettings.Options.GUI_SCALE, - GameSettings.Options.USE_VBO + GameSettings.Options.USE_VBO, + GameSettings.Options.GAMMA, + GameSettings.Options.BLOCK_ALTERNATIVES, + GameSettings.Options.FOG_FANCY, + GameSettings.Options.FOG_START }; public GuiVideoSettings(GuiScreen parentScreenIn, GameSettings gameSettingsIn) { diff --git a/src/main/java/net/minecraft/client/renderer/EntityRenderer.java b/src/main/java/net/minecraft/client/renderer/EntityRenderer.java index 5d7505c..fac16c3 100644 --- a/src/main/java/net/minecraft/client/renderer/EntityRenderer.java +++ b/src/main/java/net/minecraft/client/renderer/EntityRenderer.java @@ -173,6 +173,7 @@ public class EntityRenderer implements IResourceManagerReloadListener { private int frameCount; private GameOverlayFramebuffer overlayFramebuffer; private float eagPartialTicks = 0.0f; + public boolean fogStandard = false; public EntityRenderer(Minecraft mcIn, IResourceManager resourceManagerIn) { this.useShader = false; @@ -582,6 +583,15 @@ public class EntityRenderer implements IResourceManagerReloadListener { */ private void setupCameraTransform(float partialTicks, int pass) { this.farPlaneDistance = (float) (this.mc.gameSettings.renderDistanceChunks * 16); + + if (Config.isFogFancy()) { + this.farPlaneDistance *= 0.95F; + } + + if (Config.isFogFast()) { + this.farPlaneDistance *= 0.83F; + } + GlStateManager.matrixMode(GL_PROJECTION); GlStateManager.loadIdentity(); float f = 0.07F; @@ -1725,6 +1735,7 @@ public class EntityRenderer implements IResourceManagerReloadListener { private void setupFog(int partialTicks, float parFloat1) { Entity entity = this.mc.getRenderViewEntity(); boolean flag = false; + this.fogStandard = false; if (entity instanceof EntityPlayer) { flag = ((EntityPlayer) entity).capabilities.isCreativeMode; } @@ -1735,21 +1746,26 @@ public class EntityRenderer implements IResourceManagerReloadListener { GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); Block block = ActiveRenderInfo.getBlockAtEntityViewpoint(this.mc.theWorld, entity, parFloat1); if (entity instanceof EntityLivingBase && ((EntityLivingBase) entity).isPotionActive(Potion.blindness)) { - float f1 = 5.0F; - int i = ((EntityLivingBase) entity).getActivePotionEffect(Potion.blindness).getDuration(); - if (i < 20) { - f1 = 5.0F + (this.farPlaneDistance - 5.0F) * (1.0F - (float) i / 20.0F); - } + float f2 = 5.0F; + int i = ((EntityLivingBase)entity).getActivePotionEffect(Potion.blindness).getDuration(); - GlStateManager.setFog(GL_LINEAR); - if (partialTicks == -1) { - GlStateManager.setFogStart(0.0F); - GlStateManager.setFogEnd(f1 * 0.8F); - } else { - GlStateManager.setFogStart(f1 * 0.25F); - GlStateManager.setFogEnd(f1); - } - EaglercraftGPU.glFogi('\u855a', '\u855b'); + if (i < 20) { + f2 = 5.0F + (this.farPlaneDistance - 5.0F) * (1.0F - (float)i / 20.0F); + } + + GlStateManager.setFog(9729); + + if (partialTicks == -1) { + GlStateManager.setFogStart(0.0F); + GlStateManager.setFogEnd(f2 * 0.8F); + } else { + GlStateManager.setFogStart(f2 * 0.25F); + GlStateManager.setFogEnd(f2); + } + + if (Config.isFogFancy()) { + EaglercraftGPU.glFogi(34138, 34139); + } } else if (this.cloudFog) { GlStateManager.setFog(GL_EXP); GlStateManager.setFogDensity(0.1F); @@ -1768,22 +1784,26 @@ public class EntityRenderer implements IResourceManagerReloadListener { } else if (block.getMaterial() == Material.lava) { GlStateManager.setFog(GL_EXP); GlStateManager.setFogDensity(2.0F); - } else if (!this.mc.gameSettings.fog) { - GlStateManager.setFog(GL_EXP); - GlStateManager.setFogDensity(0.0F); } else { GlStateManager.setFogDensity(0.001F); float f = this.farPlaneDistance; + this.fogStandard = true; GlStateManager.setFog(GL_LINEAR); if (partialTicks == -1) { GlStateManager.setFogStart(0.0F); GlStateManager.setFogEnd(f); } else { - GlStateManager.setFogStart(f * 0.75F); - GlStateManager.setFogEnd(f); + GlStateManager.setFogStart(f * Config.getFogStart()); + GlStateManager.setFogEnd(f); } + + if (Config.isFogFancy()) { + EaglercraftGPU.glFogi(34138, 34139); + } - EaglercraftGPU.glFogi('\u855a', '\u855b'); + if (Config.isFogFast()) { + EaglercraftGPU.glFogi(34138, 34140); + } if (this.mc.theWorld.provider.doesXZShowFog((int) entity.posX, (int) entity.posZ)) { GlStateManager.setFogStart(f * 0.05F); diff --git a/src/main/java/net/minecraft/client/renderer/RenderGlobal.java b/src/main/java/net/minecraft/client/renderer/RenderGlobal.java index 171f506..efd9697 100644 --- a/src/main/java/net/minecraft/client/renderer/RenderGlobal.java +++ b/src/main/java/net/minecraft/client/renderer/RenderGlobal.java @@ -184,6 +184,8 @@ public class RenderGlobal implements IWorldAccess, IResourceManagerReloadListene private double prevRenderSortY; private double prevRenderSortZ; private boolean displayListEntitiesDirty = true; + private int renderDistance = 0; + private int renderDistanceSq = 0; public RenderGlobal(Minecraft mcIn) { this.mc = mcIn; @@ -394,6 +396,8 @@ public class RenderGlobal implements IWorldAccess, IResourceManagerReloadListene Blocks.leaves2.setGraphicsLevel(mc.gameSettings.shaders || mc.gameSettings.fancyGraphics); BlockModelRenderer.updateAoLightValue(); this.renderDistanceChunks = this.mc.gameSettings.renderDistanceChunks; + this.renderDistance = this.renderDistanceChunks * 16; + this.renderDistanceSq = this.renderDistance * this.renderDistance; if (this.viewFrustum != null) { this.viewFrustum.deleteGlResources(); @@ -514,6 +518,9 @@ public class RenderGlobal implements IWorldAccess, IResourceManagerReloadListene this.theWorld.theProfiler.endStartSection("global"); List list = this.theWorld.getLoadedEntityList(); this.countEntitiesTotal = list.size(); + if (Config.isFogOff() && this.mc.entityRenderer.fogStandard) { + GlStateManager.disableFog(); + } if (!DeferredStateManager.isDeferredRenderer()) { for (int i = 0; i < this.theWorld.weatherEffects.size(); ++i) { @@ -999,14 +1006,28 @@ public class RenderGlobal implements IWorldAccess, IResourceManagerReloadListene } private RenderChunk func_181562_a(BlockPos parBlockPos, RenderChunk parRenderChunk, EnumFacing parEnumFacing) { - BlockPos blockpos = parRenderChunk.func_181701_a(parEnumFacing); - return MathHelper - .abs_int(parBlockPos.getX() - blockpos.getX()) > this.renderDistanceChunks * 16 - ? null - : (blockpos.getY() >= 0 && blockpos.getY() < 256 - ? (MathHelper.abs_int(parBlockPos.getZ() - blockpos.getZ()) > this.renderDistanceChunks - * 16 ? null : this.viewFrustum.getRenderChunk(blockpos)) - : null); + BlockPos blockpos = parRenderChunk.getPositionOffset16(parEnumFacing); + + if (blockpos.getY() >= 0 && blockpos.getY() < 256) { + int i = MathHelper.abs_int(parBlockPos.getX() - blockpos.getX()); + int j = MathHelper.abs_int(parBlockPos.getZ() - blockpos.getZ()); + + if (Config.isFogOff()) { + if (i > this.renderDistance || j > this.renderDistance) { + return null; + } + } else { + int k = i * i + j * j; + + if (k > this.renderDistanceSq) { + return null; + } + } + + return this.viewFrustum.getRenderChunk(blockpos); + } else { + return null; + } } private void fixTerrainFrustum(double x, double y, double z) { @@ -1098,6 +1119,10 @@ public class RenderGlobal implements IWorldAccess, IResourceManagerReloadListene this.renderContainer.addRenderChunk(renderchunk, blockLayerIn); } } + + if (Config.isFogOff() && this.mc.entityRenderer.fogStandard) { + GlStateManager.disableFog(); + } this.mc.mcProfiler.endStartSection("render_" + blockLayerIn); this.renderBlockLayer(blockLayerIn); diff --git a/src/main/java/net/minecraft/client/renderer/chunk/RenderChunk.java b/src/main/java/net/minecraft/client/renderer/chunk/RenderChunk.java index ab1b780..3ed3fd6 100644 --- a/src/main/java/net/minecraft/client/renderer/chunk/RenderChunk.java +++ b/src/main/java/net/minecraft/client/renderer/chunk/RenderChunk.java @@ -71,7 +71,8 @@ public class RenderChunk { public ShadowFrustumState shadowLOD0InFrustum = ShadowFrustumState.OUTSIDE; public ShadowFrustumState shadowLOD1InFrustum = ShadowFrustumState.OUTSIDE; public ShadowFrustumState shadowLOD2InFrustum = ShadowFrustumState.OUTSIDE; - private EnumMap field_181702_p = Maps.newEnumMap(EnumFacing.class); + //private EnumMap field_181702_p = Maps.newEnumMap(EnumFacing.class); + private BlockPos[] positionOffsets16 = new BlockPos[EnumFacing.VALUES.length]; public RenderChunk(World worldIn, RenderGlobal renderGlobalIn, BlockPos blockPosIn, int indexIn) { this.world = worldIn; @@ -96,12 +97,11 @@ public class RenderChunk { this.stopCompileTask(); this.position = pos; this.boundingBox = new AxisAlignedBB(pos, pos.add(16, 16, 16)); - - for (EnumFacing enumfacing : EnumFacing.values()) { - this.field_181702_p.put(enumfacing, pos.offset(enumfacing, 16)); - } - this.initModelviewMatrix(); + + for (int i = 0; i < this.positionOffsets16.length; ++i) { + this.positionOffsets16[i] = null; + } } public void resortTransparency(float x, float y, float z, ChunkCompileTaskGenerator generator) { @@ -306,7 +306,19 @@ public class RenderChunk { return this.needsUpdate; } - public BlockPos func_181701_a(EnumFacing parEnumFacing) { - return (BlockPos) this.field_181702_p.get(parEnumFacing); - } + public BlockPos func_181701_a(EnumFacing p_181701_1_) { + return this.getPositionOffset16(p_181701_1_); + } + + public BlockPos getPositionOffset16(EnumFacing p_getPositionOffset16_1_) { + int i = p_getPositionOffset16_1_.getIndex(); + BlockPos blockpos = this.positionOffsets16[i]; + + if (blockpos == null) { + blockpos = this.getPosition().offset(p_getPositionOffset16_1_, 16); + this.positionOffsets16[i] = blockpos; + } + + return blockpos; + } } \ No newline at end of file diff --git a/src/main/java/net/minecraft/client/settings/GameSettings.java b/src/main/java/net/minecraft/client/settings/GameSettings.java index 677f9a1..9b6214f 100644 --- a/src/main/java/net/minecraft/client/settings/GameSettings.java +++ b/src/main/java/net/minecraft/client/settings/GameSettings.java @@ -190,7 +190,6 @@ public class GameSettings { public boolean hudStats = false; public boolean hud24h = false; public boolean chunkFix = true; - public boolean fog = true; public int fxaa = 0; public boolean shaders = false; public boolean shadersAODisable = false; @@ -200,6 +199,8 @@ public class GameSettings { //Main Menu Settings public float ofAoLevel = 1.0F; public boolean useVbo = false; + public int ofFogType = 1; + public float ofFogStart = 0.8F; //Quality Settings public boolean ofCustomSky = true; @@ -462,11 +463,7 @@ public class GameSettings { if (parOptions == GameSettings.Options.CHUNK_FIX) { this.chunkFix = !this.chunkFix; } - - if (parOptions == GameSettings.Options.FOG) { - this.fog = !this.fog; - } - + if (parOptions == GameSettings.Options.FXAA) { this.fxaa = (this.fxaa + parInt1) % 3; } @@ -585,6 +582,33 @@ public class GameSettings { this.mc.renderGlobal.loadRenderers(); } + + if (parOptions == GameSettings.Options.FOG_FANCY) { + switch (this.ofFogType) { + case 1: + this.ofFogType = 2; + break; + + case 2: + this.ofFogType = 3; + break; + + case 3: + this.ofFogType = 1; + break; + + default: + this.ofFogType = 1; + } + } + + if (parOptions == GameSettings.Options.FOG_START) { + this.ofFogStart += 0.2F; + + if (this.ofFogStart > 0.81F) { + this.ofFogStart = 0.2F; + } + } this.saveOptions(); } @@ -648,8 +672,6 @@ public class GameSettings { return this.hud24h; case CHUNK_FIX: return this.chunkFix; - case FOG: - return this.fog; case FULLSCREEN: return this.mc.isFullScreen(); case USE_VBO: @@ -797,7 +819,23 @@ public class GameSettings { default: return s + "OFF"; } - } else { + } else if (parOptions == GameSettings.Options.FOG_FANCY) { + switch (this.ofFogType) { + case 1: + return s + "Fast"; + + case 2: + return s + "Fancy"; + + case 3: + return s + "OFF"; + + default: + return s + "OFF"; + } + } else if (parOptions == GameSettings.Options.FOG_START) { + return s + this.ofFogStart; + } else { return s; } } @@ -1058,10 +1096,6 @@ public class GameSettings { this.chunkFix = astring[1].equals("true"); } - if (astring[0].equals("fog")) { - this.fog = astring[1].equals("true"); - } - if (astring[0].equals("fxaa")) { this.fxaa = (astring[1].equals("true") || astring[1].equals("false")) ? 0 : Integer.parseInt(astring[1]); @@ -1169,6 +1203,23 @@ public class GameSettings { this.ofBetterGrass = Integer.valueOf(astring[1]).intValue(); this.ofBetterGrass = Config.limit(this.ofBetterGrass, 1, 3); } + + if (astring[0].equals("ofFogType") && astring.length >= 2) { + this.ofFogType = Integer.valueOf(astring[1]).intValue(); + this.ofFogType = Config.limit(this.ofFogType, 1, 3); + } + + if (astring[0].equals("ofFogStart") && astring.length >= 2) { + this.ofFogStart = Float.valueOf(astring[1]).floatValue(); + + if (this.ofFogStart < 0.2F) { + this.ofFogStart = 0.2F; + } + + if (this.ofFogStart > 0.81F) { + this.ofFogStart = 0.8F; + } + } Keyboard.setFunctionKeyModifier(keyBindFunction.getKeyCode()); @@ -1273,7 +1324,6 @@ public class GameSettings { printwriter.println("hudStats:" + this.hudStats); printwriter.println("hud24h:" + this.hud24h); printwriter.println("chunkFix:" + this.chunkFix); - printwriter.println("fog:" + this.fog); printwriter.println("fxaa:" + this.fxaa); printwriter.println("fastMath:" + this.fastMath); printwriter.println("shaders:" + this.shaders); @@ -1298,6 +1348,8 @@ public class GameSettings { printwriter.println("ofCustomSky:" + this.ofCustomSky); printwriter.println("ofClearWater:" + this.ofClearWater); printwriter.println("ofBetterGrass:" + this.ofBetterGrass); + printwriter.println("ofFogType:" + this.ofFogType); + printwriter.println("ofFogStart:" + this.ofFogStart); for (KeyBinding keybinding : this.keyBindings) { printwriter.println("key_" + keybinding.getKeyDescription() + ":" + keybinding.getKeyCode()); @@ -1440,7 +1492,7 @@ public class GameSettings { HUD_COORDS("options.hud.coords", false, true), HUD_STATS("options.hud.stats", false, true), HUD_WORLD("options.hud.world", false, true), HUD_PLAYER("options.hud.player", false, true), HUD_24H("options.hud.24h", false, true), CHUNK_FIX("options.chunkFix", false, true), - FOG("options.fog", false, true), FXAA("options.fxaa", false, false), + FXAA("options.fxaa", false, false), FULLSCREEN("options.fullscreen", false, true), FAST_MATH("options.fastMath", false, false), ANIMATED_WATER("Water Animated", false, false), ANIMATED_LAVA("Lava Animated", false, false), @@ -1462,7 +1514,9 @@ public class GameSettings { USE_VBO("Use VBOs", false, false), CUSTOM_SKY("Custom Sky", false, false), CLEAR_WATER("Clear Water", false, false), - BETTER_GRASS("Better Grass", false, false); + BETTER_GRASS("Better Grass", false, false), + FOG_FANCY("Fog", false, false), + FOG_START("Fog Start", false, false); private final boolean enumFloat; private final boolean enumBoolean;