aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/makamys/lodmod/renderer
diff options
context:
space:
mode:
authormakamys <makamys@outlook.com>2021-05-10 15:00:09 +0200
committermakamys <makamys@outlook.com>2021-05-10 15:36:42 +0200
commitf5683b4048072b566839ef07a2b6a06da91a07bc (patch)
tree62ebc08999e1356f5f720db77f9e160778c27d07 /src/main/java/makamys/lodmod/renderer
parentc95e989d793b81530343871a6062059f18bbffdb (diff)
downloadNeodymium-f5683b4048072b566839ef07a2b6a06da91a07bc.tar.gz
Neodymium-f5683b4048072b566839ef07a2b6a06da91a07bc.tar.bz2
Neodymium-f5683b4048072b566839ef07a2b6a06da91a07bc.zip
Fix invisible chunks in OptiFine
Diffstat (limited to 'src/main/java/makamys/lodmod/renderer')
-rw-r--r--src/main/java/makamys/lodmod/renderer/LODRenderer.java45
1 files changed, 22 insertions, 23 deletions
diff --git a/src/main/java/makamys/lodmod/renderer/LODRenderer.java b/src/main/java/makamys/lodmod/renderer/LODRenderer.java
index a821d73..28dd175 100644
--- a/src/main/java/makamys/lodmod/renderer/LODRenderer.java
+++ b/src/main/java/makamys/lodmod/renderer/LODRenderer.java
@@ -91,12 +91,18 @@ public class LODRenderer {
hasInited = init();
}
- public void preRenderSortedRenderers(int renderPass, double alpha) {
+ public void preRenderSortedRenderers(int renderPass, double alpha, WorldRenderer[] sortedWorldRenderers) {
if(renderPass != 0) return;
Minecraft.getMinecraft().entityRenderer.enableLightmap((double)alpha);
if(hasInited) {
+ for(WorldRenderer wr : sortedWorldRenderers) {
+ if(wr != null) {
+ ((IWorldRenderer)wr).myTick();
+ }
+ }
+
mainLoop();
handleKeyboard();
gcInterval = 10 * 1000;
@@ -416,35 +422,28 @@ public class LODRenderer {
ChunkMesh.usedRAM = 0;
}
- public void onWorldRendererPost(WorldRenderer wr) {
- LODChunk lodChunk = getLODChunk(Math.floorDiv(wr.posX, 16), Math.floorDiv(wr.posZ, 16));
- lodChunk.putChunkMeshes(Math.floorDiv(wr.posY, 16), ((IWorldRenderer)wr).getChunkMeshes());
- }
-
- public void onWorldRendererRender(WorldRenderer wr) {
+ public void onWorldRendererChanged(WorldRenderer wr, boolean visible) {
int x = Math.floorDiv(wr.posX, 16);
int y = Math.floorDiv(wr.posY, 16);
int z = Math.floorDiv(wr.posZ, 16);
-
LODChunk lodChunk = getLODChunk(x, z);
- setMeshVisible(lodChunk.chunkMeshes[y * 2 + 0], false);
- setMeshVisible(lodChunk.chunkMeshes[y * 2 + 1], false);
- setMeshVisible(lodChunk.simpleMeshes[0], false);
- setMeshVisible(lodChunk.simpleMeshes[1], false);
+ if(visible) {
+ setMeshVisible(lodChunk.chunkMeshes[y * 2 + 0], false);
+ setMeshVisible(lodChunk.chunkMeshes[y * 2 + 1], false);
+ setMeshVisible(lodChunk.simpleMeshes[0], false);
+ setMeshVisible(lodChunk.simpleMeshes[1], false);
+ } else {
+ setMeshVisible(lodChunk.chunkMeshes[y * 2 + 0], true);
+ setMeshVisible(lodChunk.chunkMeshes[y * 2 + 1], true);
+ }
}
- public void onDontDraw(WorldRenderer wr) {
- int chunkX = Math.floorDiv(wr.posX, 16);
- int chunkY = Math.floorDiv(wr.posY, 16);
- int chunkZ = Math.floorDiv(wr.posZ, 16);
-
- Entity player = (Entity)Minecraft.getMinecraft().getIntegratedServer().getConfigurationManager().playerEntityList.get(0);
- LODChunk lodChunk = getLODChunk(chunkX, chunkZ);
-
- int y = Math.floorDiv(wr.posY, 16);
- setMeshVisible(lodChunk.chunkMeshes[y * 2 + 0], true);
- setMeshVisible(lodChunk.chunkMeshes[y * 2 + 1], true);
+ public void onWorldRendererPost(WorldRenderer wr) {
+ if(Minecraft.getMinecraft().theWorld.getChunkFromChunkCoords(Math.floorDiv(wr.posX, 16), Math.floorDiv(wr.posZ, 16)).isChunkLoaded) {
+ LODChunk lodChunk = getLODChunk(Math.floorDiv(wr.posX, 16), Math.floorDiv(wr.posZ, 16));
+ lodChunk.putChunkMeshes(Math.floorDiv(wr.posY, 16), ((IWorldRenderer)wr).getChunkMeshes());
+ }
}
private double getLastSortDistanceSq(Entity player) {