From 3119a9145cb0ec18fc17f5e75c640fec183e31eb Mon Sep 17 00:00:00 2001 From: MonkeySaint <62266035+MonkeySaint@users.noreply.github.com> Date: Tue, 14 Nov 2023 15:03:57 -0500 Subject: [PATCH 1/2] Port to 1.20.2 (#305) Co-authored-by: Cloudburst <18114966+C10udburst@users.noreply.github.com> --- .github/workflows/gradle.yml | 6 +- gradle.properties | 8 +-- .../rejects/commands/KickCommand.java | 2 +- .../gui/servers/LegacyServerFinderScreen.java | 2 +- .../gui/servers/ServerFinderScreen.java | 2 +- .../gui/servers/ServerManagerScreen.java | 2 +- .../mixin/ClientCommonNetwokHandlerMixin.java | 25 ++++++++ .../mixin/ClientPlayNetworkHandlerMixin.java | 15 ----- .../anticope/rejects/modules/AutoCraft.java | 5 +- .../anticope/rejects/modules/AutoGrind.java | 2 +- .../anticope/rejects/modules/AutoSoup.java | 2 +- .../rejects/modules/BungeeCordSpoof.java | 8 +-- .../anticope/rejects/modules/ColorSigns.java | 2 +- .../rejects/modules/CustomPackets.java | 19 ++++-- .../anticope/rejects/modules/NewChunks.java | 6 +- .../accounts/CustomYggdrasilAccount.java | 4 +- .../utils/accounts/CustomYggdrasilLogin.java | 62 ++++--------------- .../utils/server/LegacyServerPinger.java | 2 +- .../utils/server/ServerListPinger.java | 15 +++-- src/main/resources/meteor-rejects.mixins.json | 1 + 20 files changed, 86 insertions(+), 104 deletions(-) create mode 100644 src/main/java/anticope/rejects/mixin/ClientCommonNetwokHandlerMixin.java diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index 3dcf1391..79bc30c1 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -4,7 +4,7 @@ name: Java CI with Gradle concurrency: - group: "build-1.20" + group: "build" cancel-in-progress: true on: @@ -34,9 +34,9 @@ jobs: - uses: "marvinpinto/action-automatic-releases@latest" with: repo_token: "${{ secrets.GITHUB_TOKEN }}" - automatic_release_tag: "latest-1.20.1" + automatic_release_tag: "latest-1.20.2" prerelease: false - title: "1.20.1 Build" + title: "1.20.2 Build" files: | ./build/libs/*.jar diff --git a/gradle.properties b/gradle.properties index a759d224..36b4ffcc 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,13 +2,13 @@ org.gradle.jvmargs=-Xmx2G # Fabric Properties -minecraft_version=1.20.1 -yarn_version=1.20.1+build.1 -loader_version=0.14.21 +minecraft_version=1.20.2 +yarn_version=1.20.2+build.4 +loader_version=0.14.24 # Mod Properties mod_version = 0.3 maven_group = anticope.rejects archives_base_name = meteor-rejects-addon -meteor_version=0.5.4 \ No newline at end of file +meteor_version=0.5.5 \ No newline at end of file diff --git a/src/main/java/anticope/rejects/commands/KickCommand.java b/src/main/java/anticope/rejects/commands/KickCommand.java index 7d55e520..3ee57d21 100644 --- a/src/main/java/anticope/rejects/commands/KickCommand.java +++ b/src/main/java/anticope/rejects/commands/KickCommand.java @@ -7,7 +7,7 @@ import net.minecraft.command.CommandSource; import net.minecraft.network.packet.c2s.play.PlayerInteractEntityC2SPacket; import net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket; -import net.minecraft.network.packet.s2c.play.DisconnectS2CPacket; +import net.minecraft.network.packet.s2c.common.DisconnectS2CPacket; import net.minecraft.text.Text; import org.apache.commons.lang3.SystemUtils; diff --git a/src/main/java/anticope/rejects/gui/servers/LegacyServerFinderScreen.java b/src/main/java/anticope/rejects/gui/servers/LegacyServerFinderScreen.java index 568fd2dc..938a8960 100644 --- a/src/main/java/anticope/rejects/gui/servers/LegacyServerFinderScreen.java +++ b/src/main/java/anticope/rejects/gui/servers/LegacyServerFinderScreen.java @@ -156,7 +156,7 @@ private void updatePingers(ArrayList pingers) { if (!isServerInList(pingers.get(i).getServerIP())) { multiplayerScreen.getServerList() .add(new ServerInfo("Server discovery " + working, - pingers.get(i).getServerIP(), false), false); + pingers.get(i).getServerIP(), ServerInfo.ServerType.OTHER), false); multiplayerScreen.getServerList().saveFile(); ((MultiplayerScreenAccessor) multiplayerScreen).getServerListWidget() .setSelected(null); diff --git a/src/main/java/anticope/rejects/gui/servers/ServerFinderScreen.java b/src/main/java/anticope/rejects/gui/servers/ServerFinderScreen.java index af96dcf1..564edee1 100644 --- a/src/main/java/anticope/rejects/gui/servers/ServerFinderScreen.java +++ b/src/main/java/anticope/rejects/gui/servers/ServerFinderScreen.java @@ -241,7 +241,7 @@ public void onServerDone(ServerPinger pinger) { if (!isServerInList(pinger.getServerIP()) && filterPass(pinger.getServerInfo())) { synchronized (serverFinderLock) { working++; - multiplayerScreen.getServerList().add(new ServerInfo("Server discovery #" + working, pinger.getServerIP(), false), false); + multiplayerScreen.getServerList().add(new ServerInfo("Server discovery #" + working, pinger.getServerIP(), ServerInfo.ServerType.OTHER), false); multiplayerScreen.getServerList().saveFile(); ((MultiplayerScreenAccessor) multiplayerScreen).getServerListWidget().setSelected(null); ((MultiplayerScreenAccessor) multiplayerScreen).getServerListWidget().setServers(multiplayerScreen.getServerList()); diff --git a/src/main/java/anticope/rejects/gui/servers/ServerManagerScreen.java b/src/main/java/anticope/rejects/gui/servers/ServerManagerScreen.java index bda7b3cc..a7ff64e1 100644 --- a/src/main/java/anticope/rejects/gui/servers/ServerManagerScreen.java +++ b/src/main/java/anticope/rejects/gui/servers/ServerManagerScreen.java @@ -120,7 +120,7 @@ public void initWidgets() { for (ServerInfo server : servers) presentAddresses.add(server.address); for (String addr : MinecraftClient.getInstance().keyboard.getClipboard().split("[\r\n]+")) { if (presentAddresses.add(addr = addr.split(" ")[0])) { - servers.add(new ServerInfo("Server discovery #" + presentAddresses.size(), addr, false)); + servers.add(new ServerInfo("Server discovery #" + presentAddresses.size(), addr, ServerInfo.ServerType.OTHER)); newIPs++; } } diff --git a/src/main/java/anticope/rejects/mixin/ClientCommonNetwokHandlerMixin.java b/src/main/java/anticope/rejects/mixin/ClientCommonNetwokHandlerMixin.java new file mode 100644 index 00000000..c8905537 --- /dev/null +++ b/src/main/java/anticope/rejects/mixin/ClientCommonNetwokHandlerMixin.java @@ -0,0 +1,25 @@ +package anticope.rejects.mixin; + +import anticope.rejects.modules.SilentDisconnect; +import meteordevelopment.meteorclient.systems.modules.Modules; +import meteordevelopment.meteorclient.utils.player.ChatUtils; +import net.minecraft.client.network.ClientCommonNetworkHandler; +import net.minecraft.text.Text; +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.CallbackInfo; + +import static meteordevelopment.meteorclient.MeteorClient.mc; + +@Mixin(ClientCommonNetworkHandler.class) +public class ClientCommonNetwokHandlerMixin { + @Inject(method = "onDisconnected", at = @At("HEAD"), cancellable = true) + private void onDisconnected(Text reason, CallbackInfo info) { + if (Modules.get().isActive(SilentDisconnect.class) && mc.world != null && mc.player != null) { + ChatUtils.info(Text.translatable("disconnect.lost").getString() + ":"); + ChatUtils.sendMsg(reason); + info.cancel(); + } + } +} diff --git a/src/main/java/anticope/rejects/mixin/ClientPlayNetworkHandlerMixin.java b/src/main/java/anticope/rejects/mixin/ClientPlayNetworkHandlerMixin.java index 5073e642..725d5d1e 100644 --- a/src/main/java/anticope/rejects/mixin/ClientPlayNetworkHandlerMixin.java +++ b/src/main/java/anticope/rejects/mixin/ClientPlayNetworkHandlerMixin.java @@ -1,20 +1,14 @@ package anticope.rejects.mixin; import anticope.rejects.events.PlayerRespawnEvent; -import anticope.rejects.modules.SilentDisconnect; import meteordevelopment.meteorclient.MeteorClient; -import meteordevelopment.meteorclient.systems.modules.Modules; -import meteordevelopment.meteorclient.utils.player.ChatUtils; import net.minecraft.client.network.ClientPlayNetworkHandler; import net.minecraft.network.packet.s2c.play.PlayerRespawnS2CPacket; -import net.minecraft.text.Text; 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.CallbackInfo; -import static meteordevelopment.meteorclient.MeteorClient.mc; - @Mixin(ClientPlayNetworkHandler.class) public class ClientPlayNetworkHandlerMixin { @@ -23,13 +17,4 @@ public class ClientPlayNetworkHandlerMixin { public void onPlayerRespawn(PlayerRespawnS2CPacket packet, CallbackInfo ci) { MeteorClient.EVENT_BUS.post(PlayerRespawnEvent.get()); } - - @Inject(method = "onDisconnected", at = @At("HEAD"), cancellable = true) - private void onDisconnected(Text reason, CallbackInfo info) { - if (Modules.get().isActive(SilentDisconnect.class) && mc.world != null && mc.player != null) { - ChatUtils.info(Text.translatable("disconnect.lost").getString() + ":"); - ChatUtils.sendMsg(reason); - info.cancel(); - } - } } diff --git a/src/main/java/anticope/rejects/modules/AutoCraft.java b/src/main/java/anticope/rejects/modules/AutoCraft.java index a5a17810..5551e830 100644 --- a/src/main/java/anticope/rejects/modules/AutoCraft.java +++ b/src/main/java/anticope/rejects/modules/AutoCraft.java @@ -11,6 +11,7 @@ import net.minecraft.client.gui.screen.recipebook.RecipeResultCollection; import net.minecraft.item.Item; import net.minecraft.recipe.Recipe; +import net.minecraft.recipe.RecipeEntry; import net.minecraft.screen.CraftingScreenHandler; import net.minecraft.screen.slot.SlotActionType; @@ -70,8 +71,8 @@ private void onTick(TickEvent.Post event) { List itemList = items.get(); List recipeResultCollectionList = mc.player.getRecipeBook().getOrderedResults(); for (RecipeResultCollection recipeResultCollection : recipeResultCollectionList) { - for (Recipe recipe : recipeResultCollection.getRecipes(true)) { - if (!itemList.contains(recipe.getOutput(mc.world.getRegistryManager()).getItem())) continue; + for (RecipeEntry recipe : recipeResultCollection.getRecipes(true)) { + if (!itemList.contains(recipe.value().getResult(mc.world.getRegistryManager()).getItem())) continue; mc.interactionManager.clickRecipe(currentScreenHandler.syncId, recipe, craftAll.get()); mc.interactionManager.clickSlot(currentScreenHandler.syncId, 0, 1, drop.get() ? SlotActionType.THROW : SlotActionType.QUICK_MOVE, mc.player); diff --git a/src/main/java/anticope/rejects/modules/AutoGrind.java b/src/main/java/anticope/rejects/modules/AutoGrind.java index 168f1237..483f1b87 100644 --- a/src/main/java/anticope/rejects/modules/AutoGrind.java +++ b/src/main/java/anticope/rejects/modules/AutoGrind.java @@ -63,7 +63,7 @@ private void onOpenScreen(OpenScreenEvent event) { if (mc.currentScreen == null) break; - InvUtils.quickMove().slot(i); + InvUtils.quickSwap().slot(i); InvUtils.move().fromId(2).to(i); } } diff --git a/src/main/java/anticope/rejects/modules/AutoSoup.java b/src/main/java/anticope/rejects/modules/AutoSoup.java index ab16c683..3e5fc8f4 100644 --- a/src/main/java/anticope/rejects/modules/AutoSoup.java +++ b/src/main/java/anticope/rejects/modules/AutoSoup.java @@ -104,7 +104,7 @@ private void onTick(TickEvent.Post event) { // move soup in inventory to hotbar if (soupInInventory != -1) - InvUtils.quickMove().slot(soupInInventory); + InvUtils.quickSwap().slot(soupInInventory); } private int findSoup(int startSlot, int endSlot) { diff --git a/src/main/java/anticope/rejects/modules/BungeeCordSpoof.java b/src/main/java/anticope/rejects/modules/BungeeCordSpoof.java index 956b8cab..b1e9bca3 100644 --- a/src/main/java/anticope/rejects/modules/BungeeCordSpoof.java +++ b/src/main/java/anticope/rejects/modules/BungeeCordSpoof.java @@ -54,16 +54,16 @@ public BungeeCordSpoof() { @EventHandler private void onPacketSend(PacketEvent.Send event) { - if (event.packet instanceof HandshakeC2SPacket packet && packet.getIntendedState() == NetworkState.LOGIN) { + if (event.packet instanceof HandshakeC2SPacket packet && packet.getNewNetworkState() == NetworkState.LOGIN) { if (whitelist.get() && !whitelistedServers.get().contains(Utils.getWorldName())) return; - String address = packet.getAddress() + "\0" + forwardedIP + "\0" + mc.getSession().getUuid().replace("-", "") + String address = packet.address() + "\0" + forwardedIP + "\0" + mc.getSession().getUuidOrNull().toString().replace("-", "") + (spoofProfile.get() ? getProperty() : ""); - ((HandshakeC2SPacketAccessor) packet).setAddress(address); + ((HandshakeC2SPacketAccessor) (Object) packet).setAddress(address); } } private String getProperty() { - PropertyMap propertyMap = mc.getSession().getProfile().getProperties(); + PropertyMap propertyMap = mc.getGameProfile().getProperties(); return "\0" + GSON.toJson(propertyMap.values().toArray()); } } diff --git a/src/main/java/anticope/rejects/modules/ColorSigns.java b/src/main/java/anticope/rejects/modules/ColorSigns.java index b8a4ffb8..87b80e92 100644 --- a/src/main/java/anticope/rejects/modules/ColorSigns.java +++ b/src/main/java/anticope/rejects/modules/ColorSigns.java @@ -35,7 +35,7 @@ public void onActivate() { } private void checkWarning() { - String brand = mc.player.getServerBrand(); + String brand = mc.player.getServer().getServerModName(); if (brand == null) return; if (brand.contains("Paper")) warning("You are on a paper server. Color signs won't work here"); } diff --git a/src/main/java/anticope/rejects/modules/CustomPackets.java b/src/main/java/anticope/rejects/modules/CustomPackets.java index 37b1bc18..9cc649fc 100644 --- a/src/main/java/anticope/rejects/modules/CustomPackets.java +++ b/src/main/java/anticope/rejects/modules/CustomPackets.java @@ -5,6 +5,7 @@ import com.google.gson.GsonBuilder; import com.google.gson.JsonObject; import com.google.gson.reflect.TypeToken; +import io.netty.buffer.Unpooled; import meteordevelopment.meteorclient.events.packets.PacketEvent; import meteordevelopment.meteorclient.settings.BoolSetting; import meteordevelopment.meteorclient.settings.Setting; @@ -13,7 +14,7 @@ import meteordevelopment.meteorclient.utils.player.ChatUtils; import meteordevelopment.orbit.EventHandler; import net.minecraft.network.PacketByteBuf; -import net.minecraft.network.packet.s2c.play.CustomPayloadS2CPacket; +import net.minecraft.network.packet.s2c.common.CustomPayloadS2CPacket; import net.minecraft.text.HoverEvent; import net.minecraft.text.MutableText; import net.minecraft.text.Text; @@ -53,27 +54,33 @@ public CustomPackets() { @EventHandler private void onCustomPayloadPacket(PacketEvent.Receive event) { if (event.packet instanceof CustomPayloadS2CPacket packet) { - switch (packet.getChannel().toString()) { + switch (packet.payload().id().toString()) { case "badlion:mods" -> event.setCancelled(onBadlionModsPacket(packet)); default -> onUnknownPacket(packet); } } } + PacketByteBuf buffer = new PacketByteBuf(Unpooled.buffer()); + private void onUnknownPacket(CustomPayloadS2CPacket packet) { if (!unknownPackets.get()) return; - MutableText text = Text.literal(packet.getChannel().toString()); + MutableText text = Text.literal(packet.payload().id().toString()); + buffer.clear(); + packet.payload().write(buffer); text.setStyle(text.getStyle() .withHoverEvent(new HoverEvent( HoverEvent.Action.SHOW_TEXT, - Text.literal(readString(packet.getData())) - ))); + Text.literal(readString(buffer) + )))); info(text); } private boolean onBadlionModsPacket(CustomPayloadS2CPacket packet) { if (!mods.get()) return false; - String json = readString(packet.getData()); + buffer.clear(); + packet.payload().write(buffer); + String json = readString(buffer); Map mods = GSON_NON_PRETTY.fromJson(json, BADLION_MODS_TYPE); ChatUtils.sendMsg("Badlion", format("Mods", formatMods(mods))); return true; diff --git a/src/main/java/anticope/rejects/modules/NewChunks.java b/src/main/java/anticope/rejects/modules/NewChunks.java index ebc2ac08..715315f0 100644 --- a/src/main/java/anticope/rejects/modules/NewChunks.java +++ b/src/main/java/anticope/rejects/modules/NewChunks.java @@ -171,12 +171,12 @@ else if (event.packet instanceof BlockUpdateS2CPacket) { else if (event.packet instanceof ChunkDataS2CPacket && mc.world != null) { ChunkDataS2CPacket packet = (ChunkDataS2CPacket) event.packet; - ChunkPos pos = new ChunkPos(packet.getX(), packet.getZ()); + ChunkPos pos = new ChunkPos(packet.getChunkX(), packet.getChunkZ()); - if (!newChunks.contains(pos) && mc.world.getChunkManager().getChunk(packet.getX(), packet.getZ()) == null) { + if (!newChunks.contains(pos) && mc.world.getChunkManager().getChunk(packet.getChunkX(), packet.getChunkZ()) == null) { WorldChunk chunk = new WorldChunk(mc.world, pos); try { - chunk.loadFromPacket(packet.getChunkData().getSectionsDataBuf(), new NbtCompound(), packet.getChunkData().getBlockEntities(packet.getX(), packet.getZ())); + chunk.loadFromPacket(packet.getChunkData().getSectionsDataBuf(), new NbtCompound(), packet.getChunkData().getBlockEntities(packet.getChunkX(), packet.getChunkZ())); } catch (ArrayIndexOutOfBoundsException e) { return; } diff --git a/src/main/java/anticope/rejects/utils/accounts/CustomYggdrasilAccount.java b/src/main/java/anticope/rejects/utils/accounts/CustomYggdrasilAccount.java index 628aa67d..83caa473 100644 --- a/src/main/java/anticope/rejects/utils/accounts/CustomYggdrasilAccount.java +++ b/src/main/java/anticope/rejects/utils/accounts/CustomYggdrasilAccount.java @@ -7,7 +7,7 @@ import meteordevelopment.meteorclient.systems.accounts.Account; import meteordevelopment.meteorclient.systems.accounts.AccountType; import meteordevelopment.meteorclient.utils.misc.NbtException; -import net.minecraft.client.util.Session; +import net.minecraft.client.session.Session; import net.minecraft.nbt.NbtCompound; import static meteordevelopment.meteorclient.MeteorClient.mc; @@ -27,7 +27,7 @@ public boolean fetchInfo() { Session session = CustomYggdrasilLogin.login(name, password, server); cache.username = session.getUsername(); - cache.uuid = session.getUuid(); + cache.uuid = session.getUuidOrNull().toString(); return true; } catch (AuthenticationException e) { diff --git a/src/main/java/anticope/rejects/utils/accounts/CustomYggdrasilLogin.java b/src/main/java/anticope/rejects/utils/accounts/CustomYggdrasilLogin.java index 7602726d..9845a826 100644 --- a/src/main/java/anticope/rejects/utils/accounts/CustomYggdrasilLogin.java +++ b/src/main/java/anticope/rejects/utils/accounts/CustomYggdrasilLogin.java @@ -15,7 +15,7 @@ import com.mojang.authlib.yggdrasil.response.MinecraftTexturesPayload; import com.mojang.util.UUIDTypeAdapter; import meteordevelopment.meteorclient.utils.network.Http; -import net.minecraft.client.util.Session; +import net.minecraft.client.session.Session; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -28,7 +28,11 @@ import java.security.spec.X509EncodedKeySpec; import java.util.*; +import static meteordevelopment.meteorclient.MeteorClient.mc; + public class CustomYggdrasilLogin { + public static Environment localYggdrasilApi = new Environment("/api", "/sessionserver", "/minecraftservices", "Custom-Yggdrasil"); + public static Session login(String name, String password, String server) throws AuthenticationException { try { String url = server + "/authserver/authenticate"; @@ -47,7 +51,7 @@ public static Session login(String name, String password, String server) throws throw new AuthenticationException(json.get("errorMessage").getAsString()); } String token = json.get("accessToken").getAsString(); - String uuid = json.get("selectedProfile").getAsJsonObject().get("id").getAsString(); + UUID uuid = UUID.fromString(json.get("selectedProfile").getAsJsonObject().get("id").getAsString()); String username = json.get("selectedProfile").getAsJsonObject().get("name").getAsString(); return new Session(username, uuid, token, Optional.empty(), Optional.empty(), Session.AccountType.MOJANG); } catch (Exception e) { @@ -55,57 +59,13 @@ public static Session login(String name, String password, String server) throws } } - public static class LocalYggdrasilApi implements Environment { - private final String url; - - public LocalYggdrasilApi(String serverUrl) { - this.url = serverUrl; - } - - @Override - public String getAuthHost() { - return url + "/authserver"; - } - - @Override - public String getAccountsHost() { - return url + "/api"; - } - - @Override - public String getSessionHost() { - return url + "/sessionserver"; - } - - @Override - public String getServicesHost() { - return url + "/minecraftservices"; - } - - @Override - public String getName() { - return "Custom-Yggdrasil"; - } - - @Override - public String asString() { - return new StringJoiner(", ", "", "") - .add("authHost='" + getAuthHost() + "'") - .add("accountsHost='" + getAccountsHost() + "'") - .add("sessionHost='" + getSessionHost() + "'") - .add("servicesHost='" + getServicesHost() + "'") - .add("name='" + getName() + "'") - .toString(); - } - } - public static class LocalYggdrasilMinecraftSessionService extends YggdrasilMinecraftSessionService { private static final Logger LOGGER = LogManager.getLogger(); private final PublicKey publicKey; private final Gson gson = new GsonBuilder().registerTypeAdapter(UUID.class, new UUIDTypeAdapter()).create(); public LocalYggdrasilMinecraftSessionService(YggdrasilAuthenticationService service, String serverUrl) { - super(service, new LocalYggdrasilApi(serverUrl)); + super(service.getServicesKeySet(), mc.getNetworkProxy(), localYggdrasilApi); String data = Http.get(serverUrl).sendString(); JsonObject json = JsonParser.parseString(data).getAsJsonObject(); this.publicKey = getPublicKey(json.get("signaturePublickey").getAsString()); @@ -144,17 +104,17 @@ public Map getTextures(fi final MinecraftTexturesPayload result; try { - final String json = new String(org.apache.commons.codec.binary.Base64.decodeBase64(textureProperty.getValue()), StandardCharsets.UTF_8); + final String json = new String(org.apache.commons.codec.binary.Base64.decodeBase64(textureProperty.value()), StandardCharsets.UTF_8); result = gson.fromJson(json, MinecraftTexturesPayload.class); } catch (final JsonParseException e) { LOGGER.error("Could not decode textures payload", e); return new HashMap<>(); } - if (result == null || result.getTextures() == null) + if (result == null || result.textures() == null) return new HashMap<>(); - return result.getTextures(); + return result.textures(); } } @@ -162,7 +122,7 @@ public static class LocalYggdrasilAuthenticationService extends YggdrasilAuthent public final String server; public LocalYggdrasilAuthenticationService(Proxy proxy, String server) { - super(proxy, new LocalYggdrasilApi(server)); + super(proxy, localYggdrasilApi); this.server = server; } } diff --git a/src/main/java/anticope/rejects/utils/server/LegacyServerPinger.java b/src/main/java/anticope/rejects/utils/server/LegacyServerPinger.java index 2f68c8a1..d6e1daa1 100644 --- a/src/main/java/anticope/rejects/utils/server/LegacyServerPinger.java +++ b/src/main/java/anticope/rejects/utils/server/LegacyServerPinger.java @@ -18,7 +18,7 @@ public void ping(String ip) { } public void ping(String ip, int port) { - server = new ServerInfo("", ip + ":" + port, false); + server = new ServerInfo("", ip + ":" + port, ServerInfo.ServerType.OTHER); new Thread(() -> pingInCurrentThread(ip, port), "Server Pinger #" + threadNumber.incrementAndGet()).start(); diff --git a/src/main/java/anticope/rejects/utils/server/ServerListPinger.java b/src/main/java/anticope/rejects/utils/server/ServerListPinger.java index a99152b4..ffc7df80 100644 --- a/src/main/java/anticope/rejects/utils/server/ServerListPinger.java +++ b/src/main/java/anticope/rejects/utils/server/ServerListPinger.java @@ -16,12 +16,13 @@ import net.minecraft.network.packet.c2s.handshake.HandshakeC2SPacket; import net.minecraft.network.packet.c2s.query.QueryPingC2SPacket; import net.minecraft.network.packet.c2s.query.QueryRequestC2SPacket; -import net.minecraft.network.packet.s2c.query.QueryPongS2CPacket; +import net.minecraft.network.packet.s2c.query.PingResultS2CPacket; import net.minecraft.network.packet.s2c.query.QueryResponseS2CPacket; import net.minecraft.server.ServerMetadata; import net.minecraft.text.Text; import net.minecraft.util.Util; import net.minecraft.util.math.MathHelper; +import net.minecraft.util.profiler.PerformanceLog; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -74,13 +75,13 @@ public void run() { notifyDisconnectListeners(); } }, 20000); - final ClientConnection clientConnection = ClientConnection.connect(new InetSocketAddress(InetAddress.getByName(serverAddress.getAddress()), serverAddress.getPort()), false); + final ClientConnection clientConnection = ClientConnection.connect(new InetSocketAddress(InetAddress.getByName(serverAddress.getAddress()), serverAddress.getPort()), false, (PerformanceLog) null); failedToConnect = false; this.clientConnections.add(clientConnection); entry.label = "multiplayer.status.pinging"; entry.ping = -1L; entry.playerListSummary = null; - clientConnection.setPacketListener(new ClientQueryPacketListener() { + ClientQueryPacketListener clientQueryPacketListener = new ClientQueryPacketListener() { private boolean sentQuery; private boolean received; private long startTime; @@ -135,7 +136,7 @@ public void onResponse(QueryResponseS2CPacket packet) { } } - public void onPong(QueryPongS2CPacket packet) { + public void onPingResult(PingResultS2CPacket packet) { long l = this.startTime; long m = Util.getMeasuringTimeMs(); entry.ping = m - l; @@ -157,10 +158,12 @@ public void onDisconnected(Text reason) { public boolean isConnectionOpen() { return clientConnection.isOpen(); } - }); + }; + + clientConnection.setPacketListener(clientQueryPacketListener); try { - clientConnection.send(new HandshakeC2SPacket(serverAddress.getAddress(), serverAddress.getPort(), NetworkState.STATUS)); + clientConnection.connect(serverAddress.getAddress(), serverAddress.getPort(), clientQueryPacketListener); clientConnection.send(new QueryRequestC2SPacket()); } catch (Throwable var8) { LOGGER.error("Failed to ping server {}", serverAddress, var8); diff --git a/src/main/resources/meteor-rejects.mixins.json b/src/main/resources/meteor-rejects.mixins.json index dfb50dbf..a349ba07 100644 --- a/src/main/resources/meteor-rejects.mixins.json +++ b/src/main/resources/meteor-rejects.mixins.json @@ -3,6 +3,7 @@ "package": "anticope.rejects.mixin", "compatibilityLevel": "JAVA_16", "client": [ + "ClientCommonNetwokHandlerMixin", "ClientPlayerInteractionManagerMixin", "ClientPlayNetworkHandlerMixin", "CommandSuggestorMixin", From fb2be95eb57e97833c452aeb13d9fa5828121542 Mon Sep 17 00:00:00 2001 From: Spongecade Date: Thu, 5 Oct 2023 16:05:09 -0500 Subject: [PATCH 2/2] Update Minecraft wiki link to new domain --- src/main/java/anticope/rejects/utils/seeds/Seeds.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/anticope/rejects/utils/seeds/Seeds.java b/src/main/java/anticope/rejects/utils/seeds/Seeds.java index 6e6ca616..4f561122 100644 --- a/src/main/java/anticope/rejects/utils/seeds/Seeds.java +++ b/src/main/java/anticope/rejects/utils/seeds/Seeds.java @@ -88,7 +88,7 @@ public Seeds fromTag(NbtCompound tag) { return this; } - // https://minecraft.fandom.com/wiki/Seed_(level_generation)#Java_Edition + // https://minecraft.wiki/w/Seed_(level_generation)#Java_Edition private static long toSeed(String inSeed) { try { return Long.parseLong(inSeed);