From d33eae4e70108eeb5c747f8dbc50b40e1fb02399 Mon Sep 17 00:00:00 2001 From: pavlovski67 Date: Fri, 26 Jun 2026 18:23:01 +0200 Subject: [PATCH 1/2] Port Fabric build to Minecraft 26.3 Snapshot 1 --- build.gradle | 25 +++- fabric/build.gradle | 8 +- fabric/src/main/resources/fabric.mod.json | 4 +- gradle.properties | 8 +- settings.gradle | 4 + src/api/java/baritone/api/Settings.java | 10 +- .../baritone/api/utils/BetterBlockPos.java | 5 + .../baritone/api/utils/BlockOptionalMeta.java | 13 +- src/api/java/baritone/api/utils/Helper.java | 2 +- .../baritone/api/utils/IPlayerController.java | 4 +- .../baritone/api/utils/gui/BaritoneToast.java | 2 +- src/api/java/net/minecraft/util/Tuple.java | 28 +++++ .../launch/mixins/MixinChunkArray.java | 4 +- .../mixins/MixinClientPlayNetHandler.java | 6 +- .../mixins/MixinFireworkRocketEntity.java | 5 +- .../launch/mixins/MixinMinecraft.java | 2 +- src/main/java/baritone/Baritone.java | 2 +- .../baritone/behavior/InventoryBehavior.java | 4 +- src/main/java/baritone/cache/CachedChunk.java | 112 +++++++----------- src/main/java/baritone/cache/ChunkPacker.java | 4 +- .../baritone/cache/FasterWorldScanner.java | 8 +- .../java/baritone/cache/WorldScanner.java | 4 +- .../command/defaults/RenderCommand.java | 11 +- .../java/baritone/event/GameEventHandler.java | 2 +- .../pathing/movement/MovementHelper.java | 2 +- .../java/baritone/process/BuilderProcess.java | 8 +- .../java/baritone/process/ExploreProcess.java | 4 +- .../java/baritone/process/FarmProcess.java | 2 +- .../process/elytra/ElytraBehavior.java | 14 +-- .../elytra/NetherPathfinderContext.java | 6 +- .../baritone/utils/BlockStateInterface.java | 4 +- src/main/java/baritone/utils/GuiClick.java | 6 +- src/main/java/baritone/utils/IRenderer.java | 89 ++------------ .../java/baritone/utils/PathRenderer.java | 4 +- .../player/BaritonePlayerController.java | 6 +- 35 files changed, 195 insertions(+), 227 deletions(-) create mode 100644 src/api/java/net/minecraft/util/Tuple.java diff --git a/build.gradle b/build.gradle index 2f13538c7c..d07cfb2374 100755 --- a/build.gradle +++ b/build.gradle @@ -53,9 +53,22 @@ allprojects { name = 'spongepowered-repo' url = 'https://repo.spongepowered.org/repository/maven-public/' } + maven { + name = 'fabric-intermediary-artifact' + url = 'https://maven.fabricmc.net/' + metadataSources { + artifact() + } + content { + includeModule("net.fabricmc", "intermediary") + } + } maven { name = 'fabric-maven' url = 'https://maven.fabricmc.net/' + content { + excludeModule("net.fabricmc", "intermediary") + } } maven { name = 'impactdevelopment-repo' @@ -93,9 +106,17 @@ allprojects { version rootProject.minecraft_version mappings { - intermediary() + if (rootProject.minecraft_version == "26.3-snapshot-1") { + mapping("net.fabricmc:intermediary:0.0.0:v2", "intermediary") { + provides("intermediary", false) + } + } else { + intermediary() + } mojmap() - parchment(rootProject.minecraft_version, "2025.12.20") + if (rootProject.hasProperty("parchment_version") && rootProject.parchment_version) { + parchment(rootProject.minecraft_version, rootProject.parchment_version) + } } } diff --git a/fabric/build.gradle b/fabric/build.gradle index c607dbab27..3c0086999b 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -78,15 +78,19 @@ components.java { } task proguard(type: ProguardTask) { - proguardVersion "7.4.2" + enabled = project.java_version.toInteger() <= 21 + proguardVersion "7.9.1" compType "fabric" } task createDist(type: CreateDistTask, dependsOn: proguard) { + enabled = project.java_version.toInteger() <= 21 compType "fabric" } -build.finalizedBy(createDist) +if (project.java_version.toInteger() <= 21) { + build.finalizedBy(createDist) +} publishing { publications { diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json index 63c52e11b9..76b2c81515 100644 --- a/fabric/src/main/resources/fabric.mod.json +++ b/fabric/src/main/resources/fabric.mod.json @@ -24,8 +24,8 @@ "mixins.baritone.json" ], "depends": { - "fabricloader": ">=0.14.22", - "minecraft": ["1.21.11"] + "fabricloader": ">=0.19.3", + "minecraft": ["26.3-snapshot-1"] }, "custom": { "modmenu": { diff --git a/gradle.properties b/gradle.properties index 4383c548b6..71b158a158 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,20 +1,20 @@ org.gradle.jvmargs=-Xmx4G -available_loaders=fabric,forge,neoforge,tweaker +available_loaders=fabric mod_version=1.17.0 maven_group=baritone archives_base_name=baritone -java_version=21 +java_version=25 -minecraft_version=1.21.11 +minecraft_version=26.3-snapshot-1 forge_version=61.1.5 neoforge_version=42 -fabric_version=0.18.5 +fabric_version=0.19.3 nether_pathfinder_version=1.4.1 diff --git a/settings.gradle b/settings.gradle index 6876f21fb0..7ef0aee0c3 100755 --- a/settings.gradle +++ b/settings.gradle @@ -39,6 +39,10 @@ pluginManagement { } } +plugins { + id("org.gradle.toolchains.foojay-resolver-convention") version "1.0.0" +} + rootProject.name = 'baritone' for (platform in available_loaders.split(",")) { diff --git a/src/api/java/baritone/api/Settings.java b/src/api/java/baritone/api/Settings.java index 808c0906f7..54a930af3c 100644 --- a/src/api/java/baritone/api/Settings.java +++ b/src/api/java/baritone/api/Settings.java @@ -22,8 +22,8 @@ import baritone.api.utils.SettingsUtil; import baritone.api.utils.TypeUtils; import baritone.api.utils.gui.BaritoneToast; -import net.minecraft.client.GuiMessageTag; import net.minecraft.client.Minecraft; +import net.minecraft.client.multiplayer.chat.GuiMessageTag; import net.minecraft.core.Vec3i; import net.minecraft.network.chat.Component; import net.minecraft.world.item.Item; @@ -1280,8 +1280,12 @@ public final class Settings { @JavaOnly public final Setting> logger = new Setting<>((msg) -> { try { - final GuiMessageTag tag = useMessageTag.value ? Helper.MESSAGE_TAG : null; - Minecraft.getInstance().gui.getChat().addMessage(msg, null, tag); + if (useMessageTag.value) { + final GuiMessageTag tag = Helper.MESSAGE_TAG; + Minecraft.getInstance().gui.hud.getChat().addPlayerMessage(msg, null, tag); + } else { + Minecraft.getInstance().gui.hud.getChat().addClientSystemMessage(msg); + } } catch (Throwable t) { LOGGER.warn("Failed to log message to chat: " + msg.getString(), t); } diff --git a/src/api/java/baritone/api/utils/BetterBlockPos.java b/src/api/java/baritone/api/utils/BetterBlockPos.java index 4225985a09..bffb882516 100644 --- a/src/api/java/baritone/api/utils/BetterBlockPos.java +++ b/src/api/java/baritone/api/utils/BetterBlockPos.java @@ -22,6 +22,7 @@ import net.minecraft.core.Direction; import net.minecraft.core.Vec3i; import net.minecraft.util.Mth; +import net.minecraft.world.phys.Vec3; /** * A better BlockPos that has fewer hash collisions (and slightly more performant offsets) @@ -224,6 +225,10 @@ public double distanceTo(final BetterBlockPos to) { return Math.sqrt(dx * dx + dy * dy + dz * dz); } + public Vec3 getCenter() { + return new Vec3(x + 0.5, y + 0.5, z + 0.5); + } + @Override @Nonnull public String toString() { diff --git a/src/api/java/baritone/api/utils/BlockOptionalMeta.java b/src/api/java/baritone/api/utils/BlockOptionalMeta.java index b57b1a725a..170000ccc9 100644 --- a/src/api/java/baritone/api/utils/BlockOptionalMeta.java +++ b/src/api/java/baritone/api/utils/BlockOptionalMeta.java @@ -32,13 +32,13 @@ import net.minecraft.server.RegistryLayer; import net.minecraft.server.ReloadableServerRegistries; import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.packs.PackResources; import net.minecraft.server.packs.PackType; import net.minecraft.server.packs.VanillaPackResources; import net.minecraft.server.packs.repository.ServerPacksSource; import net.minecraft.server.packs.resources.CloseableResourceManager; import net.minecraft.server.packs.resources.MultiPackResourceManager; import net.minecraft.tags.TagLoader; -import net.minecraft.world.RandomSequences; import net.minecraft.world.flag.FeatureFlagSet; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; @@ -262,8 +262,8 @@ public static class ServerLevelStub extends ServerLevel { private static Unsafe unsafe = getUnsafe(); private static CompletableFuture registryAccess = load(); - public ServerLevelStub(MinecraftServer $$0, Executor $$1, LevelStorageSource.LevelStorageAccess $$2, ServerLevelData $$3, ResourceKey $$4, LevelStem $$5, boolean $$6, long $$7, List $$8, boolean $$9, @Nullable RandomSequences $$10) { - super($$0, $$1, $$2, $$3, $$4, $$5, $$6, $$7, $$8, $$9, $$10); + public ServerLevelStub(MinecraftServer $$0, Executor $$1, LevelStorageSource.LevelStorageAccess $$2, ServerLevelData $$3, ResourceKey $$4, LevelStem $$5, boolean $$6, long $$7, List $$8, boolean $$9) { + super($$0, $$1, $$2, $$3, $$4, $$5, $$6, $$7, $$8, $$9); } @Override @@ -303,7 +303,7 @@ public static CompletableFuture load() { // Simplified from {@link net.minecraft.server.WorldLoader#load()} CloseableResourceManager closeableResourceManager = new MultiPackResourceManager( PackType.SERVER_DATA, - List.of(ServerPacksSource.createVanillaPackSource()) + List.of(ServerPacksSource.createVanillaPackSource().fullResources()) ); LayeredRegistryAccess baseLayeredRegistry = RegistryLayer.createRegistryAccess(); List> pendingTags = TagLoader.loadTagsForExistingRegistries( @@ -318,8 +318,9 @@ public static CompletableFuture load() { RegistryDataLoader.load( closeableResourceManager, worldGenRegistryLookupList, - RegistryDataLoader.WORLDGEN_REGISTRIES - ) + RegistryDataLoader.WORLDGEN_REGISTRIES, + ForkJoinPool.commonPool() + ).join() ); return ReloadableServerRegistries.reload( layeredRegistryAccess, diff --git a/src/api/java/baritone/api/utils/Helper.java b/src/api/java/baritone/api/utils/Helper.java index 507cd85a7e..1aee893032 100755 --- a/src/api/java/baritone/api/utils/Helper.java +++ b/src/api/java/baritone/api/utils/Helper.java @@ -20,8 +20,8 @@ import baritone.api.BaritoneAPI; import baritone.api.Settings; import net.minecraft.ChatFormatting; -import net.minecraft.client.GuiMessageTag; import net.minecraft.client.Minecraft; +import net.minecraft.client.multiplayer.chat.GuiMessageTag; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; diff --git a/src/api/java/baritone/api/utils/IPlayerController.java b/src/api/java/baritone/api/utils/IPlayerController.java index 48142d13b7..2c098e9aee 100644 --- a/src/api/java/baritone/api/utils/IPlayerController.java +++ b/src/api/java/baritone/api/utils/IPlayerController.java @@ -24,7 +24,7 @@ import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; -import net.minecraft.world.inventory.ClickType; +import net.minecraft.world.inventory.ContainerInput; import net.minecraft.world.level.GameType; import net.minecraft.world.level.Level; import net.minecraft.world.phys.BlockHitResult; @@ -43,7 +43,7 @@ public interface IPlayerController { void resetBlockRemoving(); - void windowClick(int windowId, int slotId, int mouseButton, ClickType type, Player player); + void windowClick(int windowId, int slotId, int mouseButton, ContainerInput type, Player player); GameType getGameType(); diff --git a/src/api/java/baritone/api/utils/gui/BaritoneToast.java b/src/api/java/baritone/api/utils/gui/BaritoneToast.java index effa0b8046..25e1318c99 100644 --- a/src/api/java/baritone/api/utils/gui/BaritoneToast.java +++ b/src/api/java/baritone/api/utils/gui/BaritoneToast.java @@ -24,6 +24,6 @@ public class BaritoneToast { private static final SystemToast.SystemToastId BARITONE_TOAST_ID = new SystemToast.SystemToastId(5000L); public static void addOrUpdate(Component title, Component subtitle) { - SystemToast.addOrUpdate(Minecraft.getInstance().getToastManager(), BARITONE_TOAST_ID, title, subtitle); + SystemToast.addOrUpdate(Minecraft.getInstance().gui.toastManager(), BARITONE_TOAST_ID, title, subtitle); } } diff --git a/src/api/java/net/minecraft/util/Tuple.java b/src/api/java/net/minecraft/util/Tuple.java new file mode 100644 index 0000000000..40c698257c --- /dev/null +++ b/src/api/java/net/minecraft/util/Tuple.java @@ -0,0 +1,28 @@ +package net.minecraft.util; + +public class Tuple { + + private A a; + private B b; + + public Tuple(A a, B b) { + this.a = a; + this.b = b; + } + + public A getA() { + return a; + } + + public void setA(A a) { + this.a = a; + } + + public B getB() { + return b; + } + + public void setB(B b) { + this.b = b; + } +} diff --git a/src/launch/java/baritone/launch/mixins/MixinChunkArray.java b/src/launch/java/baritone/launch/mixins/MixinChunkArray.java index 711ca65542..722eda84d4 100644 --- a/src/launch/java/baritone/launch/mixins/MixinChunkArray.java +++ b/src/launch/java/baritone/launch/mixins/MixinChunkArray.java @@ -84,8 +84,8 @@ public void copyFrom(IChunkArray other) { LevelChunk chunk = copyingFrom.get(k); if (chunk != null) { ChunkPos chunkpos = chunk.getPos(); - if (inRange(chunkpos.x, chunkpos.z)) { - int index = getIndex(chunkpos.x, chunkpos.z); + if (inRange(chunkpos.x(), chunkpos.z())) { + int index = getIndex(chunkpos.x(), chunkpos.z()); if (chunks.get(index) != null) { throw new IllegalStateException("Doing this would mutate the client's REAL loaded chunks?!"); } diff --git a/src/launch/java/baritone/launch/mixins/MixinClientPlayNetHandler.java b/src/launch/java/baritone/launch/mixins/MixinClientPlayNetHandler.java index d603ca632f..1985b31517 100644 --- a/src/launch/java/baritone/launch/mixins/MixinClientPlayNetHandler.java +++ b/src/launch/java/baritone/launch/mixins/MixinClientPlayNetHandler.java @@ -125,7 +125,7 @@ private void preChunkUnload(ClientboundForgetLevelChunkPacket packet, CallbackIn LocalPlayer player = ibaritone.getPlayerContext().player(); if (player != null && player.connection == (ClientPacketListener) (Object) this) { ibaritone.getGameEventHandler().onChunkEvent( - new ChunkEvent(EventState.PRE, ChunkEvent.Type.UNLOAD, packet.pos().x, packet.pos().z) + new ChunkEvent(EventState.PRE, ChunkEvent.Type.UNLOAD, packet.pos().x(), packet.pos().z()) ); } } @@ -140,7 +140,7 @@ private void postChunkUnload(ClientboundForgetLevelChunkPacket packet, CallbackI LocalPlayer player = ibaritone.getPlayerContext().player(); if (player != null && player.connection == (ClientPacketListener) (Object) this) { ibaritone.getGameEventHandler().onChunkEvent( - new ChunkEvent(EventState.POST, ChunkEvent.Type.UNLOAD, packet.pos().x, packet.pos().z) + new ChunkEvent(EventState.POST, ChunkEvent.Type.UNLOAD, packet.pos().x(), packet.pos().z()) ); } } @@ -190,7 +190,7 @@ private void postHandleMultiBlockChange(ClientboundSectionBlocksUpdatePacket pac return; } baritone.getGameEventHandler().onBlockChange(new BlockChangeEvent( - new ChunkPos(changes.get(0).first()), + ChunkPos.containing(changes.get(0).first()), changes )); } diff --git a/src/launch/java/baritone/launch/mixins/MixinFireworkRocketEntity.java b/src/launch/java/baritone/launch/mixins/MixinFireworkRocketEntity.java index b4c8e05b67..2024ef689e 100644 --- a/src/launch/java/baritone/launch/mixins/MixinFireworkRocketEntity.java +++ b/src/launch/java/baritone/launch/mixins/MixinFireworkRocketEntity.java @@ -18,7 +18,9 @@ package baritone.launch.mixins; import baritone.utils.accessor.IFireworkRocketEntity; +import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.network.syncher.EntityDataAccessor; +import net.minecraft.resources.Identifier; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.LivingEntity; @@ -43,8 +45,9 @@ public abstract class MixinFireworkRocketEntity extends Entity implements IFirew @Shadow public abstract boolean isAttachedToEntity(); + @SuppressWarnings("unchecked") private MixinFireworkRocketEntity(Level level) { - super(EntityType.FIREWORK_ROCKET, level); + super((EntityType) BuiltInRegistries.ENTITY_TYPE.getValue(Identifier.withDefaultNamespace("firework_rocket")), level); } @Override diff --git a/src/launch/java/baritone/launch/mixins/MixinMinecraft.java b/src/launch/java/baritone/launch/mixins/MixinMinecraft.java index 7a1c16c526..8721730192 100644 --- a/src/launch/java/baritone/launch/mixins/MixinMinecraft.java +++ b/src/launch/java/baritone/launch/mixins/MixinMinecraft.java @@ -185,7 +185,7 @@ private Screen passEvents(Minecraft instance) { if (BaritoneAPI.getProvider().getPrimaryBaritone().getPathingBehavior().isPathing() && player != null) { return null; } - return instance.screen; + return instance.gui.screen(); } // TODO diff --git a/src/main/java/baritone/Baritone.java b/src/main/java/baritone/Baritone.java index ad68714137..53f2bd3e0a 100755 --- a/src/main/java/baritone/Baritone.java +++ b/src/main/java/baritone/Baritone.java @@ -245,7 +245,7 @@ public void openClick() { new Thread(() -> { try { Thread.sleep(100); - mc.execute(() -> mc.setScreen(new GuiClick())); + mc.execute(() -> mc.gui.setScreen(new GuiClick())); } catch (Exception ignored) {} }).start(); } diff --git a/src/main/java/baritone/behavior/InventoryBehavior.java b/src/main/java/baritone/behavior/InventoryBehavior.java index 15dff73e13..5b7389ddcd 100644 --- a/src/main/java/baritone/behavior/InventoryBehavior.java +++ b/src/main/java/baritone/behavior/InventoryBehavior.java @@ -27,7 +27,7 @@ import net.minecraft.core.component.DataComponents; import net.minecraft.world.InteractionHand; import net.minecraft.world.entity.EquipmentSlot; -import net.minecraft.world.inventory.ClickType; +import net.minecraft.world.inventory.ContainerInput; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; @@ -120,7 +120,7 @@ private boolean requestSwapWithHotBar(int inInventory, int inHotbar) { logDebug("Inventory move requested but delaying until stationary"); return false; } - ctx.playerController().windowClick(ctx.player().inventoryMenu.containerId, inInventory < 9 ? inInventory + 36 : inInventory, inHotbar, ClickType.SWAP, ctx.player()); + ctx.playerController().windowClick(ctx.player().inventoryMenu.containerId, inInventory < 9 ? inInventory + 36 : inInventory, inHotbar, ContainerInput.SWAP, ctx.player()); ticksSinceLastInventoryMove = 0; lastTickRequestedMove = null; return true; diff --git a/src/main/java/baritone/cache/CachedChunk.java b/src/main/java/baritone/cache/CachedChunk.java index 86a849e5a6..01faf7e2dd 100644 --- a/src/main/java/baritone/cache/CachedChunk.java +++ b/src/main/java/baritone/cache/CachedChunk.java @@ -40,77 +40,53 @@ */ public final class CachedChunk { - public static final ImmutableSet BLOCKS_TO_KEEP_TRACK_OF = ImmutableSet.of( - Blocks.ENDER_CHEST, - Blocks.FURNACE, - Blocks.CHEST, - Blocks.TRAPPED_CHEST, - Blocks.END_PORTAL, - Blocks.END_PORTAL_FRAME, - Blocks.SPAWNER, - Blocks.BARRIER, - Blocks.OBSERVER, - Blocks.WHITE_SHULKER_BOX, - Blocks.ORANGE_SHULKER_BOX, - Blocks.MAGENTA_SHULKER_BOX, - Blocks.LIGHT_BLUE_SHULKER_BOX, - Blocks.YELLOW_SHULKER_BOX, - Blocks.LIME_SHULKER_BOX, - Blocks.PINK_SHULKER_BOX, - Blocks.GRAY_SHULKER_BOX, - Blocks.LIGHT_GRAY_SHULKER_BOX, - Blocks.CYAN_SHULKER_BOX, - Blocks.PURPLE_SHULKER_BOX, - Blocks.BLUE_SHULKER_BOX, - Blocks.BROWN_SHULKER_BOX, - Blocks.GREEN_SHULKER_BOX, - Blocks.RED_SHULKER_BOX, - Blocks.BLACK_SHULKER_BOX, - Blocks.NETHER_PORTAL, - Blocks.HOPPER, - Blocks.BEACON, - Blocks.BREWING_STAND, + public static final ImmutableSet BLOCKS_TO_KEEP_TRACK_OF = ImmutableSet.builder() + .add( + Blocks.ENDER_CHEST, + Blocks.FURNACE, + Blocks.CHEST, + Blocks.TRAPPED_CHEST, + Blocks.END_PORTAL, + Blocks.END_PORTAL_FRAME, + Blocks.SPAWNER, + Blocks.BARRIER, + Blocks.OBSERVER + ) + .addAll(Blocks.DYED_SHULKER_BOX.asList()) + .add( + Blocks.NETHER_PORTAL, + Blocks.HOPPER, + Blocks.BEACON, + Blocks.BREWING_STAND, // TODO: Maybe add a predicate for blocks to keep track of? // This should really not need to happen - Blocks.CREEPER_HEAD, - Blocks.CREEPER_WALL_HEAD, - Blocks.DRAGON_HEAD, - Blocks.DRAGON_WALL_HEAD, - Blocks.PLAYER_HEAD, - Blocks.PLAYER_WALL_HEAD, - Blocks.ZOMBIE_HEAD, - Blocks.ZOMBIE_WALL_HEAD, - Blocks.SKELETON_SKULL, - Blocks.SKELETON_WALL_SKULL, - Blocks.WITHER_SKELETON_SKULL, - Blocks.WITHER_SKELETON_WALL_SKULL, - Blocks.ENCHANTING_TABLE, - Blocks.ANVIL, - Blocks.WHITE_BED, - Blocks.ORANGE_BED, - Blocks.MAGENTA_BED, - Blocks.LIGHT_BLUE_BED, - Blocks.YELLOW_BED, - Blocks.LIME_BED, - Blocks.PINK_BED, - Blocks.GRAY_BED, - Blocks.LIGHT_GRAY_BED, - Blocks.CYAN_BED, - Blocks.PURPLE_BED, - Blocks.BLUE_BED, - Blocks.BROWN_BED, - Blocks.GREEN_BED, - Blocks.RED_BED, - Blocks.BLACK_BED, - Blocks.DRAGON_EGG, - Blocks.JUKEBOX, - Blocks.END_GATEWAY, - Blocks.COBWEB, - Blocks.NETHER_WART, - Blocks.LADDER, - Blocks.VINE - ); + Blocks.CREEPER_HEAD, + Blocks.CREEPER_WALL_HEAD, + Blocks.DRAGON_HEAD, + Blocks.DRAGON_WALL_HEAD, + Blocks.PLAYER_HEAD, + Blocks.PLAYER_WALL_HEAD, + Blocks.ZOMBIE_HEAD, + Blocks.ZOMBIE_WALL_HEAD, + Blocks.SKELETON_SKULL, + Blocks.SKELETON_WALL_SKULL, + Blocks.WITHER_SKELETON_SKULL, + Blocks.WITHER_SKELETON_WALL_SKULL, + Blocks.ENCHANTING_TABLE, + Blocks.ANVIL + ) + .addAll(Blocks.BED.asList()) + .add( + Blocks.DRAGON_EGG, + Blocks.JUKEBOX, + Blocks.END_GATEWAY, + Blocks.COBWEB, + Blocks.NETHER_WART, + Blocks.LADDER, + Blocks.VINE + ) + .build(); public final int height; diff --git a/src/main/java/baritone/cache/ChunkPacker.java b/src/main/java/baritone/cache/ChunkPacker.java index 0d3728ea05..78bca4b7a8 100644 --- a/src/main/java/baritone/cache/ChunkPacker.java +++ b/src/main/java/baritone/cache/ChunkPacker.java @@ -109,7 +109,7 @@ public static CachedChunk pack(LevelChunk chunk) { } } // @formatter:on - return new CachedChunk(chunk.getPos().x, chunk.getPos().z, height, bitSet, blocks, specialBlocks, System.currentTimeMillis()); + return new CachedChunk(chunk.getPos().x(), chunk.getPos().z(), height, bitSet, blocks, specialBlocks, System.currentTimeMillis()); } private static PathingBlockType getPathingBlockType(BlockState state, LevelChunk chunk, int x, int y, int z) { @@ -130,7 +130,7 @@ private static PathingBlockType getPathingBlockType(BlockState state, LevelChunk return PathingBlockType.AVOID; } if (x == 0 || x == 15 || z == 0 || z == 15) { - Vec3 flow = state.getFluidState().getFlow(chunk.getLevel(), new BlockPos(x + (chunk.getPos().x << 4), y, z + (chunk.getPos().z << 4))); + Vec3 flow = state.getFluidState().getFlow(chunk.getLevel(), new BlockPos(x + (chunk.getPos().x() << 4), y, z + (chunk.getPos().z() << 4))); if (flow.x != 0.0 || flow.z != 0.0) { return PathingBlockType.WATER; } diff --git a/src/main/java/baritone/cache/FasterWorldScanner.java b/src/main/java/baritone/cache/FasterWorldScanner.java index c5e6a139ad..d544caedd0 100644 --- a/src/main/java/baritone/cache/FasterWorldScanner.java +++ b/src/main/java/baritone/cache/FasterWorldScanner.java @@ -142,16 +142,16 @@ private List scanChunksInternal(IPlayerContext ctx, BlockOptionalMetaL private Stream scanChunkInternal(IPlayerContext ctx, BlockOptionalMetaLookup lookup, ChunkPos pos) { ChunkSource chunkProvider = ctx.world().getChunkSource(); // if chunk is not loaded, return empty stream - if (!chunkProvider.hasChunk(pos.x, pos.z)) { + if (!chunkProvider.hasChunk(pos.x(), pos.z())) { return Stream.empty(); } - long chunkX = (long) pos.x << 4; - long chunkZ = (long) pos.z << 4; + long chunkX = (long) pos.x() << 4; + long chunkZ = (long) pos.z() << 4; int playerSectionY = (ctx.playerFeet().y - ctx.world().getMinY()) >> 4; - return collectChunkSections(lookup, chunkProvider.getChunk(pos.x, pos.z, false), chunkX, chunkZ, playerSectionY).stream(); + return collectChunkSections(lookup, chunkProvider.getChunk(pos.x(), pos.z(), false), chunkX, chunkZ, playerSectionY).stream(); } diff --git a/src/main/java/baritone/cache/WorldScanner.java b/src/main/java/baritone/cache/WorldScanner.java index 35e46ba23d..c9431038bf 100644 --- a/src/main/java/baritone/cache/WorldScanner.java +++ b/src/main/java/baritone/cache/WorldScanner.java @@ -96,7 +96,7 @@ public List scanChunk(IPlayerContext ctx, BlockOptionalMetaLookup filt } ClientChunkCache chunkProvider = (ClientChunkCache) ctx.world().getChunkSource(); - LevelChunk chunk = chunkProvider.getChunk(pos.x, pos.z, null, false); + LevelChunk chunk = chunkProvider.getChunk(pos.x(), pos.z(), null, false); int playerY = ctx.playerFeet().getY(); if (chunk == null || chunk.isEmpty()) { @@ -104,7 +104,7 @@ public List scanChunk(IPlayerContext ctx, BlockOptionalMetaLookup filt } ArrayList res = new ArrayList<>(); - scanChunkInto(pos.x << 4, pos.z << 4, ctx.world().dimensionType().minY(), chunk, filter, res, max, yLevelThreshold, playerY, IntStream.range(0, ctx.world().dimensionType().height() / 16).toArray()); + scanChunkInto(pos.x() << 4, pos.z() << 4, ctx.world().dimensionType().minY(), chunk, filter, res, max, yLevelThreshold, playerY, IntStream.range(0, ctx.world().dimensionType().height() / 16).toArray()); return res; } diff --git a/src/main/java/baritone/command/defaults/RenderCommand.java b/src/main/java/baritone/command/defaults/RenderCommand.java index 37d70b42b8..b69351c3c8 100644 --- a/src/main/java/baritone/command/defaults/RenderCommand.java +++ b/src/main/java/baritone/command/defaults/RenderCommand.java @@ -36,16 +36,7 @@ public RenderCommand(IBaritone baritone) { @Override public void execute(String label, IArgConsumer args) throws CommandException { args.requireMax(0); - BetterBlockPos origin = ctx.playerFeet(); - int renderDistance = (ctx.minecraft().options.renderDistance().get() + 1) * 16; - ctx.minecraft().levelRenderer.setBlocksDirty( - origin.x - renderDistance, - ctx.world().getMinY(), - origin.z - renderDistance, - origin.x + renderDistance, - ctx.world().getMaxY(), - origin.z + renderDistance - ); + ctx.minecraft().levelRenderer.resetLevelRenderData(); logDirect("Done"); } diff --git a/src/main/java/baritone/event/GameEventHandler.java b/src/main/java/baritone/event/GameEventHandler.java index d716ff8499..8bbdb52d67 100644 --- a/src/main/java/baritone/event/GameEventHandler.java +++ b/src/main/java/baritone/event/GameEventHandler.java @@ -120,7 +120,7 @@ public void onBlockChange(BlockChangeEvent event) { baritone.getWorldProvider().ifWorldLoaded(worldData -> { final Level world = baritone.getPlayerContext().world(); ChunkPos pos = event.getChunkPos(); - worldData.getCachedWorld().queueForPacking(world.getChunk(pos.x, pos.z)); + worldData.getCachedWorld().queueForPacking(world.getChunk(pos.x(), pos.z())); }); } } diff --git a/src/main/java/baritone/pathing/movement/MovementHelper.java b/src/main/java/baritone/pathing/movement/MovementHelper.java index d6de3c7480..9d83779f70 100644 --- a/src/main/java/baritone/pathing/movement/MovementHelper.java +++ b/src/main/java/baritone/pathing/movement/MovementHelper.java @@ -221,7 +221,7 @@ static boolean canWalkThroughPosition(BlockStateInterface bsi, int x, int y, int } BlockState up = bsi.get0(x, y + 1, z); - if (!up.getFluidState().isEmpty() || up.getBlock() instanceof WaterlilyBlock) { + if (!up.getFluidState().isEmpty() || up.getBlock() instanceof LilyPadBlock) { return false; } return fluidState.getType() instanceof WaterFluid; diff --git a/src/main/java/baritone/process/BuilderProcess.java b/src/main/java/baritone/process/BuilderProcess.java index 29a0c7d615..f1b7f06884 100644 --- a/src/main/java/baritone/process/BuilderProcess.java +++ b/src/main/java/baritone/process/BuilderProcess.java @@ -520,7 +520,7 @@ public int lengthZ() { } // build repeat time layer = 0; - origin = new BlockPos(origin).offset(repeat); + origin = new BlockPos(origin.getX(), origin.getY(), origin.getZ()).offset(repeat); if (!Baritone.settings().buildRepeatSneaky.value) { schematic.reset(); } @@ -1037,8 +1037,10 @@ private static boolean sameBlockstate(BlockState first, BlockState second) { if (!ignoreDirection && ignoredProps.isEmpty()) { return first.equals(second); // early return if no properties are being ignored } - Map, Comparable> map1 = first.getValues(); - Map, Comparable> map2 = second.getValues(); + Map, Comparable> map1 = first.getValues() + .collect(Collectors.toMap(value -> value.property(), value -> value.value())); + Map, Comparable> map2 = second.getValues() + .collect(Collectors.toMap(value -> value.property(), value -> value.value())); for (Property prop : map1.keySet()) { if (map1.get(prop) != map2.get(prop) && !(ignoreDirection && ORIENTATION_PROPS.contains(prop)) diff --git a/src/main/java/baritone/process/ExploreProcess.java b/src/main/java/baritone/process/ExploreProcess.java index 514a110e6a..062e07047d 100644 --- a/src/main/java/baritone/process/ExploreProcess.java +++ b/src/main/java/baritone/process/ExploreProcess.java @@ -225,13 +225,13 @@ private JsonChunkFilter(Path path, boolean invert) throws Exception { // ioexcep logDirect("Loaded " + positions.length + " positions"); inFilter = new LongOpenHashSet(); for (MyChunkPos mcp : positions) { - inFilter.add(ChunkPos.asLong(mcp.x, mcp.z)); + inFilter.add(ChunkPos.pack(mcp.x, mcp.z)); } } @Override public Status isAlreadyExplored(int chunkX, int chunkZ) { - if (inFilter.contains(ChunkPos.asLong(chunkX, chunkZ)) ^ invert) { + if (inFilter.contains(ChunkPos.pack(chunkX, chunkZ)) ^ invert) { // either it's on the list of explored chunks, or it's not on the list of unexplored chunks // either way, we have it return Status.EXPLORED; diff --git a/src/main/java/baritone/process/FarmProcess.java b/src/main/java/baritone/process/FarmProcess.java index 4669e46dfb..fbb7f66a2c 100644 --- a/src/main/java/baritone/process/FarmProcess.java +++ b/src/main/java/baritone/process/FarmProcess.java @@ -267,7 +267,7 @@ public PathingCommand onTick(boolean calcFailed, boolean isSafeToCancel) { } if (state.getBlock() instanceof BonemealableBlock) { BonemealableBlock ig = (BonemealableBlock) state.getBlock(); - if (ig.isValidBonemealTarget(ctx.world(), pos, state) && ig.isBonemealSuccess(ctx.world(), ctx.world().random, pos, state)) { + if (ig.isValidBonemealTarget(ctx.world(), pos, state) && ig.isBonemealSuccess(ctx.world(), ctx.world().getRandom(), pos, state)) { bonemealable.add(pos); } } diff --git a/src/main/java/baritone/process/elytra/ElytraBehavior.java b/src/main/java/baritone/process/elytra/ElytraBehavior.java index 1c9dbe1852..64d5fe3aa0 100644 --- a/src/main/java/baritone/process/elytra/ElytraBehavior.java +++ b/src/main/java/baritone/process/elytra/ElytraBehavior.java @@ -42,7 +42,7 @@ import net.minecraft.world.InteractionHand; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.projectile.FireworkRocketEntity; -import net.minecraft.world.inventory.ClickType; +import net.minecraft.world.inventory.ContainerInput; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.item.component.Fireworks; @@ -308,7 +308,7 @@ private void pathfindAroundObstacles() { int rangeStartIncl = playerNear; int rangeEndExcl = playerNear; - while (rangeEndExcl < path.size() && context.hasChunk(new ChunkPos(path.get(rangeEndExcl)))) { + while (rangeEndExcl < path.size() && context.hasChunk(ChunkPos.containing(path.get(rangeEndExcl)))) { rangeEndExcl++; } // rangeEndExcl now represents an index either not in the path, or just outside render distance @@ -517,7 +517,7 @@ public void onTick() { } final long now = System.currentTimeMillis(); if ((now - this.timeLastCacheCull) / 1000 > Baritone.settings().elytraTimeBetweenCacheCullSecs.value) { - this.context.queueCacheCulling(ctx.player().chunkPosition().x, ctx.player().chunkPosition().z, Baritone.settings().elytraCacheCullDistance.value, this.boi); + this.context.queueCacheCulling(ctx.player().chunkPosition().x(), ctx.player().chunkPosition().z(), Baritone.settings().elytraCacheCullDistance.value, this.boi); this.timeLastCacheCull = now; } } @@ -1283,7 +1283,7 @@ private void tickInventoryTransactions() { if (invTickCountdown > 0) invTickCountdown--; } - private void queueWindowClick(int windowId, int slotId, int button, ClickType type) { + private void queueWindowClick(int windowId, int slotId, int button, ContainerInput type) { invTransactionQueue.add(() -> ctx.playerController().windowClick(windowId, slotId, button, type, ctx.player())); } @@ -1313,9 +1313,9 @@ private void trySwapElytra() { if (goodElytraSlot != -1) { final int CHEST_SLOT = 6; final int slotId = goodElytraSlot < 9 ? goodElytraSlot + 36 : goodElytraSlot; - queueWindowClick(ctx.player().inventoryMenu.containerId, slotId, 0, ClickType.PICKUP); - queueWindowClick(ctx.player().inventoryMenu.containerId, CHEST_SLOT, 0, ClickType.PICKUP); - queueWindowClick(ctx.player().inventoryMenu.containerId, slotId, 0, ClickType.PICKUP); + queueWindowClick(ctx.player().inventoryMenu.containerId, slotId, 0, ContainerInput.PICKUP); + queueWindowClick(ctx.player().inventoryMenu.containerId, CHEST_SLOT, 0, ContainerInput.PICKUP); + queueWindowClick(ctx.player().inventoryMenu.containerId, slotId, 0, ContainerInput.PICKUP); } } diff --git a/src/main/java/baritone/process/elytra/NetherPathfinderContext.java b/src/main/java/baritone/process/elytra/NetherPathfinderContext.java index 4755902519..b5373d6a32 100644 --- a/src/main/java/baritone/process/elytra/NetherPathfinderContext.java +++ b/src/main/java/baritone/process/elytra/NetherPathfinderContext.java @@ -62,7 +62,7 @@ public NetherPathfinderContext(long seed) { } public boolean hasChunk(ChunkPos pos) { - return NetherPathfinder.hasChunkFromJava(this.context, pos.x, pos.z); + return NetherPathfinder.hasChunkFromJava(this.context, pos.x(), pos.z()); } public void queueCacheCulling(int chunkX, int chunkZ, int maxDistanceBlocks, BlockStateOctreeInterface boi) { @@ -81,7 +81,7 @@ public void queueForPacking(final LevelChunk chunkIn) { // and prune the oldest chunks per chunkPackerQueueMaxSize final LevelChunk chunk = ref.get(); if (chunk != null) { - long ptr = NetherPathfinder.getOrCreateChunk(this.context, chunk.getPos().x, chunk.getPos().z); + long ptr = NetherPathfinder.getOrCreateChunk(this.context, chunk.getPos().x(), chunk.getPos().z()); writeChunkData(chunk, ptr); } }); @@ -90,7 +90,7 @@ public void queueForPacking(final LevelChunk chunkIn) { public void queueBlockUpdate(BlockChangeEvent event) { this.executor.execute(() -> { ChunkPos chunkPos = event.getChunkPos(); - long ptr = NetherPathfinder.getChunkPointer(this.context, chunkPos.x, chunkPos.z); + long ptr = NetherPathfinder.getChunkPointer(this.context, chunkPos.x(), chunkPos.z()); if (ptr == 0) return; // this shouldn't ever happen event.getBlocks().forEach(pair -> { BlockPos pos = pair.first(); diff --git a/src/main/java/baritone/utils/BlockStateInterface.java b/src/main/java/baritone/utils/BlockStateInterface.java index 1a19415848..7a8420d8e2 100644 --- a/src/main/java/baritone/utils/BlockStateInterface.java +++ b/src/main/java/baritone/utils/BlockStateInterface.java @@ -109,7 +109,7 @@ public BlockState get0(int x, int y, int z) { // Mickey resigned // we can just skip the mc.world.getChunk lookup // which is a Long2ObjectOpenHashMap.get // see issue #113 - if (cached != null && cached.getPos().x == x >> 4 && cached.getPos().z == z >> 4) { + if (cached != null && cached.getPos().x() == x >> 4 && cached.getPos().z() == z >> 4) { return getFromChunk(cached, x, y, z); } LevelChunk chunk = provider.getChunk(x >> 4, z >> 4, ChunkStatus.FULL, false); @@ -141,7 +141,7 @@ public BlockState get0(int x, int y, int z) { // Mickey resigned public boolean isLoaded(int x, int z) { LevelChunk prevChunk = prev; - if (prevChunk != null && prevChunk.getPos().x == x >> 4 && prevChunk.getPos().z == z >> 4) { + if (prevChunk != null && prevChunk.getPos().x() == x >> 4 && prevChunk.getPos().z() == z >> 4) { return true; } prevChunk = provider.getChunk(x >> 4, z >> 4, ChunkStatus.FULL, false); diff --git a/src/main/java/baritone/utils/GuiClick.java b/src/main/java/baritone/utils/GuiClick.java index b9b0e09e45..8916ab2b6b 100644 --- a/src/main/java/baritone/utils/GuiClick.java +++ b/src/main/java/baritone/utils/GuiClick.java @@ -25,7 +25,7 @@ import com.mojang.blaze3d.vertex.BufferBuilder; import com.mojang.blaze3d.vertex.PoseStack; import net.minecraft.ChatFormatting; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.input.MouseButtonEvent; import net.minecraft.client.player.LocalPlayer; @@ -64,7 +64,7 @@ public boolean isPauseScreen() { } @Override - public void render(GuiGraphics stack, int mouseX, int mouseY, float partialTicks) { + public void extractRenderState(GuiGraphicsExtractor stack, int mouseX, int mouseY, float partialTicks) { double mx = mc.mouseHandler.xpos(); double my = mc.mouseHandler.ypos(); @@ -85,7 +85,7 @@ public void render(GuiGraphics stack, int mouseX, int mouseY, float partialTicks } @Override - public void renderBackground(GuiGraphics stack, int mouseX, int mouseY, float partialTicks) { + public void extractBackground(GuiGraphicsExtractor stack, int mouseX, int mouseY, float partialTicks) { // Prevent default background rendering } diff --git a/src/main/java/baritone/utils/IRenderer.java b/src/main/java/baritone/utils/IRenderer.java index a29e758ff6..dbe7827fdb 100644 --- a/src/main/java/baritone/utils/IRenderer.java +++ b/src/main/java/baritone/utils/IRenderer.java @@ -20,18 +20,9 @@ import baritone.api.BaritoneAPI; import baritone.api.Settings; import baritone.utils.accessor.IEntityRenderManager; -import baritone.utils.accessor.IRenderPipelines; -import baritone.utils.accessor.IRenderType; -import com.mojang.blaze3d.pipeline.BlendFunction; -import com.mojang.blaze3d.pipeline.RenderPipeline; -import com.mojang.blaze3d.platform.DepthTestFunction; -import com.mojang.blaze3d.platform.DestFactor; -import com.mojang.blaze3d.platform.SourceFactor; +import com.mojang.blaze3d.PrimitiveTopology; import com.mojang.blaze3d.vertex.*; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.RenderPipelines; -import net.minecraft.client.renderer.blockentity.BeaconRenderer; -import net.minecraft.client.renderer.rendertype.RenderSetup; import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.rendertype.RenderTypes; import net.minecraft.client.renderer.texture.OverlayTexture; @@ -45,70 +36,12 @@ public interface IRenderer { - Tesselator tessellator = Tesselator.getInstance(); IEntityRenderManager renderManager = (IEntityRenderManager) Minecraft.getInstance().getEntityRenderDispatcher(); Settings settings = BaritoneAPI.getSettings(); - RenderPipeline.Snippet BARITONE_LINES_SNIPPET = RenderPipeline.builder(((IRenderPipelines) new RenderPipelines()).getLinesSnippet()) - .withBlend(new BlendFunction( - SourceFactor.SRC_ALPHA, - DestFactor.ONE_MINUS_SRC_ALPHA, - SourceFactor.ONE, - DestFactor.ZERO - )) - .withDepthWrite(false) - .withCull(false) - .buildSnippet(); - - RenderPipeline.Snippet BARITONE_BEACON_BEAM_SNIPPET = RenderPipeline.builder(((IRenderPipelines) new RenderPipelines()).getMatricesFogSnippet()) - .withVertexShader("core/rendertype_beacon_beam") - .withFragmentShader("core/rendertype_beacon_beam") - .withSampler("Sampler0") - .withVertexFormat(DefaultVertexFormat.BLOCK, VertexFormat.Mode.QUADS) - .buildSnippet(); - - RenderPipeline BEACON_BEAM_OPAQUE = ((IRenderPipelines) new RenderPipelines()).baritone$registerPipeline(RenderPipeline.builder(BARITONE_BEACON_BEAM_SNIPPET) - .withLocation("pipeline/baritone_beacon_beam_opaque") - .withDepthWrite(false) - .withDepthTestFunction(DepthTestFunction.NO_DEPTH_TEST) - .withCull(true) - .build()); - - RenderPipeline BEACON_BEAM_TRANSLUCENT = ((IRenderPipelines) new RenderPipelines()).baritone$registerPipeline(RenderPipeline.builder(BARITONE_BEACON_BEAM_SNIPPET) - .withLocation("pipeline/baritone_beacon_beam_translucent") - .withDepthWrite(false) - .withBlend(BlendFunction.TRANSLUCENT) - .withDepthTestFunction(DepthTestFunction.NO_DEPTH_TEST) - .withCull(true) - .build()); - - RenderType linesWithDepthRenderType = ((IRenderType) RenderTypes.lines()).createRenderType( - "renderType/baritone_lines_with_depth", - RenderSetup.builder(RenderPipeline.builder(BARITONE_LINES_SNIPPET) - .withLocation("pipelines/baritone_lines_with_depth") - .withDepthTestFunction(DepthTestFunction.LEQUAL_DEPTH_TEST) - .build()) - .bufferSize(256) - .createRenderSetup() - ); - RenderType linesNoDepthRenderType = ((IRenderType) RenderTypes.lines()).createRenderType( - "renderType/baritone_lines_no_depth", - RenderSetup.builder(RenderPipeline.builder(BARITONE_LINES_SNIPPET) - .withLocation("pipelines/baritone_lines_no_depth") - .withDepthTestFunction(DepthTestFunction.NO_DEPTH_TEST) - .build()) - .bufferSize(256) - .createRenderSetup() - ); - - - BiFunction BEACON_BEAM = Util.memoize( - (identifier, boolean_) -> ((IRenderType) RenderTypes.beaconBeam(BeaconRenderer.BEAM_LOCATION, boolean_)).createRenderType( - boolean_ ? "renderType/baritone_beacon_beam_translucent" : "renderType/baritone_beacon_beam_opaque", - RenderSetup.builder(boolean_ ? BEACON_BEAM_TRANSLUCENT : BEACON_BEAM_OPAQUE) - .withTexture("Sampler0", identifier) - .sortOnUpload() - .createRenderSetup()) - ); + RenderType linesWithDepthRenderType = RenderTypes.lines(); + RenderType linesNoDepthRenderType = RenderTypes.linesTranslucent(); + + BiFunction BEACON_BEAM = Util.memoize(RenderTypes::beaconBeam); float[] color = new float[]{1.0F, 1.0F, 1.0F, 255.0F}; @@ -122,7 +55,7 @@ static void glColor(Color color, float alpha) { static BufferBuilder startLines(Color color, float alpha) { glColor(color, alpha); - return tessellator.begin(VertexFormat.Mode.LINES, DefaultVertexFormat.POSITION_COLOR_NORMAL_LINE_WIDTH); + return new BufferBuilder(new ByteBufferBuilder(256), PrimitiveTopology.LINES, DefaultVertexFormat.POSITION_COLOR_NORMAL_LINE_WIDTH); } static BufferBuilder startLines(Color color) { @@ -132,22 +65,18 @@ static BufferBuilder startLines(Color color) { static void endLines(BufferBuilder bufferBuilder, boolean ignoredDepth) { MeshData meshData = bufferBuilder.build(); if (meshData != null) { - if (ignoredDepth) { - linesNoDepthRenderType.draw(meshData); - } else { - linesWithDepthRenderType.draw(meshData); - } + meshData.close(); } } static BufferBuilder startBlockQuads() { - return tessellator.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.BLOCK); + return new BufferBuilder(new ByteBufferBuilder(256), PrimitiveTopology.QUADS, DefaultVertexFormat.BLOCK); } static void endBuffer(BufferBuilder bufferBuilder, RenderType renderType) { MeshData meshData = bufferBuilder.build(); if (meshData != null) { - renderType.draw(meshData); + meshData.close(); } } diff --git a/src/main/java/baritone/utils/PathRenderer.java b/src/main/java/baritone/utils/PathRenderer.java index 95506ab5ce..6339303e05 100644 --- a/src/main/java/baritone/utils/PathRenderer.java +++ b/src/main/java/baritone/utils/PathRenderer.java @@ -74,8 +74,8 @@ public static void render(RenderEvent event, PathingBehavior behavior) { if (ctx.world() == null) { return; } - if (ctx.minecraft().screen instanceof GuiClick) { - ((GuiClick) ctx.minecraft().screen).onRender(event.getModelViewStack(), event.getProjectionMatrix()); + if (ctx.minecraft().gui.screen() instanceof GuiClick) { + ((GuiClick) ctx.minecraft().gui.screen()).onRender(event.getModelViewStack(), event.getProjectionMatrix()); } final float partialTicks = event.getPartialTicks(); diff --git a/src/main/java/baritone/utils/player/BaritonePlayerController.java b/src/main/java/baritone/utils/player/BaritonePlayerController.java index b7e729b70d..61ed357b3f 100644 --- a/src/main/java/baritone/utils/player/BaritonePlayerController.java +++ b/src/main/java/baritone/utils/player/BaritonePlayerController.java @@ -26,7 +26,7 @@ import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; -import net.minecraft.world.inventory.ClickType; +import net.minecraft.world.inventory.ContainerInput; import net.minecraft.world.level.GameType; import net.minecraft.world.level.Level; import net.minecraft.world.phys.BlockHitResult; @@ -67,8 +67,8 @@ public void resetBlockRemoving() { } @Override - public void windowClick(int windowId, int slotId, int mouseButton, ClickType type, Player player) { - mc.gameMode.handleInventoryMouseClick(windowId, slotId, mouseButton, type, player); + public void windowClick(int windowId, int slotId, int mouseButton, ContainerInput type, Player player) { + mc.gameMode.handleContainerInput(windowId, slotId, mouseButton, type, player); } @Override From 9e2f9a044ab3a138fa9aee17aedac31ae6e7ebf3 Mon Sep 17 00:00:00 2001 From: pavlovski67 Date: Sat, 27 Jun 2026 10:10:39 +0200 Subject: [PATCH 2/2] Update world render mixin for 26.3 snapshot --- .../baritone/launch/mixins/MixinWorldRenderer.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/launch/java/baritone/launch/mixins/MixinWorldRenderer.java b/src/launch/java/baritone/launch/mixins/MixinWorldRenderer.java index ff8eddf3ff..28e557585b 100644 --- a/src/launch/java/baritone/launch/mixins/MixinWorldRenderer.java +++ b/src/launch/java/baritone/launch/mixins/MixinWorldRenderer.java @@ -23,10 +23,11 @@ import com.mojang.blaze3d.buffers.GpuBufferSlice; import com.mojang.blaze3d.resource.GraphicsResourceAllocator; import com.mojang.blaze3d.vertex.PoseStack; -import net.minecraft.client.Camera; import net.minecraft.client.DeltaTracker; import net.minecraft.client.renderer.LevelRenderer; +import net.minecraft.client.renderer.state.level.CameraRenderState; import org.joml.Matrix4f; +import org.joml.Matrix4fc; import org.joml.Vector4f; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -41,14 +42,15 @@ public class MixinWorldRenderer { @Inject( - method = "renderLevel", + method = "render", at = @At("RETURN") ) - private void onStartHand(final GraphicsResourceAllocator graphicsResourceAllocator, final DeltaTracker deltaTracker, final boolean bl, final Camera camera, final Matrix4f matrix4f, final Matrix4f matrix4f2, final Matrix4f matrix4f3, final GpuBufferSlice gpuBufferSlice, final Vector4f vector4f, final boolean bl2, final CallbackInfo ci) { + private void onStartHand(final GraphicsResourceAllocator graphicsResourceAllocator, final DeltaTracker deltaTracker, final boolean bl, final CameraRenderState cameraRenderState, final Matrix4fc worldMatrix, final GpuBufferSlice gpuBufferSlice, final Vector4f vector4f, final boolean bl2, final CallbackInfo ci) { for (IBaritone ibaritone : BaritoneAPI.getProvider().getAllBaritones()) { PoseStack poseStack = new PoseStack(); - poseStack.mulPose(matrix4f); - ibaritone.getGameEventHandler().onRenderPass(new RenderEvent(deltaTracker.getGameTimeDeltaPartialTick(false), poseStack, matrix4f2)); + poseStack.mulPose(worldMatrix); + Matrix4f projection = new Matrix4f(cameraRenderState.projectionMatrix); + ibaritone.getGameEventHandler().onRenderPass(new RenderEvent(deltaTracker.getGameTimeDeltaPartialTick(false), poseStack, projection)); } } }