diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json index 4dda3aa76..7acb2928d 100644 --- a/fabric/src/main/resources/fabric.mod.json +++ b/fabric/src/main/resources/fabric.mod.json @@ -25,7 +25,7 @@ ], "depends": { "fabricloader": ">=0.14.22", - "minecraft": ["1.21.5"] + "minecraft": ["1.21.6"] }, "custom": { "modmenu": { diff --git a/forge/src/main/resources/META-INF/mods.toml b/forge/src/main/resources/META-INF/mods.toml index f4f89b7ab..c9f2f6c2e 100644 --- a/forge/src/main/resources/META-INF/mods.toml +++ b/forge/src/main/resources/META-INF/mods.toml @@ -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.5]" +versionRange="[1.21.6]" ordering="NONE" side="BOTH" diff --git a/gradle.properties b/gradle.properties index 87f035ab6..d59cfe5c0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,20 +1,20 @@ org.gradle.jvmargs=-Xmx4G -available_loaders=fabric,neoforge,forge,tweaker +available_loaders=fabric,tweaker -mod_version=1.14.0 +mod_version=1.15.0 maven_group=baritone archives_base_name=baritone java_version=21 -minecraft_version=1.21.5 +minecraft_version=1.21.6 forge_version=55.0.9 neoforge_version=63-beta -fabric_version=0.16.10 +fabric_version=0.16.14 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 e2eeaed28..d90300c62 100644 --- a/neoforge/src/main/resources/META-INF/neoforge.mods.toml +++ b/neoforge/src/main/resources/META-INF/neoforge.mods.toml @@ -35,6 +35,6 @@ 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.5]" +versionRange="[1.21.6]" ordering="NONE" side="BOTH" diff --git a/src/launch/java/baritone/launch/mixins/MixinNetworkManager.java b/src/launch/java/baritone/launch/mixins/MixinNetworkManager.java index 2d35800eb..6ea14fa3e 100644 --- a/src/launch/java/baritone/launch/mixins/MixinNetworkManager.java +++ b/src/launch/java/baritone/launch/mixins/MixinNetworkManager.java @@ -22,9 +22,9 @@ import baritone.api.IBaritone; import baritone.api.event.events.PacketEvent; import baritone.api.event.events.type.EventState; import io.netty.channel.Channel; +import io.netty.channel.ChannelFutureListener; import io.netty.channel.ChannelHandlerContext; import net.minecraft.network.Connection; -import net.minecraft.network.PacketSendListener; import net.minecraft.network.protocol.Packet; import net.minecraft.network.protocol.PacketFlow; import org.spongepowered.asm.mixin.Final; @@ -52,7 +52,7 @@ public class MixinNetworkManager { method = "sendPacket", at = @At("HEAD") ) - private void preDispatchPacket(Packet packet, PacketSendListener packetSendListener, boolean flush, CallbackInfo ci) { + private void preDispatchPacket(final Packet packet, final ChannelFutureListener channelFutureListener, final boolean flush, final CallbackInfo ci) { if (this.receiving != PacketFlow.CLIENTBOUND) { return; } @@ -68,7 +68,7 @@ public class MixinNetworkManager { method = "sendPacket", at = @At("RETURN") ) - private void postDispatchPacket(Packet packet, PacketSendListener packetSendListener, boolean flush, CallbackInfo ci) { + private void postDispatchPacket(Packet packet, ChannelFutureListener packetSendListener, boolean flush, CallbackInfo ci) { if (this.receiving != PacketFlow.CLIENTBOUND) { return; } diff --git a/src/launch/java/baritone/launch/mixins/MixinScreen.java b/src/launch/java/baritone/launch/mixins/MixinScreen.java index f416e5f81..247e751d1 100644 --- a/src/launch/java/baritone/launch/mixins/MixinScreen.java +++ b/src/launch/java/baritone/launch/mixins/MixinScreen.java @@ -21,13 +21,13 @@ import baritone.api.BaritoneAPI; import baritone.api.IBaritone; import baritone.api.event.events.ChatEvent; import baritone.utils.accessor.IGuiScreen; +import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screens.Screen; import net.minecraft.network.chat.ClickEvent; -import net.minecraft.network.chat.Style; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import static baritone.api.command.IBaritoneChatControl.FORCE_COMMAND_PREFIX; @@ -35,12 +35,8 @@ import static baritone.api.command.IBaritoneChatControl.FORCE_COMMAND_PREFIX; public abstract class MixinScreen implements IGuiScreen { //TODO: switch to enum extention with mixin 9.0 or whenever Mumfrey gets around to it - @Inject(method = "handleComponentClicked", at = @At( - value = "INVOKE", - target = "Lnet/minecraft/client/multiplayer/ClientPacketListener;sendUnsignedCommand(Ljava/lang/String;)Z" - ), cancellable = true) - public void handleCustomClickEvent(final Style style, final CallbackInfoReturnable cir) { - ClickEvent clickEvent = style.getClickEvent(); + @Inject(method = "handleClickEvent", at = @At(value = "HEAD"), cancellable = true) + public void handleCustomClickEvent(final Minecraft minecraft, final ClickEvent clickEvent, final CallbackInfo ci) { if (clickEvent == null) { return; } @@ -52,7 +48,6 @@ public abstract class MixinScreen implements IGuiScreen { if (baritone != null) { baritone.getGameEventHandler().onSendChatMessage(new ChatEvent(command)); } - cir.setReturnValue(true); - cir.cancel(); + ci.cancel(); } } diff --git a/src/launch/java/baritone/launch/mixins/MixinWorldRenderer.java b/src/launch/java/baritone/launch/mixins/MixinWorldRenderer.java index f39f38c00..33928aa4c 100644 --- a/src/launch/java/baritone/launch/mixins/MixinWorldRenderer.java +++ b/src/launch/java/baritone/launch/mixins/MixinWorldRenderer.java @@ -20,13 +20,14 @@ package baritone.launch.mixins; import baritone.api.BaritoneAPI; import baritone.api.IBaritone; import baritone.api.event.events.RenderEvent; +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.GameRenderer; import net.minecraft.client.renderer.LevelRenderer; import org.joml.Matrix4f; +import org.joml.Vector4f; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -43,7 +44,7 @@ public class MixinWorldRenderer { method = "renderLevel", at = @At("RETURN") ) - private void onStartHand(final GraphicsResourceAllocator graphicsResourceAllocator, final DeltaTracker deltaTracker, final boolean bl, final Camera camera, final GameRenderer gameRenderer, final Matrix4f matrix4f, final Matrix4f matrix4f2, final CallbackInfo ci) { + private void onStartHand(final GraphicsResourceAllocator graphicsResourceAllocator, final DeltaTracker deltaTracker, final boolean bl, final Camera camera, final Matrix4f matrix4f, final Matrix4f matrix4f2, 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); diff --git a/src/main/java/baritone/behavior/PathingBehavior.java b/src/main/java/baritone/behavior/PathingBehavior.java index 9e62765a2..6ed20d50f 100644 --- a/src/main/java/baritone/behavior/PathingBehavior.java +++ b/src/main/java/baritone/behavior/PathingBehavior.java @@ -33,16 +33,18 @@ import baritone.pathing.calc.AbstractNodeCostSearch; import baritone.pathing.movement.CalculationContext; import baritone.pathing.movement.MovementHelper; import baritone.pathing.path.PathExecutor; -import baritone.process.ElytraProcess; import baritone.utils.PathRenderer; import baritone.utils.PathingCommandContext; import baritone.utils.pathing.Favoring; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.core.BlockPos; +import net.minecraft.network.chat.Component; + import java.util.ArrayList; import java.util.Comparator; import java.util.Objects; import java.util.Optional; import java.util.concurrent.LinkedBlockingQueue; -import net.minecraft.core.BlockPos; public final class PathingBehavior extends Behavior implements IPathingBehavior, Helper { @@ -158,7 +160,9 @@ public final class PathingBehavior extends Behavior implements IPathingBehavior, queuePathEvent(PathEvent.AT_GOAL); next = null; if (Baritone.settings().disconnectOnArrival.value) { - ctx.world().disconnect(); + if (ctx.world() instanceof ClientLevel clientLevel) { + clientLevel.disconnect(Component.literal("[Baritone] Arrived at goal!")); + } } return; } diff --git a/src/main/java/baritone/process/CustomGoalProcess.java b/src/main/java/baritone/process/CustomGoalProcess.java index e101df74f..296fb5028 100644 --- a/src/main/java/baritone/process/CustomGoalProcess.java +++ b/src/main/java/baritone/process/CustomGoalProcess.java @@ -23,6 +23,8 @@ import baritone.api.process.ICustomGoalProcess; import baritone.api.process.PathingCommand; import baritone.api.process.PathingCommandType; import baritone.utils.BaritoneProcessHelper; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.network.chat.Component; /** * As set by ExampleBaritoneControl or something idk @@ -105,7 +107,9 @@ public final class CustomGoalProcess extends BaritoneProcessHelper implements IC if (this.goal == null || (this.goal.isInGoal(ctx.playerFeet()) && this.goal.isInGoal(baritone.getPathingBehavior().pathStart()))) { onLostControl(); // we're there xd if (Baritone.settings().disconnectOnArrival.value) { - ctx.world().disconnect(); + if (ctx.world() instanceof ClientLevel clientLevel) { + clientLevel.disconnect(Component.literal("[Baritone] Arrived at goal!")); + } } if (Baritone.settings().notificationOnPathComplete.value) { logNotification("Pathing complete", false); diff --git a/src/main/java/baritone/process/ElytraProcess.java b/src/main/java/baritone/process/ElytraProcess.java index a087cc429..2c00dd481 100644 --- a/src/main/java/baritone/process/ElytraProcess.java +++ b/src/main/java/baritone/process/ElytraProcess.java @@ -44,8 +44,10 @@ import baritone.process.elytra.NullElytraProcess; import baritone.utils.BaritoneProcessHelper; import baritone.utils.PathingCommandContext; import it.unimi.dsi.fastutil.longs.LongOpenHashSet; +import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.core.BlockPos; import net.minecraft.core.NonNullList; +import net.minecraft.network.chat.Component; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; @@ -157,7 +159,9 @@ public class ElytraProcess extends BaritoneProcessHelper implements IBaritonePro if (Baritone.settings().disconnectOnArrival.value && !reachedGoal) { // don't be active when the user logs back in this.onLostControl(); - ctx.world().disconnect(); + if (ctx.world() instanceof ClientLevel clientLevel) { + clientLevel.disconnect(Component.literal("[Baritone] Arrived at goal!")); + } return new PathingCommand(null, PathingCommandType.CANCEL_AND_SET_GOAL); } reachedGoal = true; diff --git a/src/main/java/baritone/utils/BaritoneRenderType.java b/src/main/java/baritone/utils/BaritoneRenderType.java index a572a7166..accd60ad9 100644 --- a/src/main/java/baritone/utils/BaritoneRenderType.java +++ b/src/main/java/baritone/utils/BaritoneRenderType.java @@ -18,15 +18,18 @@ package baritone.utils; import com.mojang.blaze3d.buffers.GpuBuffer; +import com.mojang.blaze3d.buffers.GpuBufferSlice; import com.mojang.blaze3d.pipeline.RenderPipeline; import com.mojang.blaze3d.pipeline.RenderTarget; import com.mojang.blaze3d.systems.RenderPass; import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.textures.GpuTexture; +import com.mojang.blaze3d.systems.ScissorState; +import com.mojang.blaze3d.textures.GpuTextureView; import com.mojang.blaze3d.vertex.MeshData; import com.mojang.blaze3d.vertex.VertexFormat; import net.minecraft.client.renderer.RenderStateShard; import net.minecraft.client.renderer.RenderType; +import org.joml.Vector4f; import java.util.OptionalDouble; import java.util.OptionalInt; @@ -43,11 +46,6 @@ public class BaritoneRenderType extends RenderType { return new BaritoneRenderType(name, bufferSize, false, false, renderPipeline); } - @Override - public RenderPipeline getRenderPipeline() { - return this.renderPipeline; - } - @Override public VertexFormat format() { return this.renderPipeline.getVertexFormat(); @@ -60,11 +58,18 @@ public class BaritoneRenderType extends RenderType { @Override public void draw(final MeshData meshData) { - RenderPipeline renderPipeline = this.getRenderPipeline(); this.setupRenderState(); + GpuBufferSlice gpuBufferSlice = RenderSystem.getDynamicUniforms() + .writeTransform( + RenderSystem.getModelViewMatrix(), + new Vector4f(1.0F, 1.0F, 1.0F, 1.0F), + RenderSystem.getModelOffset(), + RenderSystem.getTextureMatrix(), + RenderSystem.getShaderLineWidth() + ); try { - GpuBuffer gpuBuffer = renderPipeline.getVertexFormat().uploadImmediateVertexBuffer(meshData.vertexBuffer()); + GpuBuffer gpuBuffer = this.renderPipeline.getVertexFormat().uploadImmediateVertexBuffer(meshData.vertexBuffer()); GpuBuffer gpuBuffer2; VertexFormat.IndexType indexType; if (meshData.indexBuffer() == null) { @@ -72,33 +77,40 @@ public class BaritoneRenderType extends RenderType { gpuBuffer2 = autoStorageIndexBuffer.getBuffer(meshData.drawState().indexCount()); indexType = autoStorageIndexBuffer.type(); } else { - gpuBuffer2 = renderPipeline.getVertexFormat().uploadImmediateIndexBuffer(meshData.indexBuffer()); + gpuBuffer2 = this.renderPipeline.getVertexFormat().uploadImmediateIndexBuffer(meshData.indexBuffer()); indexType = meshData.drawState().indexType(); } - RenderTarget renderTarget = getRenderTarget(); + RenderTarget renderTarget = RenderStateShard.MAIN_TARGET.getRenderTarget(); + GpuTextureView gpuTextureView = RenderSystem.outputColorTextureOverride != null + ? RenderSystem.outputColorTextureOverride + : renderTarget.getColorTextureView(); + GpuTextureView gpuTextureView2 = renderTarget.useDepth + ? (RenderSystem.outputDepthTextureOverride != null ? RenderSystem.outputDepthTextureOverride : renderTarget.getDepthTextureView()) + : null; - try (RenderPass renderPass = RenderSystem.getDevice().createCommandEncoder().createRenderPass( - renderTarget.getColorTexture(), - OptionalInt.empty(), - renderTarget.useDepth ? renderTarget.getDepthTexture() : null, - OptionalDouble.empty()) - ) { - renderPass.setPipeline(renderPipeline); - renderPass.setVertexBuffer(0, gpuBuffer); - if (RenderSystem.SCISSOR_STATE.isEnabled()) { - renderPass.enableScissor(RenderSystem.SCISSOR_STATE); + try (RenderPass renderPass = RenderSystem.getDevice() + .createCommandEncoder() + .createRenderPass(() -> "Immediate draw for " + this.getName(), gpuTextureView, OptionalInt.empty(), gpuTextureView2, OptionalDouble.empty())) { + renderPass.setPipeline(this.renderPipeline); + ScissorState scissorState = RenderSystem.getScissorStateForRenderTypeDraws(); + if (scissorState.enabled()) { + renderPass.enableScissor(scissorState.x(), scissorState.y(), scissorState.width(), scissorState.height()); } - for(int i = 0; i < 12; ++i) { - GpuTexture gpuTexture = RenderSystem.getShaderTexture(i); - if (gpuTexture != null) { - renderPass.bindSampler("Sampler" + i, gpuTexture); + RenderSystem.bindDefaultUniforms(renderPass); + renderPass.setUniform("DynamicTransforms", gpuBufferSlice); + renderPass.setVertexBuffer(0, gpuBuffer); + + for (int i = 0; i < 12; i++) { + GpuTextureView gpuTextureView3 = RenderSystem.getShaderTexture(i); + if (gpuTextureView3 != null) { + renderPass.bindSampler("Sampler" + i, gpuTextureView3); } } renderPass.setIndexBuffer(gpuBuffer2, indexType); - renderPass.drawIndexed(0, meshData.drawState().indexCount()); + renderPass.drawIndexed(0, 0, meshData.drawState().indexCount(), 1); } } catch (Throwable e) { try { @@ -113,9 +125,4 @@ public class BaritoneRenderType extends RenderType { this.clearRenderState(); } - - @Override - public RenderTarget getRenderTarget() { - return RenderStateShard.MAIN_TARGET.getRenderTarget(); - } }