From 92e39b5d1d5056c9fd2b5d48ddbab109382544b8 Mon Sep 17 00:00:00 2001 From: Leijurv Date: Tue, 12 Mar 2019 18:45:54 -0700 Subject: [PATCH] its over its done --- .../launch/mixins/MixinRenderChunk.java | 36 --------------- .../launch/mixins/MixinRenderChunkCache.java | 46 +++++++++++++++++++ src/launch/resources/mixins.baritone.json | 1 + 3 files changed, 47 insertions(+), 36 deletions(-) create mode 100644 src/launch/java/baritone/launch/mixins/MixinRenderChunkCache.java diff --git a/src/launch/java/baritone/launch/mixins/MixinRenderChunk.java b/src/launch/java/baritone/launch/mixins/MixinRenderChunk.java index 58fc4dc0..c5b0d7b4 100644 --- a/src/launch/java/baritone/launch/mixins/MixinRenderChunk.java +++ b/src/launch/java/baritone/launch/mixins/MixinRenderChunk.java @@ -36,42 +36,6 @@ import org.spongepowered.asm.mixin.injection.Redirect; @Mixin(RenderChunk.class) public class MixinRenderChunk { - // TODO: (1.13.2) Resolve this issue - // Looks like generateCache will return null if the chunk is empty, so we're probably going to want to hook that method - /* - @Redirect( - method = "rebuildChunk", - at = @At( - value = "INVOKE", - target = "net/minecraft/world/ChunkCache.isEmpty()Z" - ) - ) - private boolean isEmpty(ChunkCache chunkCache) { - if (!chunkCache.isEmpty()) { - return false; - } - if (Baritone.settings().renderCachedChunks.value && Minecraft.getInstance().getIntegratedServer() == null) { - Baritone baritone = (Baritone) BaritoneAPI.getProvider().getPrimaryBaritone(); - IPlayerContext ctx = baritone.getPlayerContext(); - if (ctx.player() != null && ctx.world() != null && baritone.bsi != null) { - BlockPos position = ((RenderChunk) (Object) this).getPosition(); - // RenderChunk extends from -1,-1,-1 to +16,+16,+16 - // then the constructor of ChunkCache extends it one more (presumably to get things like the connected status of fences? idk) - // so if ANY of the adjacent chunks are loaded, we are unempty - for (int dx = -1; dx <= 1; dx++) { - for (int dz = -1; dz <= 1; dz++) { - if (baritone.bsi.isLoaded(16 * dx + position.getX(), 16 * dz + position.getZ())) { - return false; - } - } - } - } - } - - return true; - } - */ - @Redirect( method = "rebuildChunk", at = @At( diff --git a/src/launch/java/baritone/launch/mixins/MixinRenderChunkCache.java b/src/launch/java/baritone/launch/mixins/MixinRenderChunkCache.java new file mode 100644 index 00000000..b08aa8c8 --- /dev/null +++ b/src/launch/java/baritone/launch/mixins/MixinRenderChunkCache.java @@ -0,0 +1,46 @@ +/* + * This file is part of Baritone. + * + * Baritone is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Baritone is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Baritone. If not, see . + */ + +package baritone.launch.mixins; + +import baritone.Baritone; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.chunk.RenderChunkCache; +import net.minecraft.world.chunk.Chunk; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(RenderChunkCache.class) +public class MixinRenderChunkCache { + @Redirect( + method = "generateCache", + at = @At( + value = "INVOKE", + target = "net/minecraft/world/chunk/Chunk.isEmptyBetween(II)Z" + ) + ) + private static boolean isEmpty(Chunk chunk, int yStart, int yEnd) { + if (!chunk.isEmptyBetween(yStart, yEnd)) { + return false; + } + if (chunk.isEmpty() && Baritone.settings().renderCachedChunks.value && Minecraft.getInstance().getIntegratedServer() == null) { + return false; + } + return true; + } +} diff --git a/src/launch/resources/mixins.baritone.json b/src/launch/resources/mixins.baritone.json index 858cb71e..056b17a4 100644 --- a/src/launch/resources/mixins.baritone.json +++ b/src/launch/resources/mixins.baritone.json @@ -21,6 +21,7 @@ "MixinNetHandlerPlayClient", "MixinNetworkManager", "MixinRenderChunk", + "MixinRenderChunkCache", "MixinRenderList", "MixinVboRenderList" ]