diff --git a/common/src/main/resources/lod.accesswidener b/common/src/main/resources/lod.accesswidener index 6b1a70718..17a99d6a7 100644 --- a/common/src/main/resources/lod.accesswidener +++ b/common/src/main/resources/lod.accesswidener @@ -22,9 +22,11 @@ accessible field net/minecraft/world/level/lighting/LevelLightEngine skyEngine L accessible method net/minecraft/world/level/levelgen/Heightmap setHeight (III)V accessible field net/minecraft/world/level/biome/Biome generationSettings Lnet/minecraft/world/level/biome/BiomeGenerationSettings; -# idk what's going on here +# grabbing textures accessible field net/minecraft/client/renderer/texture/TextureAtlasSprite animatedTexture Lnet/minecraft/client/renderer/texture/TextureAtlasSprite$AnimatedTexture; accessible field net/minecraft/client/renderer/texture/TextureAtlasSprite width I accessible field net/minecraft/client/renderer/texture/TextureAtlasSprite height I accessible field net/minecraft/client/renderer/texture/TextureAtlasSprite mainImage [Lcom/mojang/blaze3d/platform/NativeImage; +accessible method net/minecraft/client/renderer/texture/TextureAtlasSprite$AnimatedTexture getFrameX (I)I +accessible method net/minecraft/client/renderer/texture/TextureAtlasSprite$AnimatedTexture getFrameY (I)I extendable class com/mojang/math/Matrix4f diff --git a/common/src/main/resources/shaders/unshaded.frag b/common/src/main/resources/shaders/unshaded.frag deleted file mode 100644 index 4119de8b8..000000000 --- a/common/src/main/resources/shaders/unshaded.frag +++ /dev/null @@ -1,26 +0,0 @@ -#version 150 core - -in vec4 vertexColor; -//in vec2 textureCoord; - -out vec4 fragColor; - -//uniform sampler2D texImage; - - -/** - * Fragment Shader - * - * author: James Seibel - * version: 11-8-2021 - */ -void main() -{ - // TODO: add a white texture to support Optifine shaders - //vec4 textureColor = texture(texImage, textureCoord); - //fragColor = vertexColor * textureColor; - - - // very simple fragment shader, just return the vertix's color - fragColor = vertexColor; -} diff --git a/common/src/main/resources/shaders/unshaded.vert b/common/src/main/resources/shaders/unshaded.vert deleted file mode 100644 index 20b4e88f1..000000000 --- a/common/src/main/resources/shaders/unshaded.vert +++ /dev/null @@ -1,29 +0,0 @@ -#version 150 core - -in vec3 vPosition; -in vec4 color; - -out vec4 vertexColor; -//out vec2 textureCoord; - -uniform mat4 modelViewMatrix; -uniform mat4 projectionMatrix; - - -/** - * Vertex Shader - * - * author: James Seibel - * version: 11-8-2021 - */ -void main() -{ - // TODO: add a simple white texture to support Optifine shaders - //textureCoord = textureCoord; - - vertexColor = color; - - // the vPosition needs to be converted to a vec4 so it can be multiplied - // by the 4x4 matrices - gl_Position = projectionMatrix * modelViewMatrix * vec4(vPosition, 1); -} diff --git a/fabric/build.gradle b/fabric/build.gradle index b9d311ce0..fbe978548 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -56,18 +56,24 @@ task copyAccessWidener(type: Copy) { into file("src/generated/resources") } -task copyAccessWidenerAtRuntime(type: Copy) { - from project(":common").file("src/main/resources/lod.accesswidener") +task copyCoreResources(type: Copy) { + from fileTree(project(":core").file("src/main/resources")) into file("build/resources/main") } -task deleteAccessWidenerAtRuntime(type: Delete) { - delete file("build/resources/main/lod.accesswidener") +task deleteResources(type: Delete) { + delete file("build/resources/main") +} + +task copyCommonResources(type: Copy) { + from fileTree(project(":common").file("src/main/resources")) + into file("build/resources/main") } runClient { - dependsOn(copyAccessWidenerAtRuntime) - finalizedBy(deleteAccessWidenerAtRuntime) + dependsOn(copyCoreResources) + dependsOn(copyCommonResources) + finalizedBy(deleteResources) } processResources { diff --git a/fabric/src/main/resources/assets/lod/textures/gui/button.png b/fabric/src/main/resources/assets/lod/textures/gui/button.png new file mode 100644 index 000000000..8c264bf9f Binary files /dev/null and b/fabric/src/main/resources/assets/lod/textures/gui/button.png differ diff --git a/forge/build.gradle b/forge/build.gradle index 19eb66598..2fd248a17 100644 --- a/forge/build.gradle +++ b/forge/build.gradle @@ -37,6 +37,26 @@ dependencies { shadowMe 'org.apache.commons:commons-compress:1.21' } +task copyCoreResources(type: Copy) { + from fileTree(project(":core").file("src/main/resources")) + into file("build/resources/main") +} + +task deleteResources(type: Delete) { + delete file("build/resources/main") +} + +task copyCommonResources(type: Copy) { + from fileTree(project(":common").file("src/main/resources")) + into file("build/resources/main") +} + +runClient { + dependsOn(copyCoreResources) + dependsOn(copyCommonResources) + finalizedBy(deleteResources) +} + shadowJar { dependencies { exclude(dependency("net.fabricmc:fabric-loader:${rootProject.fabric_loader_version}")) diff --git a/forge/src/main/java/com/seibel/lod/forge/wrappers/minecraft/MinecraftRenderWrapper.java b/forge/src/main/java/com/seibel/lod/forge/wrappers/minecraft/MinecraftRenderWrapper.java index 33e06a4e6..d6b4f89f2 100644 --- a/forge/src/main/java/com/seibel/lod/forge/wrappers/minecraft/MinecraftRenderWrapper.java +++ b/forge/src/main/java/com/seibel/lod/forge/wrappers/minecraft/MinecraftRenderWrapper.java @@ -1,5 +1,6 @@ package com.seibel.lod.forge.wrappers.minecraft; +import java.awt.*; import java.util.HashSet; import com.mojang.math.Vector3f; @@ -22,24 +23,25 @@ import net.minecraft.client.renderer.chunk.ChunkRenderDispatcher.CompiledChunk; import net.minecraft.core.BlockPos; import net.minecraft.world.effect.MobEffects; import net.minecraft.world.phys.Vec3; +import org.lwjgl.opengl.GL15; /** * A singleton that contains everything * related to rendering in Minecraft. - * + * * @author James Seibel * @version 11-18-2021 */ public class MinecraftRenderWrapper implements IMinecraftRenderWrapper { public static final MinecraftRenderWrapper INSTANCE = new MinecraftRenderWrapper(); - + private final GameRenderer gameRenderer = Minecraft.getInstance().gameRenderer; private final static Minecraft mc = Minecraft.getInstance(); - - - + + + @Override public Vec3f getLookAtVector() { @@ -47,7 +49,7 @@ public class MinecraftRenderWrapper implements IMinecraftRenderWrapper Vector3f cameraDir = camera.getLookVector(); return new Vec3f(cameraDir.x(), cameraDir.y(), cameraDir.z()); } - + @Override public AbstractBlockPosWrapper getCameraBlockPosition() { @@ -55,58 +57,81 @@ public class MinecraftRenderWrapper implements IMinecraftRenderWrapper BlockPos blockPos = camera.getBlockPosition(); return new BlockPosWrapper(blockPos.getX(), blockPos.getY(), blockPos.getZ()); } - + @Override public boolean playerHasBlindnessEffect() { return mc.player.getActiveEffectsMap().get(MobEffects.BLINDNESS) != null; } - + @Override public Vec3d getCameraExactPosition() { Camera camera = gameRenderer.getMainCamera(); Vec3 projectedView = camera.getPosition(); - + return new Vec3d(projectedView.x, projectedView.y, projectedView.z); } - + @Override public Mat4f getDefaultProjectionMatrix(float partialTicks) { return McObjectConverter.Convert(gameRenderer.getProjectionMatrix(gameRenderer.getFov(gameRenderer.getMainCamera(), partialTicks, true))); } - + @Override public double getGamma() { return mc.options.gamma; } - + + @Override + public Color getFogColor() + { + float[] colorValues = new float[4]; + GL15.glGetFloatv(GL15.GL_FOG_COLOR, colorValues); + return new Color(colorValues[0], colorValues[1], colorValues[2], colorValues[3]); + } + + @Override + public Color getSkyColor() + { + if (mc.level.dimensionType().hasSkyLight()) + { + Vec3 colorValues = mc.level.getSkyColor(mc.gameRenderer.getMainCamera().getPosition(), mc.getFrameTime()); + return new Color((float) colorValues.x, (float) colorValues.y, (float) colorValues.z); + } + else + { + return new Color(0, 0, 0); + } + } + + @Override public double getFov(float partialTicks) { return gameRenderer.getFov(gameRenderer.getMainCamera(), partialTicks, true); } - + /** Measured in chunks */ @Override public int getRenderDistance() { return mc.options.renderDistance; } - + @Override public int getScreenWidth() { - return mc.getWindow().getWidth(); + return mc.getWindow().getWidth(); } @Override public int getScreenHeight() { return mc.getWindow().getHeight(); } - + /** * This method returns the ChunkPos of all chunks that Minecraft * is going to render this frame.

@@ -119,9 +144,9 @@ public class MinecraftRenderWrapper implements IMinecraftRenderWrapper public HashSet getRenderedChunks() { HashSet loadedPos = new HashSet<>(); - + // Wow, those are some long names! - + // go through every RenderInfo to get the compiled chunks LevelRenderer renderer = mc.levelRenderer; for (RenderChunkInfo worldRenderer$LocalRenderInformationContainer : renderer.renderChunks) @@ -131,11 +156,11 @@ public class MinecraftRenderWrapper implements IMinecraftRenderWrapper { // add the ChunkPos for every rendered chunk BlockPos bpos = worldRenderer$LocalRenderInformationContainer.chunk.getOrigin(); - + loadedPos.add(new ChunkPosWrapper(bpos)); } } - + return loadedPos; } }