Port to MC 1.18-rc4

This commit is contained in:
Jonas Herzig
2021-11-28 13:57:51 +01:00
parent b6f623efb8
commit ce5886a427
7 changed files with 46 additions and 14 deletions

View File

@@ -11,6 +11,7 @@ import net.minecraft.client.render.GameRenderer;
import net.minecraft.client.render.LightmapTextureManager;
import net.minecraft.client.render.WorldRenderer;
import net.minecraft.client.render.chunk.ChunkBuilder;
import net.minecraft.client.render.chunk.ChunkRendererRegionBuilder;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.util.math.Matrix4f;
import org.spongepowered.asm.mixin.Final;
@@ -45,11 +46,11 @@ public abstract class Mixin_ForceChunkLoading implements IForceChunkLoading {
@Shadow @Final private MinecraftClient client;
@Shadow @Final private ObjectArrayList<ChunkInfoAccessor> field_34807;
@Shadow @Final private ObjectArrayList<ChunkInfoAccessor> chunkInfos;
@Shadow private boolean field_34810;
@Shadow @Final private BlockingQueue<ChunkBuilder.BuiltChunk> field_34816;
@Shadow @Final private BlockingQueue<ChunkBuilder.BuiltChunk> builtChunks;
@Shadow private Future<?> field_34808;
@@ -64,6 +65,8 @@ public abstract class Mixin_ForceChunkLoading implements IForceChunkLoading {
assert this.client.player != null;
ChunkRendererRegionBuilder chunkRendererRegionBuilder = new ChunkRendererRegionBuilder();
do {
// Determine which chunks shall be visible
setupTerrain(camera, this.frustum, this.capturedFrustum != null, this.client.player.isSpectator());
@@ -84,14 +87,14 @@ public abstract class Mixin_ForceChunkLoading implements IForceChunkLoading {
// Schedule all chunks which need rebuilding (we schedule even important rebuilds because we wait for
// all of them anyway and this way we can take advantage of threading)
for (ChunkInfoAccessor chunkInfo : this.field_34807) {
for (ChunkInfoAccessor chunkInfo : this.chunkInfos) {
ChunkBuilder.BuiltChunk builtChunk = chunkInfo.getChunk();
if (!builtChunk.needsRebuild()) {
continue;
}
// MC sometimes schedules invalid chunks when you're outside of loaded chunks (e.g. y > 256)
if (builtChunk.shouldBuild()) {
builtChunk.scheduleRebuild(this.chunkBuilder);
builtChunk.scheduleRebuild(this.chunkBuilder, chunkRendererRegionBuilder);
}
builtChunk.cancelRebuild();
}
@@ -100,6 +103,6 @@ public abstract class Mixin_ForceChunkLoading implements IForceChunkLoading {
this.field_34810 |= ((ForceChunkLoadingHook.IBlockOnChunkRebuilds) this.chunkBuilder).uploadEverythingBlocking();
// Repeat until no more updates are needed
} while (this.field_34810 || !this.field_34816.isEmpty());
} while (this.field_34810 || !this.builtChunks.isEmpty());
}
}