From e70272aaf56ca9d27529e0014169641600fb09a5 Mon Sep 17 00:00:00 2001 From: FnlTochka Date: Thu, 2 Apr 2026 01:11:55 +0300 Subject: [PATCH 1/4] Port to 26.1: Java 25, Mojmap (Fabric only; Forge/NeoForge pending Unimined) --- build.gradle | 2 -- buildSrc/build.gradle | 8 ++++- .../baritone/gradle/task/ProguardTask.java | 2 +- fabric/build.gradle | 2 +- fabric/src/main/resources/fabric.mod.json | 4 +-- forge/build.gradle | 2 +- forge/src/main/resources/META-INF/mods.toml | 4 +-- gradle.properties | 12 +++---- gradle/wrapper/gradle-wrapper.properties | 2 +- neoforge/build.gradle | 2 +- .../resources/META-INF/neoforge.mods.toml | 2 +- settings.gradle | 2 +- src/api/java/baritone/api/Settings.java | 11 +++++-- .../baritone/api/utils/BlockOptionalMeta.java | 17 +++++----- src/api/java/baritone/api/utils/Helper.java | 4 +-- .../baritone/api/utils/IPlayerController.java | 4 +-- .../launch/mixins/MixinChunkArray.java | 4 +-- .../mixins/MixinClientPlayNetHandler.java | 6 ++-- .../launch/mixins/MixinItemStack.java | 7 ++-- .../launch/mixins/MixinWorldRenderer.java | 11 ++++--- .../baritone/behavior/InventoryBehavior.java | 4 +-- src/main/java/baritone/cache/ChunkPacker.java | 4 +-- .../baritone/cache/FasterWorldScanner.java | 8 ++--- .../java/baritone/cache/WorldScanner.java | 5 +-- .../java/baritone/event/GameEventHandler.java | 2 +- .../pathing/movement/MovementHelper.java | 2 +- .../java/baritone/process/BuilderProcess.java | 4 +-- .../java/baritone/process/ExploreProcess.java | 4 +-- .../java/baritone/process/FarmProcess.java | 2 +- .../process/elytra/ElytraBehavior.java | 16 ++++----- .../elytra/NetherPathfinderContext.java | 6 ++-- .../baritone/utils/BlockStateInterface.java | 4 +-- src/main/java/baritone/utils/GuiClick.java | 7 ++-- src/main/java/baritone/utils/IRenderer.java | 33 ++++++++++--------- .../player/BaritonePlayerController.java | 6 ++-- tweaker/build.gradle | 10 +++--- 36 files changed, 123 insertions(+), 102 deletions(-) diff --git a/build.gradle b/build.gradle index 4fcfd1636a..0c81d27a2b 100755 --- a/build.gradle +++ b/build.gradle @@ -93,9 +93,7 @@ allprojects { version rootProject.minecraft_version mappings { - intermediary() mojmap() - parchment("1.21.4", "2025.03.23") devFallbackNamespace "official" } diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle index a6855791fe..abc2e5bdb9 100644 --- a/buildSrc/build.gradle +++ b/buildSrc/build.gradle @@ -17,6 +17,10 @@ repositories { mavenLocal() + maven { + name = 'WagYourMavenSnapshots' + url = 'https://maven.wagyourtail.xyz/snapshots' + } maven { name = 'WagYourMaven' url = 'https://maven.wagyourtail.xyz/releases' @@ -40,5 +44,7 @@ dependencies { implementation group: 'com.google.code.gson', name: 'gson', version: '2.9.0' implementation group: 'commons-io', name: 'commons-io', version: '2.7' - implementation group: 'xyz.wagyourtail.unimined', name: 'xyz.wagyourtail.unimined.gradle.plugin', version: '1.2.9' + // TODO: pin to a stable Unimined release once published. + implementation group: 'xyz.wagyourtail.unimined', name: 'xyz.wagyourtail.unimined.gradle.plugin', version: '1.4.2-SNAPSHOT' + implementation group: 'xyz.wagyourtail.unimined.mapping', name: 'unimined-mapping-library-jvm', version: '1.2.2' } \ No newline at end of file diff --git a/buildSrc/src/main/java/baritone/gradle/task/ProguardTask.java b/buildSrc/src/main/java/baritone/gradle/task/ProguardTask.java index d5e05a19c6..5fd69ccff8 100644 --- a/buildSrc/src/main/java/baritone/gradle/task/ProguardTask.java +++ b/buildSrc/src/main/java/baritone/gradle/task/ProguardTask.java @@ -78,7 +78,7 @@ protected void exec() throws Exception { private File getMcJar() { MinecraftConfig mcc = ext.getMinecrafts().get(sourceSets.getByName("main")); - return mcc.getMinecraft(mcc.getMcPatcher().getProdNamespace(), mcc.getMcPatcher().getProdNamespace()).toFile(); + return mcc.getMinecraft(mcc.getMcPatcher().getProdNamespace()).toFile(); } private boolean isMcJar(File f) { diff --git a/fabric/build.gradle b/fabric/build.gradle index c607dbab27..133657bade 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -78,7 +78,7 @@ components.java { } task proguard(type: ProguardTask) { - proguardVersion "7.4.2" + proguardVersion "7.8.2" compType "fabric" } diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json index 63c52e11b9..9d4a35fd24 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.18.6", + "minecraft": ["26.1"] }, "custom": { "modmenu": { diff --git a/forge/build.gradle b/forge/build.gradle index e7ba6a06c7..12bd82db17 100644 --- a/forge/build.gradle +++ b/forge/build.gradle @@ -95,7 +95,7 @@ components.java { } task proguard(type: ProguardTask) { - proguardVersion "7.4.2" + proguardVersion "7.8.2" compType "forge" } diff --git a/forge/src/main/resources/META-INF/mods.toml b/forge/src/main/resources/META-INF/mods.toml index 1792bd3dc1..6c0b4d6bd9 100644 --- a/forge/src/main/resources/META-INF/mods.toml +++ b/forge/src/main/resources/META-INF/mods.toml @@ -6,7 +6,7 @@ # The name of the mod loader type to load - for regular FML @Mod mods it should be javafml modLoader="javafml" #mandatory # A version range to match for said mod loader - for regular FML @Mod it will be the forge version -loaderVersion="[48,)" #mandatory This is typically bumped every Minecraft version by Forge. See our download page for lists of versions. +loaderVersion="[62,)" #mandatory This is typically bumped every Minecraft version by Forge. See our download page for lists of versions. license="https://raw.githubusercontent.com/cabaletta/baritone/1.16.2/LICENSE" # A URL to refer people to when problems occur with this mod issueTrackerURL="https://github.com/cabaletta/baritone/issues" #optional @@ -35,6 +35,6 @@ A Minecraft pathfinder bot. modId="minecraft" mandatory=true # This version range declares a minimum of the current minecraft version up to but not including the next major version -versionRange="[1.21.11]" +versionRange="[26.1]" ordering="NONE" side="BOTH" diff --git a/gradle.properties b/gradle.properties index 4372639425..fa4e5a6fb6 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,20 +1,20 @@ org.gradle.jvmargs=-Xmx4G -available_loaders=fabric,forge,tweaker +available_loaders=fabric,forge,neoforge,tweaker 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.1 -forge_version=61.0.0 +forge_version=62.0.9 -neoforge_version=0-beta +neoforge_version=19-beta -fabric_version=0.18.1 +fabric_version=0.18.6 nether_pathfinder_version=1.4.1 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 48c0a02ca4..03b32a2e37 100755 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.4-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/neoforge/build.gradle b/neoforge/build.gradle index 6661c71fbd..6567964d66 100644 --- a/neoforge/build.gradle +++ b/neoforge/build.gradle @@ -105,7 +105,7 @@ components.java { } task proguard(type: ProguardTask) { - proguardVersion "7.4.2" + proguardVersion "7.8.2" compType "neoforge" } diff --git a/neoforge/src/main/resources/META-INF/neoforge.mods.toml b/neoforge/src/main/resources/META-INF/neoforge.mods.toml index ddb9dee529..180be727f9 100644 --- a/neoforge/src/main/resources/META-INF/neoforge.mods.toml +++ b/neoforge/src/main/resources/META-INF/neoforge.mods.toml @@ -35,7 +35,7 @@ A Minecraft pathfinder bot. modId="minecraft" type="required" # This version range declares a minimum of the current minecraft version up to but not including the next major version -versionRange="[1.21.11]" +versionRange="[26.1]" ordering="NONE" side="BOTH" diff --git a/settings.gradle b/settings.gradle index 89e47805ac..a62ce1e56d 100755 --- a/settings.gradle +++ b/settings.gradle @@ -43,5 +43,5 @@ rootProject.name = 'baritone' include("tweaker") for (platform in available_loaders.split(",")) { - include(platform) + include(platform) } diff --git a/src/api/java/baritone/api/Settings.java b/src/api/java/baritone/api/Settings.java index 2e657c5586..9fa33a3d2d 100644 --- a/src/api/java/baritone/api/Settings.java +++ b/src/api/java/baritone/api/Settings.java @@ -22,10 +22,12 @@ 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.gui.components.ChatComponent; +import net.minecraft.client.multiplayer.chat.GuiMessageTag; import net.minecraft.core.Vec3i; import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MessageSignature; import net.minecraft.world.item.Item; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; @@ -1276,7 +1278,12 @@ public final class Settings { 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); + final ChatComponent chat = Minecraft.getInstance().gui.getChat(); + if (tag != null) { + chat.addPlayerMessage(msg, new MessageSignature(new byte[MessageSignature.BYTES]), tag); + } else { + chat.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/BlockOptionalMeta.java b/src/api/java/baritone/api/utils/BlockOptionalMeta.java index b57b1a725a..9118e3a34d 100644 --- a/src/api/java/baritone/api/utils/BlockOptionalMeta.java +++ b/src/api/java/baritone/api/utils/BlockOptionalMeta.java @@ -38,7 +38,6 @@ 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 +261,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 @@ -313,13 +312,15 @@ public static CompletableFuture load() { baseLayeredRegistry.getAccessForLoading(RegistryLayer.WORLDGEN), pendingTags ); + RegistryAccess.Frozen worldgenRegistries = RegistryDataLoader.load( + closeableResourceManager, + worldGenRegistryLookupList, + RegistryDataLoader.WORLDGEN_REGISTRIES, + ForkJoinPool.commonPool() + ).join(); LayeredRegistryAccess layeredRegistryAccess = baseLayeredRegistry.replaceFrom( RegistryLayer.WORLDGEN, - RegistryDataLoader.load( - closeableResourceManager, - worldGenRegistryLookupList, - RegistryDataLoader.WORLDGEN_REGISTRIES - ) + worldgenRegistries ); 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..41c62fc869 100755 --- a/src/api/java/baritone/api/utils/Helper.java +++ b/src/api/java/baritone/api/utils/Helper.java @@ -20,7 +20,7 @@ import baritone.api.BaritoneAPI; import baritone.api.Settings; import net.minecraft.ChatFormatting; -import net.minecraft.client.GuiMessageTag; +import net.minecraft.client.multiplayer.chat.GuiMessageTag; import net.minecraft.client.Minecraft; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; @@ -53,7 +53,7 @@ public interface Helper { /** * The tag to assign to chat messages when {@link Settings#useMessageTag} is {@code true}. */ - GuiMessageTag MESSAGE_TAG = new GuiMessageTag(0xFF55FF, null, Component.literal("Baritone message."), "Baritone"); + GuiMessageTag MESSAGE_TAG = new GuiMessageTag(0xFF55FF, GuiMessageTag.Icon.CHAT_MODIFIED, Component.literal("Baritone message."), "Baritone"); static Component getPrefix() { // Inner text component diff --git a/src/api/java/baritone/api/utils/IPlayerController.java b/src/api/java/baritone/api/utils/IPlayerController.java index 48142d13b7..8da397f2dd 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 input, Player player); GameType getGameType(); 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/MixinItemStack.java b/src/launch/java/baritone/launch/mixins/MixinItemStack.java index fd8299d54e..831a272017 100644 --- a/src/launch/java/baritone/launch/mixins/MixinItemStack.java +++ b/src/launch/java/baritone/launch/mixins/MixinItemStack.java @@ -20,7 +20,6 @@ import baritone.api.utils.accessor.IItemStack; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; -import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Unique; @@ -32,8 +31,7 @@ public abstract class MixinItemStack implements IItemStack { @Shadow - @Final - private Item item; + public abstract Item getItem(); @Unique private int baritoneHash; @@ -42,7 +40,8 @@ public abstract class MixinItemStack implements IItemStack { public abstract int getDamageValue(); private void recalculateHash() { - baritoneHash = item == null ? -1 : item.hashCode() + getDamageValue(); + Item it = getItem(); + baritoneHash = it == null ? -1 : it.hashCode() + getDamageValue(); } @Inject( diff --git a/src/launch/java/baritone/launch/mixins/MixinWorldRenderer.java b/src/launch/java/baritone/launch/mixins/MixinWorldRenderer.java index ff8eddf3ff..0218f7f451 100644 --- a/src/launch/java/baritone/launch/mixins/MixinWorldRenderer.java +++ b/src/launch/java/baritone/launch/mixins/MixinWorldRenderer.java @@ -23,10 +23,12 @@ 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.chunk.ChunkSectionsToRender; +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; @@ -44,11 +46,12 @@ public class MixinWorldRenderer { method = "renderLevel", 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 ChunkSectionsToRender chunkSectionsToRender, 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)); } } } 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/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..ae9d928769 100644 --- a/src/main/java/baritone/cache/WorldScanner.java +++ b/src/main/java/baritone/cache/WorldScanner.java @@ -29,6 +29,7 @@ import net.minecraft.world.level.chunk.ChunkSource; import net.minecraft.world.level.chunk.LevelChunk; import net.minecraft.world.level.chunk.LevelChunkSection; +import net.minecraft.world.level.chunk.status.ChunkStatus; import net.minecraft.world.level.chunk.PalettedContainer; import java.util.*; @@ -96,7 +97,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(), ChunkStatus.FULL, false); int playerY = ctx.playerFeet().getY(); if (chunk == null || chunk.isEmpty()) { @@ -104,7 +105,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/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..0bcffc83a0 100644 --- a/src/main/java/baritone/process/BuilderProcess.java +++ b/src/main/java/baritone/process/BuilderProcess.java @@ -1037,8 +1037,8 @@ 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(Property.Value::property, v -> (Comparable) v.value())); + Map, Comparable> map2 = second.getValues().collect(Collectors.toMap(Property.Value::property, v -> (Comparable) v.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 f4e79bcbd4..c854c656d9 100644 --- a/src/main/java/baritone/process/FarmProcess.java +++ b/src/main/java/baritone/process/FarmProcess.java @@ -260,7 +260,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..f4801fa875 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,8 +1283,8 @@ private void tickInventoryTransactions() { if (invTickCountdown > 0) invTickCountdown--; } - private void queueWindowClick(int windowId, int slotId, int button, ClickType type) { - invTransactionQueue.add(() -> ctx.playerController().windowClick(windowId, slotId, button, type, ctx.player())); + private void queueWindowClick(int windowId, int slotId, int button, ContainerInput input) { + invTransactionQueue.add(() -> ctx.playerController().windowClick(windowId, slotId, button, input, ctx.player())); } private int findGoodElytra() { @@ -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..06d344baf8 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 guiGraphics, int mouseX, int mouseY, float partialTick) { double mx = mc.mouseHandler.xpos(); double my = mc.mouseHandler.ypos(); @@ -82,10 +82,11 @@ public void render(GuiGraphics stack, int mouseX, int mouseY, float partialTicks currentMouseOver = ((BlockHitResult) result).getBlockPos(); } } + super.extractRenderState(guiGraphics, mouseX, mouseY, partialTick); } @Override - public void renderBackground(GuiGraphics stack, int mouseX, int mouseY, float partialTicks) { + public void extractBackground(GuiGraphicsExtractor guiGraphics, int mouseX, int mouseY, float partialTick) { // Prevent default background rendering } diff --git a/src/main/java/baritone/utils/IRenderer.java b/src/main/java/baritone/utils/IRenderer.java index a29e758ff6..a496292a4e 100644 --- a/src/main/java/baritone/utils/IRenderer.java +++ b/src/main/java/baritone/utils/IRenderer.java @@ -23,8 +23,10 @@ import baritone.utils.accessor.IRenderPipelines; import baritone.utils.accessor.IRenderType; import com.mojang.blaze3d.pipeline.BlendFunction; +import com.mojang.blaze3d.pipeline.ColorTargetState; +import com.mojang.blaze3d.pipeline.DepthStencilState; import com.mojang.blaze3d.pipeline.RenderPipeline; -import com.mojang.blaze3d.platform.DepthTestFunction; +import com.mojang.blaze3d.platform.CompareOp; import com.mojang.blaze3d.platform.DestFactor; import com.mojang.blaze3d.platform.SourceFactor; import com.mojang.blaze3d.vertex.*; @@ -48,14 +50,16 @@ public interface IRenderer { Tesselator tessellator = Tesselator.getInstance(); IEntityRenderManager renderManager = (IEntityRenderManager) Minecraft.getInstance().getEntityRenderDispatcher(); Settings settings = BaritoneAPI.getSettings(); + BlendFunction BARITONE_LINES_BLEND = new BlendFunction( + SourceFactor.SRC_ALPHA, + DestFactor.ONE_MINUS_SRC_ALPHA, + SourceFactor.ONE, + DestFactor.ZERO + ); + 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) + .withColorTargetState(new ColorTargetState(BARITONE_LINES_BLEND)) + .withDepthStencilState(new DepthStencilState(CompareOp.LESS_THAN_OR_EQUAL, false)) .withCull(false) .buildSnippet(); @@ -68,16 +72,15 @@ public interface IRenderer { 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) + .withColorTargetState(ColorTargetState.DEFAULT) + .withDepthStencilState(new DepthStencilState(CompareOp.ALWAYS_PASS, false)) .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) + .withColorTargetState(new ColorTargetState(BlendFunction.TRANSLUCENT)) + .withDepthStencilState(new DepthStencilState(CompareOp.ALWAYS_PASS, false)) .withCull(true) .build()); @@ -85,7 +88,7 @@ public interface IRenderer { "renderType/baritone_lines_with_depth", RenderSetup.builder(RenderPipeline.builder(BARITONE_LINES_SNIPPET) .withLocation("pipelines/baritone_lines_with_depth") - .withDepthTestFunction(DepthTestFunction.LEQUAL_DEPTH_TEST) + .withDepthStencilState(new DepthStencilState(CompareOp.LESS_THAN_OR_EQUAL, false)) .build()) .bufferSize(256) .createRenderSetup() @@ -94,7 +97,7 @@ public interface IRenderer { "renderType/baritone_lines_no_depth", RenderSetup.builder(RenderPipeline.builder(BARITONE_LINES_SNIPPET) .withLocation("pipelines/baritone_lines_no_depth") - .withDepthTestFunction(DepthTestFunction.NO_DEPTH_TEST) + .withDepthStencilState(new DepthStencilState(CompareOp.ALWAYS_PASS, false)) .build()) .bufferSize(256) .createRenderSetup() diff --git a/src/main/java/baritone/utils/player/BaritonePlayerController.java b/src/main/java/baritone/utils/player/BaritonePlayerController.java index b7e729b70d..0a871b5e8a 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 input, Player player) { + mc.gameMode.handleContainerInput(windowId, slotId, mouseButton, input, player); } @Override diff --git a/tweaker/build.gradle b/tweaker/build.gradle index 766bbc82c6..d82bd6cac3 100644 --- a/tweaker/build.gradle +++ b/tweaker/build.gradle @@ -24,9 +24,11 @@ plugins { } unimined.minecraft { - runs.client = { - mainClass = "net.minecraft.launchwrapper.Launch" - args.addAll(["--tweakClass", "baritone.launch.tweaker.BaritoneTweaker"]) + runs { + config("client") { + mainClass.set("net.minecraft.launchwrapper.Launch") + args("--tweakClass", "baritone.launch.tweaker.BaritoneTweaker") + } } } @@ -95,7 +97,7 @@ jar { } task proguard(type: ProguardTask) { - proguardVersion "7.4.2" + proguardVersion "7.8.2" } task createDist(type: CreateDistTask, dependsOn: proguard) From db881568bbb0c8cfc1184dc2608edfc9adbde5e4 Mon Sep 17 00:00:00 2001 From: FnlTochka Date: Thu, 2 Apr 2026 01:34:00 +0300 Subject: [PATCH 2/4] ci: Zulu JDK 25 with jmods guard for ProGuard --- .github/workflows/gradle_build.yml | 6 +++--- .github/workflows/run_tests.yml | 9 ++++----- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/.github/workflows/gradle_build.yml b/.github/workflows/gradle_build.yml index d16242f2f5..02fa9808eb 100644 --- a/.github/workflows/gradle_build.yml +++ b/.github/workflows/gradle_build.yml @@ -17,11 +17,11 @@ jobs: with: fetch-depth: 0 - - name: Set up JDK 21 + - name: Set up JDK 25 uses: actions/setup-java@v4 with: - java-version: '21' - distribution: 'temurin' + java-version: '25' + distribution: 'zulu' cache: gradle - name: Grant execute permission for gradlew diff --git a/.github/workflows/run_tests.yml b/.github/workflows/run_tests.yml index bba23333a1..459dca56ef 100644 --- a/.github/workflows/run_tests.yml +++ b/.github/workflows/run_tests.yml @@ -12,15 +12,14 @@ jobs: steps: - uses: actions/checkout@v4 - - name: Set up JDK 21 + - name: Set up JDK 25 uses: actions/setup-java@v4 with: - java-version: '21' - distribution: 'temurin' - + java-version: '25' + distribution: 'zulu' + - name: Grant execute permission for gradlew run: chmod +x gradlew - name: Executing tests run: ./gradlew test - From ec5291809d1c75d3a2a8d95d6bb4beb7a0ac4845 Mon Sep 17 00:00:00 2001 From: FnlTochka Date: Sat, 4 Apr 2026 17:05:28 +0300 Subject: [PATCH 3/4] ci: add downloadable CI artifacts --- .github/workflows/gradle_build.yml | 87 ++++++++++++++++++++---------- 1 file changed, 58 insertions(+), 29 deletions(-) diff --git a/.github/workflows/gradle_build.yml b/.github/workflows/gradle_build.yml index 02fa9808eb..c8c80fdb45 100644 --- a/.github/workflows/gradle_build.yml +++ b/.github/workflows/gradle_build.yml @@ -6,38 +6,67 @@ name: Java CI with Gradle on: push: pull_request: + workflow_dispatch: + +permissions: + contents: read jobs: build: - runs-on: ubuntu-latest + outputs: + dist_artifact_name: ${{ steps.artifact_names.outputs.dist }} + mapping_artifact_name: ${{ steps.artifact_names.outputs.mapping }} steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Set up JDK 25 - uses: actions/setup-java@v4 - with: - java-version: '25' - distribution: 'zulu' - cache: gradle - - - name: Grant execute permission for gradlew - run: chmod +x gradlew - - - name: Build with Gradle - run: ./gradlew build -Pmod_version="$(git describe --always --tags --first-parent | cut -c2-)" - - - name: Archive Artifacts - uses: actions/upload-artifact@v4 - with: - name: Artifacts - path: dist/ - - - name: Archive mapping.txt - uses: actions/upload-artifact@v4 - with: - name: Mappings - path: mapping/ + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Set up JDK 25 + uses: actions/setup-java@v4 + with: + java-version: '25' + distribution: 'zulu' + cache: gradle + + - name: Resolve build version + id: version + shell: bash + run: | + version="$(git describe --always --tags --first-parent --dirty)" + version="${version#v}" + echo "value=$version" >> "$GITHUB_OUTPUT" + + - name: Resolve artifact names + id: artifact_names + shell: bash + run: | + echo "dist=baritone-dist-${{ steps.version.outputs.value }}" >> "$GITHUB_OUTPUT" + echo "mapping=baritone-mapping-${{ steps.version.outputs.value }}" >> "$GITHUB_OUTPUT" + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + + - name: Clean artifact staging directories + run: rm -rf dist mapping + + - name: Build with Gradle + run: ./gradlew clean build -Pmod_version="${{ steps.version.outputs.value }}" + + - name: Upload distribution artifacts + uses: actions/upload-artifact@v4 + with: + name: ${{ steps.artifact_names.outputs.dist }} + path: dist/ + if-no-files-found: error + retention-days: 14 + + - name: Upload mapping artifacts + uses: actions/upload-artifact@v4 + with: + name: ${{ steps.artifact_names.outputs.mapping }} + path: mapping/ + if-no-files-found: warn + retention-days: 14 + From aa96d1e938fc98bc216e51d30dfb4457acff1d72 Mon Sep 17 00:00:00 2001 From: FnlTochka Date: Sun, 7 Jun 2026 03:06:47 +0300 Subject: [PATCH 4/4] build: update platforms to minecraft 26.1.2 --- fabric/src/main/resources/fabric.mod.json | 4 ++-- forge/src/main/resources/META-INF/mods.toml | 4 ++-- gradle.properties | 8 ++++---- neoforge/src/main/resources/META-INF/neoforge.mods.toml | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json index 9d4a35fd24..2e14acf69f 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.18.6", - "minecraft": ["26.1"] + "fabricloader": ">=0.19.3", + "minecraft": ["26.1.2"] }, "custom": { "modmenu": { diff --git a/forge/src/main/resources/META-INF/mods.toml b/forge/src/main/resources/META-INF/mods.toml index 6c0b4d6bd9..39a61a0cd2 100644 --- a/forge/src/main/resources/META-INF/mods.toml +++ b/forge/src/main/resources/META-INF/mods.toml @@ -6,7 +6,7 @@ # The name of the mod loader type to load - for regular FML @Mod mods it should be javafml modLoader="javafml" #mandatory # A version range to match for said mod loader - for regular FML @Mod it will be the forge version -loaderVersion="[62,)" #mandatory This is typically bumped every Minecraft version by Forge. See our download page for lists of versions. +loaderVersion="[64,)" #mandatory This is typically bumped every Minecraft version by Forge. See our download page for lists of versions. license="https://raw.githubusercontent.com/cabaletta/baritone/1.16.2/LICENSE" # A URL to refer people to when problems occur with this mod issueTrackerURL="https://github.com/cabaletta/baritone/issues" #optional @@ -35,6 +35,6 @@ A Minecraft pathfinder bot. modId="minecraft" mandatory=true # This version range declares a minimum of the current minecraft version up to but not including the next major version -versionRange="[26.1]" +versionRange="[26.1.2]" ordering="NONE" side="BOTH" diff --git a/gradle.properties b/gradle.properties index fa4e5a6fb6..f8aa1dd35a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,13 +8,13 @@ archives_base_name=baritone java_version=25 -minecraft_version=26.1 +minecraft_version=26.1.2 -forge_version=62.0.9 +forge_version=64.0.8 -neoforge_version=19-beta +neoforge_version=73 -fabric_version=0.18.6 +fabric_version=0.19.3 nether_pathfinder_version=1.4.1 diff --git a/neoforge/src/main/resources/META-INF/neoforge.mods.toml b/neoforge/src/main/resources/META-INF/neoforge.mods.toml index 180be727f9..c096291860 100644 --- a/neoforge/src/main/resources/META-INF/neoforge.mods.toml +++ b/neoforge/src/main/resources/META-INF/neoforge.mods.toml @@ -35,7 +35,7 @@ A Minecraft pathfinder bot. modId="minecraft" type="required" # This version range declares a minimum of the current minecraft version up to but not including the next major version -versionRange="[26.1]" +versionRange="[26.1.2]" ordering="NONE" side="BOTH"