From 6f7f4ed46bc883b7a81fcc17b1a97b4ab3f9cacc Mon Sep 17 00:00:00 2001 From: lax1dude Date: Sat, 8 Jun 2024 16:02:29 -0700 Subject: [PATCH] Update #34 - Add dynamic lights, fix vanilla world seeds --- README.md | 7 +- client_version | 2 +- .../net/minecraft/client/Minecraft.edit.java | 15 +- .../client/gui/GuiOverlayDebug.edit.java | 11 +- .../client/gui/GuiVideoSettings.edit.java | 8 +- .../client/particle/EntityFX.edit.java | 7 + .../renderer/BlockFluidRenderer.edit.java | 16 +- .../renderer/BlockModelRenderer.edit.java | 20 +- .../renderer/ChunkRenderContainer.edit.java | 12 +- .../client/renderer/EntityRenderer.edit.java | 125 +++++++- .../client/renderer/RenderGlobal.edit.java | 32 +- .../renderer/block/model/FaceBakery.edit.java | 23 +- .../renderer/chunk/RenderChunk.edit.java | 9 +- .../entity/RenderFallingBlock.edit.java | 11 +- .../renderer/entity/RenderManager.edit.java | 12 +- .../entity/layers/LayerSpiderEyes.edit.java | 9 + .../TileEntityRendererDispatcher.edit.java | 9 +- .../client/settings/GameSettings.edit.java | 27 +- .../net/minecraft/entity/Entity.edit.java | 62 +++- .../entity/EntityLivingBase.edit.java | 14 +- .../entity/boss/EntityWither.edit.java | 7 + .../entity/item/EntityEnderEye.edit.java | 24 +- .../item/EntityFireworkRocket.edit.java | 15 + .../entity/item/EntityItem.edit.java | 15 +- .../entity/item/EntityItemFrame.edit.java | 19 +- .../entity/item/EntityMinecartTNT.edit.java | 10 +- .../entity/item/EntityTNTPrimed.edit.java | 10 +- .../entity/item/EntityXPOrb.edit.java | 9 +- .../entity/monster/EntityBlaze.edit.java | 9 +- .../entity/monster/EntityCreeper.edit.java | 11 +- .../entity/monster/EntityMagmaCube.edit.java | 7 + .../projectile/EntityFireball.edit.java | 7 + .../net/minecraft/item/Item.edit.java | 7 + .../net/minecraft/item/ItemBlock.edit.java | 7 + .../server/MinecraftServer.edit.java | 10 +- .../net/minecraft/world/Teleporter.edit.java | 2 +- .../net/minecraft/world/World.edit.java | 11 +- .../minecraft/world/WorldProvider.edit.java | 10 +- .../world/biome/BiomeGenMesa.edit.java | 17 +- .../net/minecraft/world/chunk/Chunk.edit.java | 6 +- .../world/chunk/EmptyChunk.edit.java | 8 +- .../world/gen/ChunkProviderEnd.edit.java | 2 +- .../world/gen/ChunkProviderFlat.edit.java | 27 +- .../world/gen/ChunkProviderGenerate.edit.java | 22 +- .../world/gen/ChunkProviderHell.edit.java | 12 +- .../minecraft/world/gen/MapGenBase.edit.java | 13 +- .../minecraft/world/gen/MapGenCaves.edit.java | 12 +- .../world/gen/MapGenCavesHell.edit.java | 12 +- .../world/gen/MapGenRavine.edit.java | 11 +- .../gen/feature/WorldGenBigTree.edit.java | 2 +- .../gen/structure/MapGenMineshaft.edit.java | 10 + .../structure/MapGenNetherBridge.edit.java | 7 +- .../MapGenScatteredFeature.edit.java | 12 +- .../gen/structure/MapGenStronghold.edit.java | 16 +- .../gen/structure/MapGenStructure.edit.java | 13 +- .../gen/structure/MapGenVillage.edit.java | 12 +- .../StructureOceanMonument.edit.java | 12 +- .../world/storage/WorldInfo.edit.java | 33 +- .../assets/minecraft/lang/en_US.edit.lang | 12 +- .../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 +- .../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 + sources/resources/plugin_download.zip | Bin 255599 -> 255913 bytes sources/resources/plugin_version.json | 2 +- 96 files changed, 2400 insertions(+), 193 deletions(-) create mode 100644 patches/minecraft/net/minecraft/entity/item/EntityFireworkRocket.edit.java create mode 100644 sources/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/dynamiclights/DynamicLightBucketLoader.java create mode 100644 sources/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/dynamiclights/DynamicLightInstance.java create mode 100644 sources/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/dynamiclights/DynamicLightsAcceleratedEffectRenderer.java create mode 100644 sources/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/dynamiclights/DynamicLightsPipelineCompiler.java create mode 100644 sources/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/dynamiclights/DynamicLightsStateManager.java create mode 100644 sources/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/dynamiclights/program/DynamicLightsAccelParticleShader.java create mode 100644 sources/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/dynamiclights/program/DynamicLightsExtPipelineShader.java create mode 100644 sources/main/java/net/lax1dude/eaglercraft/v1_8/sp/gui/GuiScreenOldSeedWarning.java create mode 100644 sources/resources/assets/eagler/glsl/dynamiclights/accel_particle_dynamiclights.fsh create mode 100644 sources/resources/assets/eagler/glsl/dynamiclights/accel_particle_dynamiclights.vsh create mode 100644 sources/resources/assets/eagler/glsl/dynamiclights/core_dynamiclights.fsh create mode 100644 sources/resources/assets/eagler/glsl/dynamiclights/core_dynamiclights.vsh create mode 100644 sources/resources/assets/eagler/mesh/readme.txt diff --git a/README.md b/README.md index 9a1ea15..de94b02 100644 --- a/README.md +++ b/README.md @@ -18,20 +18,19 @@ - **Any portion of the decompiled Minecraft 1.8 source code or resources** - **Any portion of Mod Coder Pack and it's config files** - **Data that can be used alone to reconstruct portions of the game's source code** - - **Software configured by default to allow users to play without owning a copy of Minecraft** ## Getting Started: ### To compile the latest version of the client, on Windows: -1. Make sure you have at least Java 11 installed and added to your PATH +1. Make sure you have at least Java 11 installed and added to your PATH, its is recommended to use Java 17 2. Download (clone) this repository to your computer 3. Double click `CompileLatestClient.bat`, a GUI resembling a classic windows installer should open 4. Follow the steps shown to you in the new window to finish compiling ### To compile the latest version of the client, on Linux/macOS: -1. Make sure you have at least Java 11 installed +1. Make sure you have at least Java 11 installed, its is recommended to use Java 17 2. Download (clone) this repository to your computer 3. Open a terminal in the folder the repository was cloned to 4. Type `chmod +x CompileLatestClient.sh` and hit enter @@ -185,7 +184,7 @@ You may want to implement some custom logic for loading/saving certain local sto Be aware that the client will still save the key to the browser's local storage anyway even if you define a custom save handler, and will just attempt to load the key from the browser's local storage normally if you return null, these are meant to be used like event handlers for creating backups of keys instead of completely replacing the local storage save and load functions. -On a normal client you will only ever need to handle local storage keys called `_eaglercraftX.p` (profile), `_eaglercraftX.g` (game settings), `_eaglercraftX.s` (server list), `_eaglercraftX.r` (shared world relays), feel free to just ignore any other keys. It is guaranteed that the data the client stores will always be valid base64, so it is best practice to decode it to raw binary first if possible to reduce it's size before saving it to something like a MySQL database in your backend if you are trying to implement some kind of profile syncing system for your website. The keys already have GZIP compression applied to them by default so don't bother trying to compress them yourself a second time because it won't reduce their size. +On a normal client you will only ever need to handle local storage keys called `p` (profile), `g` (game settings), `s` (server list), `r` (shared world relays), in your hooks functions. Feel free to just ignore any other keys. It is guaranteed that the data the client stores will always be valid base64, so it is best practice to decode it to raw binary first if possible to reduce it's size before saving it to something like a MySQL database in your backend if you are trying to implement some kind of profile syncing system for your website. The keys already have GZIP compression applied to them by default so don't bother trying to compress them yourself a second time because it won't reduce their size. ## Developing a Client diff --git a/client_version b/client_version index c274cdd..979e1e0 100644 --- a/client_version +++ b/client_version @@ -1 +1 @@ -u32 \ No newline at end of file +u34 \ No newline at end of file diff --git a/patches/minecraft/net/minecraft/client/Minecraft.edit.java b/patches/minecraft/net/minecraft/client/Minecraft.edit.java index c7ee4d5..34e1f62 100644 --- a/patches/minecraft/net/minecraft/client/Minecraft.edit.java +++ b/patches/minecraft/net/minecraft/client/Minecraft.edit.java @@ -409,9 +409,20 @@ > DELETE 10 @ 10 : 11 -> INSERT 9 : 10 @ 9 +> INSERT 9 : 21 @ 9 -+ 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); ++ } > CHANGE 1 : 2 @ 1 : 2 diff --git a/patches/minecraft/net/minecraft/client/gui/GuiOverlayDebug.edit.java b/patches/minecraft/net/minecraft/client/gui/GuiOverlayDebug.edit.java index 0d95cd3..5e45371 100644 --- a/patches/minecraft/net/minecraft/client/gui/GuiOverlayDebug.edit.java +++ b/patches/minecraft/net/minecraft/client/gui/GuiOverlayDebug.edit.java @@ -18,7 +18,7 @@ + import java.util.Locale; -> INSERT 1 : 13 @ 1 +> INSERT 1 : 14 @ 1 + import java.util.TimeZone; + @@ -31,6 +31,7 @@ + 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; > CHANGE 5 : 6 @ 5 : 10 @@ -316,7 +317,13 @@ ~ HString.format("Facing: %s (%s) (%.1f / %.1f)", -> CHANGE 5 : 6 @ 5 : 6 +> INSERT 3 : 6 @ 3 + ++ if (DynamicLightsStateManager.isDynamicLightsRender()) { ++ arraylist.add(6, DynamicLightsStateManager.getF3String()); ++ } + +> CHANGE 2 : 3 @ 2 : 3 ~ arraylist.add("Biome: " + chunk.getBiome(blockpos, null).biomeName); diff --git a/patches/minecraft/net/minecraft/client/gui/GuiVideoSettings.edit.java b/patches/minecraft/net/minecraft/client/gui/GuiVideoSettings.edit.java index 4575877..18744aa 100644 --- a/patches/minecraft/net/minecraft/client/gui/GuiVideoSettings.edit.java +++ b/patches/minecraft/net/minecraft/client/gui/GuiVideoSettings.edit.java @@ -21,10 +21,10 @@ ~ 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 }; > CHANGE 11 : 13 @ 11 : 31 diff --git a/patches/minecraft/net/minecraft/client/particle/EntityFX.edit.java b/patches/minecraft/net/minecraft/client/particle/EntityFX.edit.java index 79b6299..dfc213e 100644 --- a/patches/minecraft/net/minecraft/client/particle/EntityFX.edit.java +++ b/patches/minecraft/net/minecraft/client/particle/EntityFX.edit.java @@ -36,4 +36,11 @@ ~ public void setParticleIcon(EaglerTextureAtlasSprite icon) { +> INSERT 30 : 34 @ 30 + ++ ++ protected float getEaglerDynamicLightsValueSimple(float partialTicks) { ++ return 0.0f; ++ } + > EOF diff --git a/patches/minecraft/net/minecraft/client/renderer/BlockFluidRenderer.edit.java b/patches/minecraft/net/minecraft/client/renderer/BlockFluidRenderer.edit.java index fa604c3..2d31d35 100644 --- a/patches/minecraft/net/minecraft/client/renderer/BlockFluidRenderer.edit.java +++ b/patches/minecraft/net/minecraft/client/renderer/BlockFluidRenderer.edit.java @@ -5,12 +5,13 @@ # Version: 1.0 # Author: lax1dude -> INSERT 2 : 7 @ 2 +> INSERT 2 : 8 @ 2 + 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; > DELETE 4 @ 4 : 6 @@ -20,10 +21,11 @@ ~ private EaglerTextureAtlasSprite[] atlasSpritesLava = new EaglerTextureAtlasSprite[2]; ~ private EaglerTextureAtlasSprite[] atlasSpritesWater = new EaglerTextureAtlasSprite[2]; -> INSERT 15 : 17 @ 15 +> INSERT 15 : 18 @ 15 + BlockPos tmp = new BlockPos(0, 0, 0); + boolean deferred = DeferredStateManager.isDeferredRenderer(); ++ boolean isDynamicLights = deferred || DynamicLightsStateManager.isDynamicLightsRender(); > INSERT 1 : 3 @ 1 @@ -78,7 +80,7 @@ > CHANGE 31 : 36 @ 31 : 32 -~ if (deferred) +~ if (isDynamicLights) ~ worldRendererIn.genNormals(true, f12 <= -999.0F ? BlockVertexIDs.builtin_water_still_vertex_id ~ : BlockVertexIDs.builtin_water_flow_vertex_id); ~ @@ -86,7 +88,7 @@ > INSERT 8 : 11 @ 8 -+ if (deferred) ++ if (isDynamicLights) + worldRendererIn.genNormals(true, f12 <= -999.0F ? BlockVertexIDs.builtin_water_still_vertex_id + : BlockVertexIDs.builtin_water_flow_vertex_id); @@ -100,7 +102,7 @@ > INSERT 10 : 12 @ 10 -+ if (deferred) ++ if (isDynamicLights) + worldRendererIn.putNormal(0.0f, -1.0f, 0.0f, BlockVertexIDs.builtin_water_still_vertex_id); > CHANGE 23 : 24 @ 23 : 24 @@ -119,7 +121,7 @@ > CHANGE 15 : 29 @ 15 : 23 -~ 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) @@ -130,7 +132,7 @@ ~ .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/patches/minecraft/net/minecraft/client/renderer/BlockModelRenderer.edit.java b/patches/minecraft/net/minecraft/client/renderer/BlockModelRenderer.edit.java index c51f2e5..ba34f71 100644 --- a/patches/minecraft/net/minecraft/client/renderer/BlockModelRenderer.edit.java +++ b/patches/minecraft/net/minecraft/client/renderer/BlockModelRenderer.edit.java @@ -5,13 +5,14 @@ # Version: 1.0 # Author: lax1dude -> INSERT 4 : 9 @ 4 +> INSERT 4 : 10 @ 4 + + 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; > DELETE 3 @ 3 : 7 @@ -52,20 +53,22 @@ ~ worldRendererIn, list1, bitset, afloat); -> INSERT 9 : 10 @ 9 +> INSERT 9 : 11 @ 9 + boolean isDeferred = DeferredStateManager.isDeferredRenderer(); ++ boolean isDynamicLights = isDeferred || DynamicLightsStateManager.isDynamicLightsRender(); > CHANGE 8 : 9 @ 8 : 9 ~ if (!isDeferred && block$enumoffsettype == Block.EnumOffsetType.XYZ) { -> CHANGE 4 : 8 @ 4 : 6 +> CHANGE 4 : 9 @ 4 : 6 ~ 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); > CHANGE 2 : 3 @ 2 : 3 @@ -101,10 +104,11 @@ + private final BlockPos blockpos5 = new BlockPos(0, 0, 0); + -> CHANGE 2 : 4 @ 2 : 3 +> CHANGE 2 : 5 @ 2 : 3 ~ List listQuadsIn, BitSet boundsFlags, float[] quadBounds) { ~ boolean isDeferred = DeferredStateManager.isDeferredRenderer(); +~ boolean isDynamicLights = isDeferred || DynamicLightsStateManager.isDynamicLightsRender(); > CHANGE 11 : 12 @ 11 : 12 @@ -115,9 +119,9 @@ ~ 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); > CHANGE 1 : 2 @ 1 : 5 diff --git a/patches/minecraft/net/minecraft/client/renderer/ChunkRenderContainer.edit.java b/patches/minecraft/net/minecraft/client/renderer/ChunkRenderContainer.edit.java index 49100d5..f4b0620 100644 --- a/patches/minecraft/net/minecraft/client/renderer/ChunkRenderContainer.edit.java +++ b/patches/minecraft/net/minecraft/client/renderer/ChunkRenderContainer.edit.java @@ -7,13 +7,14 @@ > DELETE 2 @ 2 : 3 -> CHANGE 1 : 6 @ 1 : 2 +> CHANGE 1 : 7 @ 1 : 2 ~ ~ 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; > INSERT 3 : 4 @ 3 @@ -23,17 +24,22 @@ ~ public void preRenderChunk(RenderChunk renderChunkIn, EnumWorldBlockLayer enumworldblocklayer) { -> CHANGE 1 : 11 @ 1 : 4 +> CHANGE 1 : 16 @ 1 : 4 ~ float posX = (float) ((double) blockpos.getX() - this.viewEntityX); ~ float posY = (float) ((double) blockpos.getY() - this.viewEntityY); ~ 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); ~ } > EOF diff --git a/patches/minecraft/net/minecraft/client/renderer/EntityRenderer.edit.java b/patches/minecraft/net/minecraft/client/renderer/EntityRenderer.edit.java index 6fdaeda..309af9a 100644 --- a/patches/minecraft/net/minecraft/client/renderer/EntityRenderer.edit.java +++ b/patches/minecraft/net/minecraft/client/renderer/EntityRenderer.edit.java @@ -16,7 +16,7 @@ ~ import net.lax1dude.eaglercraft.v1_8.EaglercraftRandom; ~ import net.lax1dude.eaglercraft.v1_8.HString; -> INSERT 1 : 28 @ 1 +> INSERT 1 : 29 @ 1 + + import com.google.common.base.Predicate; @@ -42,6 +42,7 @@ + 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; @@ -151,7 +152,13 @@ ~ (float) this.mc.displayWidth / (float) this.mc.displayHeight, 0.05F, farPlane); ~ DeferredStateManager.setGBufferNearFarPlanes(0.05f, farPlane); -> CHANGE 57 : 58 @ 57 : 58 +> INSERT 50 : 53 @ 50 + ++ if (DynamicLightsStateManager.isInDynamicLightsPass()) { ++ DynamicLightsStateManager.reportForwardRenderObjectPosition2(0.0f, 0.0f, 0.0f); ++ } + +> CHANGE 7 : 8 @ 7 : 8 ~ GlStateManager.gluPerspective(this.getFOVModifier(partialTicks, false), @@ -176,12 +183,13 @@ ~ this.lightmapColors[i] = short1 << 24 | j | k << 8 | l << 16; -> INSERT 3 : 17 @ 3 +> INSERT 3 : 18 @ 3 + + 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 { @@ -283,11 +291,31 @@ + VoiceTagRenderer.clearTagsDrawnSet(); + -> CHANGE 4 : 5 @ 4 : 5 +> CHANGE 4 : 25 @ 4 : 12 +~ boolean dlights = DynamicLightsStateManager.isDynamicLightsRender(); +~ if (dlights) { +~ updateDynamicLightListEagler(partialTicks); +~ } ~ if (this.mc.gameSettings.anaglyph && !this.mc.gameSettings.shaders) { +~ 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(); +~ } +~ } -> CHANGE 8 : 24 @ 8 : 9 +> CHANGE 1 : 26 @ 1 : 2 ~ if (this.mc.gameSettings.shaders) { ~ try { @@ -303,7 +331,16 @@ ~ 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(); +~ } +~ } ~ } > INSERT 2 : 6 @ 2 @@ -313,9 +350,22 @@ + } + -> DELETE 15 @ 15 : 17 +> INSERT 14 : 18 @ 14 -> CHANGE 12 : 15 @ 12 : 14 ++ boolean isDynamicLights = DynamicLightsStateManager.isDynamicLightsRender(); ++ if (isDynamicLights) { ++ DynamicLightsStateManager.setupInverseViewMatrix(); ++ } + +> DELETE 1 @ 1 : 3 + +> INSERT 6 : 9 @ 6 + ++ TileEntityRendererDispatcher.staticPlayerX = d0; // hack, needed for some eagler stuff ++ TileEntityRendererDispatcher.staticPlayerY = d1; ++ TileEntityRendererDispatcher.staticPlayerZ = d2; + +> CHANGE 6 : 9 @ 6 : 8 ~ float vigg = this.getFOVModifier(partialTicks, true); ~ GlStateManager.gluPerspective(vigg, (float) this.mc.displayWidth / (float) this.mc.displayHeight, 0.05F, @@ -335,11 +385,59 @@ + GlStateManager.shadeModel(7424); -> CHANGE 46 : 47 @ 46 : 47 +> INSERT 16 : 19 @ 16 ++ if (isDynamicLights) { ++ GlStateManager.disableExtensionPipeline(); ++ } + +> INSERT 2 : 5 @ 2 + ++ if (isDynamicLights) { ++ GlStateManager.enableExtensionPipeline(); ++ } + +> INSERT 8 : 11 @ 8 + ++ if (isDynamicLights) { ++ GlStateManager.disableExtensionPipeline(); ++ } + +> INSERT 3 : 6 @ 3 + ++ if (isDynamicLights) { ++ GlStateManager.enableExtensionPipeline(); ++ } + +> CHANGE 17 : 25 @ 17 : 18 + +~ if (isDynamicLights) { +~ DynamicLightsStateManager.bindAcceleratedEffectRenderer(effectrenderer); +~ DynamicLightsStateManager.reportForwardRenderObjectPosition2(0.0f, 0.0f, 0.0f); +~ } ~ effectrenderer.renderParticles(entity, partialTicks, 2); +~ if (isDynamicLights) { +~ effectrenderer.acceleratedParticleRenderer = null; +~ } -> CHANGE 44 : 45 @ 44 : 45 +> INSERT 39 : 53 @ 39 + ++ 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); ++ } ++ + +> CHANGE 5 : 6 @ 5 : 6 ~ GlStateManager.gluPerspective(this.getFOVModifier(partialTicks, true), @@ -359,12 +457,15 @@ + boolean df = DeferredStateManager.isInDeferredPass(); -> CHANGE 9 : 25 @ 9 : 13 +> CHANGE 9 : 28 @ 9 : 13 ~ if (!df) { ~ GlStateManager.enableBlend(); ~ GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0); ~ GlStateManager.alphaFunc(516, 0.1F); +~ if (DynamicLightsStateManager.isInDynamicLightsPass()) { +~ DynamicLightsStateManager.reportForwardRenderObjectPosition2(0.0f, 0.0f, 0.0f); +~ } ~ } else { ~ GlStateManager.enableAlpha(); ~ DeferredStateManager.setHDRTranslucentPassBlendFunc(); diff --git a/patches/minecraft/net/minecraft/client/renderer/RenderGlobal.edit.java b/patches/minecraft/net/minecraft/client/renderer/RenderGlobal.edit.java index 128721b..7fc3db9 100644 --- a/patches/minecraft/net/minecraft/client/renderer/RenderGlobal.edit.java +++ b/patches/minecraft/net/minecraft/client/renderer/RenderGlobal.edit.java @@ -14,7 +14,7 @@ ~ import net.lax1dude.eaglercraft.v1_8.Keyboard; ~ -> INSERT 2 : 22 @ 2 +> INSERT 2 : 23 @ 2 + + import com.google.common.collect.Lists; @@ -34,6 +34,7 @@ + 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; @@ -142,7 +143,7 @@ + this.renderDistanceChunks = this.mc.gameSettings.renderDistanceChunks; + -> INSERT 19 : 75 @ 19 +> INSERT 19 : 85 @ 19 + + if (mc.gameSettings.shaders) { @@ -200,6 +201,16 @@ + } + SharedPipelineShaders.free(); + } ++ ++ if (DeferredStateManager.isDeferredRenderer()) { ++ DynamicLightsStateManager.disableDynamicLightsRender(false); ++ } else { ++ if (mc.gameSettings.enableDynamicLights) { ++ DynamicLightsStateManager.enableDynamicLightsRender(); ++ } else { ++ DynamicLightsStateManager.disableDynamicLightsRender(true); ++ } ++ } > DELETE 9 @ 9 : 13 @@ -600,16 +611,25 @@ > DELETE 17 @ 17 : 18 -> CHANGE 155 : 157 @ 155 : 156 +> CHANGE 155 : 159 @ 155 : 156 -~ worldRendererIn.begin(7, DeferredStateManager.isDeferredRenderer() ? VertexFormat.BLOCK_SHADERS -~ : DefaultVertexFormats.BLOCK); +~ worldRendererIn.begin(7, +~ (DeferredStateManager.isDeferredRenderer() || DynamicLightsStateManager.isDynamicLightsRender()) +~ ? VertexFormat.BLOCK_SHADERS +~ : DefaultVertexFormats.BLOCK); > CHANGE 19 : 20 @ 19 : 20 ~ EaglerTextureAtlasSprite textureatlassprite = this.destroyBlockIcons[i]; -> CHANGE 17 : 19 @ 17 : 18 +> INSERT 1 : 5 @ 1 + ++ if (DynamicLightsStateManager.isInDynamicLightsPass()) { ++ DynamicLightsStateManager.reportForwardRenderObjectPosition2(blockpos.x, blockpos.y, ++ blockpos.z); ++ } + +> CHANGE 16 : 18 @ 16 : 17 ~ if (partialTicks == 0 && movingObjectPositionIn != null ~ && movingObjectPositionIn.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) { diff --git a/patches/minecraft/net/minecraft/client/renderer/block/model/FaceBakery.edit.java b/patches/minecraft/net/minecraft/client/renderer/block/model/FaceBakery.edit.java index 888bd90..0f4527a 100644 --- a/patches/minecraft/net/minecraft/client/renderer/block/model/FaceBakery.edit.java +++ b/patches/minecraft/net/minecraft/client/renderer/block/model/FaceBakery.edit.java @@ -5,13 +5,14 @@ # Version: 1.0 # Author: lax1dude -> INSERT 2 : 7 @ 2 +> INSERT 2 : 8 @ 2 + import net.lax1dude.eaglercraft.v1_8.minecraft.EaglerTextureAtlasSprite; + 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; > DELETE 1 @ 1 : 6 @@ -70,9 +71,11 @@ ~ float[] sprite, EaglerTextureAtlasSprite modelRotationIn, ModelRotation partRotation, ~ BlockPartRotation uvLocked, boolean shade, boolean parFlag2, Vector3f calcNormal) { -> CHANGE 1 : 2 @ 1 : 2 +> CHANGE 1 : 4 @ 1 : 2 -~ int i = (parFlag2 && stride != 8) ? this.getFaceShadeColor(enumfacing) : -1; +~ int i = (parFlag2 && (stride != 8 || !Minecraft.getMinecraft().gameSettings.shaders)) +~ ? this.getFaceShadeColor(enumfacing) +~ : -1; > CHANGE 7 : 9 @ 7 : 8 @@ -84,12 +87,18 @@ ~ EaglerTextureAtlasSprite sprite, BlockFaceUV faceUV, EnumFacing facing, Vector3f calcNormal) { ~ int i = storeIndex * stride; -> INSERT 4 : 27 @ 4 +> INSERT 4 : 33 @ 4 + 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/patches/minecraft/net/minecraft/client/renderer/chunk/RenderChunk.edit.java b/patches/minecraft/net/minecraft/client/renderer/chunk/RenderChunk.edit.java index 44bb643..c733169 100644 --- a/patches/minecraft/net/minecraft/client/renderer/chunk/RenderChunk.edit.java +++ b/patches/minecraft/net/minecraft/client/renderer/chunk/RenderChunk.edit.java @@ -7,7 +7,7 @@ > DELETE 2 @ 2 : 5 -> CHANGE 3 : 11 @ 3 : 4 +> CHANGE 3 : 12 @ 3 : 4 ~ ~ import com.google.common.collect.Maps; @@ -17,6 +17,7 @@ ~ 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; > DELETE 4 @ 4 : 7 @@ -152,10 +153,12 @@ ~ this.compileTask.setCompiledChunk(this.compiledChunk); ~ return this.compileTask; -> CHANGE 3 : 5 @ 3 : 4 +> CHANGE 3 : 7 @ 3 : 4 ~ worldRendererIn.begin(7, -~ DeferredStateManager.isDeferredRenderer() ? VertexFormat.BLOCK_SHADERS : DefaultVertexFormats.BLOCK); +~ (DeferredStateManager.isDeferredRenderer() || DynamicLightsStateManager.isDynamicLightsRender()) +~ ? VertexFormat.BLOCK_SHADERS +~ : DefaultVertexFormats.BLOCK); > CHANGE 5 : 7 @ 5 : 6 diff --git a/patches/minecraft/net/minecraft/client/renderer/entity/RenderFallingBlock.edit.java b/patches/minecraft/net/minecraft/client/renderer/entity/RenderFallingBlock.edit.java index 0cc3b81..4ed39be 100644 --- a/patches/minecraft/net/minecraft/client/renderer/entity/RenderFallingBlock.edit.java +++ b/patches/minecraft/net/minecraft/client/renderer/entity/RenderFallingBlock.edit.java @@ -5,20 +5,23 @@ # Version: 1.0 # Author: lax1dude -> INSERT 2 : 6 @ 2 +> INSERT 2 : 7 @ 2 + 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; > DELETE 4 @ 4 : 5 > DELETE 1 @ 1 : 4 -> CHANGE 28 : 30 @ 28 : 29 +> CHANGE 28 : 32 @ 28 : 29 -~ worldrenderer.begin(7, DeferredStateManager.isDeferredRenderer() ? VertexFormat.BLOCK_SHADERS -~ : DefaultVertexFormats.BLOCK); +~ worldrenderer.begin(7, +~ (DeferredStateManager.isDeferredRenderer() +~ || DynamicLightsStateManager.isDynamicLightsRender()) ? VertexFormat.BLOCK_SHADERS +~ : DefaultVertexFormats.BLOCK); > EOF diff --git a/patches/minecraft/net/minecraft/client/renderer/entity/RenderManager.edit.java b/patches/minecraft/net/minecraft/client/renderer/entity/RenderManager.edit.java index c59f9a2..1542328 100644 --- a/patches/minecraft/net/minecraft/client/renderer/entity/RenderManager.edit.java +++ b/patches/minecraft/net/minecraft/client/renderer/entity/RenderManager.edit.java @@ -7,7 +7,7 @@ > DELETE 2 @ 2 : 3 -> INSERT 1 : 10 @ 1 +> INSERT 1 : 11 @ 1 + + import com.google.common.collect.Maps; @@ -17,6 +17,7 @@ + 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; > INSERT 3 : 4 @ 3 @@ -61,7 +62,14 @@ ~ public Render getEntityRenderObject(Entity entityIn) { -> INSERT 85 : 86 @ 85 +> INSERT 82 : 86 @ 82 + ++ if (DynamicLightsStateManager.isInDynamicLightsPass()) { ++ DynamicLightsStateManager.reportForwardRenderObjectPosition2((float) (d0 - viewerPosX), ++ (float) (d1 - viewerPosY), (float) (d2 - viewerPosZ)); ++ } + +> INSERT 3 : 4 @ 3 + DeferredStateManager.setEmissionConstant(1.0f); diff --git a/patches/minecraft/net/minecraft/client/renderer/entity/layers/LayerSpiderEyes.edit.java b/patches/minecraft/net/minecraft/client/renderer/entity/layers/LayerSpiderEyes.edit.java index 64a370f..0abe69e 100644 --- a/patches/minecraft/net/minecraft/client/renderer/entity/layers/LayerSpiderEyes.edit.java +++ b/patches/minecraft/net/minecraft/client/renderer/entity/layers/LayerSpiderEyes.edit.java @@ -67,4 +67,13 @@ + return; + } +> INSERT 3 : 5 @ 3 + ++ GlStateManager.enablePolygonOffset(); ++ GlStateManager.doPolygonOffset(-0.025f, 1.0f); + +> INSERT 20 : 21 @ 20 + ++ GlStateManager.disablePolygonOffset(); + > EOF diff --git a/patches/minecraft/net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher.edit.java b/patches/minecraft/net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher.edit.java index 0814ccf..1fc12ec 100644 --- a/patches/minecraft/net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher.edit.java +++ b/patches/minecraft/net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher.edit.java @@ -7,13 +7,14 @@ > DELETE 2 @ 2 : 3 -> INSERT 1 : 6 @ 1 +> INSERT 1 : 7 @ 1 + + 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; > DELETE 1 @ 1 : 3 @@ -24,4 +25,10 @@ ~ tileentityspecialrenderer = this ~ .getSpecialRendererByClass((Class) teClass.getSuperclass()); +> INSERT 52 : 55 @ 52 + ++ if (DynamicLightsStateManager.isInDynamicLightsPass()) { ++ DynamicLightsStateManager.reportForwardRenderObjectPosition2((float) x, (float) y, (float) z); ++ } + > EOF diff --git a/patches/minecraft/net/minecraft/client/settings/GameSettings.edit.java b/patches/minecraft/net/minecraft/client/settings/GameSettings.edit.java index 0c9ab50..c2b7391 100644 --- a/patches/minecraft/net/minecraft/client/settings/GameSettings.edit.java +++ b/patches/minecraft/net/minecraft/client/settings/GameSettings.edit.java @@ -91,7 +91,7 @@ ~ public int guiScale = 3; -> INSERT 3 : 17 @ 3 +> INSERT 3 : 18 @ 3 + public boolean hudFps = true; + public boolean hudCoords = true; @@ -107,6 +107,7 @@ + public EaglerDeferredConfig deferredShaderConf = new EaglerDeferredConfig(); + public boolean enableUpdateSvc = true; + public boolean enableFNAWSkins = true; ++ public boolean enableDynamicLights = false; > CHANGE 1 : 7 @ 1 : 2 @@ -157,7 +158,7 @@ > DELETE 20 @ 20 : 37 -> INSERT 13 : 62 @ 13 +> INSERT 13 : 67 @ 13 + if (parOptions == GameSettings.Options.HUD_FPS) { + this.hudFps = !this.hudFps; @@ -208,6 +209,11 @@ + this.enableVsync = !this.enableVsync; + } + ++ if (parOptions == GameSettings.Options.EAGLER_DYNAMIC_LIGHTS) { ++ this.enableDynamicLights = !this.enableDynamicLights; ++ this.mc.renderGlobal.loadRenderers(); ++ } ++ > CHANGE 23 : 24 @ 23 : 34 @@ -217,7 +223,7 @@ > DELETE 2 @ 2 : 4 -> INSERT 8 : 30 @ 8 +> INSERT 8 : 32 @ 8 + case HUD_COORDS: + return this.hudCoords; @@ -241,6 +247,8 @@ + return this.enableFNAWSkins; + case EAGLER_VSYNC: + return this.enableVsync; ++ case EAGLER_DYNAMIC_LIGHTS: ++ return this.enableDynamicLights; > CHANGE 43 : 46 @ 43 : 47 @@ -451,13 +459,17 @@ ~ for (EnumPlayerModelParts enumplayermodelparts : EnumPlayerModelParts._VALUES) { -> INSERT 4 : 10 @ 4 +> INSERT 4 : 14 @ 4 + + if (astring[0].equals("enableFNAWSkins")) { + this.enableFNAWSkins = astring[1].equals("true"); + } + ++ if (astring[0].equals("enableDynamicLights")) { ++ this.enableDynamicLights = astring[1].equals("true"); ++ } ++ + deferredShaderConf.readOption(astring[0], astring[1]); > CHANGE 6 : 13 @ 6 : 7 @@ -509,7 +521,7 @@ > DELETE 13 @ 13 : 24 -> INSERT 5 : 21 @ 5 +> INSERT 5 : 22 @ 5 + printwriter.println("hudFps:" + this.hudFps); + printwriter.println("hudWorld:" + this.hudWorld); @@ -527,6 +539,7 @@ + printwriter.println("voiceSpeakVolume:" + this.voiceSpeakVolume); + printwriter.println("voicePTTKey:" + this.voicePTTKey); + printwriter.println("enableFNAWSkins:" + this.enableFNAWSkins); ++ printwriter.println("enableDynamicLights:" + this.enableDynamicLights); > CHANGE 5 : 8 @ 5 : 6 @@ -576,7 +589,7 @@ > CHANGE 4 : 5 @ 4 : 5 -~ RENDER_DISTANCE("options.renderDistance", true, false, 1.0F, 16.0F, 1.0F), +~ RENDER_DISTANCE("options.renderDistance", true, false, 1.0F, 18.0F, 1.0F), > CHANGE 8 : 10 @ 8 : 12 @@ -592,6 +605,6 @@ ~ 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); > EOF diff --git a/patches/minecraft/net/minecraft/entity/Entity.edit.java b/patches/minecraft/net/minecraft/entity/Entity.edit.java index 1c496f4..bcd091b 100644 --- a/patches/minecraft/net/minecraft/entity/Entity.edit.java +++ b/patches/minecraft/net/minecraft/entity/Entity.edit.java @@ -5,12 +5,13 @@ # Version: 1.0 # Author: lax1dude -> CHANGE 3 : 8 @ 3 : 5 +> CHANGE 3 : 9 @ 3 : 5 ~ 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; ~ > INSERT 1 : 2 @ 1 @@ -94,7 +95,24 @@ ~ for (int i = 0, l = list.size(); i < l; ++i) { ~ y = list.get(i).calculateYOffset(this.getEntityBoundingBox(), y); -> CHANGE 650 : 652 @ 650 : 651 +> CHANGE 347 : 353 @ 347 : 348 + +~ 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)); + +> CHANGE 4 : 9 @ 4 : 5 + +~ 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; + +> CHANGE 297 : 299 @ 297 : 298 ~ this.entityUniqueID = new EaglercraftUUID(tagCompund.getLong("UUIDMost"), ~ tagCompund.getLong("UUIDLeast")); @@ -125,7 +143,7 @@ ~ public EaglercraftUUID getUniqueID() { -> INSERT 151 : 177 @ 151 +> INSERT 151 : 205 @ 151 + + public void renderDynamicLightsEagler(float partialTicks, boolean isInFrustum) { @@ -135,7 +153,8 @@ + 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); + } @@ -143,15 +162,42 @@ + + 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; ++ } > EOF diff --git a/patches/minecraft/net/minecraft/entity/EntityLivingBase.edit.java b/patches/minecraft/net/minecraft/entity/EntityLivingBase.edit.java index 4bdf575..a8491ab 100644 --- a/patches/minecraft/net/minecraft/entity/EntityLivingBase.edit.java +++ b/patches/minecraft/net/minecraft/entity/EntityLivingBase.edit.java @@ -40,7 +40,7 @@ ~ for (int i = 0; i < inv.length; ++i) { ~ ItemStack itemstack1 = inv[i]; -> INSERT 1254 : 1265 @ 1254 +> INSERT 1254 : 1277 @ 1254 + + protected void renderDynamicLightsEaglerAt(double entityX, double entityY, double entityZ, double renderX, @@ -53,5 +53,17 @@ + } + } + ++ 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; ++ } > EOF diff --git a/patches/minecraft/net/minecraft/entity/boss/EntityWither.edit.java b/patches/minecraft/net/minecraft/entity/boss/EntityWither.edit.java index 4da548e..8d6e6b9 100644 --- a/patches/minecraft/net/minecraft/entity/boss/EntityWither.edit.java +++ b/patches/minecraft/net/minecraft/entity/boss/EntityWither.edit.java @@ -21,4 +21,11 @@ ~ for (int i = 0, l = lst.size(); i < l; ++i) { ~ lst.get(i).triggerAchievement(AchievementList.killWither); +> INSERT 13 : 17 @ 13 + ++ protected float getEaglerDynamicLightsValueSimple(float partialTicks) { ++ return 1.0f; ++ } ++ + > EOF diff --git a/patches/minecraft/net/minecraft/entity/item/EntityEnderEye.edit.java b/patches/minecraft/net/minecraft/entity/item/EntityEnderEye.edit.java index a8dd664..4c1585c 100644 --- a/patches/minecraft/net/minecraft/entity/item/EntityEnderEye.edit.java +++ b/patches/minecraft/net/minecraft/entity/item/EntityEnderEye.edit.java @@ -5,6 +5,28 @@ # Version: 1.0 # Author: lax1dude -> DELETE 3 @ 3 : 4 +> INSERT 2 : 3 @ 2 + ++ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DynamicLightManager; + +> DELETE 1 @ 1 : 2 + +> INSERT 168 : 183 @ 168 + ++ 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); ++ } ++ } ++ > EOF diff --git a/patches/minecraft/net/minecraft/entity/item/EntityFireworkRocket.edit.java b/patches/minecraft/net/minecraft/entity/item/EntityFireworkRocket.edit.java new file mode 100644 index 0000000..8a4467a --- /dev/null +++ b/patches/minecraft/net/minecraft/entity/item/EntityFireworkRocket.edit.java @@ -0,0 +1,15 @@ + +# Eagler Context Redacted Diff +# Copyright (c) 2024 lax1dude. All rights reserved. + +# Version: 1.0 +# Author: lax1dude + +> INSERT 156 : 160 @ 156 + ++ protected float getEaglerDynamicLightsValueSimple(float partialTicks) { ++ return 1.0f; ++ } ++ + +> EOF diff --git a/patches/minecraft/net/minecraft/entity/item/EntityItem.edit.java b/patches/minecraft/net/minecraft/entity/item/EntityItem.edit.java index 667ee1d..05f4831 100644 --- a/patches/minecraft/net/minecraft/entity/item/EntityItem.edit.java +++ b/patches/minecraft/net/minecraft/entity/item/EntityItem.edit.java @@ -25,7 +25,7 @@ ~ for (int i = 0, l = lst.size(); i < l; ++i) { ~ this.combineItems(lst.get(i)); -> INSERT 258 : 267 @ 258 +> INSERT 258 : 280 @ 258 + + public boolean eaglerEmissiveFlag = false; @@ -36,5 +36,18 @@ + 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; ++ } > EOF diff --git a/patches/minecraft/net/minecraft/entity/item/EntityItemFrame.edit.java b/patches/minecraft/net/minecraft/entity/item/EntityItemFrame.edit.java index f670b53..d391f9b 100644 --- a/patches/minecraft/net/minecraft/entity/item/EntityItemFrame.edit.java +++ b/patches/minecraft/net/minecraft/entity/item/EntityItemFrame.edit.java @@ -9,7 +9,11 @@ + import net.minecraft.client.Minecraft; -> INSERT 189 : 198 @ 189 +> INSERT 5 : 6 @ 5 + ++ import net.minecraft.item.Item; + +> INSERT 184 : 206 @ 184 + + public boolean eaglerEmissiveFlag = false; @@ -20,5 +24,18 @@ + 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; ++ } > EOF diff --git a/patches/minecraft/net/minecraft/entity/item/EntityMinecartTNT.edit.java b/patches/minecraft/net/minecraft/entity/item/EntityMinecartTNT.edit.java index 970b21a..9b0490a 100644 --- a/patches/minecraft/net/minecraft/entity/item/EntityMinecartTNT.edit.java +++ b/patches/minecraft/net/minecraft/entity/item/EntityMinecartTNT.edit.java @@ -11,7 +11,7 @@ > DELETE 3 @ 3 : 4 -> INSERT 159 : 170 @ 159 +> INSERT 159 : 178 @ 159 + + protected void renderDynamicLightsEaglerAt(double entityX, double entityY, double entityZ, double renderX, @@ -24,5 +24,13 @@ + 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; ++ } > EOF diff --git a/patches/minecraft/net/minecraft/entity/item/EntityTNTPrimed.edit.java b/patches/minecraft/net/minecraft/entity/item/EntityTNTPrimed.edit.java index ce06b6a..96792af 100644 --- a/patches/minecraft/net/minecraft/entity/item/EntityTNTPrimed.edit.java +++ b/patches/minecraft/net/minecraft/entity/item/EntityTNTPrimed.edit.java @@ -9,7 +9,7 @@ + import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DynamicLightManager; -> INSERT 90 : 101 @ 90 +> INSERT 90 : 109 @ 90 + + protected void renderDynamicLightsEaglerAt(double entityX, double entityY, double entityZ, double renderX, @@ -22,5 +22,13 @@ + 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; ++ } > EOF diff --git a/patches/minecraft/net/minecraft/entity/item/EntityXPOrb.edit.java b/patches/minecraft/net/minecraft/entity/item/EntityXPOrb.edit.java index 43a3622..dba6a86 100644 --- a/patches/minecraft/net/minecraft/entity/item/EntityXPOrb.edit.java +++ b/patches/minecraft/net/minecraft/entity/item/EntityXPOrb.edit.java @@ -9,7 +9,14 @@ + import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DynamicLightManager; -> INSERT 205 : 216 @ 205 +> INSERT 55 : 59 @ 55 + ++ protected float getEaglerDynamicLightsValueSimple(float partialTicks) { ++ return 0.25f; ++ } ++ + +> INSERT 150 : 161 @ 150 + + protected void renderDynamicLightsEaglerAt(double entityX, double entityY, double entityZ, double renderX, diff --git a/patches/minecraft/net/minecraft/entity/monster/EntityBlaze.edit.java b/patches/minecraft/net/minecraft/entity/monster/EntityBlaze.edit.java index 0e688dc..b64736a 100644 --- a/patches/minecraft/net/minecraft/entity/monster/EntityBlaze.edit.java +++ b/patches/minecraft/net/minecraft/entity/monster/EntityBlaze.edit.java @@ -15,7 +15,14 @@ ~ this.dataWatcher.addObject(16, Byte.valueOf((byte) 0)); -> INSERT 185 : 192 @ 185 +> INSERT 22 : 26 @ 22 + ++ protected float getEaglerDynamicLightsValueSimple(float partialTicks) { ++ return 1.0f; ++ } ++ + +> INSERT 163 : 170 @ 163 + + protected void renderDynamicLightsEaglerAt(double entityX, double entityY, double entityZ, double renderX, diff --git a/patches/minecraft/net/minecraft/entity/monster/EntityCreeper.edit.java b/patches/minecraft/net/minecraft/entity/monster/EntityCreeper.edit.java index 1953bed..8e40818 100644 --- a/patches/minecraft/net/minecraft/entity/monster/EntityCreeper.edit.java +++ b/patches/minecraft/net/minecraft/entity/monster/EntityCreeper.edit.java @@ -12,7 +12,7 @@ > DELETE 12 @ 12 : 14 -> INSERT 204 : 217 @ 204 +> INSERT 204 : 226 @ 204 + + protected void renderDynamicLightsEaglerAt(double entityX, double entityY, double entityZ, double renderX, @@ -27,5 +27,14 @@ + 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; ++ } > EOF diff --git a/patches/minecraft/net/minecraft/entity/monster/EntityMagmaCube.edit.java b/patches/minecraft/net/minecraft/entity/monster/EntityMagmaCube.edit.java index a8dd664..19567d5 100644 --- a/patches/minecraft/net/minecraft/entity/monster/EntityMagmaCube.edit.java +++ b/patches/minecraft/net/minecraft/entity/monster/EntityMagmaCube.edit.java @@ -7,4 +7,11 @@ > DELETE 3 @ 3 : 4 +> INSERT 39 : 43 @ 39 + ++ protected float getEaglerDynamicLightsValueSimple(float partialTicks) { ++ return 1.0f; ++ } ++ + > EOF diff --git a/patches/minecraft/net/minecraft/entity/projectile/EntityFireball.edit.java b/patches/minecraft/net/minecraft/entity/projectile/EntityFireball.edit.java index f43a7b8..32fe8ad 100644 --- a/patches/minecraft/net/minecraft/entity/projectile/EntityFireball.edit.java +++ b/patches/minecraft/net/minecraft/entity/projectile/EntityFireball.edit.java @@ -27,4 +27,11 @@ ~ for (int i = 0, l = list.size(); i < l; ++i) { +> INSERT 156 : 160 @ 156 + ++ protected float getEaglerDynamicLightsValueSimple(float partialTicks) { ++ return 1.0f; ++ } ++ + > EOF diff --git a/patches/minecraft/net/minecraft/item/Item.edit.java b/patches/minecraft/net/minecraft/item/Item.edit.java index ac58e6e..d0f520c 100644 --- a/patches/minecraft/net/minecraft/item/Item.edit.java +++ b/patches/minecraft/net/minecraft/item/Item.edit.java @@ -28,4 +28,11 @@ ~ protected static EaglercraftRandom itemRand = new EaglercraftRandom(); +> INSERT 884 : 888 @ 884 + ++ ++ public float getHeldItemBrightnessEagler() { ++ return 0.0f; ++ } + > EOF diff --git a/patches/minecraft/net/minecraft/item/ItemBlock.edit.java b/patches/minecraft/net/minecraft/item/ItemBlock.edit.java index 37072b7..262e598 100644 --- a/patches/minecraft/net/minecraft/item/ItemBlock.edit.java +++ b/patches/minecraft/net/minecraft/item/ItemBlock.edit.java @@ -7,4 +7,11 @@ > DELETE 9 @ 9 : 11 +> INSERT 120 : 124 @ 120 + ++ ++ public float getHeldItemBrightnessEagler() { ++ return this.block.getLightValue() * 0.06667f; ++ } + > EOF diff --git a/patches/minecraft/net/minecraft/server/MinecraftServer.edit.java b/patches/minecraft/net/minecraft/server/MinecraftServer.edit.java index 1070e89..a5f3a73 100644 --- a/patches/minecraft/net/minecraft/server/MinecraftServer.edit.java +++ b/patches/minecraft/net/minecraft/server/MinecraftServer.edit.java @@ -120,7 +120,15 @@ > DELETE 1 @ 1 : 2 -> DELETE 32 @ 32 : 35 +> INSERT 6 : 11 @ 6 + ++ if (worldinfo.isOldEaglercraftRandom()) { ++ LogManager.getLogger("EaglerMinecraftServer") ++ .info("Detected a pre-u34 world, using old EaglercraftRandom implementation for world generation"); ++ } ++ + +> DELETE 26 @ 26 : 29 > CHANGE 3 : 11 @ 3 : 5 diff --git a/patches/minecraft/net/minecraft/world/Teleporter.edit.java b/patches/minecraft/net/minecraft/world/Teleporter.edit.java index b95a755..ce33e0a 100644 --- a/patches/minecraft/net/minecraft/world/Teleporter.edit.java +++ b/patches/minecraft/net/minecraft/world/Teleporter.edit.java @@ -17,6 +17,6 @@ > CHANGE 5 : 6 @ 5 : 6 -~ this.random = new EaglercraftRandom(worldIn.getSeed()); +~ this.random = new EaglercraftRandom(worldIn.getSeed(), !worldIn.getWorldInfo().isOldEaglercraftRandom()); > EOF diff --git a/patches/minecraft/net/minecraft/world/World.edit.java b/patches/minecraft/net/minecraft/world/World.edit.java index 3db4ee2..b59977a 100644 --- a/patches/minecraft/net/minecraft/world/World.edit.java +++ b/patches/minecraft/net/minecraft/world/World.edit.java @@ -64,7 +64,16 @@ ~ return Chunk.getNoSkyLightValue(); -> CHANGE 1299 : 1300 @ 1299 : 1300 +> CHANGE 74 : 80 @ 74 : 75 + +~ if (lightValue < 0) { +~ j += -lightValue; +~ if (j > 15) { +~ j = 15; +~ } +~ } else if (j < lightValue) { + +> CHANGE 1224 : 1225 @ 1224 : 1225 ~ this.worldInfo.setThunderTime((this.rand.nextInt(12000) / 2) + 3600); diff --git a/patches/minecraft/net/minecraft/world/WorldProvider.edit.java b/patches/minecraft/net/minecraft/world/WorldProvider.edit.java index 7ab1fe2..41997c4 100644 --- a/patches/minecraft/net/minecraft/world/WorldProvider.edit.java +++ b/patches/minecraft/net/minecraft/world/WorldProvider.edit.java @@ -7,7 +7,15 @@ > DELETE 6 @ 6 : 11 -> CHANGE 99 : 100 @ 99 : 100 +> INSERT 83 : 84 @ 83 + ++ float f2 = f; + +> CHANGE 1 : 2 @ 1 : 2 + +~ f = f2 + (f - f2) / 3.0F; + +> CHANGE 14 : 15 @ 14 : 15 ~ float f2 = 0.0F; diff --git a/patches/minecraft/net/minecraft/world/biome/BiomeGenMesa.edit.java b/patches/minecraft/net/minecraft/world/biome/BiomeGenMesa.edit.java index 32a7a08..d1b0862 100644 --- a/patches/minecraft/net/minecraft/world/biome/BiomeGenMesa.edit.java +++ b/patches/minecraft/net/minecraft/world/biome/BiomeGenMesa.edit.java @@ -24,12 +24,21 @@ ~ public void genTerrainBlocks(World world, EaglercraftRandom random, ChunkPrimer chunkprimer, int i, int j, ~ double d0) { -> CHANGE 5 : 6 @ 5 : 6 +> CHANGE 1 : 2 @ 1 : 2 -~ EaglercraftRandom random1 = new EaglercraftRandom(this.field_150622_aD); +~ this.func_150619_a(world.getSeed(), !world.getWorldInfo().isOldEaglercraftRandom()); -> CHANGE 111 : 112 @ 111 : 112 +> CHANGE 3 : 5 @ 3 : 4 -~ EaglercraftRandom random = new EaglercraftRandom(parLong1); +~ EaglercraftRandom random1 = new EaglercraftRandom(this.field_150622_aD, +~ !world.getWorldInfo().isOldEaglercraftRandom()); + +> CHANGE 108 : 109 @ 108 : 109 + +~ private void func_150619_a(long parLong1, boolean scrambleRNG) { + +> CHANGE 2 : 3 @ 2 : 3 + +~ EaglercraftRandom random = new EaglercraftRandom(parLong1, scrambleRNG); > EOF diff --git a/patches/minecraft/net/minecraft/world/chunk/Chunk.edit.java b/patches/minecraft/net/minecraft/world/chunk/Chunk.edit.java index 5a0f735..40157c1 100644 --- a/patches/minecraft/net/minecraft/world/chunk/Chunk.edit.java +++ b/patches/minecraft/net/minecraft/world/chunk/Chunk.edit.java @@ -162,7 +162,11 @@ ~ public EaglercraftRandom getRandomWithSeed(long i) { ~ return new EaglercraftRandom(this.worldObj.getSeed() + (long) (this.xPosition * this.xPosition * 4987142) -> CHANGE 92 : 93 @ 92 : 93 +> CHANGE 1 : 2 @ 1 : 2 + +~ + (long) (this.zPosition * 389711) ^ i, !this.worldObj.getWorldInfo().isOldEaglercraftRandom()); + +> CHANGE 90 : 91 @ 90 : 91 ~ BlockPos blockpos = (BlockPos) this.tileEntityPosQueue.remove(0); diff --git a/patches/minecraft/net/minecraft/world/chunk/EmptyChunk.edit.java b/patches/minecraft/net/minecraft/world/chunk/EmptyChunk.edit.java index e50442f..9faa82c 100644 --- a/patches/minecraft/net/minecraft/world/chunk/EmptyChunk.edit.java +++ b/patches/minecraft/net/minecraft/world/chunk/EmptyChunk.edit.java @@ -16,9 +16,13 @@ > DELETE 8 @ 8 : 9 -> CHANGE 90 : 92 @ 90 : 92 +> CHANGE 90 : 96 @ 90 : 94 ~ public EaglercraftRandom getRandomWithSeed(long seed) { -~ return new EaglercraftRandom(this.getWorld().getSeed() + (long) (this.xPosition * this.xPosition * 4987142) +~ 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()); > EOF diff --git a/patches/minecraft/net/minecraft/world/gen/ChunkProviderEnd.edit.java b/patches/minecraft/net/minecraft/world/gen/ChunkProviderEnd.edit.java index e068c6a..a516a7c 100644 --- a/patches/minecraft/net/minecraft/world/gen/ChunkProviderEnd.edit.java +++ b/patches/minecraft/net/minecraft/world/gen/ChunkProviderEnd.edit.java @@ -17,6 +17,6 @@ > CHANGE 16 : 17 @ 16 : 17 -~ this.endRNG = new EaglercraftRandom(parLong1); +~ this.endRNG = new EaglercraftRandom(parLong1, !worldIn.getWorldInfo().isOldEaglercraftRandom()); > EOF diff --git a/patches/minecraft/net/minecraft/world/gen/ChunkProviderFlat.edit.java b/patches/minecraft/net/minecraft/world/gen/ChunkProviderFlat.edit.java index 87c486a..1229f6c 100644 --- a/patches/minecraft/net/minecraft/world/gen/ChunkProviderFlat.edit.java +++ b/patches/minecraft/net/minecraft/world/gen/ChunkProviderFlat.edit.java @@ -15,11 +15,32 @@ ~ private EaglercraftRandom random; -> CHANGE 10 : 11 @ 10 : 11 +> CHANGE 10 : 12 @ 10 : 11 -~ this.random = new EaglercraftRandom(seed); +~ boolean scramble = !worldIn.getWorldInfo().isOldEaglercraftRandom(); +~ this.random = new EaglercraftRandom(seed, scramble); -> CHANGE 110 : 112 @ 110 : 111 +> CHANGE 9 : 10 @ 9 : 10 + +~ this.structureGenerators.add(new MapGenVillage(map1, scramble)); + +> CHANGE 3 : 4 @ 3 : 4 + +~ this.structureGenerators.add(new MapGenScatteredFeature((Map) map.get("biome_1"), scramble)); + +> CHANGE 3 : 4 @ 3 : 4 + +~ this.structureGenerators.add(new MapGenMineshaft((Map) map.get("mineshaft"), scramble)); + +> CHANGE 3 : 4 @ 3 : 4 + +~ this.structureGenerators.add(new MapGenStronghold((Map) map.get("stronghold"), scramble)); + +> CHANGE 3 : 4 @ 3 : 4 + +~ this.structureGenerators.add(new StructureOceanMonument((Map) map.get("oceanmonument"), scramble)); + +> CHANGE 84 : 86 @ 84 : 85 ~ for (int m = 0, n = this.structureGenerators.size(); m < n; ++m) { ~ MapGenStructure mapgenstructure = this.structureGenerators.get(m); diff --git a/patches/minecraft/net/minecraft/world/gen/ChunkProviderGenerate.edit.java b/patches/minecraft/net/minecraft/world/gen/ChunkProviderGenerate.edit.java index 82a06c5..92cb66b 100644 --- a/patches/minecraft/net/minecraft/world/gen/ChunkProviderGenerate.edit.java +++ b/patches/minecraft/net/minecraft/world/gen/ChunkProviderGenerate.edit.java @@ -15,8 +15,26 @@ ~ private EaglercraftRandom rand; -> CHANGE 32 : 33 @ 32 : 33 +> CHANGE 15 : 22 @ 15 : 22 -~ this.rand = new EaglercraftRandom(parLong1); +~ private MapGenBase caveGenerator; +~ private MapGenStronghold strongholdGenerator; +~ private MapGenVillage villageGenerator; +~ private MapGenMineshaft mineshaftGenerator; +~ private MapGenScatteredFeature scatteredFeatureGenerator; +~ private MapGenBase ravineGenerator; +~ private StructureOceanMonument oceanMonumentGenerator; + +> CHANGE 10 : 19 @ 10 : 11 + +~ 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); > EOF diff --git a/patches/minecraft/net/minecraft/world/gen/ChunkProviderHell.edit.java b/patches/minecraft/net/minecraft/world/gen/ChunkProviderHell.edit.java index f90a6ac..eb8b4d2 100644 --- a/patches/minecraft/net/minecraft/world/gen/ChunkProviderHell.edit.java +++ b/patches/minecraft/net/minecraft/world/gen/ChunkProviderHell.edit.java @@ -15,8 +15,16 @@ ~ private final EaglercraftRandom hellRNG; -> CHANGE 31 : 32 @ 31 : 32 +> CHANGE 20 : 22 @ 20 : 22 -~ this.hellRNG = new EaglercraftRandom(parLong1); +~ private final MapGenNetherBridge genNetherBridge; +~ private final MapGenBase netherCaveGenerator; + +> CHANGE 9 : 13 @ 9 : 10 + +~ boolean scramble = !worldIn.getWorldInfo().isOldEaglercraftRandom(); +~ this.hellRNG = new EaglercraftRandom(parLong1, scramble); +~ this.genNetherBridge = new MapGenNetherBridge(scramble); +~ this.netherCaveGenerator = new MapGenCavesHell(scramble); > EOF diff --git a/patches/minecraft/net/minecraft/world/gen/MapGenBase.edit.java b/patches/minecraft/net/minecraft/world/gen/MapGenBase.edit.java index c73afac..e80100d 100644 --- a/patches/minecraft/net/minecraft/world/gen/MapGenBase.edit.java +++ b/patches/minecraft/net/minecraft/world/gen/MapGenBase.edit.java @@ -11,6 +11,17 @@ > CHANGE 6 : 7 @ 6 : 7 -~ protected EaglercraftRandom rand = new EaglercraftRandom(); +~ protected EaglercraftRandom rand; + +> INSERT 2 : 10 @ 2 + ++ public MapGenBase() { ++ this(true); ++ } ++ ++ public MapGenBase(boolean scramble) { ++ rand = new EaglercraftRandom(scramble); ++ } ++ > EOF diff --git a/patches/minecraft/net/minecraft/world/gen/MapGenCaves.edit.java b/patches/minecraft/net/minecraft/world/gen/MapGenCaves.edit.java index 51803e7..5e01856 100644 --- a/patches/minecraft/net/minecraft/world/gen/MapGenCaves.edit.java +++ b/patches/minecraft/net/minecraft/world/gen/MapGenCaves.edit.java @@ -11,8 +11,16 @@ > DELETE 8 @ 8 : 9 -> CHANGE 15 : 16 @ 15 : 16 +> INSERT 2 : 7 @ 2 -~ EaglercraftRandom random = new EaglercraftRandom(parLong1); ++ ++ public MapGenCaves(boolean scramble) { ++ super(scramble); ++ } ++ + +> CHANGE 13 : 14 @ 13 : 14 + +~ EaglercraftRandom random = new EaglercraftRandom(parLong1, this.rand.isScramble()); > EOF diff --git a/patches/minecraft/net/minecraft/world/gen/MapGenCavesHell.edit.java b/patches/minecraft/net/minecraft/world/gen/MapGenCavesHell.edit.java index 7fd6bd1..cb88eab 100644 --- a/patches/minecraft/net/minecraft/world/gen/MapGenCavesHell.edit.java +++ b/patches/minecraft/net/minecraft/world/gen/MapGenCavesHell.edit.java @@ -11,8 +11,16 @@ > DELETE 5 @ 5 : 6 -> CHANGE 15 : 16 @ 15 : 16 +> INSERT 2 : 7 @ 2 -~ EaglercraftRandom random = new EaglercraftRandom(parLong1); ++ ++ public MapGenCavesHell(boolean scramble) { ++ super(scramble); ++ } ++ + +> CHANGE 13 : 14 @ 13 : 14 + +~ EaglercraftRandom random = new EaglercraftRandom(parLong1, this.rand.isScramble()); > EOF diff --git a/patches/minecraft/net/minecraft/world/gen/MapGenRavine.edit.java b/patches/minecraft/net/minecraft/world/gen/MapGenRavine.edit.java index d24d97d..dd0c9d7 100644 --- a/patches/minecraft/net/minecraft/world/gen/MapGenRavine.edit.java +++ b/patches/minecraft/net/minecraft/world/gen/MapGenRavine.edit.java @@ -11,8 +11,15 @@ > DELETE 6 @ 6 : 7 -> CHANGE 7 : 8 @ 7 : 8 +> INSERT 4 : 8 @ 4 -~ EaglercraftRandom random = new EaglercraftRandom(parLong1); ++ public MapGenRavine(boolean scramble) { ++ super(scramble); ++ } ++ + +> CHANGE 3 : 4 @ 3 : 4 + +~ EaglercraftRandom random = new EaglercraftRandom(parLong1, this.rand.isScramble()); > EOF diff --git a/patches/minecraft/net/minecraft/world/gen/feature/WorldGenBigTree.edit.java b/patches/minecraft/net/minecraft/world/gen/feature/WorldGenBigTree.edit.java index 028bd7b..e18e15a 100644 --- a/patches/minecraft/net/minecraft/world/gen/feature/WorldGenBigTree.edit.java +++ b/patches/minecraft/net/minecraft/world/gen/feature/WorldGenBigTree.edit.java @@ -36,6 +36,6 @@ > CHANGE 2 : 3 @ 2 : 3 -~ this.rand = new EaglercraftRandom(rand.nextLong()); +~ this.rand = new EaglercraftRandom(rand.nextLong(), !worldIn.getWorldInfo().isOldEaglercraftRandom()); > EOF diff --git a/patches/minecraft/net/minecraft/world/gen/structure/MapGenMineshaft.edit.java b/patches/minecraft/net/minecraft/world/gen/structure/MapGenMineshaft.edit.java index 3e397c6..466eb65 100644 --- a/patches/minecraft/net/minecraft/world/gen/structure/MapGenMineshaft.edit.java +++ b/patches/minecraft/net/minecraft/world/gen/structure/MapGenMineshaft.edit.java @@ -7,4 +7,14 @@ > DELETE 5 @ 5 : 8 +> CHANGE 4 : 6 @ 4 : 5 + +~ public MapGenMineshaft(boolean scramble) { +~ super(scramble); + +> CHANGE 6 : 8 @ 6 : 7 + +~ public MapGenMineshaft(Map parMap, boolean scramble) { +~ super(scramble); + > EOF diff --git a/patches/minecraft/net/minecraft/world/gen/structure/MapGenNetherBridge.edit.java b/patches/minecraft/net/minecraft/world/gen/structure/MapGenNetherBridge.edit.java index 3d6c1e4..3b6005e 100644 --- a/patches/minecraft/net/minecraft/world/gen/structure/MapGenNetherBridge.edit.java +++ b/patches/minecraft/net/minecraft/world/gen/structure/MapGenNetherBridge.edit.java @@ -11,7 +11,12 @@ > DELETE 6 @ 6 : 10 -> CHANGE 36 : 37 @ 36 : 37 +> CHANGE 4 : 6 @ 4 : 5 + +~ public MapGenNetherBridge(boolean scramble) { +~ super(scramble); + +> CHANGE 31 : 32 @ 31 : 32 ~ public Start(World worldIn, EaglercraftRandom parRandom, int parInt1, int parInt2) { diff --git a/patches/minecraft/net/minecraft/world/gen/structure/MapGenScatteredFeature.edit.java b/patches/minecraft/net/minecraft/world/gen/structure/MapGenScatteredFeature.edit.java index c01d22c..ee1230e 100644 --- a/patches/minecraft/net/minecraft/world/gen/structure/MapGenScatteredFeature.edit.java +++ b/patches/minecraft/net/minecraft/world/gen/structure/MapGenScatteredFeature.edit.java @@ -11,7 +11,17 @@ > DELETE 6 @ 6 : 10 -> CHANGE 45 : 46 @ 45 : 46 +> CHANGE 8 : 10 @ 8 : 9 + +~ public MapGenScatteredFeature(boolean scramble) { +~ super(scramble); + +> CHANGE 6 : 8 @ 6 : 8 + +~ public MapGenScatteredFeature(Map parMap, boolean scramble) { +~ this(scramble); + +> CHANGE 28 : 29 @ 28 : 29 ~ EaglercraftRandom random = this.worldObj.setRandomSeed(i1, j1, 14357617); diff --git a/patches/minecraft/net/minecraft/world/gen/structure/MapGenStronghold.edit.java b/patches/minecraft/net/minecraft/world/gen/structure/MapGenStronghold.edit.java index 94c4878..c597da1 100644 --- a/patches/minecraft/net/minecraft/world/gen/structure/MapGenStronghold.edit.java +++ b/patches/minecraft/net/minecraft/world/gen/structure/MapGenStronghold.edit.java @@ -11,15 +11,25 @@ > DELETE 6 @ 6 : 10 -> CHANGE 14 : 17 @ 14 : 15 +> CHANGE 8 : 10 @ 8 : 9 + +~ public MapGenStronghold(boolean scramble) { +~ super(scramble); + +> CHANGE 5 : 8 @ 5 : 6 ~ BiomeGenBase[] biomes = BiomeGenBase.getBiomeGenArray(); ~ for (int i = 0; i < biomes.length; ++i) { ~ BiomeGenBase biomegenbase = biomes[i]; -> CHANGE 31 : 32 @ 31 : 32 +> CHANGE 7 : 9 @ 7 : 9 -~ EaglercraftRandom random = new EaglercraftRandom(); +~ public MapGenStronghold(Map parMap, boolean scramble) { +~ this(scramble); + +> CHANGE 22 : 23 @ 22 : 23 + +~ EaglercraftRandom random = new EaglercraftRandom(!this.worldObj.getWorldInfo().isOldEaglercraftRandom()); > CHANGE 26 : 28 @ 26 : 27 diff --git a/patches/minecraft/net/minecraft/world/gen/structure/MapGenStructure.edit.java b/patches/minecraft/net/minecraft/world/gen/structure/MapGenStructure.edit.java index 22b85de..f0081ac 100644 --- a/patches/minecraft/net/minecraft/world/gen/structure/MapGenStructure.edit.java +++ b/patches/minecraft/net/minecraft/world/gen/structure/MapGenStructure.edit.java @@ -17,7 +17,18 @@ > DELETE 11 @ 11 : 16 -> CHANGE 30 : 31 @ 30 : 31 +> INSERT 7 : 15 @ 7 + ++ public MapGenStructure() { ++ super(); ++ } ++ ++ public MapGenStructure(boolean scramble) { ++ super(scramble); ++ } ++ + +> CHANGE 23 : 24 @ 23 : 24 ~ HString.format("%d,%d", new Object[] { Integer.valueOf(i), Integer.valueOf(j) })); diff --git a/patches/minecraft/net/minecraft/world/gen/structure/MapGenVillage.edit.java b/patches/minecraft/net/minecraft/world/gen/structure/MapGenVillage.edit.java index 24eb3b5..daff0b1 100644 --- a/patches/minecraft/net/minecraft/world/gen/structure/MapGenVillage.edit.java +++ b/patches/minecraft/net/minecraft/world/gen/structure/MapGenVillage.edit.java @@ -11,7 +11,17 @@ > DELETE 5 @ 5 : 9 -> CHANGE 44 : 45 @ 44 : 45 +> CHANGE 8 : 10 @ 8 : 9 + +~ public MapGenVillage(boolean scramble) { +~ super(scramble); + +> CHANGE 4 : 6 @ 4 : 6 + +~ public MapGenVillage(Map parMap, boolean scramble) { +~ this(scramble); + +> CHANGE 29 : 30 @ 29 : 30 ~ EaglercraftRandom random = this.worldObj.setRandomSeed(i1, j1, 10387312); diff --git a/patches/minecraft/net/minecraft/world/gen/structure/StructureOceanMonument.edit.java b/patches/minecraft/net/minecraft/world/gen/structure/StructureOceanMonument.edit.java index d4f37bc..c004a4b 100644 --- a/patches/minecraft/net/minecraft/world/gen/structure/StructureOceanMonument.edit.java +++ b/patches/minecraft/net/minecraft/world/gen/structure/StructureOceanMonument.edit.java @@ -11,7 +11,17 @@ > DELETE 11 @ 11 : 15 -> CHANGE 45 : 46 @ 45 : 46 +> CHANGE 8 : 10 @ 8 : 9 + +~ public StructureOceanMonument(boolean scramble) { +~ super(scramble); + +> CHANGE 4 : 6 @ 4 : 6 + +~ public StructureOceanMonument(Map parMap, boolean scramble) { +~ this(scramble); + +> CHANGE 30 : 31 @ 30 : 31 ~ EaglercraftRandom random = this.worldObj.setRandomSeed(i1, j1, 10387313); diff --git a/patches/minecraft/net/minecraft/world/storage/WorldInfo.edit.java b/patches/minecraft/net/minecraft/world/storage/WorldInfo.edit.java index d18b8b7..78992be 100644 --- a/patches/minecraft/net/minecraft/world/storage/WorldInfo.edit.java +++ b/patches/minecraft/net/minecraft/world/storage/WorldInfo.edit.java @@ -10,7 +10,38 @@ + import net.lax1dude.eaglercraft.v1_8.HString; + -> CHANGE 539 : 540 @ 539 : 540 +> INSERT 39 : 42 @ 39 + ++ public static final int eaglerVersionCurrent = 1; ++ private int eaglerVersion = eaglerVersionCurrent; ++ + +> INSERT 116 : 117 @ 116 + ++ this.eaglerVersion = nbt.getInteger("eaglerVersionSerial"); + +> INSERT 102 : 103 @ 102 + ++ nbt.setInteger("eaglerVersionSerial", this.eaglerVersion); + +> INSERT 274 : 288 @ 274 + ++ 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); ++ } ++ } ++ + +> CHANGE 8 : 9 @ 8 : 9 ~ return HString.format("ID %02d - %s, ver %d. Features enabled: %b", diff --git a/patches/resources/assets/minecraft/lang/en_US.edit.lang b/patches/resources/assets/minecraft/lang/en_US.edit.lang index 6639281..9b7099f 100644 --- a/patches/resources/assets/minecraft/lang/en_US.edit.lang +++ b/patches/resources/assets/minecraft/lang/en_US.edit.lang @@ -12,7 +12,7 @@ ~ eaglercraft.recording.start=Record Screen... ~ eaglercraft.soundCategory.voice=Recording Voice -> INSERT 1 : 238 @ 1 +> INSERT 1 : 239 @ 1 + eaglercraft.resourcePack.prompt.title=What do you want to do with '%s'? + eaglercraft.resourcePack.prompt.text=Tip: Hold Shift to skip this screen when selecting a resource pack! @@ -123,6 +123,7 @@ + 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 @@ -252,7 +253,7 @@ + eaglercraft.command.clientStub=This command is client side! + -> INSERT 163 : 404 @ 163 +> INSERT 163 : 409 @ 163 + eaglercraft.singleplayer.busy.killTask=Cancel Task + eaglercraft.singleplayer.busy.cancelWarning=Are you sure? @@ -410,7 +411,12 @@ + 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/sources/main/java/net/lax1dude/eaglercraft/v1_8/EaglercraftRandom.java b/sources/main/java/net/lax1dude/eaglercraft/v1_8/EaglercraftRandom.java index 2f98334..93484c5 100644 --- a/sources/main/java/net/lax1dude/eaglercraft/v1_8/EaglercraftRandom.java +++ b/sources/main/java/net/lax1dude/eaglercraft/v1_8/EaglercraftRandom.java @@ -3,7 +3,7 @@ package net.lax1dude.eaglercraft.v1_8; import net.lax1dude.eaglercraft.v1_8.internal.PlatformRuntime; /** - * Copyright (c) 2022 lax1dude. All Rights Reserved. + * 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 @@ -25,19 +25,46 @@ public class EaglercraftRandom { private static final double DOUBLE_UNIT = 0x1.0p-53; private long seed = 69; - - private static int yee = 0; + private final boolean enableScramble; public EaglercraftRandom() { this(PlatformRuntime.randomSeed()); } public EaglercraftRandom(long seed) { + this(seed, true); + } + + public EaglercraftRandom(boolean scramble) { + this(PlatformRuntime.randomSeed(), scramble); + } + + /** + * Older versions of EaglercraftX (and Eaglercraft) are missing the + * "initialScramble" function from their setSeed function, which was what caused + * world generation to not match vanilla. The "enableScramble" boolean is used + * when players play on an old world created before the bug was fixed. + */ + public EaglercraftRandom(long seed, boolean scramble) { + enableScramble = scramble; setSeed(seed); } + private static long initialScramble(long seed) { + return (seed ^ multiplier) & mask; + } + public void setSeed(long yeed) { - seed = yeed; + if(enableScramble) { + seed = initialScramble(yeed); + }else { + seed = yeed; + } + haveNextNextGaussian = true; + } + + public boolean isScramble() { + return enableScramble; } protected int next(int bits) { diff --git a/sources/main/java/net/lax1dude/eaglercraft/v1_8/EaglercraftVersion.java b/sources/main/java/net/lax1dude/eaglercraft/v1_8/EaglercraftVersion.java index 3170036..05e7a77 100644 --- a/sources/main/java/net/lax1dude/eaglercraft/v1_8/EaglercraftVersion.java +++ b/sources/main/java/net/lax1dude/eaglercraft/v1_8/EaglercraftVersion.java @@ -10,7 +10,7 @@ public class EaglercraftVersion { /// Customize these to fit your fork: public static final String projectForkName = "EaglercraftX"; - public static final String projectForkVersion = "u32"; + public static final String projectForkVersion = "u34"; public static final String projectForkVendor = "lax1dude"; public static final String projectForkURL = "https://gitlab.com/lax1dude/eaglercraftx-1.8"; @@ -20,7 +20,7 @@ public class EaglercraftVersion { public static final String projectOriginName = "EaglercraftX"; public static final String projectOriginAuthor = "lax1dude"; public static final String projectOriginRevision = "1.8"; - public static final String projectOriginVersion = "u32"; + public static final String projectOriginVersion = "u34"; public static final String projectOriginURL = "https://gitlab.com/lax1dude/eaglercraftx-1.8"; // rest in peace @@ -31,7 +31,7 @@ public class EaglercraftVersion { public static final boolean enableUpdateService = true; public static final String updateBundlePackageName = "net.lax1dude.eaglercraft.v1_8.client"; - public static final int updateBundlePackageVersionInt = 32; + public static final int updateBundlePackageVersionInt = 34; public static final String updateLatestLocalStorageKey = "latestUpdate_" + updateBundlePackageName; diff --git a/sources/main/java/net/lax1dude/eaglercraft/v1_8/opengl/FixedFunctionPipeline.java b/sources/main/java/net/lax1dude/eaglercraft/v1_8/opengl/FixedFunctionPipeline.java index 605bccf..1b714c0 100644 --- a/sources/main/java/net/lax1dude/eaglercraft/v1_8/opengl/FixedFunctionPipeline.java +++ b/sources/main/java/net/lax1dude/eaglercraft/v1_8/opengl/FixedFunctionPipeline.java @@ -19,6 +19,7 @@ import net.lax1dude.eaglercraft.v1_8.internal.PlatformRuntime; import net.lax1dude.eaglercraft.v1_8.log4j.LogManager; import net.lax1dude.eaglercraft.v1_8.log4j.Logger; import net.lax1dude.eaglercraft.v1_8.opengl.StreamBuffer.StreamBufferInstance; +import net.lax1dude.eaglercraft.v1_8.opengl.ext.dynamiclights.DynamicLightsStateManager; import net.lax1dude.eaglercraft.v1_8.vector.Matrix4f; import net.lax1dude.eaglercraft.v1_8.vector.Vector4f; import net.minecraft.util.MathHelper; @@ -904,7 +905,9 @@ public class FixedFunctionPipeline { _wglUniform3f(stateLightingAmbientUniform3f, r, g, b); } } - + } + + if(stateEnableMCLighting || DynamicLightsStateManager.isInDynamicLightsPass()) { if(!stateHasAttribNormal) { serial = GlStateManager.stateNormalSerial; if(stateNormalSerial != serial) { diff --git a/sources/main/java/net/lax1dude/eaglercraft/v1_8/opengl/GlStateManager.java b/sources/main/java/net/lax1dude/eaglercraft/v1_8/opengl/GlStateManager.java index 593fae8..37819b9 100644 --- a/sources/main/java/net/lax1dude/eaglercraft/v1_8/opengl/GlStateManager.java +++ b/sources/main/java/net/lax1dude/eaglercraft/v1_8/opengl/GlStateManager.java @@ -808,6 +808,22 @@ public class GlStateManager { } } + public static final void getFloat(int pname, FloatBuffer params) { + switch(pname) { + case GL_MODELVIEW_MATRIX: + modelMatrixStack[modelMatrixStackPointer].store(params); + break; + case GL_PROJECTION_MATRIX: + projectionMatrixStack[projectionMatrixStackPointer].store(params); + break; + case GL_TEXTURE_MATRIX: + textureMatrixStack[activeTexture][textureMatrixStackPointer[activeTexture]].store(params); + break; + default: + throw new UnsupportedOperationException("glGetFloat can only be used to retrieve matricies!"); + } + } + public static final void ortho(double left, double right, double bottom, double top, double zNear, double zFar) { Matrix4f matrix; switch(stateMatrixMode) { diff --git a/sources/main/java/net/lax1dude/eaglercraft/v1_8/opengl/InstancedParticleRenderer.java b/sources/main/java/net/lax1dude/eaglercraft/v1_8/opengl/InstancedParticleRenderer.java index 4307e41..32b4b8c 100644 --- a/sources/main/java/net/lax1dude/eaglercraft/v1_8/opengl/InstancedParticleRenderer.java +++ b/sources/main/java/net/lax1dude/eaglercraft/v1_8/opengl/InstancedParticleRenderer.java @@ -49,8 +49,8 @@ public class InstancedParticleRenderer { private static IUniformGL u_matrixTransform = null; private static FloatBuffer matrixCopyBuffer = null; private static IUniformGL u_texCoordSize2f_particleSize1f = null; - private static IUniformGL u_transformParam_1_2_3_4_f = null; - private static IUniformGL u_transformParam_5_f = null; + private static IUniformGL u_transformParam_1_2_5_f = null; + private static IUniformGL u_transformParam_3_4_f = null; private static IUniformGL u_color4f = null; private static IBufferArrayGL vertexArray = null; @@ -154,8 +154,8 @@ public class InstancedParticleRenderer { u_matrixTransform = _wglGetUniformLocation(shaderProgram, "u_matrixTransform"); u_texCoordSize2f_particleSize1f = _wglGetUniformLocation(shaderProgram, "u_texCoordSize2f_particleSize1f"); - u_transformParam_1_2_3_4_f = _wglGetUniformLocation(shaderProgram, "u_transformParam_1_2_3_4_f"); - u_transformParam_5_f = _wglGetUniformLocation(shaderProgram, "u_transformParam_5_f"); + u_transformParam_1_2_5_f = _wglGetUniformLocation(shaderProgram, "u_transformParam_1_2_5_f"); + u_transformParam_3_4_f = _wglGetUniformLocation(shaderProgram, "u_transformParam_3_4_f"); u_color4f = _wglGetUniformLocation(shaderProgram, "u_color4f"); _wglUniform1i(_wglGetUniformLocation(shaderProgram, "u_inputTexture"), 0); @@ -260,17 +260,17 @@ public class InstancedParticleRenderer { } if (transformParam1 != stateTransformParam1 || transformParam2 != stateTransformParam2 - || transformParam3 != stateTransformParam3 || transformParam4 != stateTransformParam4) { - _wglUniform4f(u_transformParam_1_2_3_4_f, transformParam1, transformParam2, transformParam3, transformParam4); + || transformParam5 != stateTransformParam5) { + _wglUniform3f(u_transformParam_1_2_5_f, transformParam1, transformParam2, transformParam5); stateTransformParam1 = transformParam1; stateTransformParam2 = transformParam2; - stateTransformParam3 = transformParam3; - stateTransformParam4 = transformParam4; + stateTransformParam5 = transformParam5; } - if (transformParam5 != stateTransformParam5) { - _wglUniform1f(u_transformParam_5_f, transformParam5); - stateTransformParam5 = transformParam5; + if (transformParam3 != stateTransformParam3 || transformParam4 != stateTransformParam4) { + _wglUniform2f(u_transformParam_3_4_f, transformParam3, transformParam4); + stateTransformParam3 = transformParam3; + stateTransformParam4 = transformParam4; } int serial = GlStateManager.stateColorSerial; @@ -319,4 +319,8 @@ public class InstancedParticleRenderer { _wglDrawArraysInstanced(GL_TRIANGLES, 0, 6, particleCount); } + public static void stupidColorSetHack(IUniformGL color4f) { + _wglUniform4f(color4f, GlStateManager.stateColorR, GlStateManager.stateColorG, GlStateManager.stateColorB, GlStateManager.stateColorA); + } + } diff --git a/sources/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/deferred/DeferredStateManager.java b/sources/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/deferred/DeferredStateManager.java index 9aa9dc1..68d5d0a 100644 --- a/sources/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/deferred/DeferredStateManager.java +++ b/sources/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/deferred/DeferredStateManager.java @@ -107,7 +107,7 @@ public class DeferredStateManager { } public static final boolean isInDeferredPass() { - return GlStateManager.isExtensionPipeline(); + return EaglerDeferredPipeline.instance != null && GlStateManager.isExtensionPipeline(); } public static final boolean isInForwardPass() { @@ -153,10 +153,17 @@ public class DeferredStateManager { } public static final void reportForwardRenderObjectPosition2(float x, float y, float z) { - 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)); - reportForwardRenderObjectPosition((int)posX, (int)posY, (int)posZ); + EaglerDeferredPipeline instance = EaglerDeferredPipeline.instance; + if(instance != null && enableForwardRender) { + EaglerDeferredConfig cfg = instance.config; + if(!cfg.is_rendering_dynamicLights || !cfg.shaderPackInfo.DYNAMIC_LIGHTS) { + return; + } + 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)); + instance.loadLightSourceBucket((int)posX, (int)posY, (int)posZ); + } } public static final void setHDRTranslucentPassBlendFunc() { diff --git a/sources/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/deferred/EaglerDeferredPipeline.java b/sources/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/deferred/EaglerDeferredPipeline.java index ffd3961..246a8c5 100644 --- a/sources/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/deferred/EaglerDeferredPipeline.java +++ b/sources/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/deferred/EaglerDeferredPipeline.java @@ -2049,6 +2049,8 @@ public class EaglerDeferredPipeline { } } + truncateOverflowingLightBuffers(); + DeferredStateManager.checkGLError("combineGBuffersAndIlluminate(): RENDER DYNAMIC LIGHTS"); } @@ -2305,6 +2307,19 @@ public class EaglerDeferredPipeline { return radius2 >= 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/sources/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/deferred/ForwardAcceleratedEffectRenderer.java b/sources/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/deferred/ForwardAcceleratedEffectRenderer.java index b272b48..5571027 100644 --- a/sources/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/deferred/ForwardAcceleratedEffectRenderer.java +++ b/sources/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/sources/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/deferred/GBufferAcceleratedEffectRenderer.java b/sources/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/deferred/GBufferAcceleratedEffectRenderer.java index 691080f..45655d1 100644 --- a/sources/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/deferred/GBufferAcceleratedEffectRenderer.java +++ b/sources/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/sources/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/deferred/program/PipelineShaderAccelParticleForward.java b/sources/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/deferred/program/PipelineShaderAccelParticleForward.java index ac2749a..a9f18bc 100644 --- a/sources/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/deferred/program/PipelineShaderAccelParticleForward.java +++ b/sources/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/sources/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/dynamiclights/DynamicLightBucketLoader.java b/sources/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/dynamiclights/DynamicLightBucketLoader.java new file mode 100644 index 0000000..ab8f3c5 --- /dev/null +++ b/sources/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/sources/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/dynamiclights/DynamicLightInstance.java b/sources/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/dynamiclights/DynamicLightInstance.java new file mode 100644 index 0000000..72ec488 --- /dev/null +++ b/sources/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/sources/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/dynamiclights/DynamicLightsAcceleratedEffectRenderer.java b/sources/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/dynamiclights/DynamicLightsAcceleratedEffectRenderer.java new file mode 100644 index 0000000..cc38016 --- /dev/null +++ b/sources/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/sources/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/dynamiclights/DynamicLightsPipelineCompiler.java b/sources/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/dynamiclights/DynamicLightsPipelineCompiler.java new file mode 100644 index 0000000..23d6a30 --- /dev/null +++ b/sources/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/sources/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/dynamiclights/DynamicLightsStateManager.java b/sources/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/dynamiclights/DynamicLightsStateManager.java new file mode 100644 index 0000000..ad7bac9 --- /dev/null +++ b/sources/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/sources/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/dynamiclights/program/DynamicLightsAccelParticleShader.java b/sources/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/dynamiclights/program/DynamicLightsAccelParticleShader.java new file mode 100644 index 0000000..3fc0346 --- /dev/null +++ b/sources/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/sources/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/dynamiclights/program/DynamicLightsExtPipelineShader.java b/sources/main/java/net/lax1dude/eaglercraft/v1_8/opengl/ext/dynamiclights/program/DynamicLightsExtPipelineShader.java new file mode 100644 index 0000000..2e23c32 --- /dev/null +++ b/sources/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/sources/main/java/net/lax1dude/eaglercraft/v1_8/sp/SingleplayerServerController.java b/sources/main/java/net/lax1dude/eaglercraft/v1_8/sp/SingleplayerServerController.java index 9d02b25..1479e01 100644 --- a/sources/main/java/net/lax1dude/eaglercraft/v1_8/sp/SingleplayerServerController.java +++ b/sources/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/sources/main/java/net/lax1dude/eaglercraft/v1_8/sp/gui/GuiScreenBackupWorldSelection.java b/sources/main/java/net/lax1dude/eaglercraft/v1_8/sp/gui/GuiScreenBackupWorldSelection.java index 80051fc..5c3904c 100644 --- a/sources/main/java/net/lax1dude/eaglercraft/v1_8/sp/gui/GuiScreenBackupWorldSelection.java +++ b/sources/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/sources/main/java/net/lax1dude/eaglercraft/v1_8/sp/gui/GuiScreenOldSeedWarning.java b/sources/main/java/net/lax1dude/eaglercraft/v1_8/sp/gui/GuiScreenOldSeedWarning.java new file mode 100644 index 0000000..c13e4aa --- /dev/null +++ b/sources/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/sources/main/java/net/lax1dude/eaglercraft/v1_8/sp/ipc/IPCPacketManager.java b/sources/main/java/net/lax1dude/eaglercraft/v1_8/sp/ipc/IPCPacketManager.java index f85176d..f501c67 100644 --- a/sources/main/java/net/lax1dude/eaglercraft/v1_8/sp/ipc/IPCPacketManager.java +++ b/sources/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/sources/main/java/net/lax1dude/eaglercraft/v1_8/sp/server/EaglerIntegratedServerWorker.java b/sources/main/java/net/lax1dude/eaglercraft/v1_8/sp/server/EaglerIntegratedServerWorker.java index 73fb100..20c96be 100644 --- a/sources/main/java/net/lax1dude/eaglercraft/v1_8/sp/server/EaglerIntegratedServerWorker.java +++ b/sources/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/sources/main/java/net/lax1dude/eaglercraft/v1_8/sp/server/export/WorldConverterEPK.java b/sources/main/java/net/lax1dude/eaglercraft/v1_8/sp/server/export/WorldConverterEPK.java index fc085c0..bf6ae1a 100644 --- a/sources/main/java/net/lax1dude/eaglercraft/v1_8/sp/server/export/WorldConverterEPK.java +++ b/sources/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/sources/main/java/net/lax1dude/eaglercraft/v1_8/sp/server/export/WorldConverterMCA.java b/sources/main/java/net/lax1dude/eaglercraft/v1_8/sp/server/export/WorldConverterMCA.java index 0c058fb..ce8e590 100644 --- a/sources/main/java/net/lax1dude/eaglercraft/v1_8/sp/server/export/WorldConverterMCA.java +++ b/sources/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/sources/resources/assets/eagler/glsl/accel_particle.vsh b/sources/resources/assets/eagler/glsl/accel_particle.vsh index f4ab94e..59becc7 100644 --- a/sources/resources/assets/eagler/glsl/accel_particle.vsh +++ b/sources/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/sources/resources/assets/eagler/glsl/deferred/accel_particle.vsh b/sources/resources/assets/eagler/glsl/deferred/accel_particle.vsh index fc68f1b..b750732 100644 --- a/sources/resources/assets/eagler/glsl/deferred/accel_particle.vsh +++ b/sources/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/sources/resources/assets/eagler/glsl/deferred/emissive_items.csv b/sources/resources/assets/eagler/glsl/deferred/emissive_items.csv index 6056c8b..f7814db 100644 --- a/sources/resources/assets/eagler/glsl/deferred/emissive_items.csv +++ b/sources/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/sources/resources/assets/eagler/glsl/deferred/shader_pack_info.json b/sources/resources/assets/eagler/glsl/deferred/shader_pack_info.json index 556d342..6b573da 100644 --- a/sources/resources/assets/eagler/glsl/deferred/shader_pack_info.json +++ b/sources/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/sources/resources/assets/eagler/glsl/dynamiclights/accel_particle_dynamiclights.fsh b/sources/resources/assets/eagler/glsl/dynamiclights/accel_particle_dynamiclights.fsh new file mode 100644 index 0000000..1492065 --- /dev/null +++ b/sources/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/sources/resources/assets/eagler/glsl/dynamiclights/accel_particle_dynamiclights.vsh b/sources/resources/assets/eagler/glsl/dynamiclights/accel_particle_dynamiclights.vsh new file mode 100644 index 0000000..202bd15 --- /dev/null +++ b/sources/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/sources/resources/assets/eagler/glsl/dynamiclights/core_dynamiclights.fsh b/sources/resources/assets/eagler/glsl/dynamiclights/core_dynamiclights.fsh new file mode 100644 index 0000000..aeaebf5 --- /dev/null +++ b/sources/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/sources/resources/assets/eagler/glsl/dynamiclights/core_dynamiclights.vsh b/sources/resources/assets/eagler/glsl/dynamiclights/core_dynamiclights.vsh new file mode 100644 index 0000000..023b204 --- /dev/null +++ b/sources/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/sources/resources/assets/eagler/mesh/readme.txt b/sources/resources/assets/eagler/mesh/readme.txt new file mode 100644 index 0000000..6c8b2bd --- /dev/null +++ b/sources/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/sources/resources/plugin_download.zip b/sources/resources/plugin_download.zip index 5975d288b59d84e0ef0b14079ec328a4614c02c6..a1e55c8a2b30082406ed3bcff72a0e38f26a1514 100644 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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