From 16648bc6c85c22c104801c9cfa942ad97c86696b Mon Sep 17 00:00:00 2001 From: eaglercraft Date: Sat, 8 Jun 2024 16:38:53 -0700 Subject: [PATCH] u34 --- .../assets/eagler/glsl/accel_particle.vsh | 11 +- .../eagler/glsl/deferred/accel_particle.vsh | 11 +- .../eagler/glsl/deferred/emissive_items.csv | 3 +- .../glsl/deferred/shader_pack_info.json | 2 +- .../accel_particle_dynamiclights.fsh | 67 ++++ .../accel_particle_dynamiclights.vsh | 61 ++++ .../glsl/dynamiclights/core_dynamiclights.fsh | 210 +++++++++++++ .../glsl/dynamiclights/core_dynamiclights.vsh | 80 +++++ .../resources/assets/eagler/mesh/readme.txt | 9 + .../assets/minecraft/lang/en_US.lang | 8 +- desktopRuntime/resources/plugin_download.zip | Bin 255599 -> 255913 bytes desktopRuntime/resources/plugin_version.json | 2 +- .../eaglercraft/v1_8/EaglercraftRandom.java | 35 ++- .../eaglercraft/v1_8/EaglercraftVersion.java | 6 +- .../v1_8/opengl/FixedFunctionPipeline.java | 5 +- .../v1_8/opengl/GlStateManager.java | 16 + .../opengl/InstancedParticleRenderer.java | 26 +- .../ext/deferred/DeferredStateManager.java | 17 +- .../ext/deferred/EaglerDeferredPipeline.java | 20 +- .../ForwardAcceleratedEffectRenderer.java | 9 +- .../GBufferAcceleratedEffectRenderer.java | 9 +- .../PipelineShaderAccelParticleForward.java | 4 + .../PipelineShaderAccelParticleGBuffer.java | 4 + .../ext/deferred/program/ShaderSource.java | 5 + .../DynamicLightBucketLoader.java | 287 ++++++++++++++++++ .../dynamiclights/DynamicLightInstance.java | 48 +++ ...ynamicLightsAcceleratedEffectRenderer.java | 230 ++++++++++++++ .../DynamicLightsPipelineCompiler.java | 105 +++++++ .../DynamicLightsStateManager.java | 169 +++++++++++ .../DynamicLightsAccelParticleShader.java | 95 ++++++ .../DynamicLightsExtPipelineShader.java | 58 ++++ .../v1_8/sp/SingleplayerServerController.java | 6 +- .../sp/gui/GuiScreenBackupWorldSelection.java | 18 +- .../v1_8/sp/gui/GuiScreenOldSeedWarning.java | 48 +++ .../v1_8/sp/ipc/IPCPacketManager.java | 12 +- .../server/EaglerIntegratedServerWorker.java | 6 +- .../sp/server/export/WorldConverterEPK.java | 4 + .../sp/server/export/WorldConverterMCA.java | 3 +- .../java/net/minecraft/client/Minecraft.java | 13 +- .../minecraft/client/gui/GuiOverlayDebug.java | 4 + .../client/gui/GuiVideoSettings.java | 8 +- .../minecraft/client/particle/EntityFX.java | 4 + .../client/renderer/BlockFluidRenderer.java | 12 +- .../client/renderer/BlockModelRenderer.java | 12 +- .../client/renderer/ChunkRenderContainer.java | 8 +- .../client/renderer/EntityRenderer.java | 88 +++++- .../client/renderer/RenderGlobal.java | 21 +- .../renderer/block/model/FaceBakery.java | 17 +- .../client/renderer/chunk/RenderChunk.java | 5 +- .../renderer/entity/RenderFallingBlock.java | 7 +- .../client/renderer/entity/RenderManager.java | 5 + .../entity/layers/LayerSpiderEyes.java | 3 + .../TileEntityRendererDispatcher.java | 4 + .../client/settings/GameSettings.java | 17 +- .../java/net/minecraft/entity/Entity.java | 52 +++- .../minecraft/entity/EntityLivingBase.java | 12 + .../minecraft/entity/boss/EntityWither.java | 4 + .../minecraft/entity/item/EntityEnderEye.java | 16 + .../entity/item/EntityFireworkRocket.java | 4 + .../net/minecraft/entity/item/EntityItem.java | 13 + .../entity/item/EntityItemFrame.java | 14 + .../entity/item/EntityMinecartTNT.java | 8 + .../entity/item/EntityTNTPrimed.java | 8 + .../minecraft/entity/item/EntityXPOrb.java | 4 + .../minecraft/entity/monster/EntityBlaze.java | 4 + .../entity/monster/EntityCreeper.java | 9 + .../entity/monster/EntityMagmaCube.java | 4 + .../entity/projectile/EntityFireball.java | 4 + src/main/java/net/minecraft/item/Item.java | 4 + .../java/net/minecraft/item/ItemBlock.java | 4 + .../net/minecraft/server/MinecraftServer.java | 5 + .../java/net/minecraft/world/Teleporter.java | 2 +- src/main/java/net/minecraft/world/World.java | 7 +- .../net/minecraft/world/WorldProvider.java | 3 +- .../minecraft/world/biome/BiomeGenMesa.java | 9 +- .../java/net/minecraft/world/chunk/Chunk.java | 2 +- .../net/minecraft/world/chunk/EmptyChunk.java | 8 +- .../minecraft/world/gen/ChunkProviderEnd.java | 2 +- .../world/gen/ChunkProviderFlat.java | 13 +- .../world/gen/ChunkProviderGenerate.java | 36 +-- .../world/gen/ChunkProviderHell.java | 9 +- .../net/minecraft/world/gen/MapGenBase.java | 13 +- .../net/minecraft/world/gen/MapGenCaves.java | 7 +- .../minecraft/world/gen/MapGenCavesHell.java | 7 +- .../net/minecraft/world/gen/MapGenRavine.java | 6 +- .../world/gen/feature/WorldGenBigTree.java | 2 +- .../world/gen/structure/MapGenMineshaft.java | 6 +- .../gen/structure/MapGenNetherBridge.java | 3 +- .../gen/structure/MapGenScatteredFeature.java | 7 +- .../world/gen/structure/MapGenStronghold.java | 9 +- .../world/gen/structure/MapGenStructure.java | 8 + .../world/gen/structure/MapGenVillage.java | 7 +- .../gen/structure/StructureOceanMonument.java | 7 +- .../minecraft/world/storage/WorldInfo.java | 19 ++ 94 files changed, 2126 insertions(+), 172 deletions(-) create mode 100755 desktopRuntime/resources/assets/eagler/glsl/dynamiclights/accel_particle_dynamiclights.fsh create mode 100755 desktopRuntime/resources/assets/eagler/glsl/dynamiclights/accel_particle_dynamiclights.vsh create mode 100755 desktopRuntime/resources/assets/eagler/glsl/dynamiclights/core_dynamiclights.fsh create mode 100755 desktopRuntime/resources/assets/eagler/glsl/dynamiclights/core_dynamiclights.vsh create mode 100755 desktopRuntime/resources/assets/eagler/mesh/readme.txt create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/dynamiclights/DynamicLightBucketLoader.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/dynamiclights/DynamicLightInstance.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/dynamiclights/DynamicLightsAcceleratedEffectRenderer.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/dynamiclights/DynamicLightsPipelineCompiler.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/dynamiclights/DynamicLightsStateManager.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/dynamiclights/program/DynamicLightsAccelParticleShader.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/dynamiclights/program/DynamicLightsExtPipelineShader.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/sp/gui/GuiScreenOldSeedWarning.java diff --git a/desktopRuntime/resources/assets/eagler/glsl/accel_particle.vsh b/desktopRuntime/resources/assets/eagler/glsl/accel_particle.vsh index 7714481..9e78f76 100755 --- a/desktopRuntime/resources/assets/eagler/glsl/accel_particle.vsh +++ b/desktopRuntime/resources/assets/eagler/glsl/accel_particle.vsh @@ -33,8 +33,8 @@ out vec4 v_color4f; uniform mat4 u_matrixTransform; uniform vec3 u_texCoordSize2f_particleSize1f; -uniform vec4 u_transformParam_1_2_3_4_f; -uniform float u_transformParam_5_f; +uniform vec3 u_transformParam_1_2_5_f; +uniform vec2 u_transformParam_3_4_f; uniform vec4 u_color4f; uniform sampler2D u_lightmapTexture; @@ -51,11 +51,8 @@ void main() { vec3 pos3f = p_position3f; vec2 spos2f = a_position2f * particleSize; - pos3f.x += u_transformParam_1_2_3_4_f.x * spos2f.x; - pos3f.x += u_transformParam_1_2_3_4_f.w * spos2f.y; - pos3f.y += u_transformParam_1_2_3_4_f.y * spos2f.y; - pos3f.z += u_transformParam_1_2_3_4_f.z * spos2f.x; - pos3f.z += u_transformParam_5_f * spos2f.y; + pos3f += u_transformParam_1_2_5_f * spos2f.xyy; + pos3f.zx += u_transformParam_3_4_f * spos2f; gl_Position = u_matrixTransform * vec4(pos3f, 1.0); } diff --git a/desktopRuntime/resources/assets/eagler/glsl/deferred/accel_particle.vsh b/desktopRuntime/resources/assets/eagler/glsl/deferred/accel_particle.vsh index 919bb86..b6dd4f4 100755 --- a/desktopRuntime/resources/assets/eagler/glsl/deferred/accel_particle.vsh +++ b/desktopRuntime/resources/assets/eagler/glsl/deferred/accel_particle.vsh @@ -43,8 +43,8 @@ uniform mat4 u_matrixTransform; #endif uniform vec3 u_texCoordSize2f_particleSize1f; -uniform vec4 u_transformParam_1_2_3_4_f; -uniform float u_transformParam_5_f; +uniform vec3 u_transformParam_1_2_5_f; +uniform vec2 u_transformParam_3_4_f; void main() { v_color4f = p_color4f.bgra; @@ -59,11 +59,8 @@ void main() { vec3 pos3f = p_position3f; vec2 spos2f = a_position2f * particleSize; - pos3f.x += u_transformParam_1_2_3_4_f.x * spos2f.x; - pos3f.x += u_transformParam_1_2_3_4_f.w * spos2f.y; - pos3f.y += u_transformParam_1_2_3_4_f.y * spos2f.y; - pos3f.z += u_transformParam_1_2_3_4_f.z * spos2f.x; - pos3f.z += u_transformParam_5_f * spos2f.y; + pos3f += u_transformParam_1_2_5_f * spos2f.xyy; + pos3f.zx += u_transformParam_3_4_f * spos2f; #ifdef COMPILE_GBUFFER_VSH gl_Position = u_matrixTransform * vec4(pos3f, 1.0); diff --git a/desktopRuntime/resources/assets/eagler/glsl/deferred/emissive_items.csv b/desktopRuntime/resources/assets/eagler/glsl/deferred/emissive_items.csv index 4bb710b..139c938 100755 --- a/desktopRuntime/resources/assets/eagler/glsl/deferred/emissive_items.csv +++ b/desktopRuntime/resources/assets/eagler/glsl/deferred/emissive_items.csv @@ -6,4 +6,5 @@ minecraft:torch,0,1.0000,0.5983,0.2655,10.0 minecraft:redstone_torch,0,1.0000,0.1578,0.0000,4.0 minecraft:sea_lantern,0,0.5530,0.6468,1.0000,10.0, minecraft:lava_bucket,0,1.0000,0.4461,0.1054,6.0, -minecraft:nether_star,0,0.5711,0.6611,1.0000,6.0 \ No newline at end of file +minecraft:nether_star,0,0.5711,0.6611,1.0000,6.0 +minecraft:ender_eye,0,0.1990,0.7750,0.4130,4.0 \ No newline at end of file diff --git a/desktopRuntime/resources/assets/eagler/glsl/deferred/shader_pack_info.json b/desktopRuntime/resources/assets/eagler/glsl/deferred/shader_pack_info.json index c8c166d..6be3fdd 100755 --- a/desktopRuntime/resources/assets/eagler/glsl/deferred/shader_pack_info.json +++ b/desktopRuntime/resources/assets/eagler/glsl/deferred/shader_pack_info.json @@ -1,7 +1,7 @@ { "name": "§eHigh Performance PBR", "desc": "Pack made from scratch specifically for this client, designed to give what I call the best balance between quality and performance possible in a browser but obviously that's just my opinion", - "vers": "1.1.0", + "vers": "1.2.0", "author": "lax1dude", "api_vers": 1, "features": [ diff --git a/desktopRuntime/resources/assets/eagler/glsl/dynamiclights/accel_particle_dynamiclights.fsh b/desktopRuntime/resources/assets/eagler/glsl/dynamiclights/accel_particle_dynamiclights.fsh new file mode 100755 index 0000000..e65126e --- /dev/null +++ b/desktopRuntime/resources/assets/eagler/glsl/dynamiclights/accel_particle_dynamiclights.fsh @@ -0,0 +1,67 @@ +#line 2 + +/* + * Copyright (c) 2024 lax1dude. All Rights Reserved. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + */ + +precision lowp int; +precision mediump float; +precision mediump sampler2D; + +in vec4 v_position4f; +in vec2 v_texCoord2f; +in vec4 v_color4f; +in vec2 v_lightmap2f; + +layout(location = 0) out vec4 output4f; + +uniform sampler2D u_inputTexture; +uniform sampler2D u_lightmapTexture; + +uniform mat4 u_inverseViewMatrix4f; + +layout(std140) uniform u_chunkLightingData { + mediump int u_dynamicLightCount1i; + mediump int _paddingA_; + mediump int _paddingB_; + mediump int _paddingC_; + mediump vec4 u_dynamicLightArray[12]; +}; + +void main() { + vec4 color = texture(u_inputTexture, v_texCoord2f) * v_color4f; + + if(color.a < 0.004) { + discard; + } + + vec4 light; + float diffuse = 0.0; + if(u_dynamicLightCount1i > 0) { + vec4 worldPosition4f = u_inverseViewMatrix4f * v_position4f; + worldPosition4f.xyz /= worldPosition4f.w; + vec3 normalVector3f = normalize(u_inverseViewMatrix4f[2].xyz); + int safeLightCount = u_dynamicLightCount1i > 12 ? 0 : u_dynamicLightCount1i; + for(int i = 0; i < safeLightCount; ++i) { + light = u_dynamicLightArray[i]; + light.xyz = light.xyz - worldPosition4f.xyz; + diffuse += max(dot(normalize(light.xyz), normalVector3f) * 0.8 + 0.2, 0.0) * max(light.w - sqrt(dot(light.xyz, light.xyz)), 0.0); + } + } + + color *= texture(u_lightmapTexture, vec2(min(v_lightmap2f.x + diffuse * 0.066667, 1.0), v_lightmap2f.y)); + + output4f = color; +} diff --git a/desktopRuntime/resources/assets/eagler/glsl/dynamiclights/accel_particle_dynamiclights.vsh b/desktopRuntime/resources/assets/eagler/glsl/dynamiclights/accel_particle_dynamiclights.vsh new file mode 100755 index 0000000..2ff13dd --- /dev/null +++ b/desktopRuntime/resources/assets/eagler/glsl/dynamiclights/accel_particle_dynamiclights.vsh @@ -0,0 +1,61 @@ +#line 2 + +/* + * Copyright (c) 2024 lax1dude. All Rights Reserved. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + */ + +precision lowp int; +precision highp float; +precision mediump sampler2D; + +layout(location = 0) in vec2 a_position2f; + +layout(location = 1) in vec3 p_position3f; +layout(location = 2) in vec2 p_texCoords2i; +layout(location = 3) in vec2 p_lightMap2f; +layout(location = 4) in vec2 p_particleSize_texCoordsSize_2i; +layout(location = 5) in vec4 p_color4f; + +out vec4 v_position4f; +out vec2 v_texCoord2f; +out vec4 v_color4f; +out vec2 v_lightmap2f; + +uniform mat4 u_modelViewMatrix4f; +uniform mat4 u_projectionMatrix4f; +uniform vec3 u_texCoordSize2f_particleSize1f; +uniform vec3 u_transformParam_1_2_5_f; +uniform vec2 u_transformParam_3_4_f; +uniform vec4 u_color4f; + +void main() { + v_color4f = u_color4f * p_color4f.bgra; + v_lightmap2f = p_lightMap2f; + + vec2 tex2f = a_position2f * 0.5 + 0.5; + tex2f.y = 1.0 - tex2f.y; + tex2f = p_texCoords2i + tex2f * p_particleSize_texCoordsSize_2i.y; + v_texCoord2f = tex2f * u_texCoordSize2f_particleSize1f.xy; + + float particleSize = u_texCoordSize2f_particleSize1f.z * p_particleSize_texCoordsSize_2i.x; + + vec3 pos3f = p_position3f; + vec2 spos2f = a_position2f * particleSize; + pos3f += u_transformParam_1_2_5_f * spos2f.xyy; + pos3f.zx += u_transformParam_3_4_f * spos2f; + + v_position4f = u_modelViewMatrix4f * vec4(pos3f, 1.0); + gl_Position = u_projectionMatrix4f * v_position4f; +} diff --git a/desktopRuntime/resources/assets/eagler/glsl/dynamiclights/core_dynamiclights.fsh b/desktopRuntime/resources/assets/eagler/glsl/dynamiclights/core_dynamiclights.fsh new file mode 100755 index 0000000..c418ef1 --- /dev/null +++ b/desktopRuntime/resources/assets/eagler/glsl/dynamiclights/core_dynamiclights.fsh @@ -0,0 +1,210 @@ +#line 2 + +/* + * Copyright (c) 2022-2024 lax1dude. All Rights Reserved. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + */ + +in vec4 v_position4f; + +#ifdef COMPILE_TEXTURE_ATTRIB +in vec2 v_texture2f; +#endif + +uniform vec4 u_color4f; + +#ifdef COMPILE_BLEND_ADD +uniform vec4 u_colorBlendSrc4f; +uniform vec4 u_colorBlendAdd4f; +#endif + +#ifdef COMPILE_COLOR_ATTRIB +in vec4 v_color4f; +#endif + +#ifdef COMPILE_NORMAL_ATTRIB +in vec3 v_normal3f; +#endif + +#ifdef COMPILE_LIGHTMAP_ATTRIB +in vec2 v_lightmap2f; +#endif + +#ifdef COMPILE_ENABLE_TEXTURE2D +uniform sampler2D u_samplerTexture; +#if !defined(COMPILE_TEXTURE_ATTRIB) && !defined(COMPILE_ENABLE_TEX_GEN) +uniform vec2 u_textureCoords01; +#endif +#endif + +#ifdef COMPILE_ENABLE_LIGHTMAP +uniform sampler2D u_samplerLightmap; +#ifndef COMPILE_LIGHTMAP_ATTRIB +uniform vec2 u_textureCoords02; +#endif +#endif + +#ifdef COMPILE_ENABLE_ALPHA_TEST +uniform float u_alphaTestRef1f; +#endif + +#ifdef COMPILE_ENABLE_MC_LIGHTING +uniform int u_lightsEnabled1i; +uniform vec4 u_lightsDirections4fv[4]; +uniform vec3 u_lightsAmbient3f; +#endif + +#ifndef COMPILE_NORMAL_ATTRIB +uniform vec3 u_uniformNormal3f; +#endif + +#ifdef COMPILE_ENABLE_FOG +uniform vec4 u_fogParameters4f; +uniform vec4 u_fogColor4f; +#endif + +#ifdef COMPILE_ENABLE_TEX_GEN +in vec3 v_objectPosition3f; +uniform ivec4 u_texGenPlane4i; +uniform vec4 u_texGenS4f; +uniform vec4 u_texGenT4f; +uniform vec4 u_texGenR4f; +uniform vec4 u_texGenQ4f; +uniform mat4 u_textureMat4f01; +#endif + +#ifdef COMPILE_ENABLE_ANISOTROPIC_FIX +uniform vec2 u_textureAnisotropicFix; +#endif + +uniform mat4 u_inverseViewMatrix4f; + +layout(std140) uniform u_chunkLightingData { + mediump int u_dynamicLightCount1i; + mediump int _paddingA_; + mediump int _paddingB_; + mediump int _paddingC_; + mediump vec4 u_dynamicLightArray[12]; +}; + +layout(location = 0) out vec4 output4f; + +void main() { + +#ifdef COMPILE_COLOR_ATTRIB + vec4 color = v_color4f * u_color4f; +#else + vec4 color = u_color4f; +#endif + +#ifdef COMPILE_ENABLE_TEX_GEN + vec4 texGenVector; + + vec4 texGenPosSrc[2]; + texGenPosSrc[0] = vec4(v_objectPosition3f, 1.0); + texGenPosSrc[1] = v_position4f; + + texGenVector.x = dot(texGenPosSrc[u_texGenPlane4i.x], u_texGenS4f); + texGenVector.y = dot(texGenPosSrc[u_texGenPlane4i.y], u_texGenT4f); + texGenVector.z = dot(texGenPosSrc[u_texGenPlane4i.z], u_texGenR4f); + texGenVector.w = dot(texGenPosSrc[u_texGenPlane4i.w], u_texGenQ4f); + + texGenVector = u_textureMat4f01 * texGenVector; + color *= texture(u_samplerTexture, texGenVector.xy / texGenVector.w); + +#ifdef COMPILE_ENABLE_ALPHA_TEST + if(color.a < u_alphaTestRef1f) discard; +#endif + +#else + +#ifdef COMPILE_ENABLE_TEXTURE2D +#ifdef COMPILE_TEXTURE_ATTRIB +#ifdef COMPILE_ENABLE_ANISOTROPIC_FIX + // d3d11 doesn't support GL_NEAREST upscaling with anisotropic + // filtering enabled, so it needs this stupid fix to 'work' + vec2 uv = floor(v_texture2f * u_textureAnisotropicFix) + 0.5; + color *= texture(u_samplerTexture, uv / u_textureAnisotropicFix); +#else + color *= texture(u_samplerTexture, v_texture2f); +#endif +#else + color *= texture(u_samplerTexture, u_textureCoords01); +#endif +#endif + +#ifdef COMPILE_NORMAL_ATTRIB + vec3 normal = normalize(v_normal3f); +#else + vec3 normal = u_uniformNormal3f; +#endif + +#ifdef COMPILE_ENABLE_LIGHTMAP + float diffuse = 0.0; + vec4 light; + if(u_dynamicLightCount1i > 0) { + vec4 worldPosition4f = u_inverseViewMatrix4f * v_position4f; + worldPosition4f.xyz /= worldPosition4f.w; + vec3 normalVector3f = normalize(mat3(u_inverseViewMatrix4f) * normal); + int safeLightCount = u_dynamicLightCount1i > 12 ? 0 : u_dynamicLightCount1i; + for(int i = 0; i < safeLightCount; ++i) { + light = u_dynamicLightArray[i]; + light.xyz = light.xyz - worldPosition4f.xyz; + diffuse += max(dot(normalize(light.xyz), normalVector3f) * 0.8 + 0.2, 0.0) * max(light.w - sqrt(dot(light.xyz, light.xyz)), 0.0); + } + } +#ifdef COMPILE_LIGHTMAP_ATTRIB + color *= texture(u_samplerLightmap, vec2(min(v_lightmap2f.x + diffuse * 0.066667, 1.0), v_lightmap2f.y)); +#else + color *= texture(u_samplerLightmap, vec2(min(u_textureCoords02.x + diffuse * 0.066667, 1.0), u_textureCoords02.y)); +#endif +#endif + +#ifdef COMPILE_BLEND_ADD + color = color * u_colorBlendSrc4f + u_colorBlendAdd4f; +#endif + +#ifdef COMPILE_ENABLE_ALPHA_TEST + if(color.a < u_alphaTestRef1f) discard; +#endif + +#endif + +#ifdef COMPILE_ENABLE_MC_LIGHTING +#ifndef COMPILE_ENABLE_LIGHTMAP + vec4 light; + float diffuse = 0.0; +#else + diffuse = 0.0; +#endif + for(int i = 0; i < u_lightsEnabled1i; ++i) { + light = u_lightsDirections4fv[i]; + diffuse += max(dot(light.xyz, normal), 0.0) * light.w; + } + color.rgb *= min(u_lightsAmbient3f + vec3(diffuse), 1.0); +#endif + +#ifdef COMPILE_ENABLE_FOG + vec3 fogPos = v_position4f.xyz / v_position4f.w; + float dist = sqrt(dot(fogPos, fogPos)); + float fogDensity = u_fogParameters4f.y; + float fogStart = u_fogParameters4f.z; + float fogEnd = u_fogParameters4f.w; + float f = u_fogParameters4f.x > 0.0 ? 1.0 - exp(-fogDensity * dist) : + (dist - fogStart) / (fogEnd - fogStart); + color.rgb = mix(color.rgb, u_fogColor4f.rgb, clamp(f, 0.0, 1.0) * u_fogColor4f.a); +#endif + + output4f = color; +} diff --git a/desktopRuntime/resources/assets/eagler/glsl/dynamiclights/core_dynamiclights.vsh b/desktopRuntime/resources/assets/eagler/glsl/dynamiclights/core_dynamiclights.vsh new file mode 100755 index 0000000..b1cb7f3 --- /dev/null +++ b/desktopRuntime/resources/assets/eagler/glsl/dynamiclights/core_dynamiclights.vsh @@ -0,0 +1,80 @@ +#line 2 + +/* + * Copyright (c) 2022-2024 lax1dude. All Rights Reserved. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + */ + +in vec3 a_position3f; + +out vec4 v_position4f; + +#ifdef COMPILE_ENABLE_TEX_GEN +out vec3 v_objectPosition3f; +#endif + +#ifdef COMPILE_TEXTURE_ATTRIB +in vec2 a_texture2f; +out vec2 v_texture2f; +uniform mat4 u_textureMat4f01; +#endif + +#ifdef COMPILE_COLOR_ATTRIB +in vec4 a_color4f; +out vec4 v_color4f; +#endif + +#ifdef COMPILE_NORMAL_ATTRIB +in vec4 a_normal4f; +out vec3 v_normal3f; +#endif + +#ifdef COMPILE_LIGHTMAP_ATTRIB +in vec2 a_lightmap2f; +out vec2 v_lightmap2f; +uniform mat4 u_textureMat4f02; +#endif + +uniform mat4 u_modelviewMat4f; +uniform mat4 u_projectionMat4f; + +#define TEX_MAT3(mat4In) mat3(mat4In[0].xyw,mat4In[1].xyw,mat4In[3].xyw) + +void main() { +#ifdef COMPILE_ENABLE_TEX_GEN + v_objectPosition3f = a_position3f; +#endif + + v_position4f = u_modelviewMat4f * vec4(a_position3f, 1.0); + +#ifdef COMPILE_TEXTURE_ATTRIB + vec3 v_textureTmp3f = TEX_MAT3(u_textureMat4f01) * vec3(a_texture2f, 1.0); + v_texture2f = v_textureTmp3f.xy / v_textureTmp3f.z; +#endif + +#ifdef COMPILE_COLOR_ATTRIB + v_color4f = a_color4f; +#endif + +#ifdef COMPILE_NORMAL_ATTRIB + v_normal3f = normalize(mat3(u_modelviewMat4f) * a_normal4f.xyz); +#endif + +#ifdef COMPILE_LIGHTMAP_ATTRIB + vec3 v_lightmapTmp3f = TEX_MAT3(u_textureMat4f02) * vec3(a_lightmap2f, 1.0); + v_lightmap2f = v_lightmapTmp3f.xy / v_lightmapTmp3f.z; +#endif + + gl_Position = u_projectionMat4f * v_position4f; +} diff --git a/desktopRuntime/resources/assets/eagler/mesh/readme.txt b/desktopRuntime/resources/assets/eagler/mesh/readme.txt new file mode 100755 index 0000000..f43f96d --- /dev/null +++ b/desktopRuntime/resources/assets/eagler/mesh/readme.txt @@ -0,0 +1,9 @@ +THESE ARE NOT DOOM/GMOD MODELS! + +The FNAW skins are stored in a proprietary format created by lax1dude. + +The format is a container for raw OpenGL vertex buffer and index buffer data intended to be copied directly into the GPU's memory, along with a small amount of metadata. + +Data is rendered in GL_TRIANGLES mode using glDrawElements. + +See "net/lax1dude/eaglercraft/v1_8/opengl/EaglerMeshLoader.java" and "net/lax1dude/eaglercraft/v1_8/opengl/HighPolyMesh.java" for more details. \ No newline at end of file diff --git a/desktopRuntime/resources/assets/minecraft/lang/en_US.lang b/desktopRuntime/resources/assets/minecraft/lang/en_US.lang index e542e1d..234a6c9 100755 --- a/desktopRuntime/resources/assets/minecraft/lang/en_US.lang +++ b/desktopRuntime/resources/assets/minecraft/lang/en_US.lang @@ -129,6 +129,7 @@ eaglercraft.options.fastMath=Fast Math eaglercraft.options.fastMath.0=OFF eaglercraft.options.fastMath.1=Low eaglercraft.options.fastMath.2=High +eaglercraft.options.dynamicLights=Dynamic Lights eaglercraft.key.function=Function eaglercraft.key.zoomCamera=Zoom Camera @@ -576,7 +577,12 @@ eaglercraft.singleplayer.demo.create.create.tooltip=Play the Minecraft 1.8 demo eaglercraft.singleplayer.demo.create.join=Join Shared World eaglercraft.singleplayer.demo.create.join.tooltip=Join someone else's world and play multiplayer -eaglercraft.createWorld.seedNote=Note: Vanilla seeds do not work! +eaglercraft.createWorld.seedNote=Note: Vanilla seeds now work! + +eaglercraft.singleplayer.oldseedwarning.title=Old World Detected! +eaglercraft.singleplayer.oldseedwarning.msg1=Please use EaglercraftX u32 or older to "Re-Create" this world +eaglercraft.singleplayer.oldseedwarning.msg2=The world's seed will not be the same otherwise :( +eaglercraft.singleplayer.oldseedwarning.ok=OK eaglercraft.singleplayer.outdatedLANServerKick=This is a 1.5.2 LAN world! diff --git a/desktopRuntime/resources/plugin_download.zip b/desktopRuntime/resources/plugin_download.zip index 5975d288b59d84e0ef0b14079ec328a4614c02c6..a1e55c8a2b30082406ed3bcff72a0e38f26a1514 100755 GIT binary patch delta 188653 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

EsAH+!4KKiVFfuy+L1s!Y~I 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 K2FT_E0000j3)x5j delta 188292 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�XNLwo!nN>w&Sb5!Wd+6Z{xCq|Ldijf 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 0.0f; } + private void truncateOverflowingLightBuffers() { + for(int i = 0; i < this.lightSourceBuckets.length; ++i) { + List lst = this.lightSourceBuckets[i]; + int k = lst.size(); + if(k > MAX_LIGHTS_PER_CHUNK) { + lst.sort(comparatorLightRadius); + for(int l = MAX_LIGHTS_PER_CHUNK - 1; l >= MAX_LIGHTS_PER_CHUNK; --l) { + lst.remove(l); + } + } + } + } + public void updateLightSourceUBO() { if(currentLightSourceBucket == null) { currentBoundLightSourceBucket = null; @@ -2332,7 +2347,6 @@ public class EaglerDeferredPipeline { } } - private static final List tmpListLights = new ArrayList(32); private static final Comparator comparatorLightRadius = (l1, l2) -> { return l1.radius < l2.radius ? 1 : -1; }; @@ -2340,10 +2354,6 @@ public class EaglerDeferredPipeline { private void populateLightSourceUBOFromBucket(List lights) { int max = lights.size(); if(max > MAX_LIGHTS_PER_CHUNK) { - tmpListLights.clear(); - tmpListLights.addAll(lights); - lights = tmpListLights; - lights.sort(comparatorLightRadius); max = MAX_LIGHTS_PER_CHUNK; } chunkLightingDataCopyBuffer.clear(); diff --git a/src/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/deferred/ForwardAcceleratedEffectRenderer.java b/src/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/deferred/ForwardAcceleratedEffectRenderer.java index 525db9a..aad8490 100755 --- a/src/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/deferred/ForwardAcceleratedEffectRenderer.java +++ b/src/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/deferred/ForwardAcceleratedEffectRenderer.java @@ -124,8 +124,13 @@ public class ForwardAcceleratedEffectRenderer extends AbstractAcceleratedEffectR shaderProgram.useProgram(); _wglUniform3f(shaderProgram.uniforms.u_texCoordSize2f_particleSize1f, texCoordWidth, texCoordHeight, 0.0625f); - _wglUniform4f(shaderProgram.uniforms.u_transformParam_1_2_3_4_f, f1, f5, f2, f3); - _wglUniform1f(shaderProgram.uniforms.u_transformParam_5_f, f4); + if(shaderProgram.uniforms.u_transformParam_1_2_5_f != null) { + _wglUniform3f(shaderProgram.uniforms.u_transformParam_1_2_5_f, f1, f5, f4); + _wglUniform2f(shaderProgram.uniforms.u_transformParam_3_4_f, f2, f3); + }else { + _wglUniform4f(shaderProgram.uniforms.u_transformParam_1_2_3_4_f, f1, f5, f2, f3); + _wglUniform1f(shaderProgram.uniforms.u_transformParam_5_f, f4); + } if(isMaterialNormalTexture) { _wglUniform2f(shaderProgram.uniforms.u_textureYScale2f, 0.5f, 0.5f); }else { diff --git a/src/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/deferred/GBufferAcceleratedEffectRenderer.java b/src/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/deferred/GBufferAcceleratedEffectRenderer.java index 3e07db2..c3cc059 100755 --- a/src/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/deferred/GBufferAcceleratedEffectRenderer.java +++ b/src/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/deferred/GBufferAcceleratedEffectRenderer.java @@ -124,8 +124,13 @@ public class GBufferAcceleratedEffectRenderer extends AbstractAcceleratedEffectR shaderProgram.useProgram(); _wglUniform3f(shaderProgram.uniforms.u_texCoordSize2f_particleSize1f, texCoordWidth, texCoordHeight, 0.0625f); - _wglUniform4f(shaderProgram.uniforms.u_transformParam_1_2_3_4_f, f1, f5, f2, f3); - _wglUniform1f(shaderProgram.uniforms.u_transformParam_5_f, f4); + if(shaderProgram.uniforms.u_transformParam_1_2_5_f != null) { + _wglUniform3f(shaderProgram.uniforms.u_transformParam_1_2_5_f, f1, f5, f4); + _wglUniform2f(shaderProgram.uniforms.u_transformParam_3_4_f, f2, f3); + }else { + _wglUniform4f(shaderProgram.uniforms.u_transformParam_1_2_3_4_f, f1, f5, f2, f3); + _wglUniform1f(shaderProgram.uniforms.u_transformParam_5_f, f4); + } if(isMaterialNormalTexture) { _wglUniform2f(shaderProgram.uniforms.u_textureYScale2f, 0.5f, 0.5f); }else { diff --git a/src/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/deferred/program/PipelineShaderAccelParticleForward.java b/src/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/deferred/program/PipelineShaderAccelParticleForward.java index cd5fde7..6856eb9 100755 --- a/src/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/deferred/program/PipelineShaderAccelParticleForward.java +++ b/src/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/deferred/program/PipelineShaderAccelParticleForward.java @@ -69,6 +69,8 @@ public class PipelineShaderAccelParticleForward extends ShaderProgram sourceCache = new HashMap(); private static boolean isHighP = false; diff --git a/src/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/dynamiclights/DynamicLightBucketLoader.java b/src/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/dynamiclights/DynamicLightBucketLoader.java new file mode 100755 index 0000000..c6844c0 --- /dev/null +++ b/src/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/dynamiclights/DynamicLightBucketLoader.java @@ -0,0 +1,287 @@ +package net.lax1dude.eaglercraft.v1_8.opengl.ext.dynamiclights; + +import static net.lax1dude.eaglercraft.v1_8.internal.PlatformOpenGL.*; +import static net.lax1dude.eaglercraft.v1_8.opengl.RealOpenGLEnums.*; +import static net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.ExtGLEnums.*; + +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; + +import net.lax1dude.eaglercraft.v1_8.EagRuntime; +import net.lax1dude.eaglercraft.v1_8.internal.IBufferGL; +import net.lax1dude.eaglercraft.v1_8.internal.buffer.ByteBuffer; +import net.lax1dude.eaglercraft.v1_8.opengl.EaglercraftGPU; +import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.ArrayListSerial; +import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.EaglerDeferredPipeline; +import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.ListSerial; +import net.minecraft.util.MathHelper; + +/** + * Copyright (c) 2023-2024 lax1dude. All Rights Reserved. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + */ +public class DynamicLightBucketLoader { + + public IBufferGL buffer_chunkLightingData; + private ByteBuffer chunkLightingDataCopyBuffer; + private boolean isChunkLightingEnabled = false; + public ListSerial currentBoundLightSourceBucket; + + public final ListSerial[] lightSourceBuckets; + public ListSerial currentLightSourceBucket; + + public static final int MAX_LIGHTS_PER_CHUNK = 12; + + private final int lightSourceBucketsWidth; + private final int lightSourceBucketsHeight; + + private double currentRenderX = 0.0; + private double currentRenderY = 0.0; + private double currentRenderZ = 0.0; + + public DynamicLightBucketLoader() { + this.lightSourceBucketsWidth = 5; + this.lightSourceBucketsHeight = 3; + int cnt = 5 * 3 * 5; + this.lightSourceBuckets = new ListSerial[cnt]; + } + + public void initialize() { + destroy(); + + buffer_chunkLightingData = _wglGenBuffers(); + EaglercraftGPU.bindGLUniformBuffer(buffer_chunkLightingData); + int lightingDataLength = 4 * MAX_LIGHTS_PER_CHUNK + 4; + chunkLightingDataCopyBuffer = EagRuntime.allocateByteBuffer(lightingDataLength << 2); + for(int i = 0; i < lightingDataLength; ++i) { + chunkLightingDataCopyBuffer.putInt(0); + } + chunkLightingDataCopyBuffer.flip(); + _wglBufferData(_GL_UNIFORM_BUFFER, chunkLightingDataCopyBuffer, GL_DYNAMIC_DRAW); + + for(int i = 0; i < this.lightSourceBuckets.length; ++i) { + this.lightSourceBuckets[i] = new ArrayListSerial(16); + } + } + + public void clearBuckets() { + for(int i = 0; i < this.lightSourceBuckets.length; ++i) { + this.lightSourceBuckets[i].clear(); + } + } + + public void loadLightSourceBucket(int relativeBlockX, int relativeBlockY, int relativeBlockZ) { + int hw = lightSourceBucketsWidth / 2; + int hh = lightSourceBucketsHeight / 2; + int bucketX = (relativeBlockX >> 4) + hw; + int bucketY = (relativeBlockY >> 4) + hh; + int bucketZ = (relativeBlockZ >> 4) + hw; + if(bucketX >= 0 && bucketY >= 0 && bucketZ >= 0 && bucketX < lightSourceBucketsWidth + && bucketY < lightSourceBucketsHeight && bucketZ < lightSourceBucketsWidth) { + currentLightSourceBucket = lightSourceBuckets[bucketY * lightSourceBucketsWidth * lightSourceBucketsWidth + + bucketZ * lightSourceBucketsWidth + bucketX]; + }else { + currentLightSourceBucket = null; + } + updateLightSourceUBO(); + } + + public ListSerial getLightSourceBucketRelativeChunkCoords(int cx, int cy, int cz) { + int hw = lightSourceBucketsWidth / 2; + int hh = lightSourceBucketsHeight / 2; + cx += hw; + cy += hh; + cz += hw; + if(cx < 0 || cx >= lightSourceBucketsWidth || cy < 0 || cy >= lightSourceBucketsHeight || cz < 0 + || cz >= lightSourceBucketsWidth) { + return null; + }else { + return lightSourceBuckets[cy * lightSourceBucketsWidth * lightSourceBucketsWidth + + cz * lightSourceBucketsWidth + cx]; + } + } + + public void addLightSourceToBucket(int cx, int cy, int cz, DynamicLightInstance dl) { + ListSerial lst = getLightSourceBucketRelativeChunkCoords(cx, cy, cz); + if(lst != null) { + lst.add(dl); + } + } + + public void bucketLightSource(float x, float y, float z, DynamicLightInstance dl) { + int bucketX = MathHelper.floor_float(x / 16.0f); + int bucketY = MathHelper.floor_float(y / 16.0f); + int bucketZ = MathHelper.floor_float(z / 16.0f); + addLightSourceToBucket(bucketX, bucketY, bucketZ, dl); + int minX = bucketX, maxX = bucketX; + int minY = bucketY, maxY = bucketY; + int minZ = bucketZ, maxZ = bucketZ; + float lightLocalX = x - (bucketX << 4); + float lightLocalY = y - (bucketY << 4); + float lightLocalZ = z - (bucketZ << 4); + float radius = dl.radius; + boolean outOfBounds = false; + if(lightLocalX - radius < 0.0f) { + minX -= 1; + outOfBounds = true; + addLightSourceToBucket(bucketX - 1, bucketY, bucketZ, dl); + } + if(lightLocalY - radius < 0.0f) { + minY -= 1; + outOfBounds = true; + addLightSourceToBucket(bucketX, bucketY - 1, bucketZ, dl); + } + if(lightLocalZ - radius < 0.0f) { + minZ -= 1; + outOfBounds = true; + addLightSourceToBucket(bucketX, bucketY, bucketZ - 1, dl); + } + if(lightLocalX + radius >= 16.0f) { + maxX += 1; + outOfBounds = true; + addLightSourceToBucket(bucketX + 1, bucketY, bucketZ, dl); + } + if(lightLocalY + radius >= 16.0f) { + maxY += 1; + outOfBounds = true; + addLightSourceToBucket(bucketX, bucketY + 1, bucketZ, dl); + } + if(lightLocalZ + radius >= 16.0f) { + maxZ += 1; + outOfBounds = true; + addLightSourceToBucket(bucketX, bucketY, bucketZ + 1, dl); + } + if(!outOfBounds) { + return; + } + radius *= radius; + for(int yy = minY; yy <= maxY; ++yy) { + for(int zz = minZ; zz <= maxZ; ++zz) { + for(int xx = minX; xx <= maxX; ++xx) { + if((xx == bucketX ? 1 : 0) + (yy == bucketY ? 1 : 0) + (zz == bucketZ ? 1 : 0) > 1) { + continue; + } + List lst = getLightSourceBucketRelativeChunkCoords(xx, yy, zz); + if(lst != null) { + int bucketBoundsX = xx << 4; + int bucketBoundsY = yy << 4; + int bucketBoundsZ = zz << 4; + if (EaglerDeferredPipeline.testAabSphere(bucketBoundsX, bucketBoundsY, bucketBoundsZ, + bucketBoundsX + 16, bucketBoundsY + 16, bucketBoundsZ + 16, x, y, z, radius)) { + lst.add(dl); + } + } + } + } + } + } + + public void truncateOverflowingBuffers() { + for(int i = 0; i < this.lightSourceBuckets.length; ++i) { + List lst = this.lightSourceBuckets[i]; + int k = lst.size(); + if(k > MAX_LIGHTS_PER_CHUNK) { + lst.sort(comparatorLightRadius); + for(int l = MAX_LIGHTS_PER_CHUNK - 1; l >= MAX_LIGHTS_PER_CHUNK; --l) { + lst.remove(l); + } + } + } + } + + public void updateLightSourceUBO() { + if(currentLightSourceBucket == null) { + currentBoundLightSourceBucket = null; + if(isChunkLightingEnabled) { + isChunkLightingEnabled = false; + EaglercraftGPU.bindGLUniformBuffer(buffer_chunkLightingData); + chunkLightingDataCopyBuffer.clear(); + chunkLightingDataCopyBuffer.putInt(0); + chunkLightingDataCopyBuffer.flip(); + _wglBufferSubData(_GL_UNIFORM_BUFFER, 0, chunkLightingDataCopyBuffer); + } + }else { + boolean isNew; + if(!isChunkLightingEnabled) { + isChunkLightingEnabled = true; + isNew = true; + }else { + isNew = currentLightSourceBucket != currentBoundLightSourceBucket; + } + currentBoundLightSourceBucket = currentLightSourceBucket; + if(isNew || currentBoundLightSourceBucket.eaglerCheck()) { + populateLightSourceUBOFromBucket(currentBoundLightSourceBucket); + currentBoundLightSourceBucket.eaglerResetCheck(); + } + } + } + + private static final Comparator comparatorLightRadius = (l1, l2) -> { + return l1.radius < l2.radius ? 1 : -1; + }; + + private void populateLightSourceUBOFromBucket(List lights) { + int max = lights.size(); + if(max > MAX_LIGHTS_PER_CHUNK) { + //tmpListLights.clear(); + //tmpListLights.addAll(lights); + //lights = tmpListLights; + //lights.sort(comparatorLightRadius); + max = MAX_LIGHTS_PER_CHUNK; + } + chunkLightingDataCopyBuffer.clear(); + chunkLightingDataCopyBuffer.putInt(max); + if(max > 0) { + chunkLightingDataCopyBuffer.putInt(0); //padding + chunkLightingDataCopyBuffer.putInt(0); //padding + chunkLightingDataCopyBuffer.putInt(0); //padding + for(int i = 0; i < max; ++i) { + DynamicLightInstance dl = lights.get(i); + chunkLightingDataCopyBuffer.putFloat((float)(dl.posX - currentRenderX)); + chunkLightingDataCopyBuffer.putFloat((float)(dl.posY - currentRenderY)); + chunkLightingDataCopyBuffer.putFloat((float)(dl.posZ - currentRenderZ)); + chunkLightingDataCopyBuffer.putFloat(dl.radius); + } + } + chunkLightingDataCopyBuffer.flip(); + EaglercraftGPU.bindGLUniformBuffer(buffer_chunkLightingData); + _wglBufferSubData(_GL_UNIFORM_BUFFER, 0, chunkLightingDataCopyBuffer); + } + + public void setRenderPos(double currentRenderX, double currentRenderY, double currentRenderZ) { + this.currentRenderX = currentRenderX; + this.currentRenderY = currentRenderY; + this.currentRenderZ = currentRenderZ; + } + + public void bindUniformBuffer(int index) { + EaglercraftGPU.bindGLUniformBuffer(buffer_chunkLightingData); + EaglercraftGPU.bindUniformBufferRange(index, buffer_chunkLightingData, 0, chunkLightingDataCopyBuffer.capacity()); + } + + public void destroy() { + if(chunkLightingDataCopyBuffer != null) { + EagRuntime.freeByteBuffer(chunkLightingDataCopyBuffer); + chunkLightingDataCopyBuffer = null; + } + if(buffer_chunkLightingData != null) { + _wglDeleteBuffers(buffer_chunkLightingData); + buffer_chunkLightingData = null; + } + for(int i = 0; i < this.lightSourceBuckets.length; ++i) { + this.lightSourceBuckets[i] = null; + } + } +} diff --git a/src/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/dynamiclights/DynamicLightInstance.java b/src/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/dynamiclights/DynamicLightInstance.java new file mode 100755 index 0000000..2e44b0c --- /dev/null +++ b/src/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/dynamiclights/DynamicLightInstance.java @@ -0,0 +1,48 @@ +package net.lax1dude.eaglercraft.v1_8.opengl.ext.dynamiclights; + +/** + * Copyright (c) 2024 lax1dude. All Rights Reserved. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + */ +class DynamicLightInstance { + + public final String lightName; + long lastCacheHit = 0l; + + double posX; + double posY; + double posZ; + float radius; + + public DynamicLightInstance(String lightName) { + this.lightName = lightName; + } + + public void updateLight(double posX, double posY, double posZ, float radius) { + this.lastCacheHit = System.currentTimeMillis(); + this.posX = posX; + this.posY = posY; + this.posZ = posZ; + this.radius = radius; + } + + public void destroy() { + + } + + public float getRadiusInWorld() { + return radius; + } + +} diff --git a/src/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/dynamiclights/DynamicLightsAcceleratedEffectRenderer.java b/src/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/dynamiclights/DynamicLightsAcceleratedEffectRenderer.java new file mode 100755 index 0000000..5396ce8 --- /dev/null +++ b/src/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/dynamiclights/DynamicLightsAcceleratedEffectRenderer.java @@ -0,0 +1,230 @@ +package net.lax1dude.eaglercraft.v1_8.opengl.ext.dynamiclights; + +import static net.lax1dude.eaglercraft.v1_8.internal.PlatformOpenGL.*; +import static net.lax1dude.eaglercraft.v1_8.opengl.RealOpenGLEnums.*; + +import net.lax1dude.eaglercraft.v1_8.EagRuntime; +import net.lax1dude.eaglercraft.v1_8.internal.IBufferArrayGL; +import net.lax1dude.eaglercraft.v1_8.internal.IBufferGL; +import net.lax1dude.eaglercraft.v1_8.internal.buffer.ByteBuffer; +import net.lax1dude.eaglercraft.v1_8.internal.buffer.FloatBuffer; +import net.lax1dude.eaglercraft.v1_8.log4j.LogManager; +import net.lax1dude.eaglercraft.v1_8.log4j.Logger; +import net.lax1dude.eaglercraft.v1_8.opengl.EaglercraftGPU; +import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager; +import net.lax1dude.eaglercraft.v1_8.opengl.InstancedParticleRenderer; +import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.AbstractAcceleratedEffectRenderer; +import net.lax1dude.eaglercraft.v1_8.opengl.ext.dynamiclights.program.DynamicLightsAccelParticleShader; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.GLAllocation; +import net.minecraft.entity.Entity; +import net.minecraft.util.MathHelper; + +/** + * Copyright (c) 2024 lax1dude. All Rights Reserved. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + */ +public class DynamicLightsAcceleratedEffectRenderer extends AbstractAcceleratedEffectRenderer { + + private static final Logger logger = LogManager.getLogger("DynamicLightsAcceleratedEffectRenderer"); + + private ByteBuffer particleBuffer = null; + private int particleCount = 0; + private boolean particlesHasOverflowed = false; + + private static final int BYTES_PER_PARTICLE = 24; + private static final int PARTICLE_LIMIT = 5461; + + private DynamicLightsAccelParticleShader shaderProgram = null; + + private IBufferArrayGL vertexArray = null; + private IBufferGL vertexBuffer = null; + + private IBufferGL instancesBuffer = null; + + private float f1; + private float f2; + private float f3; + private float f4; + private float f5; + + public static boolean isMaterialNormalTexture = false; + + public void initialize() { + destroy(); + + if(DynamicLightsPipelineCompiler.matrixCopyBuffer == null) { + DynamicLightsPipelineCompiler.matrixCopyBuffer = GLAllocation.createDirectFloatBuffer(16); + } + + shaderProgram = DynamicLightsAccelParticleShader.compile(); + shaderProgram.loadUniforms(); + + particleBuffer = EagRuntime.allocateByteBuffer(PARTICLE_LIMIT * BYTES_PER_PARTICLE); + + vertexArray = _wglGenVertexArrays(); + vertexBuffer = _wglGenBuffers(); + instancesBuffer = _wglGenBuffers(); + + FloatBuffer verts = EagRuntime.allocateFloatBuffer(12); + verts.put(new float[] { + -1.0f, -1.0f, -1.0f, 1.0f, 1.0f, -1.0f, + -1.0f, 1.0f, 1.0f, 1.0f, 1.0f, -1.0f + }); + verts.flip(); + + EaglercraftGPU.bindGLBufferArray(vertexArray); + + EaglercraftGPU.bindGLArrayBuffer(vertexBuffer); + _wglBufferData(GL_ARRAY_BUFFER, verts, GL_STATIC_DRAW); + + EagRuntime.freeFloatBuffer(verts); + + _wglEnableVertexAttribArray(0); + _wglVertexAttribPointer(0, 2, GL_FLOAT, false, 8, 0); + _wglVertexAttribDivisor(0, 0); + + EaglercraftGPU.bindGLArrayBuffer(instancesBuffer); + _wglBufferData(GL_ARRAY_BUFFER, particleBuffer.remaining(), GL_STREAM_DRAW); + + _wglEnableVertexAttribArray(1); + _wglVertexAttribPointer(1, 3, GL_FLOAT, false, 24, 0); + _wglVertexAttribDivisor(1, 1); + + _wglEnableVertexAttribArray(2); + _wglVertexAttribPointer(2, 2, GL_UNSIGNED_SHORT, false, 24, 12); + _wglVertexAttribDivisor(2, 1); + + _wglEnableVertexAttribArray(3); + _wglVertexAttribPointer(3, 2, GL_UNSIGNED_BYTE, true, 24, 16); + _wglVertexAttribDivisor(3, 1); + + _wglEnableVertexAttribArray(4); + _wglVertexAttribPointer(4, 2, GL_UNSIGNED_BYTE, false, 24, 18); + _wglVertexAttribDivisor(4, 1); + + _wglEnableVertexAttribArray(5); + _wglVertexAttribPointer(5, 4, GL_UNSIGNED_BYTE, true, 24, 20); + _wglVertexAttribDivisor(5, 1); + + } + + @Override + public void draw(float texCoordWidth, float texCoordHeight) { + if(particleCount == 0) { + return; + } + + shaderProgram.useProgram(); + + _wglUniform3f(shaderProgram.uniforms.u_texCoordSize2f_particleSize1f, texCoordWidth, texCoordHeight, 0.0625f); + _wglUniform3f(shaderProgram.uniforms.u_transformParam_1_2_5_f, f1, f5, f4); + _wglUniform2f(shaderProgram.uniforms.u_transformParam_3_4_f, f2, f3); + InstancedParticleRenderer.stupidColorSetHack(shaderProgram.uniforms.u_color4f); + + FloatBuffer buf = DynamicLightsPipelineCompiler.matrixCopyBuffer; + buf.clear(); + GlStateManager.getFloat(GL_MODELVIEW_MATRIX, buf); + buf.flip(); + _wglUniformMatrix4fv(shaderProgram.uniforms.u_modelViewMatrix4f, false, buf); + buf.clear(); + GlStateManager.getFloat(GL_PROJECTION_MATRIX, buf); + buf.flip(); + _wglUniformMatrix4fv(shaderProgram.uniforms.u_projectionMatrix4f, false, buf); + buf.clear(); + DynamicLightsStateManager.inverseViewMatrix.store(buf); + buf.flip(); + _wglUniformMatrix4fv(shaderProgram.uniforms.u_inverseViewMatrix4f, false, buf); + + EaglercraftGPU.bindGLArrayBuffer(instancesBuffer); + EaglercraftGPU.bindGLBufferArray(vertexArray); + + int p = particleBuffer.position(); + int l = particleBuffer.limit(); + + particleBuffer.flip(); + _wglBufferSubData(GL_ARRAY_BUFFER, 0, particleBuffer); + + particleBuffer.position(p); + particleBuffer.limit(l); + + _wglDrawArraysInstanced(GL_TRIANGLES, 0, 6, particleCount); + } + + @Override + public void begin(float partialTicks) { + this.partialTicks = partialTicks; + + particleBuffer.clear(); + particleCount = 0; + particlesHasOverflowed = false; + + Entity et = Minecraft.getMinecraft().getRenderViewEntity(); + if(et != null) { + f1 = MathHelper.cos(et.rotationYaw * 0.017453292F); + f2 = MathHelper.sin(et.rotationYaw * 0.017453292F); + f3 = -f2 * MathHelper.sin(et.rotationPitch * 0.017453292F); + f4 = f1 * MathHelper.sin(et.rotationPitch * 0.017453292F); + f5 = MathHelper.cos(et.rotationPitch * 0.017453292F); + } + } + + @Override + public void drawParticle(float posX, float posY, float posZ, int particleIndexX, int particleIndexY, + int lightMapData, int texSize, float particleSize, int rgba) { + if(particlesHasOverflowed) { + return; + } + if(particleCount >= PARTICLE_LIMIT) { + particlesHasOverflowed = true; + logger.error("Particle buffer has overflowed! Exceeded {} particles, no more particles will be rendered.", PARTICLE_LIMIT); + return; + } + ++particleCount; + ByteBuffer buf = particleBuffer; + buf.putFloat(posX); + buf.putFloat(posY); + buf.putFloat(posZ); + buf.putShort((short)particleIndexX); + buf.putShort((short)particleIndexY); + buf.put((byte)(lightMapData & 0xFF)); + buf.put((byte)((lightMapData >> 16) & 0xFF)); + buf.put((byte)(particleSize * 16.0f)); + buf.put((byte)texSize); + buf.putInt(rgba); + } + + public void destroy() { + if(particleBuffer != null) { + EagRuntime.freeByteBuffer(particleBuffer); + particleBuffer = null; + } + if(shaderProgram != null) { + shaderProgram.destroy(); + shaderProgram = null; + } + if(vertexArray != null) { + _wglDeleteVertexArrays(vertexArray); + vertexArray = null; + } + if(vertexBuffer != null) { + _wglDeleteBuffers(vertexBuffer); + vertexBuffer = null; + } + if(instancesBuffer != null) { + _wglDeleteBuffers(instancesBuffer); + instancesBuffer = null; + } + } +} diff --git a/src/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/dynamiclights/DynamicLightsPipelineCompiler.java b/src/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/dynamiclights/DynamicLightsPipelineCompiler.java new file mode 100755 index 0000000..d906944 --- /dev/null +++ b/src/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/dynamiclights/DynamicLightsPipelineCompiler.java @@ -0,0 +1,105 @@ +package net.lax1dude.eaglercraft.v1_8.opengl.ext.dynamiclights; + +import static net.lax1dude.eaglercraft.v1_8.internal.PlatformOpenGL.*; + +import net.lax1dude.eaglercraft.v1_8.internal.IProgramGL; +import net.lax1dude.eaglercraft.v1_8.internal.buffer.FloatBuffer; +import net.lax1dude.eaglercraft.v1_8.opengl.FixedFunctionShader.FixedFunctionState; +import net.lax1dude.eaglercraft.v1_8.opengl.IExtPipelineCompiler; +import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.program.ShaderSource; +import net.lax1dude.eaglercraft.v1_8.opengl.ext.dynamiclights.program.DynamicLightsExtPipelineShader; +import net.lax1dude.eaglercraft.v1_8.vector.Matrix4f; +import net.minecraft.client.renderer.GLAllocation; + +/** + * Copyright (c) 2024 lax1dude. All Rights Reserved. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + */ +public class DynamicLightsPipelineCompiler implements IExtPipelineCompiler { + + static FloatBuffer matrixCopyBuffer = null; + + private static class PipelineInstance { + + private final int coreBits; + private final int extBits; + + private DynamicLightsExtPipelineShader shader; + + public PipelineInstance(int coreBits, int extBits) { + this.coreBits = coreBits; + this.extBits = extBits; + } + + } + + @Override + public String[] getShaderSource(int stateCoreBits, int stateExtBits, Object[] userPointer) { + if(matrixCopyBuffer == null) { + matrixCopyBuffer = GLAllocation.createDirectFloatBuffer(16); + } + userPointer[0] = new PipelineInstance(stateCoreBits, stateExtBits); + return new String[] { + ShaderSource.getSourceFor(ShaderSource.core_dynamiclights_vsh), + ShaderSource.getSourceFor(ShaderSource.core_dynamiclights_fsh) + }; + } + + @Override + public int getExtensionStatesCount() { + return 0; + } + + @Override + public int getCurrentExtensionStateBits(int stateCoreBits) { + return 0; + } + + @Override + public int getCoreStateMask(int stateExtBits) { + return 0xFFFFFFFF; + } + + @Override + public void initializeNewShader(IProgramGL compiledProg, int stateCoreBits, int stateExtBits, + Object[] userPointer) { + DynamicLightsExtPipelineShader newShader = new DynamicLightsExtPipelineShader(compiledProg, stateCoreBits); + ((PipelineInstance)userPointer[0]).shader = newShader; + newShader.loadUniforms(); + } + + @Override + public void updatePipeline(IProgramGL compiledProg, int stateCoreBits, int stateExtBits, Object[] userPointer) { + if((stateCoreBits & FixedFunctionState.STATE_ENABLE_LIGHTMAP) != 0) { + DynamicLightsExtPipelineShader.Uniforms uniforms = ((PipelineInstance)userPointer[0]).shader.uniforms; + if(uniforms.u_inverseViewMatrix4f != null) { + int serial = DynamicLightsStateManager.inverseViewMatrixSerial; + if(uniforms.inverseViewMatrixSerial != serial) { + uniforms.inverseViewMatrixSerial = serial; + FloatBuffer buf = matrixCopyBuffer; + buf.clear(); + DynamicLightsStateManager.inverseViewMatrix.store(buf); + buf.flip(); + _wglUniformMatrix4fv(uniforms.u_inverseViewMatrix4f, false, buf); + } + } + } + } + + @Override + public void destroyPipeline(IProgramGL shaderProgram, int stateCoreBits, int stateExtBits, Object[] userPointer) { + + } + +} diff --git a/src/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/dynamiclights/DynamicLightsStateManager.java b/src/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/dynamiclights/DynamicLightsStateManager.java new file mode 100755 index 0000000..77fc708 --- /dev/null +++ b/src/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/dynamiclights/DynamicLightsStateManager.java @@ -0,0 +1,169 @@ +package net.lax1dude.eaglercraft.v1_8.opengl.ext.dynamiclights; + +import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; + +import net.lax1dude.eaglercraft.v1_8.opengl.FixedFunctionPipeline; +import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager; +import net.lax1dude.eaglercraft.v1_8.vector.Matrix4f; +import net.minecraft.client.particle.EffectRenderer; +import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; +import net.minecraft.util.MathHelper; + +/** + * Copyright (c) 2024 lax1dude. All Rights Reserved. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + */ +public class DynamicLightsStateManager { + + static final DynamicLightsPipelineCompiler deferredExtPipeline = new DynamicLightsPipelineCompiler(); + static final Map lightRenderers = new HashMap(); + static final List lightRenderList = new LinkedList(); + static final Matrix4f inverseViewMatrix = new Matrix4f(); + static int inverseViewMatrixSerial = 0; + static DynamicLightBucketLoader bucketLoader = null; + static DynamicLightsAcceleratedEffectRenderer accelParticleRenderer = null; + static int lastTotal = 0; + static long renderTimeout = 5000l; + private static long lastTick = 0l; + + public static final void enableDynamicLightsRender() { + if(bucketLoader == null) { + bucketLoader = new DynamicLightBucketLoader(); + bucketLoader.initialize(); + bucketLoader.bindUniformBuffer(0); + FixedFunctionPipeline.loadExtensionPipeline(deferredExtPipeline); + } + if(accelParticleRenderer == null) { + accelParticleRenderer = new DynamicLightsAcceleratedEffectRenderer(); + accelParticleRenderer.initialize(); + } + } + + public static final void bindAcceleratedEffectRenderer(EffectRenderer renderer) { + renderer.acceleratedParticleRenderer = accelParticleRenderer; + } + + public static final void disableDynamicLightsRender(boolean unloadPipeline) { + if(bucketLoader != null) { + bucketLoader.destroy(); + bucketLoader = null; + if(unloadPipeline) { + FixedFunctionPipeline.loadExtensionPipeline(null); + } + } + if(accelParticleRenderer != null) { + accelParticleRenderer.destroy(); + accelParticleRenderer = null; + } + destroyAll(); + lightRenderList.clear(); + } + + public static final boolean isDynamicLightsRender() { + return bucketLoader != null; + } + + public static final boolean isInDynamicLightsPass() { + return GlStateManager.isExtensionPipeline() && bucketLoader != null; + } + + public static final void reportForwardRenderObjectPosition(int centerX, int centerY, int centerZ) { + if(bucketLoader != null) { + bucketLoader.loadLightSourceBucket(centerX, centerY, centerZ); + } + } + + public static final void reportForwardRenderObjectPosition2(float x, float y, float z) { + if(bucketLoader != null) { + float posX = (float)((x + TileEntityRendererDispatcher.staticPlayerX) - (MathHelper.floor_double(TileEntityRendererDispatcher.staticPlayerX / 16.0) << 4)); + float posY = (float)((y + TileEntityRendererDispatcher.staticPlayerY) - (MathHelper.floor_double(TileEntityRendererDispatcher.staticPlayerY / 16.0) << 4)); + float posZ = (float)((z + TileEntityRendererDispatcher.staticPlayerZ) - (MathHelper.floor_double(TileEntityRendererDispatcher.staticPlayerZ / 16.0) << 4)); + bucketLoader.loadLightSourceBucket((int)posX, (int)posY, (int)posZ); + } + } + + public static final void renderDynamicLight(String lightName, double posX, double posY, double posZ, float radius) { + if(bucketLoader != null) { + DynamicLightInstance dl = lightRenderers.get(lightName); + if(dl == null) { + lightRenderers.put(lightName, dl = new DynamicLightInstance(lightName)); + } + dl.updateLight(posX, posY, posZ, radius); + lightRenderList.add(dl); + } + } + + public static final void clearRenderList() { + lightRenderList.clear(); + } + + public static final void commitLightSourceBuckets(double renderPosX, double renderPosY, double renderPosZ) { + updateTimers(); + lastTotal = lightRenderList.size(); + if(bucketLoader != null) { + bucketLoader.clearBuckets(); + int entityChunkOriginX = MathHelper.floor_double(renderPosX / 16.0) << 4; + int entityChunkOriginY = MathHelper.floor_double(renderPosY / 16.0) << 4; + int entityChunkOriginZ = MathHelper.floor_double(renderPosZ / 16.0) << 4; + Iterator itr = lightRenderList.iterator(); + while(itr.hasNext()) { + DynamicLightInstance dl = itr.next(); + float lightChunkPosX = (float)(dl.posX - entityChunkOriginX); + float lightChunkPosY = (float)(dl.posY - entityChunkOriginY); + float lightChunkPosZ = (float)(dl.posZ - entityChunkOriginZ); + bucketLoader.bucketLightSource(lightChunkPosX, lightChunkPosY, lightChunkPosZ, dl); + } + bucketLoader.setRenderPos(renderPosX, renderPosY, renderPosZ); + bucketLoader.truncateOverflowingBuffers(); + } + lightRenderList.clear(); + } + + public static final void setupInverseViewMatrix() { + Matrix4f.invert(GlStateManager.getModelViewReference(), inverseViewMatrix); + inverseViewMatrixSerial = GlStateManager.getModelViewSerial(); + } + + private static final void updateTimers() { + long millis = System.currentTimeMillis(); + if(millis - lastTick > 1000l) { + lastTick = millis; + Iterator itr = lightRenderers.values().iterator(); + while(itr.hasNext()) { + DynamicLightInstance dl = itr.next(); + if(millis - dl.lastCacheHit > renderTimeout) { + dl.destroy(); + itr.remove(); + } + } + } + } + + public static final void destroyAll() { + Iterator itr = lightRenderers.values().iterator(); + while(itr.hasNext()) { + itr.next().destroy(); + } + lightRenderers.clear(); + } + + public static String getF3String() { + return "DynamicLightsTotal: " + lastTotal; + } + +} diff --git a/src/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/dynamiclights/program/DynamicLightsAccelParticleShader.java b/src/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/dynamiclights/program/DynamicLightsAccelParticleShader.java new file mode 100755 index 0000000..65e15c6 --- /dev/null +++ b/src/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/dynamiclights/program/DynamicLightsAccelParticleShader.java @@ -0,0 +1,95 @@ +package net.lax1dude.eaglercraft.v1_8.opengl.ext.dynamiclights.program; + +import static net.lax1dude.eaglercraft.v1_8.internal.PlatformOpenGL.*; +import static net.lax1dude.eaglercraft.v1_8.opengl.RealOpenGLEnums.GL_FRAGMENT_SHADER; +import static net.lax1dude.eaglercraft.v1_8.opengl.RealOpenGLEnums.GL_VERTEX_SHADER; + +import java.util.ArrayList; +import java.util.List; + +import net.lax1dude.eaglercraft.v1_8.internal.IProgramGL; +import net.lax1dude.eaglercraft.v1_8.internal.IShaderGL; +import net.lax1dude.eaglercraft.v1_8.internal.IUniformGL; +import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.program.IProgramUniforms; +import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.program.ShaderCompiler; +import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.program.ShaderProgram; +import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.program.ShaderSource; + +/** + * Copyright (c) 2024 lax1dude. All Rights Reserved. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + */ +public class DynamicLightsAccelParticleShader extends ShaderProgram { + + public static DynamicLightsAccelParticleShader compile() { + IShaderGL accelParticleVSH = ShaderCompiler.compileShader("accel_particle_dynamiclights", GL_VERTEX_SHADER, + ShaderSource.accel_particle_dynamiclights_vsh); + IShaderGL accelParticleFSH = null; + try { + accelParticleFSH = ShaderCompiler.compileShader("accel_particle_dynamiclights", GL_FRAGMENT_SHADER, + ShaderSource.accel_particle_dynamiclights_fsh); + IProgramGL prog = ShaderCompiler.linkProgram("accel_particle_dynamiclights", accelParticleVSH, accelParticleFSH); + return new DynamicLightsAccelParticleShader(prog); + }finally { + if(accelParticleVSH != null) { + accelParticleVSH.free(); + } + if(accelParticleFSH != null) { + accelParticleFSH.free(); + } + } + } + + private DynamicLightsAccelParticleShader(IProgramGL prog) { + super(prog, new Uniforms()); + } + + public static class Uniforms implements IProgramUniforms { + + public IUniformGL u_color4f = null; + public IUniformGL u_modelViewMatrix4f = null; + public IUniformGL u_projectionMatrix4f = null; + public IUniformGL u_inverseViewMatrix4f = null; + public IUniformGL u_texCoordSize2f_particleSize1f = null; + public IUniformGL u_transformParam_1_2_5_f = null; + public IUniformGL u_transformParam_3_4_f = null; + + public int u_chunkLightingDataBlockBinding = -1; + + private Uniforms() { + } + + @Override + public void loadUniforms(IProgramGL prog) { + u_modelViewMatrix4f = _wglGetUniformLocation(prog, "u_modelViewMatrix4f"); + u_projectionMatrix4f = _wglGetUniformLocation(prog, "u_projectionMatrix4f"); + u_inverseViewMatrix4f = _wglGetUniformLocation(prog, "u_inverseViewMatrix4f"); + u_texCoordSize2f_particleSize1f = _wglGetUniformLocation(prog, "u_texCoordSize2f_particleSize1f"); + u_transformParam_1_2_5_f = _wglGetUniformLocation(prog, "u_transformParam_1_2_5_f"); + u_transformParam_3_4_f = _wglGetUniformLocation(prog, "u_transformParam_3_4_f"); + u_color4f = _wglGetUniformLocation(prog, "u_color4f"); + _wglUniform1i(_wglGetUniformLocation(prog, "u_inputTexture"), 0); + _wglUniform1i(_wglGetUniformLocation(prog, "u_lightmapTexture"), 1); + int blockIndex = _wglGetUniformBlockIndex(prog, "u_chunkLightingData"); + if(blockIndex != -1) { + _wglUniformBlockBinding(prog, blockIndex, 0); + u_chunkLightingDataBlockBinding = 0; + }else { + u_chunkLightingDataBlockBinding = -1; + } + } + + } + +} diff --git a/src/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/dynamiclights/program/DynamicLightsExtPipelineShader.java b/src/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/dynamiclights/program/DynamicLightsExtPipelineShader.java new file mode 100755 index 0000000..283b232 --- /dev/null +++ b/src/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/dynamiclights/program/DynamicLightsExtPipelineShader.java @@ -0,0 +1,58 @@ +package net.lax1dude.eaglercraft.v1_8.opengl.ext.dynamiclights.program; + +import static net.lax1dude.eaglercraft.v1_8.internal.PlatformOpenGL.*; + +import net.lax1dude.eaglercraft.v1_8.internal.IProgramGL; +import net.lax1dude.eaglercraft.v1_8.internal.IUniformGL; +import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.program.IProgramUniforms; +import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.program.ShaderProgram; + +/** + * Copyright (c) 2024 lax1dude. All Rights Reserved. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + */ +public class DynamicLightsExtPipelineShader extends ShaderProgram { + + public final int coreState; + + public DynamicLightsExtPipelineShader(IProgramGL program, int coreState) { + super(program, new Uniforms()); + this.coreState = coreState; + } + + public static class Uniforms implements IProgramUniforms { + + public int u_chunkLightingDataBlockBinding = -1; + + public int inverseViewMatrixSerial = -1; + public IUniformGL u_inverseViewMatrix4f = null; + + Uniforms() { + } + + @Override + public void loadUniforms(IProgramGL prog) { + u_inverseViewMatrix4f = _wglGetUniformLocation(prog, "u_inverseViewMatrix4f"); + int blockIndex = _wglGetUniformBlockIndex(prog, "u_chunkLightingData"); + if(blockIndex != -1) { + _wglUniformBlockBinding(prog, blockIndex, 0); + u_chunkLightingDataBlockBinding = 0; + }else { + u_chunkLightingDataBlockBinding = -1; + } + } + + } + +} diff --git a/src/main/java/net/lax1dude/eaglercraft/v1_8/sp/SingleplayerServerController.java b/src/main/java/net/lax1dude/eaglercraft/v1_8/sp/SingleplayerServerController.java index b658eba..11a0e24 100755 --- a/src/main/java/net/lax1dude/eaglercraft/v1_8/sp/SingleplayerServerController.java +++ b/src/main/java/net/lax1dude/eaglercraft/v1_8/sp/SingleplayerServerController.java @@ -70,6 +70,8 @@ public class SingleplayerServerController implements ISaveFormat { public static final ClientIntegratedServerNetworkManager localPlayerNetworkManager = new ClientIntegratedServerNetworkManager(PLAYER_CHANNEL); private static final List openLANChannels = new ArrayList(); + private static final IPCPacketManager packetManagerInstance = new IPCPacketManager(); + private SingleplayerServerController() { } @@ -247,7 +249,7 @@ public class SingleplayerServerController implements ISaveFormat { if(packetData.channel.equals(SingleplayerServerController.IPC_CHANNEL)) { IPCPacketBase ipc; try { - ipc = IPCPacketManager.IPCDeserialize(packetData.contents); + ipc = packetManagerInstance.IPCDeserialize(packetData.contents); }catch(IOException ex) { throw new RuntimeException("Failed to deserialize IPC packet", ex); } @@ -402,7 +404,7 @@ public class SingleplayerServerController implements ISaveFormat { public static void sendIPCPacket(IPCPacketBase ipc) { byte[] pkt; try { - pkt = IPCPacketManager.IPCSerialize(ipc); + pkt = packetManagerInstance.IPCSerialize(ipc); }catch (IOException ex) { throw new RuntimeException("Failed to serialize IPC packet", ex); } diff --git a/src/main/java/net/lax1dude/eaglercraft/v1_8/sp/gui/GuiScreenBackupWorldSelection.java b/src/main/java/net/lax1dude/eaglercraft/v1_8/sp/gui/GuiScreenBackupWorldSelection.java index 2787d9c..0b8e192 100755 --- a/src/main/java/net/lax1dude/eaglercraft/v1_8/sp/gui/GuiScreenBackupWorldSelection.java +++ b/src/main/java/net/lax1dude/eaglercraft/v1_8/sp/gui/GuiScreenBackupWorldSelection.java @@ -11,6 +11,7 @@ import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.GuiYesNo; import net.minecraft.client.resources.I18n; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.storage.WorldInfo; /** @@ -38,6 +39,7 @@ public class GuiScreenBackupWorldSelection extends GuiScreen { private GuiButton worldConvert = null; private GuiButton worldBackup = null; private long worldSeed; + private boolean oldRNG; private NBTTagCompound levelDat; private String worldName; @@ -47,6 +49,7 @@ public class GuiScreenBackupWorldSelection extends GuiScreen { this.worldName = worldName; this.levelDat = levelDat; this.worldSeed = levelDat.getCompoundTag("Data").getLong("RandomSeed"); + this.oldRNG = levelDat.getCompoundTag("Data").getInteger("eaglerVersionSerial") == 0; } public void initGui() { @@ -62,7 +65,11 @@ public class GuiScreenBackupWorldSelection extends GuiScreen { this.drawDefaultBackground(); this.drawCenteredString(this.fontRendererObj, I18n.format("singleplayer.backup.title", worldName), this.width / 2, this.height / 5 - 35, 16777215); - this.drawCenteredString(this.fontRendererObj, I18n.format("singleplayer.backup.seed") + " " + worldSeed, this.width / 2, this.height / 5 + 62, 0xAAAAFF); + if(oldRNG) { + this.drawCenteredString(this.fontRendererObj, I18n.format("singleplayer.backup.seed") + " " + worldSeed + " " + EnumChatFormatting.RED + "(pre-u34)", this.width / 2, this.height / 5 + 62, 0xAAAAFF); + }else { + this.drawCenteredString(this.fontRendererObj, I18n.format("singleplayer.backup.seed") + " " + worldSeed, this.width / 2, this.height / 5 + 62, 0xAAAAFF); + } int toolTipColor = 0xDDDDAA; if(worldRecreate.isMouseOver()) { @@ -85,8 +92,13 @@ public class GuiScreenBackupWorldSelection extends GuiScreen { this.mc.displayGuiScreen(selectWorld); }else if(par1GuiButton.id == 1) { GuiCreateWorld cw = new GuiCreateWorld(selectWorld); - cw.func_146318_a(new WorldInfo(this.levelDat.getCompoundTag("Data"))); - this.mc.displayGuiScreen(cw); + WorldInfo inf = new WorldInfo(this.levelDat.getCompoundTag("Data")); + cw.func_146318_a(inf); + if(inf.isOldEaglercraftRandom()) { + this.mc.displayGuiScreen(new GuiScreenOldSeedWarning(cw)); + }else { + this.mc.displayGuiScreen(cw); + } }else if(par1GuiButton.id == 2) { this.mc.displayGuiScreen(new GuiRenameWorld(this.selectWorld, this.worldName, true)); }else if(par1GuiButton.id == 3) { diff --git a/src/main/java/net/lax1dude/eaglercraft/v1_8/sp/gui/GuiScreenOldSeedWarning.java b/src/main/java/net/lax1dude/eaglercraft/v1_8/sp/gui/GuiScreenOldSeedWarning.java new file mode 100755 index 0000000..1ced89b --- /dev/null +++ b/src/main/java/net/lax1dude/eaglercraft/v1_8/sp/gui/GuiScreenOldSeedWarning.java @@ -0,0 +1,48 @@ +package net.lax1dude.eaglercraft.v1_8.sp.gui; + +import net.minecraft.client.gui.GuiButton; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.resources.I18n; + +/** + * Copyright (c) 2024 lax1dude. All Rights Reserved. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + */ +public class GuiScreenOldSeedWarning extends GuiScreen { + + private final GuiScreen cont; + + public GuiScreenOldSeedWarning(GuiScreen cont) { + this.cont = cont; + } + + public void initGui() { + this.buttonList.clear(); + this.buttonList.add(new GuiButton(0, this.width / 2 - 100, this.height / 6 + 96, I18n.format("singleplayer.oldseedwarning.ok"))); + } + + public void drawScreen(int par1, int par2, float par3) { + this.drawDefaultBackground(); + this.drawCenteredString(fontRendererObj, I18n.format("singleplayer.oldseedwarning.title"), this.width / 2, 70, 11184810); + this.drawCenteredString(fontRendererObj, I18n.format("singleplayer.oldseedwarning.msg1"), this.width / 2, 90, 16777215); + this.drawCenteredString(fontRendererObj, I18n.format("singleplayer.oldseedwarning.msg2"), this.width / 2, 105, 16777215); + super.drawScreen(par1, par2, par3); + } + + protected void actionPerformed(GuiButton par1GuiButton) { + if(par1GuiButton.id == 0) { + this.mc.displayGuiScreen(cont); + } + } +} diff --git a/src/main/java/net/lax1dude/eaglercraft/v1_8/sp/ipc/IPCPacketManager.java b/src/main/java/net/lax1dude/eaglercraft/v1_8/sp/ipc/IPCPacketManager.java index 65a9539..97684df 100755 --- a/src/main/java/net/lax1dude/eaglercraft/v1_8/sp/ipc/IPCPacketManager.java +++ b/src/main/java/net/lax1dude/eaglercraft/v1_8/sp/ipc/IPCPacketManager.java @@ -25,11 +25,11 @@ public class IPCPacketManager { public static final HashMap> mappings = new HashMap(); - public static final IPCInputStream IPC_INPUT_STREAM = new IPCInputStream(); - public static final IPCOutputStream IPC_OUTPUT_STREAM = new IPCOutputStream(); + public final IPCInputStream IPC_INPUT_STREAM = new IPCInputStream(); + public final IPCOutputStream IPC_OUTPUT_STREAM = new IPCOutputStream(); - public static final DataInputStream IPC_DATA_INPUT_STREAM = new DataInputStream(IPC_INPUT_STREAM); - public static final DataOutputStream IPC_DATA_OUTPUT_STREAM = new DataOutputStream(IPC_OUTPUT_STREAM); + public final DataInputStream IPC_DATA_INPUT_STREAM = new DataInputStream(IPC_INPUT_STREAM); + public final DataOutputStream IPC_DATA_OUTPUT_STREAM = new DataOutputStream(IPC_OUTPUT_STREAM); static { mappings.put(IPCPacket00StartServer.ID, IPCPacket00StartServer::new); @@ -60,7 +60,7 @@ public class IPCPacketManager { mappings.put(IPCPacketFFProcessKeepAlive.ID, IPCPacketFFProcessKeepAlive::new); } - public static byte[] IPCSerialize(IPCPacketBase pkt) throws IOException { + public byte[] IPCSerialize(IPCPacketBase pkt) throws IOException { IPC_OUTPUT_STREAM.feedBuffer(new byte[pkt.size() + 1], pkt.getClass().getSimpleName()); IPC_OUTPUT_STREAM.write(pkt.id()); @@ -69,7 +69,7 @@ public class IPCPacketManager { return IPC_OUTPUT_STREAM.returnBuffer(); } - public static IPCPacketBase IPCDeserialize(byte[] pkt) throws IOException { + public IPCPacketBase IPCDeserialize(byte[] pkt) throws IOException { IPC_INPUT_STREAM.feedBuffer(pkt); int i = IPC_INPUT_STREAM.read(); diff --git a/src/main/java/net/lax1dude/eaglercraft/v1_8/sp/server/EaglerIntegratedServerWorker.java b/src/main/java/net/lax1dude/eaglercraft/v1_8/sp/server/EaglerIntegratedServerWorker.java index b54c7e3..16698c7 100755 --- a/src/main/java/net/lax1dude/eaglercraft/v1_8/sp/server/EaglerIntegratedServerWorker.java +++ b/src/main/java/net/lax1dude/eaglercraft/v1_8/sp/server/EaglerIntegratedServerWorker.java @@ -60,6 +60,8 @@ public class EaglerIntegratedServerWorker { private static final Map openChannels = new HashMap(); + private static final IPCPacketManager packetManagerInstance = new IPCPacketManager(); + private static void processAsyncMessageQueue() { List pktList = ServerPlatformSingleplayer.recieveAllPacket(); if(pktList != null) { @@ -69,7 +71,7 @@ public class EaglerIntegratedServerWorker { if(packetData.channel.equals(SingleplayerServerController.IPC_CHANNEL)) { IPCPacketBase ipc; try { - ipc = IPCPacketManager.IPCDeserialize(packetData.contents); + ipc = packetManagerInstance.IPCDeserialize(packetData.contents); }catch(IOException ex) { throw new RuntimeException("Failed to deserialize IPC packet", ex); } @@ -422,7 +424,7 @@ public class EaglerIntegratedServerWorker { public static void sendIPCPacket(IPCPacketBase ipc) { byte[] pkt; try { - pkt = IPCPacketManager.IPCSerialize(ipc); + pkt = packetManagerInstance.IPCSerialize(ipc); }catch (IOException ex) { throw new RuntimeException("Failed to serialize IPC packet", ex); } diff --git a/src/main/java/net/lax1dude/eaglercraft/v1_8/sp/server/export/WorldConverterEPK.java b/src/main/java/net/lax1dude/eaglercraft/v1_8/sp/server/export/WorldConverterEPK.java index c20629c..8b92ba0 100755 --- a/src/main/java/net/lax1dude/eaglercraft/v1_8/sp/server/export/WorldConverterEPK.java +++ b/src/main/java/net/lax1dude/eaglercraft/v1_8/sp/server/export/WorldConverterEPK.java @@ -12,6 +12,7 @@ import net.lax1dude.eaglercraft.v1_8.sp.server.EaglerIntegratedServerWorker; import net.lax1dude.eaglercraft.v1_8.sp.server.EaglerSaveFormat; import net.minecraft.nbt.CompressedStreamTools; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.storage.WorldInfo; /** * Copyright (c) 2022-2024 lax1dude, ayunami2000. All Rights Reserved. @@ -66,6 +67,9 @@ public class WorldConverterEPK { NBTTagCompound worldDatNBT = CompressedStreamTools.readCompressed(new EaglerInputStream(b)); worldDatNBT.getCompoundTag("Data").setString("LevelName", newName); worldDatNBT.getCompoundTag("Data").setLong("LastPlayed", System.currentTimeMillis()); + if(has152Format) { + WorldInfo.initEaglerVersion(worldDatNBT.getCompoundTag("Data")); + } EaglerOutputStream tmp = new EaglerOutputStream(); CompressedStreamTools.writeCompressed(worldDatNBT, tmp); b = tmp.toByteArray(); diff --git a/src/main/java/net/lax1dude/eaglercraft/v1_8/sp/server/export/WorldConverterMCA.java b/src/main/java/net/lax1dude/eaglercraft/v1_8/sp/server/export/WorldConverterMCA.java index e3dedac..d4ddac5 100755 --- a/src/main/java/net/lax1dude/eaglercraft/v1_8/sp/server/export/WorldConverterMCA.java +++ b/src/main/java/net/lax1dude/eaglercraft/v1_8/sp/server/export/WorldConverterMCA.java @@ -20,6 +20,7 @@ import net.lax1dude.eaglercraft.v1_8.sp.server.EaglerChunkLoader; import net.lax1dude.eaglercraft.v1_8.sp.server.EaglerIntegratedServerWorker; import net.lax1dude.eaglercraft.v1_8.sp.server.EaglerSaveFormat; import net.minecraft.world.chunk.storage.RegionFile; +import net.minecraft.world.storage.WorldInfo; import net.minecraft.nbt.CompressedStreamTools; import net.minecraft.nbt.NBTTagCompound; @@ -98,9 +99,9 @@ public class WorldConverterMCA { gameRulesNBT.setString("colorCodes", s); gameRulesNBT.setString("doSignEditing", s); worldDatNBT.getCompoundTag("Data").setTag("GameRules", gameRulesNBT); - worldDatNBT.getCompoundTag("Data").setString("LevelName", newName); worldDatNBT.getCompoundTag("Data").setLong("LastPlayed", System.currentTimeMillis()); + WorldInfo.initEaglerVersion(worldDatNBT.getCompoundTag("Data")); EaglerOutputStream bo = new EaglerOutputStream(); CompressedStreamTools.writeCompressed(worldDatNBT, bo); b = bo.toByteArray(); diff --git a/src/main/java/net/minecraft/client/Minecraft.java b/src/main/java/net/minecraft/client/Minecraft.java index 138c897..1e8da4f 100755 --- a/src/main/java/net/minecraft/client/Minecraft.java +++ b/src/main/java/net/minecraft/client/Minecraft.java @@ -750,7 +750,18 @@ public class Minecraft implements IThreadListener { } this.mcSoundHandler.unloadSounds(); - SingleplayerServerController.shutdownEaglercraftServer(); + if (SingleplayerServerController.isWorldRunning()) { + SingleplayerServerController.shutdownEaglercraftServer(); + while (SingleplayerServerController.getStatusState() == IntegratedServerState.WORLD_UNLOADING) { + EagUtils.sleep(50l); + SingleplayerServerController.runTick(); + } + } + if (SingleplayerServerController.isIntegratedServerWorkerAlive() + && SingleplayerServerController.canKillWorker()) { + SingleplayerServerController.killWorker(); + EagUtils.sleep(50l); + } } finally { EagRuntime.destroy(); if (!this.hasCrashed) { diff --git a/src/main/java/net/minecraft/client/gui/GuiOverlayDebug.java b/src/main/java/net/minecraft/client/gui/GuiOverlayDebug.java index ced0111..0bb6f9f 100755 --- a/src/main/java/net/minecraft/client/gui/GuiOverlayDebug.java +++ b/src/main/java/net/minecraft/client/gui/GuiOverlayDebug.java @@ -20,6 +20,7 @@ import net.lax1dude.eaglercraft.v1_8.HString; import net.lax1dude.eaglercraft.v1_8.internal.EnumPlatformType; import net.lax1dude.eaglercraft.v1_8.opengl.EaglercraftGPU; import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager; +import net.lax1dude.eaglercraft.v1_8.opengl.ext.dynamiclights.DynamicLightsStateManager; import net.lax1dude.eaglercraft.v1_8.sp.SingleplayerServerController; import net.minecraft.block.Block; import net.minecraft.block.properties.IProperty; @@ -394,6 +395,9 @@ public class GuiOverlayDebug extends Gui { new Object[] { enumfacing, s, Float.valueOf(MathHelper.wrapAngleTo180_float(entity.rotationYaw)), Float.valueOf(MathHelper.wrapAngleTo180_float(entity.rotationPitch)) }) }); + if (DynamicLightsStateManager.isDynamicLightsRender()) { + arraylist.add(6, DynamicLightsStateManager.getF3String()); + } if (this.mc.theWorld != null && this.mc.theWorld.isBlockLoaded(blockpos)) { Chunk chunk = this.mc.theWorld.getChunkFromBlockCoords(blockpos); arraylist.add("Biome: " + chunk.getBiome(blockpos, null).biomeName); diff --git a/src/main/java/net/minecraft/client/gui/GuiVideoSettings.java b/src/main/java/net/minecraft/client/gui/GuiVideoSettings.java index 6e0f47a..38e76f9 100755 --- a/src/main/java/net/minecraft/client/gui/GuiVideoSettings.java +++ b/src/main/java/net/minecraft/client/gui/GuiVideoSettings.java @@ -42,10 +42,10 @@ public class GuiVideoSettings extends GuiScreen { GameSettings.Options.VIEW_BOBBING, GameSettings.Options.GUI_SCALE, GameSettings.Options.GAMMA, GameSettings.Options.RENDER_CLOUDS, GameSettings.Options.PARTICLES, GameSettings.Options.FXAA, GameSettings.Options.MIPMAP_LEVELS, GameSettings.Options.BLOCK_ALTERNATIVES, - GameSettings.Options.ENTITY_SHADOWS, GameSettings.Options.FOG, GameSettings.Options.FULLSCREEN, - GameSettings.Options.FNAW_SKINS, GameSettings.Options.HUD_FPS, GameSettings.Options.HUD_COORDS, - GameSettings.Options.HUD_PLAYER, GameSettings.Options.HUD_STATS, GameSettings.Options.HUD_WORLD, - GameSettings.Options.HUD_24H, GameSettings.Options.CHUNK_FIX }; + GameSettings.Options.ENTITY_SHADOWS, GameSettings.Options.FOG, GameSettings.Options.EAGLER_DYNAMIC_LIGHTS, + GameSettings.Options.FULLSCREEN, GameSettings.Options.FNAW_SKINS, GameSettings.Options.HUD_FPS, + GameSettings.Options.HUD_COORDS, GameSettings.Options.HUD_PLAYER, GameSettings.Options.HUD_STATS, + GameSettings.Options.HUD_WORLD, GameSettings.Options.HUD_24H, GameSettings.Options.CHUNK_FIX }; public GuiVideoSettings(GuiScreen parentScreenIn, GameSettings gameSettingsIn) { this.parentGuiScreen = parentScreenIn; diff --git a/src/main/java/net/minecraft/client/particle/EntityFX.java b/src/main/java/net/minecraft/client/particle/EntityFX.java index ebde0de..0e55c00 100755 --- a/src/main/java/net/minecraft/client/particle/EntityFX.java +++ b/src/main/java/net/minecraft/client/particle/EntityFX.java @@ -280,4 +280,8 @@ public class EntityFX extends Entity { + this.particleRed + "," + this.particleGreen + "," + this.particleBlue + "," + this.particleAlpha + "), Age " + this.particleAge; } + + protected float getEaglerDynamicLightsValueSimple(float partialTicks) { + return 0.0f; + } } \ No newline at end of file diff --git a/src/main/java/net/minecraft/client/renderer/BlockFluidRenderer.java b/src/main/java/net/minecraft/client/renderer/BlockFluidRenderer.java index 6b4c069..4f010ac 100755 --- a/src/main/java/net/minecraft/client/renderer/BlockFluidRenderer.java +++ b/src/main/java/net/minecraft/client/renderer/BlockFluidRenderer.java @@ -4,6 +4,7 @@ import net.lax1dude.eaglercraft.v1_8.minecraft.EaglerTextureAtlasSprite; import net.lax1dude.eaglercraft.v1_8.opengl.WorldRenderer; import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.BlockVertexIDs; import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DeferredStateManager; +import net.lax1dude.eaglercraft.v1_8.opengl.ext.dynamiclights.DynamicLightsStateManager; import net.minecraft.block.Block; import net.minecraft.block.BlockLiquid; import net.minecraft.block.material.Material; @@ -55,6 +56,7 @@ public class BlockFluidRenderer { WorldRenderer worldRendererIn) { BlockPos tmp = new BlockPos(0, 0, 0); boolean deferred = DeferredStateManager.isDeferredRenderer(); + boolean isDynamicLights = deferred || DynamicLightsStateManager.isDynamicLightsRender(); BlockLiquid blockliquid = (BlockLiquid) blockStateIn.getBlock(); boolean lava = blockliquid.getMaterial() == Material.lava; boolean realistic = !lava && DeferredStateManager.isRenderingRealisticWater(); @@ -151,7 +153,7 @@ public class BlockFluidRenderer { .tex((double) f15, (double) f19).lightmap(l2, i3).endVertex(); worldRendererIn.pos(d0 + 1.0D, d1 + (double) f10, d2 + 0.0D).color(f24, f25, f26, 1.0F) .tex((double) f16, (double) f20).lightmap(l2, i3).endVertex(); - if (deferred) + if (isDynamicLights) worldRendererIn.genNormals(true, f12 <= -999.0F ? BlockVertexIDs.builtin_water_still_vertex_id : BlockVertexIDs.builtin_water_flow_vertex_id); @@ -164,7 +166,7 @@ public class BlockFluidRenderer { .tex((double) f15, (double) f19).lightmap(l2, i3).endVertex(); worldRendererIn.pos(d0 + 0.0D, d1 + (double) f8, d2 + 1.0D).color(f24, f25, f26, 1.0F) .tex((double) f14, (double) f18).lightmap(l2, i3).endVertex(); - if (deferred) + if (isDynamicLights) worldRendererIn.genNormals(true, f12 <= -999.0F ? BlockVertexIDs.builtin_water_still_vertex_id : BlockVertexIDs.builtin_water_flow_vertex_id); } @@ -186,7 +188,7 @@ public class BlockFluidRenderer { .lightmap(i2, j2).endVertex(); worldRendererIn.pos(d0 + 1.0D, d1, d2 + 1.0D).color(f3, f3, f3, 1.0F).tex((double) f36, (double) f38) .lightmap(i2, j2).endVertex(); - if (deferred) + if (isDynamicLights) worldRendererIn.putNormal(0.0f, -1.0f, 0.0f, BlockVertexIDs.builtin_water_still_vertex_id); flag2 = true; } @@ -272,7 +274,7 @@ public class BlockFluidRenderer { .lightmap(k, l).endVertex(); worldRendererIn.pos(d3, d1 + 0.0D, d4).color(f32, f33, f34, 1.0F).tex((double) f41, (double) f30) .lightmap(k, l).endVertex(); - if (deferred) + if (isDynamicLights) worldRendererIn.putNormal(j1, 0.0f, k1, BlockVertexIDs.builtin_water_flow_vertex_id); if (!realistic) { worldRendererIn.pos(d3, d1 + 0.0D, d4).color(f32, f33, f34, 1.0F) @@ -283,7 +285,7 @@ public class BlockFluidRenderer { .tex((double) f27, (double) f29).lightmap(k, l).endVertex(); worldRendererIn.pos(d3, d1 + (double) f39, d4).color(f32, f33, f34, 1.0F) .tex((double) f41, (double) f28).lightmap(k, l).endVertex(); - if (deferred) + if (isDynamicLights) worldRendererIn.putNormal(-j1, 0.0f, -k1, BlockVertexIDs.builtin_water_flow_vertex_id); } } diff --git a/src/main/java/net/minecraft/client/renderer/BlockModelRenderer.java b/src/main/java/net/minecraft/client/renderer/BlockModelRenderer.java index 666490f..d7ef196 100755 --- a/src/main/java/net/minecraft/client/renderer/BlockModelRenderer.java +++ b/src/main/java/net/minecraft/client/renderer/BlockModelRenderer.java @@ -7,6 +7,7 @@ import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager; import net.lax1dude.eaglercraft.v1_8.opengl.WorldRenderer; import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DeferredStateManager; import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.VertexMarkerState; +import net.lax1dude.eaglercraft.v1_8.opengl.ext.dynamiclights.DynamicLightsStateManager; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; import net.minecraft.client.Minecraft; @@ -139,6 +140,7 @@ public class BlockModelRenderer { WorldRenderer worldRendererIn, List listQuadsIn, float[] quadBounds, BitSet boundsFlags, BlockModelRenderer.AmbientOcclusionFace aoFaceIn) { boolean isDeferred = DeferredStateManager.isDeferredRenderer(); + boolean isDynamicLights = isDeferred || DynamicLightsStateManager.isDynamicLightsRender(); double d0 = (double) blockPosIn.getX(); double d1 = (double) blockPosIn.getY(); double d2 = (double) blockPosIn.getZ(); @@ -154,8 +156,9 @@ public class BlockModelRenderer { for (int i = 0, l = listQuadsIn.size(); i < l; ++i) { BakedQuad bakedquad = listQuadsIn.get(i); - int[] vertData = isDeferred ? bakedquad.getVertexDataWithNormals() : bakedquad.getVertexData(); - this.fillQuadBounds(blockIn, vertData, bakedquad.getFace(), quadBounds, boundsFlags, isDeferred ? 8 : 7); + int[] vertData = isDynamicLights ? bakedquad.getVertexDataWithNormals() : bakedquad.getVertexData(); + this.fillQuadBounds(blockIn, vertData, bakedquad.getFace(), quadBounds, boundsFlags, + isDynamicLights ? 8 : 7); aoFaceIn.updateVertexBrightness(blockAccessIn, blockIn, blockPosIn, bakedquad.getFace(), quadBounds, boundsFlags); worldRendererIn.addVertexData(vertData); @@ -272,6 +275,7 @@ public class BlockModelRenderer { EnumFacing faceIn, int brightnessIn, boolean ownBrightness, WorldRenderer worldRendererIn, List listQuadsIn, BitSet boundsFlags, float[] quadBounds) { boolean isDeferred = DeferredStateManager.isDeferredRenderer(); + boolean isDynamicLights = isDeferred || DynamicLightsStateManager.isDynamicLightsRender(); double d0 = (double) blockPosIn.getX(); double d1 = (double) blockPosIn.getY(); double d2 = (double) blockPosIn.getZ(); @@ -291,9 +295,9 @@ public class BlockModelRenderer { for (int m = 0, n = listQuadsIn.size(); m < n; ++m) { BakedQuad bakedquad = listQuadsIn.get(m); EnumFacing facingIn = bakedquad.getFace(); - int[] vertData = isDeferred ? bakedquad.getVertexDataWithNormals() : bakedquad.getVertexData(); + int[] vertData = isDynamicLights ? bakedquad.getVertexDataWithNormals() : bakedquad.getVertexData(); blockPosIn.offsetEvenFaster(facingIn, blockpos0); - this.fillQuadBounds(blockIn, vertData, facingIn, quadBounds, boundsFlags, isDeferred ? 8 : 7); + this.fillQuadBounds(blockIn, vertData, facingIn, quadBounds, boundsFlags, isDynamicLights ? 8 : 7); boolean boundsFlags0 = boundsFlags.get(0); if (ownBrightness) { brightnessIn = boundsFlags0 ? blockIn.getMixedBrightnessForBlock(blockAccessIn, blockpos0) diff --git a/src/main/java/net/minecraft/client/renderer/ChunkRenderContainer.java b/src/main/java/net/minecraft/client/renderer/ChunkRenderContainer.java index b71a2b4..fe70e7e 100755 --- a/src/main/java/net/minecraft/client/renderer/ChunkRenderContainer.java +++ b/src/main/java/net/minecraft/client/renderer/ChunkRenderContainer.java @@ -6,6 +6,7 @@ import com.google.common.collect.Lists; import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager; import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DeferredStateManager; +import net.lax1dude.eaglercraft.v1_8.opengl.ext.dynamiclights.DynamicLightsStateManager; import net.minecraft.client.renderer.chunk.RenderChunk; import net.minecraft.util.BlockPos; import net.minecraft.util.EnumWorldBlockLayer; @@ -53,10 +54,15 @@ public abstract class ChunkRenderContainer { float posZ = (float) ((double) blockpos.getZ() - this.viewEntityZ); GlStateManager.translate(posX, posY, posZ); if (DeferredStateManager.isInForwardPass()) { - posX = (float) (blockpos.getX() - (MathHelper.floor_double(this.viewEntityX / 16.0) << 4)); // TODO + posX = (float) (blockpos.getX() - (MathHelper.floor_double(this.viewEntityX / 16.0) << 4)); posY = (float) (blockpos.getY() - (MathHelper.floor_double(this.viewEntityY / 16.0) << 4)); posZ = (float) (blockpos.getZ() - (MathHelper.floor_double(this.viewEntityZ / 16.0) << 4)); DeferredStateManager.reportForwardRenderObjectPosition((int) posX, (int) posY, (int) posZ); + } else if (DynamicLightsStateManager.isInDynamicLightsPass()) { + posX = (float) (blockpos.getX() - (MathHelper.floor_double(this.viewEntityX / 16.0) << 4)); + posY = (float) (blockpos.getY() - (MathHelper.floor_double(this.viewEntityY / 16.0) << 4)); + posZ = (float) (blockpos.getZ() - (MathHelper.floor_double(this.viewEntityZ / 16.0) << 4)); + DynamicLightsStateManager.reportForwardRenderObjectPosition((int) posX, (int) posY, (int) posZ); } } diff --git a/src/main/java/net/minecraft/client/renderer/EntityRenderer.java b/src/main/java/net/minecraft/client/renderer/EntityRenderer.java index 9bcdc15..1a6604a 100755 --- a/src/main/java/net/minecraft/client/renderer/EntityRenderer.java +++ b/src/main/java/net/minecraft/client/renderer/EntityRenderer.java @@ -33,6 +33,7 @@ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.NameTagRenderer; import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.ShadersRenderPassFuture; import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.gui.GuiShaderConfig; import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.texture.EmissiveItems; +import net.lax1dude.eaglercraft.v1_8.opengl.ext.dynamiclights.DynamicLightsStateManager; import net.lax1dude.eaglercraft.v1_8.vector.Vector4f; import net.lax1dude.eaglercraft.v1_8.voice.VoiceTagRenderer; import net.lax1dude.eaglercraft.v1_8.vector.Matrix4f; @@ -653,6 +654,9 @@ public class EntityRenderer implements IResourceManagerReloadListener { */ private void renderHand(float partialTicks, int xOffset) { if (!this.debugView) { + if (DynamicLightsStateManager.isInDynamicLightsPass()) { + DynamicLightsStateManager.reportForwardRenderObjectPosition2(0.0f, 0.0f, 0.0f); + } GlStateManager.matrixMode(GL_PROJECTION); GlStateManager.loadIdentity(); float f = 0.07F; @@ -848,7 +852,8 @@ public class EntityRenderer implements IResourceManagerReloadListener { GlStateManager.setActiveTexture(OpenGlHelper.lightmapTexUnit); this.mc.getTextureManager().bindTexture(this.locationLightMap); - if (mc.gameSettings.fancyGraphics || mc.gameSettings.ambientOcclusion > 0) { + if (mc.gameSettings.fancyGraphics || mc.gameSettings.ambientOcclusion > 0 + || DynamicLightsStateManager.isDynamicLightsRender()) { EaglercraftGPU.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); EaglercraftGPU.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); } else { @@ -1098,14 +1103,27 @@ public class EntityRenderer implements IResourceManagerReloadListener { GlStateManager.enableAlpha(); GlStateManager.alphaFunc(GL_GREATER, 0.5F); this.mc.mcProfiler.startSection("center"); + boolean dlights = DynamicLightsStateManager.isDynamicLightsRender(); + if (dlights) { + updateDynamicLightListEagler(partialTicks); + } if (this.mc.gameSettings.anaglyph && !this.mc.gameSettings.shaders) { - anaglyphField = 0; - GlStateManager.colorMask(false, true, true, false); - this.renderWorldPass(0, partialTicks, finishTimeNano); - anaglyphField = 1; - GlStateManager.colorMask(true, false, false, false); - this.renderWorldPass(1, partialTicks, finishTimeNano); - GlStateManager.colorMask(true, true, true, false); + if (dlights) { + GlStateManager.enableExtensionPipeline(); + } + try { + anaglyphField = 0; + GlStateManager.colorMask(false, true, true, false); + this.renderWorldPass(0, partialTicks, finishTimeNano); + anaglyphField = 1; + GlStateManager.colorMask(true, false, false, false); + this.renderWorldPass(1, partialTicks, finishTimeNano); + GlStateManager.colorMask(true, true, true, false); + } finally { + if (dlights) { + GlStateManager.disableExtensionPipeline(); + } + } } else { if (this.mc.gameSettings.shaders) { try { @@ -1121,7 +1139,16 @@ public class EntityRenderer implements IResourceManagerReloadListener { mc.effectRenderer.acceleratedParticleRenderer = EffectRenderer.vanillaAcceleratedParticleRenderer; } else { mc.effectRenderer.acceleratedParticleRenderer = EffectRenderer.vanillaAcceleratedParticleRenderer; - this.renderWorldPass(2, partialTicks, finishTimeNano); + if (dlights) { + GlStateManager.enableExtensionPipeline(); + } + try { + this.renderWorldPass(2, partialTicks, finishTimeNano); + } finally { + if (dlights) { + GlStateManager.disableExtensionPipeline(); + } + } } } @@ -1143,6 +1170,10 @@ public class EntityRenderer implements IResourceManagerReloadListener { GlStateManager.clear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); this.mc.mcProfiler.endStartSection("camera"); this.setupCameraTransform(partialTicks, pass); + boolean isDynamicLights = DynamicLightsStateManager.isDynamicLightsRender(); + if (isDynamicLights) { + DynamicLightsStateManager.setupInverseViewMatrix(); + } ActiveRenderInfo.updateRenderInfo(this.mc.thePlayer, this.mc.gameSettings.thirdPersonView == 2); this.mc.mcProfiler.endStartSection("culling"); Frustum frustum = new Frustum(); @@ -1150,6 +1181,9 @@ public class EntityRenderer implements IResourceManagerReloadListener { double d0 = entity.lastTickPosX + (entity.posX - entity.lastTickPosX) * (double) partialTicks; double d1 = entity.lastTickPosY + (entity.posY - entity.lastTickPosY) * (double) partialTicks; double d2 = entity.lastTickPosZ + (entity.posZ - entity.lastTickPosZ) * (double) partialTicks; + TileEntityRendererDispatcher.staticPlayerX = d0; // hack, needed for some eagler stuff + TileEntityRendererDispatcher.staticPlayerY = d1; + TileEntityRendererDispatcher.staticPlayerZ = d2; frustum.setPosition(d0, d1, d2); if (this.mc.gameSettings.renderDistanceChunks >= 4) { this.setupFog(-1, partialTicks); @@ -1215,8 +1249,14 @@ public class EntityRenderer implements IResourceManagerReloadListener { EntityPlayer entityplayer = (EntityPlayer) entity; GlStateManager.disableAlpha(); this.mc.mcProfiler.endStartSection("outline"); + if (isDynamicLights) { + GlStateManager.disableExtensionPipeline(); + } renderglobal.drawSelectionBox(entityplayer, this.mc.objectMouseOver, 0, partialTicks); GlStateManager.enableAlpha(); + if (isDynamicLights) { + GlStateManager.enableExtensionPipeline(); + } } } @@ -1225,9 +1265,15 @@ public class EntityRenderer implements IResourceManagerReloadListener { if (flag && this.mc.objectMouseOver != null && !entity.isInsideOfMaterial(Material.water)) { EntityPlayer entityplayer1 = (EntityPlayer) entity; GlStateManager.disableAlpha(); + if (isDynamicLights) { + GlStateManager.disableExtensionPipeline(); + } this.mc.mcProfiler.endStartSection("outline"); renderglobal.drawSelectionBox(entityplayer1, this.mc.objectMouseOver, 0, partialTicks); GlStateManager.enableAlpha(); + if (isDynamicLights) { + GlStateManager.enableExtensionPipeline(); + } } this.mc.mcProfiler.endStartSection("destroyProgress"); @@ -1245,7 +1291,14 @@ public class EntityRenderer implements IResourceManagerReloadListener { RenderHelper.disableStandardItemLighting(); this.setupFog(0, partialTicks); this.mc.mcProfiler.endStartSection("particles"); + if (isDynamicLights) { + DynamicLightsStateManager.bindAcceleratedEffectRenderer(effectrenderer); + DynamicLightsStateManager.reportForwardRenderObjectPosition2(0.0f, 0.0f, 0.0f); + } effectrenderer.renderParticles(entity, partialTicks, 2); + if (isDynamicLights) { + effectrenderer.acceleratedParticleRenderer = null; + } this.disableLightmap(); } @@ -1285,6 +1338,20 @@ public class EntityRenderer implements IResourceManagerReloadListener { } + private void updateDynamicLightListEagler(float partialTicks) { + DynamicLightsStateManager.clearRenderList(); + Entity entity = this.mc.getRenderViewEntity(); + double d0 = entity.lastTickPosX + (entity.posX - entity.lastTickPosX) * (double) partialTicks; + double d1 = entity.lastTickPosY + (entity.posY - entity.lastTickPosY) * (double) partialTicks; + double d2 = entity.lastTickPosZ + (entity.posZ - entity.lastTickPosZ) * (double) partialTicks; + AxisAlignedBB entityAABB = new AxisAlignedBB(d0 - 48.0, d1 - 32.0, d2 - 48.0, d0 + 48.0, d1 + 32.0, d2 + 48.0); + List entities = this.mc.theWorld.getEntitiesWithinAABB(Entity.class, entityAABB); + for (int i = 0, l = entities.size(); i < l; ++i) { + entities.get(i).renderDynamicLightsEaglerSimple(partialTicks); + } + DynamicLightsStateManager.commitLightSourceBuckets(d0, d1, d2); + } + private void renderCloudsCheck(RenderGlobal renderGlobalIn, float partialTicks, int pass) { if (this.mc.gameSettings.func_181147_e() != 0) { this.mc.mcProfiler.endStartSection("clouds"); @@ -1398,6 +1465,9 @@ public class EntityRenderer implements IResourceManagerReloadListener { GlStateManager.enableBlend(); GlStateManager.tryBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, 1, 0); GlStateManager.alphaFunc(GL_GREATER, 0.1F); + if (DynamicLightsStateManager.isInDynamicLightsPass()) { + DynamicLightsStateManager.reportForwardRenderObjectPosition2(0.0f, 0.0f, 0.0f); + } } else { GlStateManager.enableAlpha(); DeferredStateManager.setHDRTranslucentPassBlendFunc(); diff --git a/src/main/java/net/minecraft/client/renderer/RenderGlobal.java b/src/main/java/net/minecraft/client/renderer/RenderGlobal.java index d8f42f3..bb9623f 100755 --- a/src/main/java/net/minecraft/client/renderer/RenderGlobal.java +++ b/src/main/java/net/minecraft/client/renderer/RenderGlobal.java @@ -32,6 +32,7 @@ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DynamicLightManager; import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.EaglerDeferredConfig; import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.EaglerDeferredPipeline; import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.program.SharedPipelineShaders; +import net.lax1dude.eaglercraft.v1_8.opengl.ext.dynamiclights.DynamicLightsStateManager; import net.lax1dude.eaglercraft.v1_8.vector.Vector3f; import net.lax1dude.eaglercraft.v1_8.vector.Vector4f; import net.minecraft.block.Block; @@ -466,6 +467,16 @@ public class RenderGlobal implements IWorldAccess, IResourceManagerReloadListene } SharedPipelineShaders.free(); } + + if (DeferredStateManager.isDeferredRenderer()) { + DynamicLightsStateManager.disableDynamicLightsRender(false); + } else { + if (mc.gameSettings.enableDynamicLights) { + DynamicLightsStateManager.enableDynamicLightsRender(); + } else { + DynamicLightsStateManager.disableDynamicLightsRender(true); + } + } } } @@ -1948,8 +1959,10 @@ public class RenderGlobal implements IWorldAccess, IResourceManagerReloadListene if (!this.damagedBlocks.isEmpty()) { this.renderEngine.bindTexture(TextureMap.locationBlocksTexture); this.preRenderDamagedBlocks(); - worldRendererIn.begin(7, DeferredStateManager.isDeferredRenderer() ? VertexFormat.BLOCK_SHADERS - : DefaultVertexFormats.BLOCK); + worldRendererIn.begin(7, + (DeferredStateManager.isDeferredRenderer() || DynamicLightsStateManager.isDynamicLightsRender()) + ? VertexFormat.BLOCK_SHADERS + : DefaultVertexFormats.BLOCK); worldRendererIn.setTranslation(-d0, -d1, -d2); worldRendererIn.markDirty(); Iterator iterator = this.damagedBlocks.values().iterator(); @@ -1971,6 +1984,10 @@ public class RenderGlobal implements IWorldAccess, IResourceManagerReloadListene int i = destroyblockprogress.getPartialBlockDamage(); EaglerTextureAtlasSprite textureatlassprite = this.destroyBlockIcons[i]; BlockRendererDispatcher blockrendererdispatcher = this.mc.getBlockRendererDispatcher(); + if (DynamicLightsStateManager.isInDynamicLightsPass()) { + DynamicLightsStateManager.reportForwardRenderObjectPosition2(blockpos.x, blockpos.y, + blockpos.z); + } blockrendererdispatcher.renderBlockDamage(iblockstate, blockpos, textureatlassprite, this.theWorld); } diff --git a/src/main/java/net/minecraft/client/renderer/block/model/FaceBakery.java b/src/main/java/net/minecraft/client/renderer/block/model/FaceBakery.java index 86eb5bb..28a1387 100755 --- a/src/main/java/net/minecraft/client/renderer/block/model/FaceBakery.java +++ b/src/main/java/net/minecraft/client/renderer/block/model/FaceBakery.java @@ -5,6 +5,7 @@ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.VertexMarkerState; import net.lax1dude.eaglercraft.v1_8.vector.Matrix4f; import net.lax1dude.eaglercraft.v1_8.vector.Vector3f; import net.lax1dude.eaglercraft.v1_8.vector.Vector4f; +import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.EnumFaceDirection; import net.minecraft.client.resources.model.ModelRotation; import net.minecraft.util.EnumFacing; @@ -119,7 +120,9 @@ public class FaceBakery { float[] sprite, EaglerTextureAtlasSprite modelRotationIn, ModelRotation partRotation, BlockPartRotation uvLocked, boolean shade, boolean parFlag2, Vector3f calcNormal) { EnumFacing enumfacing = partRotation.rotateFace(facing); - int i = (parFlag2 && stride != 8) ? this.getFaceShadeColor(enumfacing) : -1; + int i = (parFlag2 && (stride != 8 || !Minecraft.getMinecraft().gameSettings.shaders)) + ? this.getFaceShadeColor(enumfacing) + : -1; EnumFaceDirection.VertexInformation enumfacedirection$vertexinformation = EnumFaceDirection.getFacing(facing) .func_179025_a(vertexIndex); Vector3f vector3f = new Vector3f(sprite[enumfacedirection$vertexinformation.field_179184_a], @@ -139,9 +142,15 @@ public class FaceBakery { faceData[i + 4 + 1] = Float .floatToRawIntBits(sprite.getInterpolatedV((double) faceUV.func_178346_b(vertexIndex))); if (stride == 8) { - faceData[i] = Float.floatToRawIntBits(position.x * VertexMarkerState.localCoordDeriveHackX); - faceData[i + 1] = Float.floatToRawIntBits(position.y * VertexMarkerState.localCoordDeriveHackY); - faceData[i + 2] = Float.floatToRawIntBits(position.z * VertexMarkerState.localCoordDeriveHackZ); + if (!Minecraft.getMinecraft().gameSettings.shaders) { + faceData[i] = Float.floatToRawIntBits(position.x); + faceData[i + 1] = Float.floatToRawIntBits(position.y); + faceData[i + 2] = Float.floatToRawIntBits(position.z); + } else { + faceData[i] = Float.floatToRawIntBits(position.x * VertexMarkerState.localCoordDeriveHackX); + faceData[i + 1] = Float.floatToRawIntBits(position.y * VertexMarkerState.localCoordDeriveHackY); + faceData[i + 2] = Float.floatToRawIntBits(position.z * VertexMarkerState.localCoordDeriveHackZ); + } if (calcNormal != null) { int x = (byte) ((int) (calcNormal.x * 127.0F)) & 255; int y = (byte) ((int) (calcNormal.y * 127.0F)) & 255; 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 7c31cc4..49bf3f5 100755 --- a/src/main/java/net/minecraft/client/renderer/chunk/RenderChunk.java +++ b/src/main/java/net/minecraft/client/renderer/chunk/RenderChunk.java @@ -13,6 +13,7 @@ import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager; import net.lax1dude.eaglercraft.v1_8.opengl.VertexFormat; import net.lax1dude.eaglercraft.v1_8.opengl.WorldRenderer; import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DeferredStateManager; +import net.lax1dude.eaglercraft.v1_8.opengl.ext.dynamiclights.DynamicLightsStateManager; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; import net.minecraft.client.Minecraft; @@ -246,7 +247,9 @@ public class RenderChunk { private void preRenderBlocks(WorldRenderer worldRendererIn, BlockPos pos) { worldRendererIn.begin(7, - DeferredStateManager.isDeferredRenderer() ? VertexFormat.BLOCK_SHADERS : DefaultVertexFormats.BLOCK); + (DeferredStateManager.isDeferredRenderer() || DynamicLightsStateManager.isDynamicLightsRender()) + ? VertexFormat.BLOCK_SHADERS + : DefaultVertexFormats.BLOCK); worldRendererIn.setTranslation((double) (-pos.getX()), (double) (-pos.getY()), (double) (-pos.getZ())); } diff --git a/src/main/java/net/minecraft/client/renderer/entity/RenderFallingBlock.java b/src/main/java/net/minecraft/client/renderer/entity/RenderFallingBlock.java index 3aff28c..313e213 100755 --- a/src/main/java/net/minecraft/client/renderer/entity/RenderFallingBlock.java +++ b/src/main/java/net/minecraft/client/renderer/entity/RenderFallingBlock.java @@ -4,6 +4,7 @@ import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager; import net.lax1dude.eaglercraft.v1_8.opengl.VertexFormat; import net.lax1dude.eaglercraft.v1_8.opengl.WorldRenderer; import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DeferredStateManager; +import net.lax1dude.eaglercraft.v1_8.opengl.ext.dynamiclights.DynamicLightsStateManager; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; import net.minecraft.client.Minecraft; @@ -66,8 +67,10 @@ public class RenderFallingBlock extends Render { GlStateManager.disableLighting(); Tessellator tessellator = Tessellator.getInstance(); WorldRenderer worldrenderer = tessellator.getWorldRenderer(); - worldrenderer.begin(7, DeferredStateManager.isDeferredRenderer() ? VertexFormat.BLOCK_SHADERS - : DefaultVertexFormats.BLOCK); + worldrenderer.begin(7, + (DeferredStateManager.isDeferredRenderer() + || DynamicLightsStateManager.isDynamicLightsRender()) ? VertexFormat.BLOCK_SHADERS + : DefaultVertexFormats.BLOCK); int i = blockpos.getX(); int j = blockpos.getY(); int k = blockpos.getZ(); diff --git a/src/main/java/net/minecraft/client/renderer/entity/RenderManager.java b/src/main/java/net/minecraft/client/renderer/entity/RenderManager.java index 7726ece..d49ccbd 100755 --- a/src/main/java/net/minecraft/client/renderer/entity/RenderManager.java +++ b/src/main/java/net/minecraft/client/renderer/entity/RenderManager.java @@ -9,6 +9,7 @@ import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager; import net.lax1dude.eaglercraft.v1_8.opengl.OpenGlHelper; import net.lax1dude.eaglercraft.v1_8.opengl.WorldRenderer; import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DeferredStateManager; +import net.lax1dude.eaglercraft.v1_8.opengl.ext.dynamiclights.DynamicLightsStateManager; import net.lax1dude.eaglercraft.v1_8.profile.RenderHighPoly; import net.minecraft.block.Block; import net.minecraft.block.BlockBed; @@ -332,6 +333,10 @@ public class RenderManager { double d0 = entity.lastTickPosX + (entity.posX - entity.lastTickPosX) * (double) partialTicks; double d1 = entity.lastTickPosY + (entity.posY - entity.lastTickPosY) * (double) partialTicks; double d2 = entity.lastTickPosZ + (entity.posZ - entity.lastTickPosZ) * (double) partialTicks; + if (DynamicLightsStateManager.isInDynamicLightsPass()) { + DynamicLightsStateManager.reportForwardRenderObjectPosition2((float) (d0 - viewerPosX), + (float) (d1 - viewerPosY), (float) (d2 - viewerPosZ)); + } float f = entity.prevRotationYaw + (entity.rotationYaw - entity.prevRotationYaw) * partialTicks; int i = entity.getBrightnessForRender(partialTicks); if (entity.isBurning()) { diff --git a/src/main/java/net/minecraft/client/renderer/entity/layers/LayerSpiderEyes.java b/src/main/java/net/minecraft/client/renderer/entity/layers/LayerSpiderEyes.java index e8b95c2..bb96111 100755 --- a/src/main/java/net/minecraft/client/renderer/entity/layers/LayerSpiderEyes.java +++ b/src/main/java/net/minecraft/client/renderer/entity/layers/LayerSpiderEyes.java @@ -93,6 +93,8 @@ public class LayerSpiderEyes implements LayerRenderer { this.spiderRenderer.bindTexture(SPIDER_EYES); GlStateManager.enableBlend(); GlStateManager.disableAlpha(); + GlStateManager.enablePolygonOffset(); + GlStateManager.doPolygonOffset(-0.025f, 1.0f); GlStateManager.blendFunc(GL_ONE, GL_ONE); if (entityspider.isInvisible()) { GlStateManager.depthMask(false); @@ -113,6 +115,7 @@ public class LayerSpiderEyes implements LayerRenderer { this.spiderRenderer.func_177105_a(entityspider, f2); GlStateManager.disableBlend(); GlStateManager.enableAlpha(); + GlStateManager.disablePolygonOffset(); } public boolean shouldCombineTextures() { diff --git a/src/main/java/net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher.java b/src/main/java/net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher.java index d92a223..438d17c 100755 --- a/src/main/java/net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher.java +++ b/src/main/java/net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher.java @@ -6,6 +6,7 @@ import com.google.common.collect.Maps; import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager; import net.lax1dude.eaglercraft.v1_8.opengl.OpenGlHelper; +import net.lax1dude.eaglercraft.v1_8.opengl.ext.dynamiclights.DynamicLightsStateManager; import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.renderer.texture.TextureManager; import net.minecraft.crash.CrashReport; @@ -146,6 +147,9 @@ public class TileEntityRendererDispatcher { TileEntitySpecialRenderer tileentityspecialrenderer = this.getSpecialRenderer(tileEntityIn); if (tileentityspecialrenderer != null) { try { + if (DynamicLightsStateManager.isInDynamicLightsPass()) { + DynamicLightsStateManager.reportForwardRenderObjectPosition2((float) x, (float) y, (float) z); + } tileentityspecialrenderer.renderTileEntityAt(tileEntityIn, x, y, z, partialTicks, destroyStage); } catch (Throwable throwable) { CrashReport crashreport = CrashReport.makeCrashReport(throwable, "Rendering Block Entity"); diff --git a/src/main/java/net/minecraft/client/settings/GameSettings.java b/src/main/java/net/minecraft/client/settings/GameSettings.java index 50e2370..87e1f69 100755 --- a/src/main/java/net/minecraft/client/settings/GameSettings.java +++ b/src/main/java/net/minecraft/client/settings/GameSettings.java @@ -202,6 +202,7 @@ public class GameSettings { public EaglerDeferredConfig deferredShaderConf = new EaglerDeferredConfig(); public boolean enableUpdateSvc = true; public boolean enableFNAWSkins = true; + public boolean enableDynamicLights = false; public int voiceListenRadius = 16; public float voiceListenVolume = 0.5f; @@ -465,6 +466,11 @@ public class GameSettings { this.enableVsync = !this.enableVsync; } + if (parOptions == GameSettings.Options.EAGLER_DYNAMIC_LIGHTS) { + this.enableDynamicLights = !this.enableDynamicLights; + this.mc.renderGlobal.loadRenderers(); + } + this.saveOptions(); } @@ -541,6 +547,8 @@ public class GameSettings { return this.enableFNAWSkins; case EAGLER_VSYNC: return this.enableVsync; + case EAGLER_DYNAMIC_LIGHTS: + return this.enableDynamicLights; default: return false; } @@ -986,6 +994,10 @@ public class GameSettings { this.enableFNAWSkins = astring[1].equals("true"); } + if (astring[0].equals("enableDynamicLights")) { + this.enableDynamicLights = astring[1].equals("true"); + } + deferredShaderConf.readOption(astring[0], astring[1]); } catch (Exception var8) { logger.warn("Skipping bad option: " + s); @@ -1104,6 +1116,7 @@ public class GameSettings { printwriter.println("voiceSpeakVolume:" + this.voiceSpeakVolume); printwriter.println("voicePTTKey:" + this.voicePTTKey); printwriter.println("enableFNAWSkins:" + this.enableFNAWSkins); + printwriter.println("enableDynamicLights:" + this.enableDynamicLights); for (KeyBinding keybinding : this.keyBindings) { printwriter.println("key_" + keybinding.getKeyDescription() + ":" + keybinding.getKeyCode()); @@ -1206,7 +1219,7 @@ public class GameSettings { INVERT_MOUSE("options.invertMouse", false, true), SENSITIVITY("options.sensitivity", true, false), FOV("options.fov", true, false, 30.0F, 110.0F, 1.0F), GAMMA("options.gamma", true, false), SATURATION("options.saturation", true, false), - RENDER_DISTANCE("options.renderDistance", true, false, 1.0F, 16.0F, 1.0F), + RENDER_DISTANCE("options.renderDistance", true, false, 1.0F, 18.0F, 1.0F), VIEW_BOBBING("options.viewBobbing", false, true), ANAGLYPH("options.anaglyph", false, true), FRAMERATE_LIMIT("options.framerateLimit", true, false, 10.0F, 260.0F, 10.0F), FBO_ENABLE("options.fboEnable", false, true), RENDER_CLOUDS("options.renderClouds", false, false), @@ -1238,7 +1251,7 @@ public class GameSettings { FOG("options.fog", false, true), FXAA("options.fxaa", false, false), FULLSCREEN("options.fullscreen", false, true), FNAW_SKINS("options.skinCustomisation.enableFNAWSkins", false, true), - EAGLER_VSYNC("options.vsync", false, true); + EAGLER_VSYNC("options.vsync", false, true), EAGLER_DYNAMIC_LIGHTS("options.dynamicLights", false, true); private final boolean enumFloat; private final boolean enumBoolean; diff --git a/src/main/java/net/minecraft/entity/Entity.java b/src/main/java/net/minecraft/entity/Entity.java index f131013..ca3796b 100755 --- a/src/main/java/net/minecraft/entity/Entity.java +++ b/src/main/java/net/minecraft/entity/Entity.java @@ -5,6 +5,7 @@ import net.lax1dude.eaglercraft.v1_8.EaglercraftRandom; import net.lax1dude.eaglercraft.v1_8.EaglercraftUUID; import net.lax1dude.eaglercraft.v1_8.HString; import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DynamicLightManager; +import net.lax1dude.eaglercraft.v1_8.opengl.ext.dynamiclights.DynamicLightsStateManager; import java.util.concurrent.Callable; @@ -1013,7 +1014,12 @@ public abstract class Entity implements ICommandSender { public int getBrightnessForRender(float var1) { BlockPos blockpos = new BlockPos(this.posX, this.posY + (double) this.getEyeHeight(), this.posZ); - return this.worldObj.isBlockLoaded(blockpos) ? this.worldObj.getCombinedLight(blockpos, 0) : 0; + int i = 0; + if (DynamicLightsStateManager.isDynamicLightsRender()) { + i += (int) (getEaglerDynamicLightsValueSimple(var1) * 15.0f); + } + return this.worldObj.isBlockLoaded(blockpos) ? this.worldObj.getCombinedLight(blockpos, -i) + : (i > 15 ? 240 : (i << 4)); } /**+ @@ -1021,7 +1027,11 @@ public abstract class Entity implements ICommandSender { */ public float getBrightness(float var1) { BlockPos blockpos = new BlockPos(this.posX, this.posY + (double) this.getEyeHeight(), this.posZ); - return this.worldObj.isBlockLoaded(blockpos) ? this.worldObj.getLightBrightness(blockpos) : 0.0F; + float f = this.worldObj.isBlockLoaded(blockpos) ? this.worldObj.getLightBrightness(blockpos) : 0.0F; + if (DynamicLightsStateManager.isDynamicLightsRender()) { + f = Math.min(f + getEaglerDynamicLightsValueSimple(var1), 1.0f); + } + return f; } /**+ @@ -2380,7 +2390,8 @@ public abstract class Entity implements ICommandSender { double entityX2 = entityX - TileEntityRendererDispatcher.staticPlayerX; double entityY2 = entityY - TileEntityRendererDispatcher.staticPlayerY; double entityZ2 = entityZ - TileEntityRendererDispatcher.staticPlayerZ; - if (Math.sqrt(entityX2 * entityX2 + entityY2 * entityY2 + entityZ2 * entityZ2) < 48.0 * 48.0) { + if (entityX2 * entityX2 + entityY2 * entityY2 + + entityZ2 * entityZ2 < (isInFrustum ? (64.0 * 64.0) : (24.0 * 24.0))) { renderDynamicLightsEaglerAt(entityX, entityY, entityZ, entityX2, entityY2, entityZ2, partialTicks, isInFrustum); } @@ -2388,14 +2399,41 @@ public abstract class Entity implements ICommandSender { protected void renderDynamicLightsEaglerAt(double entityX, double entityY, double entityZ, double renderX, double renderY, double renderZ, float partialTicks, boolean isInFrustum) { + float size = Math.max(width, height); + if (size < 1.0f && !isInFrustum) { + return; + } if (this.isBurning()) { - float size = Math.max(width, height); - if (size < 1.0f && !isInFrustum) { - return; - } float mag = 5.0f * size; DynamicLightManager.renderDynamicLight("entity_" + entityId + "_fire", entityX, entityY + height * 0.75, entityZ, mag, 0.487f * mag, 0.1411f * mag, false); } } + + public void renderDynamicLightsEaglerSimple(float partialTicks) { + double entityX = prevPosX + (posX - prevPosX) * (double) partialTicks; + double entityY = prevPosY + (posY - prevPosY) * (double) partialTicks; + double entityZ = prevPosZ + (posZ - prevPosZ) * (double) partialTicks; + renderDynamicLightsEaglerSimpleAt(entityX, entityY, entityZ, partialTicks); + } + + protected void renderDynamicLightsEaglerSimpleAt(double entityX, double entityY, double entityZ, + float partialTicks) { + float renderBrightness = this.getEaglerDynamicLightsValueSimple(partialTicks); + if (renderBrightness > 0.1f) { + DynamicLightsStateManager.renderDynamicLight("entity_" + entityId + "_lightmap", entityX, + entityY + height * 0.85, entityZ, renderBrightness * 13.0f); + } + } + + protected float getEaglerDynamicLightsValueSimple(float partialTicks) { + float size = Math.max(width, height); + if (size < 1.0f) { + return 0.0f; + } + if (this.isBurning()) { + return size / 2.0f; + } + return 0.0f; + } } \ No newline at end of file diff --git a/src/main/java/net/minecraft/entity/EntityLivingBase.java b/src/main/java/net/minecraft/entity/EntityLivingBase.java index 6dcd100..ea12cfc 100755 --- a/src/main/java/net/minecraft/entity/EntityLivingBase.java +++ b/src/main/java/net/minecraft/entity/EntityLivingBase.java @@ -1911,4 +1911,16 @@ public abstract class EntityLivingBase extends Entity { } } + protected float getEaglerDynamicLightsValueSimple(float partialTicks) { + float f = super.getEaglerDynamicLightsValueSimple(partialTicks); + ItemStack itm = this.getHeldItem(); + if (itm != null && itm.stackSize > 0) { + Item item = itm.getItem(); + if (item != null) { + float f2 = item.getHeldItemBrightnessEagler(); + f = Math.min(f + f2 * 0.5f, 1.0f) + f2 * 0.5f; + } + } + return f; + } } \ No newline at end of file diff --git a/src/main/java/net/minecraft/entity/boss/EntityWither.java b/src/main/java/net/minecraft/entity/boss/EntityWither.java index 4cace76..b24e314 100755 --- a/src/main/java/net/minecraft/entity/boss/EntityWither.java +++ b/src/main/java/net/minecraft/entity/boss/EntityWither.java @@ -520,6 +520,10 @@ public class EntityWither extends EntityMob implements IBossDisplayData, IRanged return 15728880; } + protected float getEaglerDynamicLightsValueSimple(float partialTicks) { + return 1.0f; + } + public void fall(float var1, float var2) { } diff --git a/src/main/java/net/minecraft/entity/item/EntityEnderEye.java b/src/main/java/net/minecraft/entity/item/EntityEnderEye.java index 52ffd2c..9f689ef 100755 --- a/src/main/java/net/minecraft/entity/item/EntityEnderEye.java +++ b/src/main/java/net/minecraft/entity/item/EntityEnderEye.java @@ -1,5 +1,6 @@ package net.minecraft.entity.item; +import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DynamicLightManager; import net.minecraft.entity.Entity; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; @@ -211,6 +212,21 @@ public class EntityEnderEye extends Entity { return 1.0F; } + protected float getEaglerDynamicLightsValueSimple(float partialTicks) { + return 0.5f; + } + + protected void renderDynamicLightsEaglerAt(double entityX, double entityY, double entityZ, double renderX, + double renderY, double renderZ, float partialTicks, boolean isInFrustum) { + super.renderDynamicLightsEaglerAt(entityX, entityY, entityZ, renderX, renderY, renderZ, partialTicks, + isInFrustum); + if (isInFrustum && renderX * renderX + renderY * renderY + renderZ * renderZ < 150.0) { + float mag = 0.5f; + DynamicLightManager.renderDynamicLight("entity_" + getEntityId() + "_endereye", entityX, entityY + 0.2, + entityZ, mag * 0.1990f, mag * 0.7750f, mag * 0.4130f, false); + } + } + public int getBrightnessForRender(float var1) { return 15728880; } diff --git a/src/main/java/net/minecraft/entity/item/EntityFireworkRocket.java b/src/main/java/net/minecraft/entity/item/EntityFireworkRocket.java index 960cfda..e8c9a7d 100755 --- a/src/main/java/net/minecraft/entity/item/EntityFireworkRocket.java +++ b/src/main/java/net/minecraft/entity/item/EntityFireworkRocket.java @@ -196,6 +196,10 @@ public class EntityFireworkRocket extends Entity { return super.getBrightness(f); } + protected float getEaglerDynamicLightsValueSimple(float partialTicks) { + return 1.0f; + } + public int getBrightnessForRender(float f) { return super.getBrightnessForRender(f); } diff --git a/src/main/java/net/minecraft/entity/item/EntityItem.java b/src/main/java/net/minecraft/entity/item/EntityItem.java index ac8f39e..7c5cb51 100755 --- a/src/main/java/net/minecraft/entity/item/EntityItem.java +++ b/src/main/java/net/minecraft/entity/item/EntityItem.java @@ -475,4 +475,17 @@ public class EntityItem extends Entity { isInFrustum); eaglerEmissiveFlag = Minecraft.getMinecraft().entityRenderer.renderItemEntityLight(this, 0.1f); } + + protected float getEaglerDynamicLightsValueSimple(float partialTicks) { + float f = super.getEaglerDynamicLightsValueSimple(partialTicks); + ItemStack itm = this.getEntityItem(); + if (itm != null && itm.stackSize > 0) { + Item item = itm.getItem(); + if (item != null) { + float f2 = item.getHeldItemBrightnessEagler() * 0.75f; + f = Math.min(f + f2 * 0.5f, 1.0f) + f2 * 0.5f; + } + } + return f; + } } \ No newline at end of file diff --git a/src/main/java/net/minecraft/entity/item/EntityItemFrame.java b/src/main/java/net/minecraft/entity/item/EntityItemFrame.java index 813acf3..13627df 100755 --- a/src/main/java/net/minecraft/entity/item/EntityItemFrame.java +++ b/src/main/java/net/minecraft/entity/item/EntityItemFrame.java @@ -6,6 +6,7 @@ import net.minecraft.entity.EntityHanging; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.init.Items; +import net.minecraft.item.Item; import net.minecraft.item.ItemMap; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -252,4 +253,17 @@ public class EntityItemFrame extends EntityHanging { isInFrustum); eaglerEmissiveFlag = Minecraft.getMinecraft().entityRenderer.renderItemEntityLight(this, 0.1f); } + + protected float getEaglerDynamicLightsValueSimple(float partialTicks) { + float f = super.getEaglerDynamicLightsValueSimple(partialTicks); + ItemStack itm = this.getDisplayedItem(); + if (itm != null && itm.stackSize > 0) { + Item item = itm.getItem(); + if (item != null) { + float f2 = item.getHeldItemBrightnessEagler() * 0.75f; + f = Math.min(f + f2 * 0.5f, 1.0f) + f2 * 0.5f; + } + } + return f; + } } \ No newline at end of file diff --git a/src/main/java/net/minecraft/entity/item/EntityMinecartTNT.java b/src/main/java/net/minecraft/entity/item/EntityMinecartTNT.java index 049cf40..a508cda 100755 --- a/src/main/java/net/minecraft/entity/item/EntityMinecartTNT.java +++ b/src/main/java/net/minecraft/entity/item/EntityMinecartTNT.java @@ -227,4 +227,12 @@ public class EntityMinecartTNT extends EntityMinecart { entityZ, dynamicLightMag, dynamicLightMag * 0.7792f, dynamicLightMag * 0.618f, false); } } + + protected float getEaglerDynamicLightsValueSimple(float partialTicks) { + float f = super.getEaglerDynamicLightsValueSimple(partialTicks); + if (minecartTNTFuse > -1 && minecartTNTFuse / 5 % 2 == 0) { + f = Math.min(f + 0.75f, 1.25f); + } + return f; + } } \ No newline at end of file diff --git a/src/main/java/net/minecraft/entity/item/EntityTNTPrimed.java b/src/main/java/net/minecraft/entity/item/EntityTNTPrimed.java index 300b9d7..22a7841 100755 --- a/src/main/java/net/minecraft/entity/item/EntityTNTPrimed.java +++ b/src/main/java/net/minecraft/entity/item/EntityTNTPrimed.java @@ -145,4 +145,12 @@ public class EntityTNTPrimed extends Entity { entityZ, dynamicLightMag, dynamicLightMag * 0.7792f, dynamicLightMag * 0.618f, false); } } + + protected float getEaglerDynamicLightsValueSimple(float partialTicks) { + float f = super.getEaglerDynamicLightsValueSimple(partialTicks); + if (fuse / 5 % 2 == 0) { + f = Math.min(f + 0.75f, 1.25f); + } + return f; + } } \ No newline at end of file diff --git a/src/main/java/net/minecraft/entity/item/EntityXPOrb.java b/src/main/java/net/minecraft/entity/item/EntityXPOrb.java index fb4e8a4..1fac03a 100755 --- a/src/main/java/net/minecraft/entity/item/EntityXPOrb.java +++ b/src/main/java/net/minecraft/entity/item/EntityXPOrb.java @@ -84,6 +84,10 @@ public class EntityXPOrb extends Entity { return j | k << 16; } + protected float getEaglerDynamicLightsValueSimple(float partialTicks) { + return 0.25f; + } + /**+ * Called to update the entity's position/logic. */ diff --git a/src/main/java/net/minecraft/entity/monster/EntityBlaze.java b/src/main/java/net/minecraft/entity/monster/EntityBlaze.java index b77711c..009c40c 100755 --- a/src/main/java/net/minecraft/entity/monster/EntityBlaze.java +++ b/src/main/java/net/minecraft/entity/monster/EntityBlaze.java @@ -104,6 +104,10 @@ public class EntityBlaze extends EntityMob { return 1.0F; } + protected float getEaglerDynamicLightsValueSimple(float partialTicks) { + return 1.0f; + } + /**+ * Called frequently so the entity can update its state every * tick as required. For example, zombies and skeletons use this diff --git a/src/main/java/net/minecraft/entity/monster/EntityCreeper.java b/src/main/java/net/minecraft/entity/monster/EntityCreeper.java index 63d88ff..c949c5a 100755 --- a/src/main/java/net/minecraft/entity/monster/EntityCreeper.java +++ b/src/main/java/net/minecraft/entity/monster/EntityCreeper.java @@ -306,4 +306,13 @@ public class EntityCreeper extends EntityMob { DeferredStateManager.setEmissionConstant(1.0f); } } + + protected float getEaglerDynamicLightsValueSimple(float partialTicks) { + float f = super.getEaglerDynamicLightsValueSimple(partialTicks); + float ff = getCreeperFlashIntensity(partialTicks); + if ((int) (ff * 10.0F) % 2 != 0) { + f = Math.min(f + 0.5f, 1.15f); + } + return f; + } } \ No newline at end of file diff --git a/src/main/java/net/minecraft/entity/monster/EntityMagmaCube.java b/src/main/java/net/minecraft/entity/monster/EntityMagmaCube.java index 251dbdb..ace061a 100755 --- a/src/main/java/net/minecraft/entity/monster/EntityMagmaCube.java +++ b/src/main/java/net/minecraft/entity/monster/EntityMagmaCube.java @@ -75,6 +75,10 @@ public class EntityMagmaCube extends EntitySlime { return 1.0F; } + protected float getEaglerDynamicLightsValueSimple(float partialTicks) { + return 1.0f; + } + protected EnumParticleTypes getParticleType() { return EnumParticleTypes.FLAME; } diff --git a/src/main/java/net/minecraft/entity/projectile/EntityFireball.java b/src/main/java/net/minecraft/entity/projectile/EntityFireball.java index b81a660..1a5bc51 100755 --- a/src/main/java/net/minecraft/entity/projectile/EntityFireball.java +++ b/src/main/java/net/minecraft/entity/projectile/EntityFireball.java @@ -331,6 +331,10 @@ public abstract class EntityFireball extends Entity { return 1.0F; } + protected float getEaglerDynamicLightsValueSimple(float partialTicks) { + return 1.0f; + } + public int getBrightnessForRender(float var1) { return 15728880; } diff --git a/src/main/java/net/minecraft/item/Item.java b/src/main/java/net/minecraft/item/Item.java index 6799962..16043c6 100755 --- a/src/main/java/net/minecraft/item/Item.java +++ b/src/main/java/net/minecraft/item/Item.java @@ -1113,4 +1113,8 @@ public class Item { : (this == IRON ? Items.iron_ingot : (this == EMERALD ? Items.diamond : null)))); } } + + public float getHeldItemBrightnessEagler() { + return 0.0f; + } } \ No newline at end of file diff --git a/src/main/java/net/minecraft/item/ItemBlock.java b/src/main/java/net/minecraft/item/ItemBlock.java index 0cf4bda..1e90ea7 100755 --- a/src/main/java/net/minecraft/item/ItemBlock.java +++ b/src/main/java/net/minecraft/item/ItemBlock.java @@ -167,4 +167,8 @@ public class ItemBlock extends Item { public Block getBlock() { return this.block; } + + public float getHeldItemBrightnessEagler() { + return this.block.getLightValue() * 0.06667f; + } } \ No newline at end of file diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java index 521e5c0..37bec77 100755 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -169,6 +169,11 @@ public abstract class MinecraftServer implements Runnable, ICommandSender, IThre worldsettings = new WorldSettings(worldinfo); } + if (worldinfo.isOldEaglercraftRandom()) { + LogManager.getLogger("EaglerMinecraftServer") + .info("Detected a pre-u34 world, using old EaglercraftRandom implementation for world generation"); + } + for (int j = 0; j < this.worldServers.length; ++j) { byte b0 = 0; if (j == 1) { diff --git a/src/main/java/net/minecraft/world/Teleporter.java b/src/main/java/net/minecraft/world/Teleporter.java index 40285fe..890f5f6 100755 --- a/src/main/java/net/minecraft/world/Teleporter.java +++ b/src/main/java/net/minecraft/world/Teleporter.java @@ -50,7 +50,7 @@ public class Teleporter { public Teleporter(WorldServer worldIn) { this.worldServerInstance = worldIn; - this.random = new EaglercraftRandom(worldIn.getSeed()); + this.random = new EaglercraftRandom(worldIn.getSeed(), !worldIn.getWorldInfo().isOldEaglercraftRandom()); } public void placeInPortal(Entity entityIn, float rotationYaw) { diff --git a/src/main/java/net/minecraft/world/World.java b/src/main/java/net/minecraft/world/World.java index 0b188a7..050bf93 100755 --- a/src/main/java/net/minecraft/world/World.java +++ b/src/main/java/net/minecraft/world/World.java @@ -681,7 +681,12 @@ public abstract class World implements IBlockAccess { public int getCombinedLight(BlockPos pos, int lightValue) { int i = this.getLightFromNeighborsFor(EnumSkyBlock.SKY, pos); int j = this.getLightFromNeighborsFor(EnumSkyBlock.BLOCK, pos); - if (j < lightValue) { + if (lightValue < 0) { + j += -lightValue; + if (j > 15) { + j = 15; + } + } else if (j < lightValue) { j = lightValue; } diff --git a/src/main/java/net/minecraft/world/WorldProvider.java b/src/main/java/net/minecraft/world/WorldProvider.java index 0f01241..c4387c5 100755 --- a/src/main/java/net/minecraft/world/WorldProvider.java +++ b/src/main/java/net/minecraft/world/WorldProvider.java @@ -135,8 +135,9 @@ public abstract class WorldProvider { --f; } + float f2 = f; f = 1.0F - (float) ((Math.cos((double) f * 3.141592653589793D) + 1.0D) / 2.0D); - f = f + (f - f) / 3.0F; + f = f2 + (f - f2) / 3.0F; return f; } diff --git a/src/main/java/net/minecraft/world/biome/BiomeGenMesa.java b/src/main/java/net/minecraft/world/biome/BiomeGenMesa.java index 2d79bea..bbc6206 100755 --- a/src/main/java/net/minecraft/world/biome/BiomeGenMesa.java +++ b/src/main/java/net/minecraft/world/biome/BiomeGenMesa.java @@ -84,11 +84,12 @@ public class BiomeGenMesa extends BiomeGenBase { public void genTerrainBlocks(World world, EaglercraftRandom random, ChunkPrimer chunkprimer, int i, int j, double d0) { if (this.field_150621_aC == null || this.field_150622_aD != world.getSeed()) { - this.func_150619_a(world.getSeed()); + this.func_150619_a(world.getSeed(), !world.getWorldInfo().isOldEaglercraftRandom()); } if (this.field_150623_aE == null || this.field_150624_aF == null || this.field_150622_aD != world.getSeed()) { - EaglercraftRandom random1 = new EaglercraftRandom(this.field_150622_aD); + EaglercraftRandom random1 = new EaglercraftRandom(this.field_150622_aD, + !world.getWorldInfo().isOldEaglercraftRandom()); this.field_150623_aE = new NoiseGeneratorPerlin(random1, 4); this.field_150624_aF = new NoiseGeneratorPerlin(random1, 1); } @@ -197,10 +198,10 @@ public class BiomeGenMesa extends BiomeGenBase { } - private void func_150619_a(long parLong1) { + private void func_150619_a(long parLong1, boolean scrambleRNG) { this.field_150621_aC = new IBlockState[64]; Arrays.fill(this.field_150621_aC, Blocks.hardened_clay.getDefaultState()); - EaglercraftRandom random = new EaglercraftRandom(parLong1); + EaglercraftRandom random = new EaglercraftRandom(parLong1, scrambleRNG); this.field_150625_aG = new NoiseGeneratorPerlin(random, 1); for (int l1 = 0; l1 < 64; ++l1) { diff --git a/src/main/java/net/minecraft/world/chunk/Chunk.java b/src/main/java/net/minecraft/world/chunk/Chunk.java index 4eb9d14..dd863c1 100755 --- a/src/main/java/net/minecraft/world/chunk/Chunk.java +++ b/src/main/java/net/minecraft/world/chunk/Chunk.java @@ -927,7 +927,7 @@ public class Chunk { public EaglercraftRandom getRandomWithSeed(long i) { return new EaglercraftRandom(this.worldObj.getSeed() + (long) (this.xPosition * this.xPosition * 4987142) + (long) (this.xPosition * 5947611) + (long) (this.zPosition * this.zPosition) * 4392871L - + (long) (this.zPosition * 389711) ^ i); + + (long) (this.zPosition * 389711) ^ i, !this.worldObj.getWorldInfo().isOldEaglercraftRandom()); } public boolean isEmpty() { diff --git a/src/main/java/net/minecraft/world/chunk/EmptyChunk.java b/src/main/java/net/minecraft/world/chunk/EmptyChunk.java index b5c8eb0..38240a1 100755 --- a/src/main/java/net/minecraft/world/chunk/EmptyChunk.java +++ b/src/main/java/net/minecraft/world/chunk/EmptyChunk.java @@ -163,9 +163,11 @@ public class EmptyChunk extends Chunk { } public EaglercraftRandom getRandomWithSeed(long seed) { - return new EaglercraftRandom(this.getWorld().getSeed() + (long) (this.xPosition * this.xPosition * 4987142) - + (long) (this.xPosition * 5947611) + (long) (this.zPosition * this.zPosition) * 4392871L - + (long) (this.zPosition * 389711) ^ seed); + return new EaglercraftRandom( + this.getWorld().getSeed() + (long) (this.xPosition * this.xPosition * 4987142) + + (long) (this.xPosition * 5947611) + (long) (this.zPosition * this.zPosition) * 4392871L + + (long) (this.zPosition * 389711) ^ seed, + !this.getWorld().getWorldInfo().isOldEaglercraftRandom()); } public boolean isEmpty() { diff --git a/src/main/java/net/minecraft/world/gen/ChunkProviderEnd.java b/src/main/java/net/minecraft/world/gen/ChunkProviderEnd.java index a54e445..a6f4ceb 100755 --- a/src/main/java/net/minecraft/world/gen/ChunkProviderEnd.java +++ b/src/main/java/net/minecraft/world/gen/ChunkProviderEnd.java @@ -54,7 +54,7 @@ public class ChunkProviderEnd implements IChunkProvider { public ChunkProviderEnd(World worldIn, long parLong1) { this.endWorld = worldIn; - this.endRNG = new EaglercraftRandom(parLong1); + this.endRNG = new EaglercraftRandom(parLong1, !worldIn.getWorldInfo().isOldEaglercraftRandom()); this.noiseGen1 = new NoiseGeneratorOctaves(this.endRNG, 16); this.noiseGen2 = new NoiseGeneratorOctaves(this.endRNG, 16); this.noiseGen3 = new NoiseGeneratorOctaves(this.endRNG, 8); diff --git a/src/main/java/net/minecraft/world/gen/ChunkProviderFlat.java b/src/main/java/net/minecraft/world/gen/ChunkProviderFlat.java index a4679d2..78ae515 100755 --- a/src/main/java/net/minecraft/world/gen/ChunkProviderFlat.java +++ b/src/main/java/net/minecraft/world/gen/ChunkProviderFlat.java @@ -57,7 +57,8 @@ public class ChunkProviderFlat implements IChunkProvider { public ChunkProviderFlat(World worldIn, long seed, boolean generateStructures, String flatGeneratorSettings) { this.worldObj = worldIn; - this.random = new EaglercraftRandom(seed); + boolean scramble = !worldIn.getWorldInfo().isOldEaglercraftRandom(); + this.random = new EaglercraftRandom(seed, scramble); this.flatWorldGenInfo = FlatGeneratorInfo.createFlatGeneratorFromString(flatGeneratorSettings); if (generateStructures) { Map map = this.flatWorldGenInfo.getWorldFeatures(); @@ -67,23 +68,23 @@ public class ChunkProviderFlat implements IChunkProvider { map1.put("size", "1"); } - this.structureGenerators.add(new MapGenVillage(map1)); + this.structureGenerators.add(new MapGenVillage(map1, scramble)); } if (map.containsKey("biome_1")) { - this.structureGenerators.add(new MapGenScatteredFeature((Map) map.get("biome_1"))); + this.structureGenerators.add(new MapGenScatteredFeature((Map) map.get("biome_1"), scramble)); } if (map.containsKey("mineshaft")) { - this.structureGenerators.add(new MapGenMineshaft((Map) map.get("mineshaft"))); + this.structureGenerators.add(new MapGenMineshaft((Map) map.get("mineshaft"), scramble)); } if (map.containsKey("stronghold")) { - this.structureGenerators.add(new MapGenStronghold((Map) map.get("stronghold"))); + this.structureGenerators.add(new MapGenStronghold((Map) map.get("stronghold"), scramble)); } if (map.containsKey("oceanmonument")) { - this.structureGenerators.add(new StructureOceanMonument((Map) map.get("oceanmonument"))); + this.structureGenerators.add(new StructureOceanMonument((Map) map.get("oceanmonument"), scramble)); } } diff --git a/src/main/java/net/minecraft/world/gen/ChunkProviderGenerate.java b/src/main/java/net/minecraft/world/gen/ChunkProviderGenerate.java index bb4504c..e3efc96 100755 --- a/src/main/java/net/minecraft/world/gen/ChunkProviderGenerate.java +++ b/src/main/java/net/minecraft/world/gen/ChunkProviderGenerate.java @@ -62,25 +62,13 @@ public class ChunkProviderGenerate implements IChunkProvider { private ChunkProviderSettings settings; private Block field_177476_s = Blocks.water; private double[] stoneNoise = new double[256]; - private MapGenBase caveGenerator = new MapGenCaves(); - /**+ - * Holds Stronghold Generator - */ - private MapGenStronghold strongholdGenerator = new MapGenStronghold(); - /**+ - * Holds Village Generator - */ - private MapGenVillage villageGenerator = new MapGenVillage(); - /**+ - * Holds Mineshaft Generator - */ - private MapGenMineshaft mineshaftGenerator = new MapGenMineshaft(); - private MapGenScatteredFeature scatteredFeatureGenerator = new MapGenScatteredFeature(); - /**+ - * Holds ravine generator - */ - private MapGenBase ravineGenerator = new MapGenRavine(); - private StructureOceanMonument oceanMonumentGenerator = new StructureOceanMonument(); + private MapGenBase caveGenerator; + private MapGenStronghold strongholdGenerator; + private MapGenVillage villageGenerator; + private MapGenMineshaft mineshaftGenerator; + private MapGenScatteredFeature scatteredFeatureGenerator; + private MapGenBase ravineGenerator; + private StructureOceanMonument oceanMonumentGenerator; private BiomeGenBase[] biomesForGeneration; double[] field_147427_d; double[] field_147428_e; @@ -91,7 +79,15 @@ public class ChunkProviderGenerate implements IChunkProvider { this.worldObj = worldIn; this.mapFeaturesEnabled = parFlag; this.field_177475_o = worldIn.getWorldInfo().getTerrainType(); - this.rand = new EaglercraftRandom(parLong1); + boolean scramble = !worldIn.getWorldInfo().isOldEaglercraftRandom(); + this.rand = new EaglercraftRandom(parLong1, scramble); + this.caveGenerator = new MapGenCaves(scramble); + this.strongholdGenerator = new MapGenStronghold(scramble); + this.villageGenerator = new MapGenVillage(scramble); + this.mineshaftGenerator = new MapGenMineshaft(scramble); + this.scatteredFeatureGenerator = new MapGenScatteredFeature(scramble); + this.ravineGenerator = new MapGenRavine(scramble); + this.oceanMonumentGenerator = new StructureOceanMonument(scramble); this.field_147431_j = new NoiseGeneratorOctaves(this.rand, 16); this.field_147432_k = new NoiseGeneratorOctaves(this.rand, 16); this.field_147429_l = new NoiseGeneratorOctaves(this.rand, 8); diff --git a/src/main/java/net/minecraft/world/gen/ChunkProviderHell.java b/src/main/java/net/minecraft/world/gen/ChunkProviderHell.java index 17f9d76..5fb958a 100755 --- a/src/main/java/net/minecraft/world/gen/ChunkProviderHell.java +++ b/src/main/java/net/minecraft/world/gen/ChunkProviderHell.java @@ -77,8 +77,8 @@ public class ChunkProviderHell implements IChunkProvider { private final WorldGenHellLava field_177472_y = new WorldGenHellLava(Blocks.flowing_lava, false); private final GeneratorBushFeature field_177471_z = new GeneratorBushFeature(Blocks.brown_mushroom); private final GeneratorBushFeature field_177465_A = new GeneratorBushFeature(Blocks.red_mushroom); - private final MapGenNetherBridge genNetherBridge = new MapGenNetherBridge(); - private final MapGenBase netherCaveGenerator = new MapGenCavesHell(); + private final MapGenNetherBridge genNetherBridge; + private final MapGenBase netherCaveGenerator; double[] noiseData1; double[] noiseData2; double[] noiseData3; @@ -88,7 +88,10 @@ public class ChunkProviderHell implements IChunkProvider { public ChunkProviderHell(World worldIn, boolean parFlag, long parLong1) { this.worldObj = worldIn; this.field_177466_i = parFlag; - this.hellRNG = new EaglercraftRandom(parLong1); + boolean scramble = !worldIn.getWorldInfo().isOldEaglercraftRandom(); + this.hellRNG = new EaglercraftRandom(parLong1, scramble); + this.genNetherBridge = new MapGenNetherBridge(scramble); + this.netherCaveGenerator = new MapGenCavesHell(scramble); this.netherNoiseGen1 = new NoiseGeneratorOctaves(this.hellRNG, 16); this.netherNoiseGen2 = new NoiseGeneratorOctaves(this.hellRNG, 16); this.netherNoiseGen3 = new NoiseGeneratorOctaves(this.hellRNG, 8); diff --git a/src/main/java/net/minecraft/world/gen/MapGenBase.java b/src/main/java/net/minecraft/world/gen/MapGenBase.java index dc041a1..e679535 100755 --- a/src/main/java/net/minecraft/world/gen/MapGenBase.java +++ b/src/main/java/net/minecraft/world/gen/MapGenBase.java @@ -30,12 +30,17 @@ public class MapGenBase { * The number of Chunks to gen-check in any given direction. */ protected int range = 8; - /**+ - * The RNG used by the MapGen classes. - */ - protected EaglercraftRandom rand = new EaglercraftRandom(); + protected EaglercraftRandom rand; protected World worldObj; + public MapGenBase() { + this(true); + } + + public MapGenBase(boolean scramble) { + rand = new EaglercraftRandom(scramble); + } + public void generate(IChunkProvider chunkProviderIn, World worldIn, int x, int z, ChunkPrimer chunkPrimerIn) { int i = this.range; this.worldObj = worldIn; diff --git a/src/main/java/net/minecraft/world/gen/MapGenCaves.java b/src/main/java/net/minecraft/world/gen/MapGenCaves.java index 552b6ab..6225e7a 100755 --- a/src/main/java/net/minecraft/world/gen/MapGenCaves.java +++ b/src/main/java/net/minecraft/world/gen/MapGenCaves.java @@ -32,6 +32,11 @@ import net.minecraft.world.chunk.ChunkPrimer; * */ public class MapGenCaves extends MapGenBase { + + public MapGenCaves(boolean scramble) { + super(scramble); + } + protected void func_180703_a(long parLong1, int parInt1, int parInt2, ChunkPrimer parChunkPrimer, double parDouble1, double parDouble2, double parDouble3) { this.func_180702_a(parLong1, parInt1, parInt2, parChunkPrimer, parDouble1, parDouble2, parDouble3, @@ -45,7 +50,7 @@ public class MapGenCaves extends MapGenBase { double d1 = (double) (parInt2 * 16 + 8); float f = 0.0F; float f1 = 0.0F; - EaglercraftRandom random = new EaglercraftRandom(parLong1); + EaglercraftRandom random = new EaglercraftRandom(parLong1, this.rand.isScramble()); if (parInt4 <= 0) { int i = this.range * 16 - 16; parInt4 = i - random.nextInt(i / 4); diff --git a/src/main/java/net/minecraft/world/gen/MapGenCavesHell.java b/src/main/java/net/minecraft/world/gen/MapGenCavesHell.java index b988139..b6f46f9 100755 --- a/src/main/java/net/minecraft/world/gen/MapGenCavesHell.java +++ b/src/main/java/net/minecraft/world/gen/MapGenCavesHell.java @@ -28,6 +28,11 @@ import net.minecraft.world.chunk.ChunkPrimer; * */ public class MapGenCavesHell extends MapGenBase { + + public MapGenCavesHell(boolean scramble) { + super(scramble); + } + protected void func_180705_a(long parLong1, int parInt1, int parInt2, ChunkPrimer parChunkPrimer, double parDouble1, double parDouble2, double parDouble3) { this.func_180704_a(parLong1, parInt1, parInt2, parChunkPrimer, parDouble1, parDouble2, parDouble3, @@ -41,7 +46,7 @@ public class MapGenCavesHell extends MapGenBase { double d1 = (double) (parInt2 * 16 + 8); float f = 0.0F; float f1 = 0.0F; - EaglercraftRandom random = new EaglercraftRandom(parLong1); + EaglercraftRandom random = new EaglercraftRandom(parLong1, this.rand.isScramble()); if (parInt4 <= 0) { int i = this.range * 16 - 16; parInt4 = i - random.nextInt(i / 4); diff --git a/src/main/java/net/minecraft/world/gen/MapGenRavine.java b/src/main/java/net/minecraft/world/gen/MapGenRavine.java index de9e318..13818b1 100755 --- a/src/main/java/net/minecraft/world/gen/MapGenRavine.java +++ b/src/main/java/net/minecraft/world/gen/MapGenRavine.java @@ -31,10 +31,14 @@ import net.minecraft.world.chunk.ChunkPrimer; public class MapGenRavine extends MapGenBase { private float[] field_75046_d = new float[1024]; + public MapGenRavine(boolean scramble) { + super(scramble); + } + protected void func_180707_a(long parLong1, int parInt1, int parInt2, ChunkPrimer parChunkPrimer, double parDouble1, double parDouble2, double parDouble3, float parFloat1, float parFloat2, float parFloat3, int parInt3, int parInt4, double parDouble4) { - EaglercraftRandom random = new EaglercraftRandom(parLong1); + EaglercraftRandom random = new EaglercraftRandom(parLong1, this.rand.isScramble()); double d0 = (double) (parInt1 * 16 + 8); double d1 = (double) (parInt2 * 16 + 8); float f = 0.0F; diff --git a/src/main/java/net/minecraft/world/gen/feature/WorldGenBigTree.java b/src/main/java/net/minecraft/world/gen/feature/WorldGenBigTree.java index 8b5f46f..66a3ea0 100755 --- a/src/main/java/net/minecraft/world/gen/feature/WorldGenBigTree.java +++ b/src/main/java/net/minecraft/world/gen/feature/WorldGenBigTree.java @@ -287,7 +287,7 @@ public class WorldGenBigTree extends WorldGenAbstractTree { public boolean generate(World worldIn, EaglercraftRandom rand, BlockPos position) { this.world = worldIn; this.basePos = position; - this.rand = new EaglercraftRandom(rand.nextLong()); + this.rand = new EaglercraftRandom(rand.nextLong(), !worldIn.getWorldInfo().isOldEaglercraftRandom()); if (this.heightLimit == 0) { this.heightLimit = 5 + this.rand.nextInt(this.heightLimitLimit); } diff --git a/src/main/java/net/minecraft/world/gen/structure/MapGenMineshaft.java b/src/main/java/net/minecraft/world/gen/structure/MapGenMineshaft.java index 005cb2f..b759230 100755 --- a/src/main/java/net/minecraft/world/gen/structure/MapGenMineshaft.java +++ b/src/main/java/net/minecraft/world/gen/structure/MapGenMineshaft.java @@ -27,14 +27,16 @@ import net.minecraft.util.MathHelper; public class MapGenMineshaft extends MapGenStructure { private double field_82673_e = 0.004D; - public MapGenMineshaft() { + public MapGenMineshaft(boolean scramble) { + super(scramble); } public String getStructureName() { return "Mineshaft"; } - public MapGenMineshaft(Map parMap) { + public MapGenMineshaft(Map parMap, boolean scramble) { + super(scramble); for (Entry entry : parMap.entrySet()) { if (((String) entry.getKey()).equals("chance")) { this.field_82673_e = MathHelper.parseDoubleWithDefault((String) entry.getValue(), this.field_82673_e); diff --git a/src/main/java/net/minecraft/world/gen/structure/MapGenNetherBridge.java b/src/main/java/net/minecraft/world/gen/structure/MapGenNetherBridge.java index 47566d1..3539724 100755 --- a/src/main/java/net/minecraft/world/gen/structure/MapGenNetherBridge.java +++ b/src/main/java/net/minecraft/world/gen/structure/MapGenNetherBridge.java @@ -33,7 +33,8 @@ import net.minecraft.world.biome.BiomeGenBase; public class MapGenNetherBridge extends MapGenStructure { private List spawnList = Lists.newArrayList(); - public MapGenNetherBridge() { + public MapGenNetherBridge(boolean scramble) { + super(scramble); this.spawnList.add(new BiomeGenBase.SpawnListEntry(EntityBlaze.class, 10, 2, 3)); this.spawnList.add(new BiomeGenBase.SpawnListEntry(EntityPigZombie.class, 5, 4, 4)); this.spawnList.add(new BiomeGenBase.SpawnListEntry(EntitySkeleton.class, 10, 4, 4)); diff --git a/src/main/java/net/minecraft/world/gen/structure/MapGenScatteredFeature.java b/src/main/java/net/minecraft/world/gen/structure/MapGenScatteredFeature.java index df7068d..059991a 100755 --- a/src/main/java/net/minecraft/world/gen/structure/MapGenScatteredFeature.java +++ b/src/main/java/net/minecraft/world/gen/structure/MapGenScatteredFeature.java @@ -39,15 +39,16 @@ public class MapGenScatteredFeature extends MapGenStructure { private int maxDistanceBetweenScatteredFeatures; private int minDistanceBetweenScatteredFeatures; - public MapGenScatteredFeature() { + public MapGenScatteredFeature(boolean scramble) { + super(scramble); this.scatteredFeatureSpawnList = Lists.newArrayList(); this.maxDistanceBetweenScatteredFeatures = 32; this.minDistanceBetweenScatteredFeatures = 8; this.scatteredFeatureSpawnList.add(new BiomeGenBase.SpawnListEntry(EntityWitch.class, 1, 1, 1)); } - public MapGenScatteredFeature(Map parMap) { - this(); + public MapGenScatteredFeature(Map parMap, boolean scramble) { + this(scramble); for (Entry entry : parMap.entrySet()) { if (((String) entry.getKey()).equals("distance")) { diff --git a/src/main/java/net/minecraft/world/gen/structure/MapGenStronghold.java b/src/main/java/net/minecraft/world/gen/structure/MapGenStronghold.java index 738895f..a2eb064 100755 --- a/src/main/java/net/minecraft/world/gen/structure/MapGenStronghold.java +++ b/src/main/java/net/minecraft/world/gen/structure/MapGenStronghold.java @@ -39,7 +39,8 @@ public class MapGenStronghold extends MapGenStructure { private double field_82671_h; private int field_82672_i; - public MapGenStronghold() { + public MapGenStronghold(boolean scramble) { + super(scramble); this.structureCoords = new ChunkCoordIntPair[3]; this.field_82671_h = 32.0D; this.field_82672_i = 3; @@ -55,8 +56,8 @@ public class MapGenStronghold extends MapGenStructure { } - public MapGenStronghold(Map parMap) { - this(); + public MapGenStronghold(Map parMap, boolean scramble) { + this(scramble); for (Entry entry : parMap.entrySet()) { if (((String) entry.getKey()).equals("distance")) { @@ -79,7 +80,7 @@ public class MapGenStronghold extends MapGenStructure { protected boolean canSpawnStructureAtCoords(int i, int j) { if (!this.ranBiomeCheck) { - EaglercraftRandom random = new EaglercraftRandom(); + EaglercraftRandom random = new EaglercraftRandom(!this.worldObj.getWorldInfo().isOldEaglercraftRandom()); random.setSeed(this.worldObj.getSeed()); double d0 = random.nextDouble() * 3.141592653589793D * 2.0D; int k = 1; diff --git a/src/main/java/net/minecraft/world/gen/structure/MapGenStructure.java b/src/main/java/net/minecraft/world/gen/structure/MapGenStructure.java index 7af22b3..0a61ee7 100755 --- a/src/main/java/net/minecraft/world/gen/structure/MapGenStructure.java +++ b/src/main/java/net/minecraft/world/gen/structure/MapGenStructure.java @@ -46,6 +46,14 @@ public abstract class MapGenStructure extends MapGenBase { public abstract String getStructureName(); + public MapGenStructure() { + super(); + } + + public MapGenStructure(boolean scramble) { + super(scramble); + } + /**+ * Recursively called by generate() */ diff --git a/src/main/java/net/minecraft/world/gen/structure/MapGenVillage.java b/src/main/java/net/minecraft/world/gen/structure/MapGenVillage.java index 5547ee7..a9b07f0 100755 --- a/src/main/java/net/minecraft/world/gen/structure/MapGenVillage.java +++ b/src/main/java/net/minecraft/world/gen/structure/MapGenVillage.java @@ -40,13 +40,14 @@ public class MapGenVillage extends MapGenStructure { private int field_82665_g; private int field_82666_h; - public MapGenVillage() { + public MapGenVillage(boolean scramble) { + super(scramble); this.field_82665_g = 32; this.field_82666_h = 8; } - public MapGenVillage(Map parMap) { - this(); + public MapGenVillage(Map parMap, boolean scramble) { + this(scramble); for (Entry entry : parMap.entrySet()) { if (((String) entry.getKey()).equals("size")) { diff --git a/src/main/java/net/minecraft/world/gen/structure/StructureOceanMonument.java b/src/main/java/net/minecraft/world/gen/structure/StructureOceanMonument.java index e1c754b..9f93fb3 100755 --- a/src/main/java/net/minecraft/world/gen/structure/StructureOceanMonument.java +++ b/src/main/java/net/minecraft/world/gen/structure/StructureOceanMonument.java @@ -45,13 +45,14 @@ public class StructureOceanMonument extends MapGenStructure { BiomeGenBase.deepOcean, BiomeGenBase.river, BiomeGenBase.frozenOcean, BiomeGenBase.frozenRiver }); private static final List field_175803_h = Lists.newArrayList(); - public StructureOceanMonument() { + public StructureOceanMonument(boolean scramble) { + super(scramble); this.field_175800_f = 32; this.field_175801_g = 5; } - public StructureOceanMonument(Map parMap) { - this(); + public StructureOceanMonument(Map parMap, boolean scramble) { + this(scramble); for (Entry entry : parMap.entrySet()) { if (((String) entry.getKey()).equals("spacing")) { diff --git a/src/main/java/net/minecraft/world/storage/WorldInfo.java b/src/main/java/net/minecraft/world/storage/WorldInfo.java index ec3ec6b..fbc65f0 100755 --- a/src/main/java/net/minecraft/world/storage/WorldInfo.java +++ b/src/main/java/net/minecraft/world/storage/WorldInfo.java @@ -71,6 +71,9 @@ public class WorldInfo { private int borderWarningTime = 15; private GameRules theGameRules = new GameRules(); + public static final int eaglerVersionCurrent = 1; + private int eaglerVersion = eaglerVersionCurrent; + protected WorldInfo() { } @@ -187,6 +190,7 @@ public class WorldInfo { this.borderWarningTime = nbt.getInteger("BorderWarningTime"); } + this.eaglerVersion = nbt.getInteger("eaglerVersionSerial"); } public WorldInfo(WorldSettings settings, String name) { @@ -296,6 +300,7 @@ public class WorldInfo { nbt.setDouble("BorderSizeLerpTarget", this.borderSizeLerpTarget); nbt.setDouble("BorderWarningBlocks", (double) this.borderWarningDistance); nbt.setDouble("BorderWarningTime", (double) this.borderWarningTime); + nbt.setInteger("eaglerVersionSerial", this.eaglerVersion); if (this.difficulty != null) { nbt.setByte("Difficulty", (byte) this.difficulty.getDifficultyId()); } @@ -712,6 +717,20 @@ public class WorldInfo { this.difficultyLocked = flag; } + public int getEaglerVersion() { + return this.eaglerVersion; + } + + public boolean isOldEaglercraftRandom() { + return this.eaglerVersion == 0; + } + + public static void initEaglerVersion(NBTTagCompound compound) { + if (!compound.hasKey("eaglerVersionSerial", 99)) { + compound.setInteger("eaglerVersionSerial", eaglerVersionCurrent); + } + } + /**+ * Adds this WorldInfo instance to the crash report. */