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;
}
}