diff --git a/build.gradle b/build.gradle index 85a5377b..32b76ba9 100755 --- a/build.gradle +++ b/build.gradle @@ -18,10 +18,8 @@ import net.fabricmc.loom.task.RemapJarTask -import java.util.stream.Collectors - plugins { - id 'io.github.ladysnake.chenille' version "0.7.0" + id 'io.github.ladysnake.chenille' version "0.9.0" id 'io.github.juuxel.loom-quiltflower' version "1.6.0" } @@ -88,15 +86,19 @@ repositories { dependencies { minecraft "com.mojang:minecraft:${minecraft_version}" - mappings "net.fabricmc:yarn:${yarn_mappings}:v2" - modImplementation "net.fabricmc:fabric-loader:${loader_version}" + mappings(loom.layered { + addLayer(quiltMappings.mappings("org.quiltmc:quilt-mappings:${minecraft_version}+build.${quilt_mappings_version}:v2")) + }) + modImplementation "org.quiltmc:quilt-loader:${project.quilt_loader_version}" + + modImplementation "org.quiltmc:qsl:${qsl_version}+${minecraft_version}" + modImplementation "org.quiltmc.quilted-fabric-api:quilted-fabric-api:${quilted_fabric_api_version}-${minecraft_version}" implementation 'com.google.code.findbugs:jsr305:3.0.2' - modImplementation "net.fabricmc.fabric-api:fabric-api:${fabric_version}" modImplementation "dev.onyxstudios.cardinal-components-api:cardinal-components-base:${cca_version}" modImplementation "dev.onyxstudios.cardinal-components-api:cardinal-components-entity:${cca_version}" modImplementation "dev.onyxstudios.cardinal-components-api:cardinal-components-world:${cca_version}" modImplementation "com.jamieswhiteshirt:reach-entity-attributes:${reach_version}" - modTestImplementation("io.github.ladysnake:elmendorf:${elmendorf_version}") { + modLocalImplementation("io.github.ladysnake:elmendorf:${elmendorf_version}") { transitive = false } compileOnly "com.demonwav.mcdev:annotations:1.0" diff --git a/gradle.properties b/gradle.properties index 509fc9c1..13dd868f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -23,10 +23,11 @@ mod_name = Automatone mod_version = 0.8.0 maven_group = io.github.ladysnake -minecraft_version=1.19-pre1 -yarn_mappings=1.19-pre1+build.1 -loader_version=0.14.5 -fabric_version=0.52.4+1.19 +minecraft_version=1.19 +quilt_mappings_version=1 +quilt_loader_version=0.17.1-beta.1 +qsl_version = 2.0.0-beta.2 +quilted_fabric_api_version = 2.0.0-alpha.2+0.55.3 cca_version = 5.0.0-beta.1 -reach_version = 2.1.1 +reach_version = 2.3.0 elmendorf_version = 0.6.0 diff --git a/settings.gradle b/settings.gradle index 541464a8..d1156ef1 100755 --- a/settings.gradle +++ b/settings.gradle @@ -24,6 +24,10 @@ pluginManagement { name = 'Fabric' url = 'https://maven.fabricmc.net/' } + maven { + name = 'Quilt' + url = 'https://maven.quiltmc.org/repository/release' + } gradlePluginPortal() mavenLocal() } diff --git a/src/api/java/baritone/api/utils/BlockOptionalMeta.java b/src/api/java/baritone/api/utils/BlockOptionalMeta.java index 127c2015..b3133f6d 100644 --- a/src/api/java/baritone/api/utils/BlockOptionalMeta.java +++ b/src/api/java/baritone/api/utils/BlockOptionalMeta.java @@ -32,10 +32,15 @@ import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3d; -import net.minecraft.util.math.random.AbstractRandom; import javax.annotation.Nonnull; -import java.util.*; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; import java.util.regex.MatchResult; import java.util.regex.Matcher; import java.util.regex.Pattern; diff --git a/src/launch/java/baritone/launch/mixins/MixinEntity.java b/src/launch/java/baritone/launch/mixins/MixinEntity.java index 9acb2693..696c2e1d 100644 --- a/src/launch/java/baritone/launch/mixins/MixinEntity.java +++ b/src/launch/java/baritone/launch/mixins/MixinEntity.java @@ -35,7 +35,7 @@ @Mixin(Entity.class) public abstract class MixinEntity implements IEntityAccessor { - @Shadow public abstract World getEntityWorld(); + @Shadow public abstract World getWorld(); @Override @Invoker("getEyeHeight") @@ -46,7 +46,7 @@ public abstract class MixinEntity implements IEntityAccessor { @Inject(method = "setRemoved", at = @At("RETURN")) private void shutdownPathingOnUnloading(Entity.RemovalReason reason, CallbackInfo ci) { - if (!getEntityWorld().isClient()) { + if (!getWorld().isClient()) { IBaritone.KEY.maybeGet(this).ifPresent(b -> ((PathingBehavior) b.getPathingBehavior()).shutdown()); } } diff --git a/src/launch/java/baritone/launch/mixins/MixinServerPlayerInteractionManager.java b/src/launch/java/baritone/launch/mixins/MixinServerPlayerInteractionManager.java index a301b3e4..74ed307e 100644 --- a/src/launch/java/baritone/launch/mixins/MixinServerPlayerInteractionManager.java +++ b/src/launch/java/baritone/launch/mixins/MixinServerPlayerInteractionManager.java @@ -48,7 +48,7 @@ public abstract class MixinServerPlayerInteractionManager implements IServerPlay } @Inject(method = "processBlockBreakingAction", at = @At(value = "FIELD", target = "Lnet/minecraft/server/network/ServerPlayerInteractionManager;miningPos:Lnet/minecraft/util/math/BlockPos;", opcode = Opcodes.PUTFIELD)) - private void setBrokeBlock(BlockPos pos, PlayerActionC2SPacket.Action action, Direction direction, int worldHeight, CallbackInfo ci) { + private void setBrokeBlock(BlockPos pos, PlayerActionC2SPacket.Action action, Direction direction, int worldHeight, int i, CallbackInfo ci) { this.automatone$brokeBlock = true; } } diff --git a/src/launch/java/baritone/launch/mixins/player/EntityMixin.java b/src/launch/java/baritone/launch/mixins/player/EntityMixin.java index d234b8f4..edb83807 100644 --- a/src/launch/java/baritone/launch/mixins/player/EntityMixin.java +++ b/src/launch/java/baritone/launch/mixins/player/EntityMixin.java @@ -27,18 +27,15 @@ import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.ModifyVariable; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import java.util.Set; - @Mixin(Entity.class) public abstract class EntityMixin { @SuppressWarnings("unused") // makes the field mutable for use by IEntityAccessor @Shadow @Mutable @Final private EntityType type; @Dynamic("hasPlayerRider player check lambda") - @Inject(method = "method_31469", at = @At(value = "HEAD"), cancellable = true) + @Inject(method = "m_lsaraprt", at = @At(value = "HEAD"), cancellable = true) private static void removeFakePlayers(Entity entity, CallbackInfoReturnable cir) { if (entity instanceof AutomatoneFakePlayer) { cir.setReturnValue(false); diff --git a/src/launch/java/baritone/launch/mixins/player/PlayerAdvancementTrackerMixin.java b/src/launch/java/baritone/launch/mixins/player/PlayerAdvancementTrackerMixin.java index 73cc4c67..a179a87c 100644 --- a/src/launch/java/baritone/launch/mixins/player/PlayerAdvancementTrackerMixin.java +++ b/src/launch/java/baritone/launch/mixins/player/PlayerAdvancementTrackerMixin.java @@ -49,7 +49,7 @@ public abstract class PlayerAdvancementTrackerMixin { @Shadow private ServerPlayerEntity owner; - @Inject(method = "grantCriterion", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/PlayerManager;broadcast(Lnet/minecraft/text/Text;Lnet/minecraft/network/MessageType;Ljava/util/UUID;)V"), cancellable = true) + @Inject(method = "grantCriterion", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/PlayerManager;broadcastSystemMessage(Lnet/minecraft/text/Text;Lnet/minecraft/util/registry/RegistryKey;)V"), cancellable = true) private void cancelAdvancementProgress(Advancement advancement, String criterionName, CallbackInfoReturnable cir) { if (this.owner instanceof AutomatoneFakePlayer) cir.setReturnValue(true); } diff --git a/src/launch/java/baritone/launch/mixins/player/ServerPlayerEntityMixin.java b/src/launch/java/baritone/launch/mixins/player/ServerPlayerEntityMixin.java index d73a33fb..e508f687 100644 --- a/src/launch/java/baritone/launch/mixins/player/ServerPlayerEntityMixin.java +++ b/src/launch/java/baritone/launch/mixins/player/ServerPlayerEntityMixin.java @@ -38,6 +38,7 @@ import com.mojang.authlib.GameProfile; import net.minecraft.entity.Entity; import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.network.encryption.PlayerPublicKey; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.BlockPos; @@ -50,8 +51,8 @@ @Mixin(ServerPlayerEntity.class) public abstract class ServerPlayerEntityMixin extends PlayerEntity { - public ServerPlayerEntityMixin(World world, BlockPos pos, float yaw, GameProfile profile) { - super(world, pos, yaw, profile); + public ServerPlayerEntityMixin(World world, BlockPos pos, float yaw, GameProfile profile, PlayerPublicKey playerPublicKey) { + super(world, pos, yaw, profile, playerPublicKey); } /** diff --git a/src/launch/resources/fabric.mod.json b/src/launch/resources/fabric.mod.json deleted file mode 100644 index 7a84d63f..00000000 --- a/src/launch/resources/fabric.mod.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "schemaVersion": 1, - "id": "automatone", - "version": "${version}", - "name": "Automatone", - "description": "A serverside Minecraft pathfinder bot.", - "entrypoints": { - "main": ["baritone.Automatone"], - "client": ["baritone.AutomatoneClient"], - "cardinal-components": ["baritone.AutomatoneComponents"] - }, - "authors": [ - "leijurv", - "Brady", - "Pyrofab" - ], - "icon": "assets/automatone/icon.png", - "contact": { - "sources": "https://github.com/Ladysnake/automatone", - "issues": "https://github.com/Ladysnake/automatone/issues" - }, - "license": "LGPL-3.0", - "environment": "*", - "mixins": [ - "mixins.automatone.json" - ], - "depends": { - "cardinal-components-base": "^4.0.0-", - "cardinal-components-entity": "^4.0.0-", - "cardinal-components-world": "^4.0.0-", - "fabric": "*", - "reach-entity-attributes": "*" - }, - "custom": { - "cardinal-components": [ - "automatone:core", - "automatone:controller", - "automatone:selection_manager", - "automatone:world_data_provider" - ] - } -} diff --git a/src/launch/resources/quilt.mod.json b/src/launch/resources/quilt.mod.json new file mode 100644 index 00000000..8324615c --- /dev/null +++ b/src/launch/resources/quilt.mod.json @@ -0,0 +1,60 @@ +{ + "schema_version": 1, + "quilt_loader": { + "group": "io.github.ladysnake", + "id": "automatone", + "version": "${version}", + "metadata": { + "name": "Automatone", + "description": "A serverside Minecraft pathfinder bot.", + "authors": [ + "leijurv", + "Brady", + "Pyrofab" + ], + "icon": "assets/automatone/icon.png", + "contact": { + "sources": "https://github.com/Ladysnake/automatone", + "issues": "https://github.com/Ladysnake/automatone/issues" + }, + "license": "LGPL-3.0" + }, + "intermediate_mappings": "net.fabricmc:intermediary", + "entrypoints": { + "init": "baritone.Automatone", + "client_init": "baritone.AutomatoneClient", + "cardinal-components": "baritone.AutomatoneComponents" + }, + "depends": [ + { + "id": "cardinal-components-base", + "version": "^5.0.0-" + }, + { + "id": "cardinal-components-entity", + "version": "^5.0.0-" + }, + { + "id": "cardinal-components-world", + "version": "^5.0.0-" + }, + { + "id": "fabric", + "version": "*" + }, + { + "id": "reach-entity-attributes", + "version": "*" + }] + }, + "mixin": "mixins.automatone.json", + "minecraft": { + "environment": "*" + }, + "cardinal-components": [ + "automatone:core", + "automatone:controller", + "automatone:selection_manager", + "automatone:world_data_provider" + ] +} diff --git a/src/main/java/baritone/Automatone.java b/src/main/java/baritone/Automatone.java index dea195a7..95f96f19 100644 --- a/src/main/java/baritone/Automatone.java +++ b/src/main/java/baritone/Automatone.java @@ -19,15 +19,17 @@ import baritone.command.defaults.DefaultCommands; import baritone.command.manager.BaritoneArgumentType; -import net.fabricmc.api.ModInitializer; -import net.minecraft.command.argument.ArgumentTypes; -import net.minecraft.command.argument.serialize.ConstantArgumentSerializer; +import com.mojang.brigadier.arguments.StringArgumentType; +import net.minecraft.command.argument.SingletonArgumentInfo; import net.minecraft.item.Item; import net.minecraft.tag.TagKey; import net.minecraft.util.Identifier; import net.minecraft.util.registry.Registry; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.quiltmc.loader.api.ModContainer; +import org.quiltmc.qsl.base.api.entrypoint.ModInitializer; +import org.quiltmc.qsl.command.api.ServerArgumentType; import java.util.concurrent.SynchronousQueue; import java.util.concurrent.ThreadPoolExecutor; @@ -58,8 +60,8 @@ public static ThreadPoolExecutor getExecutor() { } @Override - public void onInitialize() { + public void onInitialize(ModContainer mod) { DefaultCommands.registerAll(); - ArgumentTypes.register("automatone:command", BaritoneArgumentType.class, ConstantArgumentSerializer.of(BaritoneArgumentType::baritone)); + ServerArgumentType.register(id("command"), BaritoneArgumentType.class, SingletonArgumentInfo.contextFree(BaritoneArgumentType::baritone), t -> StringArgumentType.greedyString()); } } diff --git a/src/main/java/baritone/AutomatoneClient.java b/src/main/java/baritone/AutomatoneClient.java index 5ea8d855..227d5bf1 100644 --- a/src/main/java/baritone/AutomatoneClient.java +++ b/src/main/java/baritone/AutomatoneClient.java @@ -28,7 +28,6 @@ import baritone.utils.GuiClick; import baritone.utils.PathRenderer; import com.mojang.authlib.GameProfile; -import net.fabricmc.api.ClientModInitializer; import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientEntityEvents; import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext; @@ -39,8 +38,11 @@ import net.minecraft.entity.EntityType; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.network.PacketByteBuf; +import net.minecraft.util.math.Vec3d; import net.minecraft.util.registry.Registry; import org.jetbrains.annotations.Nullable; +import org.quiltmc.loader.api.ModContainer; +import org.quiltmc.qsl.base.api.entrypoint.client.ClientModInitializer; import java.util.Collections; import java.util.Objects; @@ -77,7 +79,7 @@ public static void onRenderPass(WorldRenderContext context) { } @Override - public void onInitializeClient() { + public void onInitializeClient(ModContainer mod) { WorldRenderEvents.BEFORE_DEBUG_RENDER.register(AutomatoneClient::onRenderPass); ClientPlayNetworking.registerGlobalReceiver(ClickCommand.OPEN_CLICK_SCREEN, (client, handler, buf, responseSender) -> { UUID uuid = buf.readUuid(); @@ -110,6 +112,7 @@ public void onInitializeClient() { }); ClientEntityEvents.ENTITY_UNLOAD.register((entity, world) -> { //yes, it is normal to remove an IBaritone from a Baritone set + //noinspection SuspiciousMethodCalls renderList.remove(IBaritone.KEY.getNullable(entity)); selectionRenderList.remove(ISelectionManager.KEY.getNullable(entity)); }); @@ -122,7 +125,7 @@ private

void spawnPlayer(int id, P other = FakeClientPlayerEntity.createClientFakePlayer(playerType, world, new GameProfile(uuid, name)); other.setId(id); other.setPosition(x, y, z); - other.updateTrackedPosition(x, y, z); + other.method_43389().method_43494(new Vec3d(x, y, z)); other.bodyYaw = headYaw; other.prevBodyYaw = headYaw; other.headYaw = headYaw; diff --git a/src/main/java/baritone/cache/WorldScanner.java b/src/main/java/baritone/cache/WorldScanner.java index 25496de9..73a003e9 100644 --- a/src/main/java/baritone/cache/WorldScanner.java +++ b/src/main/java/baritone/cache/WorldScanner.java @@ -27,9 +27,18 @@ import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.ChunkPos; -import net.minecraft.world.chunk.*; - -import java.util.*; +import net.minecraft.world.chunk.Chunk; +import net.minecraft.world.chunk.ChunkManager; +import net.minecraft.world.chunk.ChunkSection; +import net.minecraft.world.chunk.ChunkStatus; +import net.minecraft.world.chunk.WorldChunk; +import net.minecraft.world.chunk.palette.PalettedContainer; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; import java.util.stream.IntStream; public enum WorldScanner implements IWorldScanner { @@ -164,11 +173,11 @@ private boolean scanChunkInto(int chunkX, int chunkZ, Chunk chunk, BlockOptional continue; } int yReal = y0 << 4; - PalettedContainer bsc = section.getBlockStateContainer(); + PalettedContainer bsc = section.getContainer(); for (int yy = 0; yy < 16; yy++) { for (int z = 0; z < 16; z++) { for (int x = 0; x < 16; x++) { - BlockState state = bsc.get(x, yy, z); + BlockState state = bsc.method_12321(x, yy, z); if (filter.has(state)) { int y = yReal | yy; if (result.size() >= max) { diff --git a/src/main/java/baritone/command/defaults/DefaultCommands.java b/src/main/java/baritone/command/defaults/DefaultCommands.java index 8b1cfd5a..3b225491 100644 --- a/src/main/java/baritone/command/defaults/DefaultCommands.java +++ b/src/main/java/baritone/command/defaults/DefaultCommands.java @@ -34,7 +34,6 @@ import com.mojang.brigadier.Message; import com.mojang.brigadier.exceptions.CommandSyntaxException; import com.mojang.brigadier.exceptions.DynamicCommandExceptionType; -import net.fabricmc.fabric.api.command.v1.CommandRegistrationCallback; import net.minecraft.command.argument.EntityArgumentType; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; @@ -46,6 +45,7 @@ import net.minecraft.text.Text; import net.minecraft.util.Formatting; import net.minecraft.util.Pair; +import org.quiltmc.qsl.command.api.CommandRegistrationCallback; import java.util.ArrayList; import java.util.Arrays; @@ -103,7 +103,7 @@ public static void registerAll() { for (ICommand command : commands) { ICommandManager.registry.register(command); } - CommandRegistrationCallback.EVENT.register(((dispatcher, dedicated) -> register(dispatcher))); + CommandRegistrationCallback.EVENT.register(((dispatcher, ctx, dedicated) -> register(dispatcher))); } private static void logRanCommand(ServerCommandSource source, String command, String rest) { diff --git a/src/main/java/baritone/command/defaults/RenderCommand.java b/src/main/java/baritone/command/defaults/RenderCommand.java index 140f78b1..ea3048c4 100644 --- a/src/main/java/baritone/command/defaults/RenderCommand.java +++ b/src/main/java/baritone/command/defaults/RenderCommand.java @@ -18,10 +18,10 @@ package baritone.command.defaults; import baritone.api.IBaritone; -import baritone.api.utils.BetterBlockPos; import baritone.api.command.Command; -import baritone.api.command.exception.CommandException; import baritone.api.command.argument.IArgConsumer; +import baritone.api.command.exception.CommandException; +import baritone.api.utils.BetterBlockPos; import net.minecraft.client.MinecraftClient; import net.minecraft.server.command.ServerCommandSource; @@ -41,7 +41,7 @@ public void execute(ServerCommandSource source, String label, IArgConsumer args, MinecraftClient mc = MinecraftClient.getInstance(); mc.execute(() -> { BetterBlockPos origin = baritone.getPlayerContext().feetPos(); - int renderDistance = (mc.options.getViewDistance().getValue() + 1) * 16; + int renderDistance = (mc.options.getViewDistance().get() + 1) * 16; mc.worldRenderer.scheduleBlockRenders( origin.x - renderDistance, 0, diff --git a/src/main/java/baritone/pathing/movement/CalculationContext.java b/src/main/java/baritone/pathing/movement/CalculationContext.java index 9a70f472..16c429c9 100644 --- a/src/main/java/baritone/pathing/movement/CalculationContext.java +++ b/src/main/java/baritone/pathing/movement/CalculationContext.java @@ -107,7 +107,7 @@ public CalculationContext(IBaritone baritone, boolean forUseOnAnotherThread) { this.bsi = new BlockStateInterface(world); this.toolSet = player == null ? null : new ToolSet(player); this.hasThrowaway = baritone.settings().allowPlace.get() && ((Baritone) baritone).getInventoryBehavior().hasGenericThrowaway(); - this.hasWaterBucket = player != null && baritone.settings().allowWaterBucketFall.get() && PlayerInventory.isValidHotbarIndex(InventoryBehavior.getSlotWithStack(player.getInventory(), Automatone.WATER_BUCKETS)) && !world.getDimension().ultrawarm(); + this.hasWaterBucket = player != null && baritone.settings().allowWaterBucketFall.get() && PlayerInventory.isValidHotbarIndex(InventoryBehavior.getSlotWithStack(player.getInventory(), Automatone.WATER_BUCKETS)) && !world.getDimension().ultraWarm(); this.canSprint = player != null && baritone.settings().allowSprint.get() && player.getHungerManager().getFoodLevel() > 6; this.placeBlockCost = baritone.settings().blockPlacementPenalty.get(); this.allowBreak = baritone.settings().allowBreak.get(); diff --git a/src/main/java/baritone/pathing/movement/movements/MovementFall.java b/src/main/java/baritone/pathing/movement/movements/MovementFall.java index c57edcc3..a85f89fd 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementFall.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementFall.java @@ -108,7 +108,7 @@ public MovementState updateState(MovementState state) { boolean isWater = destState.getFluidState().getFluid() instanceof WaterFluid; if (!isWater && willPlaceBucket() && !playerFeet.equals(dest)) { PlayerInventory inventory = ctx.inventory(); - if (inventory == null || !PlayerInventory.isValidHotbarIndex(InventoryBehavior.getSlotWithStack(inventory, Automatone.WATER_BUCKETS)) || ctx.world().getDimension().ultrawarm()) { + if (inventory == null || !PlayerInventory.isValidHotbarIndex(InventoryBehavior.getSlotWithStack(inventory, Automatone.WATER_BUCKETS)) || ctx.world().getDimension().ultraWarm()) { return state.setStatus(MovementStatus.UNREACHABLE); } diff --git a/src/main/java/baritone/utils/GuiClick.java b/src/main/java/baritone/utils/GuiClick.java index 19fa1ac2..97c5d1ee 100644 --- a/src/main/java/baritone/utils/GuiClick.java +++ b/src/main/java/baritone/utils/GuiClick.java @@ -19,10 +19,10 @@ import baritone.api.BaritoneAPI; import baritone.api.utils.BetterBlockPos; +import com.mojang.blaze3d.glfw.Window; import com.mojang.blaze3d.systems.RenderSystem; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.util.Window; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.entity.Entity; import net.minecraft.entity.player.PlayerEntity; @@ -32,7 +32,11 @@ import net.minecraft.util.Formatting; import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.hit.HitResult; -import net.minecraft.util.math.*; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Box; +import net.minecraft.util.math.Matrix4f; +import net.minecraft.util.math.Vec3d; +import net.minecraft.util.math.Vector4f; import net.minecraft.world.RaycastContext; import java.awt.*; @@ -57,7 +61,7 @@ public GuiClick(UUID callerUuid) { } @Override - public boolean shouldPause() { + public boolean isPauseScreen() { return false; } @@ -93,9 +97,9 @@ public boolean mouseReleased(double mouseX, double mouseY, int mouseButton) { assert client.world != null; if (mouseButton == 0) { if (clickStart != null && !clickStart.equals(currentMouseOver)) { - client.player.sendChatMessage(String.format("/execute as %s run automatone sel clear", callerUuid)); - client.player.sendChatMessage(String.format("/execute as %s run automatone sel 1 %d %d %d", callerUuid, clickStart.getX(), clickStart.getY(), clickStart.getZ())); - client.player.sendChatMessage(String.format("/execute as %s run automatone sel 2 %d %d %d", callerUuid, currentMouseOver.getX(), currentMouseOver.getY(), currentMouseOver.getZ())); + client.player.method_3142(String.format("/execute as %s run automatone sel clear", callerUuid)); + client.player.method_3142(String.format("/execute as %s run automatone sel 1 %d %d %d", callerUuid, clickStart.getX(), clickStart.getY(), clickStart.getZ())); + client.player.method_3142(String.format("/execute as %s run automatone sel 2 %d %d %d", callerUuid, currentMouseOver.getX(), currentMouseOver.getY(), currentMouseOver.getZ())); MutableText component = Text.literal("").append(BaritoneAPI.getPrefix()).append(" Selection made! For usage: " + FORCE_COMMAND_PREFIX + "help sel"); component.setStyle(component.getStyle() .withFormatting(Formatting.WHITE) @@ -106,10 +110,10 @@ public boolean mouseReleased(double mouseX, double mouseY, int mouseButton) { client.inGameHud.getChatHud().addMessage(component); clickStart = null; } else { - client.player.sendChatMessage(String.format("/execute as %s run automatone goto %d %d %d", callerUuid, currentMouseOver.getX(), currentMouseOver.getY(), currentMouseOver.getZ())); + client.player.method_3142(String.format("/execute as %s run automatone goto %d %d %d", callerUuid, currentMouseOver.getX(), currentMouseOver.getY(), currentMouseOver.getZ())); } } else if (mouseButton == 1) { - client.player.sendChatMessage(String.format("/execute as %s run automatone goto %d %d %d", callerUuid, currentMouseOver.getX(), currentMouseOver.getY() + 1, currentMouseOver.getZ())); + client.player.method_3142(String.format("/execute as %s run automatone goto %d %d %d", callerUuid, currentMouseOver.getX(), currentMouseOver.getY() + 1, currentMouseOver.getZ())); } } clickStart = null; @@ -124,7 +128,7 @@ public boolean mouseClicked(double mouseX, double mouseY, int mouseButton) { public void onRender(MatrixStack modelViewStack, Matrix4f projectionMatrix) { this.projectionViewMatrix = projectionMatrix.copy(); - this.projectionViewMatrix.multiply(modelViewStack.peek().getPositionMatrix()); + this.projectionViewMatrix.multiply(modelViewStack.peek().getPosition()); this.projectionViewMatrix.invert(); if (currentMouseOver != null) { diff --git a/src/main/java/baritone/utils/IRenderer.java b/src/main/java/baritone/utils/IRenderer.java index bb75b84f..ac4a061f 100644 --- a/src/main/java/baritone/utils/IRenderer.java +++ b/src/main/java/baritone/utils/IRenderer.java @@ -20,12 +20,12 @@ import baritone.api.BaritoneAPI; import baritone.api.Settings; import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.vertex.BufferBuilder; +import com.mojang.blaze3d.vertex.Tessellator; +import com.mojang.blaze3d.vertex.VertexFormat; +import com.mojang.blaze3d.vertex.VertexFormats; import net.minecraft.client.MinecraftClient; -import net.minecraft.client.render.BufferBuilder; import net.minecraft.client.render.GameRenderer; -import net.minecraft.client.render.Tessellator; -import net.minecraft.client.render.VertexFormat; -import net.minecraft.client.render.VertexFormats; import net.minecraft.client.render.entity.EntityRenderDispatcher; import net.minecraft.util.math.Box; import net.minecraft.util.math.Vec3d; @@ -37,7 +37,7 @@ public interface IRenderer { Tessellator tessellator = Tessellator.getInstance(); - BufferBuilder buffer = tessellator.getBuffer(); + BufferBuilder buffer = tessellator.getBufferBuilder(); EntityRenderDispatcher renderManager = MinecraftClient.getInstance().getEntityRenderDispatcher(); Settings settings = BaritoneAPI.getGlobalSettings(); diff --git a/src/main/java/baritone/utils/PathRenderer.java b/src/main/java/baritone/utils/PathRenderer.java index b2dfdd9a..0550c048 100644 --- a/src/main/java/baritone/utils/PathRenderer.java +++ b/src/main/java/baritone/utils/PathRenderer.java @@ -29,12 +29,12 @@ import baritone.render.ClientPathingBehaviour; import baritone.render.RenderedPath; import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.vertex.VertexFormat; +import com.mojang.blaze3d.vertex.VertexFormats; import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext; import net.minecraft.block.BlockState; import net.minecraft.client.MinecraftClient; import net.minecraft.client.render.GameRenderer; -import net.minecraft.client.render.VertexFormat; -import net.minecraft.client.render.VertexFormats; import net.minecraft.client.render.block.entity.BeaconBlockEntityRenderer; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.entity.Entity; diff --git a/src/main/java/baritone/utils/ToolSet.java b/src/main/java/baritone/utils/ToolSet.java index 7fd5215b..6b8e0f2f 100644 --- a/src/main/java/baritone/utils/ToolSet.java +++ b/src/main/java/baritone/utils/ToolSet.java @@ -161,7 +161,7 @@ private double getBestDestructionTime(Block b) { } private double avoidanceMultiplier(Block b) { - return b.getRegistryEntry().isIn(baritone.settings().blocksToAvoidBreaking.get()) ? 0.1 : 1; + return b.getBuiltInRegistryHolder().hasTag(baritone.settings().blocksToAvoidBreaking.get()) ? 0.1 : 1; } /** diff --git a/src/main/java/baritone/utils/player/EntityContext.java b/src/main/java/baritone/utils/player/EntityContext.java index b68c5ad8..c0a72c21 100644 --- a/src/main/java/baritone/utils/player/EntityContext.java +++ b/src/main/java/baritone/utils/player/EntityContext.java @@ -108,7 +108,7 @@ public BetterBlockPos feetPos() { private Stream streamHostileEntities() { return this.worldEntitiesStream() .filter(entity -> entity instanceof MobEntity) - .filter(entity -> (!(entity instanceof SpiderEntity)) || entity.getBrightnessAtEyes() < 0.5) + .filter(entity -> (!(entity instanceof SpiderEntity)) || entity.method_5718() < 0.5) .filter(entity -> !(entity instanceof ZombifiedPiglinEntity) || ((ZombifiedPiglinEntity) entity).getAttacker() != null) .filter(entity -> !(entity instanceof EndermanEntity) || ((EndermanEntity) entity).isAngry()); } diff --git a/src/testmod/java/io/github/ladysnake/otomaton/OtomatonClient.java b/src/testmod/java/io/github/ladysnake/otomaton/OtomatonClient.java index a153a502..ffa61344 100644 --- a/src/testmod/java/io/github/ladysnake/otomaton/OtomatonClient.java +++ b/src/testmod/java/io/github/ladysnake/otomaton/OtomatonClient.java @@ -19,19 +19,20 @@ import baritone.api.fakeplayer.FakeClientPlayerEntity; import baritone.api.fakeplayer.FakePlayers; -import net.fabricmc.api.ClientModInitializer; -import net.fabricmc.fabric.api.client.rendereregistry.v1.EntityRendererRegistry; +import net.fabricmc.fabric.api.client.rendering.v1.EntityRendererRegistry; import net.minecraft.client.network.AbstractClientPlayerEntity; import net.minecraft.client.render.entity.PlayerEntityRenderer; import net.minecraft.entity.EntityType; import net.minecraft.entity.player.PlayerEntity; +import org.quiltmc.loader.api.ModContainer; +import org.quiltmc.qsl.base.api.entrypoint.client.ClientModInitializer; public class OtomatonClient implements ClientModInitializer { @Override - public void onInitializeClient() { + public void onInitializeClient(ModContainer mod) { FakePlayers.registerClientFactory(Otomaton.FAKE_PLAYER, FakeClientPlayerEntity::new); // shh, it's fine @SuppressWarnings("unchecked") EntityType fakePlayerType = (EntityType) (EntityType) Otomaton.FAKE_PLAYER; - EntityRendererRegistry.INSTANCE.register(fakePlayerType, (ctx) -> new PlayerEntityRenderer(ctx, false)); + EntityRendererRegistry.register(fakePlayerType, (ctx) -> new PlayerEntityRenderer(ctx, false)); } } diff --git a/src/testmod/java/io/github/ladysnake/otomaton/OtomatonTestSuite.java b/src/testmod/java/io/github/ladysnake/otomaton/OtomatonTestSuite.java index 8da003ba..031c4704 100644 --- a/src/testmod/java/io/github/ladysnake/otomaton/OtomatonTestSuite.java +++ b/src/testmod/java/io/github/ladysnake/otomaton/OtomatonTestSuite.java @@ -22,24 +22,21 @@ import io.github.ladysnake.elmendorf.impl.MockClientConnection; import io.github.ladysnake.otomaton.mixin.ServerWorldAccessor; import net.fabricmc.fabric.api.gametest.v1.FabricGameTest; -import net.minecraft.advancement.Advancement; import net.minecraft.advancement.criterion.Criteria; import net.minecraft.block.Blocks; import net.minecraft.entity.Entity; -import net.minecraft.entity.damage.DamageSource; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.network.NetworkSide; -import net.minecraft.network.packet.s2c.play.GameMessageS2CPacket; +import net.minecraft.network.packet.s2c.play.SystemMessageS2CPacket; import net.minecraft.server.network.ServerPlayNetworkHandler; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.server.world.ServerWorld; import net.minecraft.server.world.SleepManager; import net.minecraft.test.BeforeBatch; import net.minecraft.test.GameTest; -import net.minecraft.test.GameTestException; import net.minecraft.test.TestContext; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.component.TranslatableComponent; import net.minecraft.util.Hand; import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; @@ -90,7 +87,7 @@ public void realPlayersDoBroadcastAdvancements(TestContext ctx) { // Needed for getting broadcasted messages ctx.getWorld().getServer().getPlayerManager().getPlayerList().add(player); Criteria.INVENTORY_CHANGED.trigger(player, player.getInventory(), new ItemStack(Items.COBBLESTONE)); - ctx.verifyConnection(player, conn -> conn.sent(GameMessageS2CPacket.class, packet -> packet.getMessage() instanceof TranslatableText tt && tt.getKey().equals("chat.type.advancement.task")).exactly(1)); + ctx.verifyConnection(player, conn -> conn.sent(SystemMessageS2CPacket.class, packet -> packet.content().asComponent() instanceof TranslatableComponent tt && tt.getKey().equals("chat.type.advancement.task")).exactly(1)); ctx.getWorld().getServer().getPlayerManager().getPlayerList().remove(player); player.remove(Entity.RemovalReason.DISCARDED); ctx.complete(); @@ -105,7 +102,7 @@ public void fakePlayersDoNotBroadcastAdvancements(TestContext ctx) { // Needed for getting broadcasted messages ctx.getWorld().getServer().getPlayerManager().getPlayerList().add(fakePlayer); Criteria.INVENTORY_CHANGED.trigger(fakePlayer, fakePlayer.getInventory(), new ItemStack(Items.COBBLESTONE)); - ctx.verifyConnection(fakePlayer, conn -> conn.allowNoPacketMatch(true).sent(GameMessageS2CPacket.class, packet -> packet.getMessage() instanceof TranslatableText tt && tt.getKey().equals("chat.type.advancement.task")).exactly(0)); + ctx.verifyConnection(fakePlayer, conn -> conn.allowNoPacketMatch(true).sent(SystemMessageS2CPacket.class, packet -> packet.content().asComponent() instanceof TranslatableComponent tt && tt.getKey().equals("chat.type.advancement.task")).exactly(0)); ctx.getWorld().getServer().getPlayerManager().getPlayerList().remove(fakePlayer); fakePlayer.remove(Entity.RemovalReason.DISCARDED); ctx.complete();