diff --git a/loader/core/src/main/java/pl/skidam/automodpack_loader_core/client/ModpackUpdater.java b/loader/core/src/main/java/pl/skidam/automodpack_loader_core/client/ModpackUpdater.java index 2875d7d3..6e2d8f86 100644 --- a/loader/core/src/main/java/pl/skidam/automodpack_loader_core/client/ModpackUpdater.java +++ b/loader/core/src/main/java/pl/skidam/automodpack_loader_core/client/ModpackUpdater.java @@ -321,9 +321,7 @@ public void ModpackUpdaterMain(String link, Path modpackDir, Path modpackContent Path cwd = Path.of(System.getProperty("user.dir")); CustomFileUtils.deleteDummyFiles(cwd, serverModpackContent.list); - String modpackName = modpackDir.getFileName().toString(); - ModpackUtils.addModpackToList(modpackName, link); - ModpackUtils.selectModpack(modpackDir); + ModpackUtils.selectModpack(modpackDir, link); if (preload) { LOGGER.info("Update completed! Took: {}ms", System.currentTimeMillis() - start); diff --git a/loader/core/src/main/java/pl/skidam/automodpack_loader_core/client/ModpackUtils.java b/loader/core/src/main/java/pl/skidam/automodpack_loader_core/client/ModpackUtils.java index 76e6c2a0..0d499fac 100644 --- a/loader/core/src/main/java/pl/skidam/automodpack_loader_core/client/ModpackUtils.java +++ b/loader/core/src/main/java/pl/skidam/automodpack_loader_core/client/ModpackUtils.java @@ -245,9 +245,8 @@ public static Path renameModpackDir(Jsons.ModpackContentFields serverModpackCont try { Files.move(modpackDir, newModpackDir, StandardCopyOption.REPLACE_EXISTING); - addModpackToList(newModpackDir.getFileName().toString(), installedModpackLink); removeModpackFromList(installedModpackName); - selectModpack(newModpackDir); + selectModpack(newModpackDir, installedModpackLink); LOGGER.info("Changed modpack name of {} to {}", modpackDir.getFileName().toString(), serverModpackName); @@ -261,14 +260,14 @@ public static Path renameModpackDir(Jsons.ModpackContentFields serverModpackCont } // Returns true if value changed - public static boolean selectModpack(Path modpackDir) { - String modpackToSelect = modpackDir.getFileName().toString(); + public static boolean selectModpack(Path modpackDirToSelect, String modpackLinkToSelect) { + String modpackToSelect = modpackDirToSelect.getFileName().toString(); String selectedModpack = clientConfig.selectedModpack; - String modpackToSelectLink = clientConfig.installedModpacks.get(modpackToSelect); String selectedModpackLink = clientConfig.installedModpacks.get(selectedModpack); clientConfig.selectedModpack = modpackToSelect; ConfigTools.save(clientConfigFile, clientConfig); - return !Objects.equals(modpackToSelect, selectedModpack) || !Objects.equals(modpackToSelectLink, selectedModpackLink); + ModpackUtils.addModpackToList(modpackToSelect, modpackLinkToSelect); + return !Objects.equals(modpackToSelect, selectedModpack) || !Objects.equals(modpackLinkToSelect, selectedModpackLink); } public static void removeModpackFromList(String modpackName) { @@ -289,15 +288,9 @@ public static void addModpackToList(String modpackName, String link) { return; } - if (clientConfig.installedModpacks == null) { - Map modpacks = new HashMap<>(); - modpacks.put(modpackName, link); - clientConfig.installedModpacks = modpacks; - } else if (!clientConfig.installedModpacks.containsKey(modpackName)) { - Map modpacks = new HashMap<>(clientConfig.installedModpacks); - modpacks.put(modpackName, link); - clientConfig.installedModpacks = modpacks; - } + Map modpacks = new HashMap<>(clientConfig.installedModpacks); + modpacks.put(modpackName, link); + clientConfig.installedModpacks = modpacks; ConfigTools.save(clientConfigFile, clientConfig); } diff --git a/src/main/java/pl/skidam/automodpack/client/ui/ChangelogScreen.java b/src/main/java/pl/skidam/automodpack/client/ui/ChangelogScreen.java index 05ed6c84..102bcbfc 100644 --- a/src/main/java/pl/skidam/automodpack/client/ui/ChangelogScreen.java +++ b/src/main/java/pl/skidam/automodpack/client/ui/ChangelogScreen.java @@ -145,11 +145,11 @@ private void updateChangelogs() { } // remove method is only available in 1.17+ -//#if MC >= 1170 +/*? if >=1.17 {*/ this.remove(this.listEntryWidget); this.remove(this.backButton); this.remove(this.openMainPageButton); -//#endif +/*?}*/ this.listEntryWidget = new ListEntryWidget(formattedChanges, this.client, this.width, this.height, 48, this.height - 50, 20); // 38 diff --git a/src/main/java/pl/skidam/automodpack/client/ui/widget/ListEntryWidget.java b/src/main/java/pl/skidam/automodpack/client/ui/widget/ListEntryWidget.java index 424ac81a..4077f06e 100644 --- a/src/main/java/pl/skidam/automodpack/client/ui/widget/ListEntryWidget.java +++ b/src/main/java/pl/skidam/automodpack/client/ui/widget/ListEntryWidget.java @@ -53,7 +53,7 @@ public ListEntryWidget(Map changelogs, MinecraftClient client, i } /*? if <=1.20.2 {*/ - /*public void render(/^? if <1.20 {^/ MatrixStack /^?} else {^/ /^DrawContext ^//^?}^/ matrices, int mouseX, int mouseY, float delta) { + /*public void render(/^? if <1.20 {^/ /^MatrixStack ^//^?} else {^/ DrawContext /^?}^/ matrices, int mouseX, int mouseY, float delta) { super.render(matrices, mouseX, mouseY, delta); } *//*?}*/ diff --git a/src/main/java/pl/skidam/automodpack/init/NeoForgeInit.java b/src/main/java/pl/skidam/automodpack/init/NeoForgeInit.java index e1e965c3..4bb837a6 100644 --- a/src/main/java/pl/skidam/automodpack/init/NeoForgeInit.java +++ b/src/main/java/pl/skidam/automodpack/init/NeoForgeInit.java @@ -2,8 +2,8 @@ /*? if neoforge {*/ /*/^? if >1.20.5 {^/ -/^import net.neoforged.fml.common.EventBusSubscriber; -^//^?}^/ +import net.neoforged.fml.common.EventBusSubscriber; +/^?}^/ import pl.skidam.automodpack.client.ScreenImpl; import pl.skidam.automodpack.client.audio.AudioManager; import pl.skidam.automodpack.modpack.Commands; @@ -41,10 +41,10 @@ public NeoForgeInit(IEventBus eventBus) { } /^? if >1.20.5 {^/ - /^@EventBusSubscriber(modid = MOD_ID) -^//^?} else {^/ - @Mod.EventBusSubscriber(modid = MOD_ID) -/^?}^/ + @EventBusSubscriber(modid = MOD_ID) +/^?} else {^/ + /^@Mod.EventBusSubscriber(modid = MOD_ID) +^//^?}^/ public static class events { @SubscribeEvent public static void onCommandsRegister(RegisterCommandsEvent event) { diff --git a/src/main/java/pl/skidam/automodpack/networking/ModPackets.java b/src/main/java/pl/skidam/automodpack/networking/ModPackets.java index 13419b94..f5556500 100644 --- a/src/main/java/pl/skidam/automodpack/networking/ModPackets.java +++ b/src/main/java/pl/skidam/automodpack/networking/ModPackets.java @@ -41,7 +41,7 @@ public static void onReady(ServerLoginNetworkHandler handler, MinecraftServer se HandshakePacket handshakePacket = new HandshakePacket(serverConfig.acceptedLoaders, AM_VERSION, MC_VERSION); String jsonHandshakePacket = handshakePacket.toJson(); - buf.writeString(jsonHandshakePacket, 32767); + buf.writeString(jsonHandshakePacket, Short.MAX_VALUE); sender.sendPacket(HANDSHAKE, buf); })); } diff --git a/src/main/java/pl/skidam/automodpack/networking/PayloadHelper.java b/src/main/java/pl/skidam/automodpack/networking/PayloadHelper.java index 629228a5..664a6a8c 100644 --- a/src/main/java/pl/skidam/automodpack/networking/PayloadHelper.java +++ b/src/main/java/pl/skidam/automodpack/networking/PayloadHelper.java @@ -1,6 +1,6 @@ package pl.skidam.automodpack.networking; -//#if MC >= 1202 +/*? if >=1.20.2 {*/ import io.netty.buffer.Unpooled; import net.minecraft.network.PacketByteBuf; @@ -24,4 +24,4 @@ private static void assertSize(PacketByteBuf buf, int maxSize) { } } } -//#endif \ No newline at end of file +/*?} else {*/ \ No newline at end of file diff --git a/src/main/java/pl/skidam/automodpack/networking/client/ClientLoginNetworkAddon.java b/src/main/java/pl/skidam/automodpack/networking/client/ClientLoginNetworkAddon.java index 972860db..80cda010 100644 --- a/src/main/java/pl/skidam/automodpack/networking/client/ClientLoginNetworkAddon.java +++ b/src/main/java/pl/skidam/automodpack/networking/client/ClientLoginNetworkAddon.java @@ -50,7 +50,6 @@ private boolean handlePacket(int queryId, Identifier channelName, PacketByteBuf future.thenAccept(resultBuf -> { LoginQueryResponseC2SPacket packet = new LoginQueryResponseC2SPacket(queryId, /*? if <1.20.2 {*/ /*resultBuf *//*?} else {*/ new LoginResponsePayload(channelName, resultBuf) /*?}*/); ((ClientLoginNetworkHandlerAccessor) this.handler).getConnection().send(packet); - ((ClientLoginNetworkHandlerAccessor) this.handler).getConnection().send(packet); }); } catch (Throwable e) { LOGGER.error("Encountered exception while handling in channel with name \"{}\"", channelName, e); diff --git a/src/main/java/pl/skidam/automodpack/networking/packet/DataC2SPacket.java b/src/main/java/pl/skidam/automodpack/networking/packet/DataC2SPacket.java index 1c9fd020..2926d328 100644 --- a/src/main/java/pl/skidam/automodpack/networking/packet/DataC2SPacket.java +++ b/src/main/java/pl/skidam/automodpack/networking/packet/DataC2SPacket.java @@ -22,7 +22,7 @@ public class DataC2SPacket { public static CompletableFuture receive(MinecraftClient minecraftClient, ClientLoginNetworkHandler handler, PacketByteBuf buf) { - String serverResponse = buf.readString(32767); + String serverResponse = buf.readString(Short.MAX_VALUE); DataPacket dataPacket = DataPacket.fromJson(serverResponse); String link = dataPacket.link; @@ -50,12 +50,13 @@ public static CompletableFuture receive(MinecraftClient minecraft LOGGER.info("Received link packet from server! {}", link); } + // TODO: dont require/hardcode this link = link + "/automodpack/"; Path modpackDir = ModpackUtils.getModpackPath(link, dataPacket.modpackName); - boolean selectedModpackChanged = ModpackUtils.selectModpack(modpackDir); + boolean selectedModpackChanged = ModpackUtils.selectModpack(modpackDir, link); - Boolean reply = null; + Boolean needsDisconnecting = null; var optionalServerModpackContent = ModpackUtils.requestServerModpackContent(link); @@ -65,24 +66,19 @@ public static CompletableFuture receive(MinecraftClient minecraft if (update) { disconnectImmediately(handler); new ModpackUpdater().startModpackUpdate(optionalServerModpackContent.get(), link, modpackDir); - reply = true; + needsDisconnecting = true; } else if (selectedModpackChanged) { disconnectImmediately(handler); - - // select modpack and restart - String modpackName = modpackDir.getFileName().toString(); - ModpackUtils.addModpackToList(modpackName, link); - ModpackUtils.selectModpack(modpackDir); - + // Its needed since newly selected modpack may not be loaded new ReLauncher(modpackDir, UpdateType.SELECT).restart(false); - reply = true; + needsDisconnecting = true; } else { - reply = false; + needsDisconnecting = false; } } PacketByteBuf response = new PacketByteBuf(Unpooled.buffer()); - response.writeString(String.valueOf(reply), 32767); + response.writeString(String.valueOf(needsDisconnecting), Short.MAX_VALUE); return CompletableFuture.completedFuture(response); diff --git a/src/main/java/pl/skidam/automodpack/networking/packet/DataS2CPacket.java b/src/main/java/pl/skidam/automodpack/networking/packet/DataS2CPacket.java index 144436b9..f8a3264e 100644 --- a/src/main/java/pl/skidam/automodpack/networking/packet/DataS2CPacket.java +++ b/src/main/java/pl/skidam/automodpack/networking/packet/DataS2CPacket.java @@ -20,7 +20,7 @@ public class DataS2CPacket { public static void receive(MinecraftServer server, ServerLoginNetworkHandler handler, boolean understood, PacketByteBuf buf, ServerLoginNetworking.LoginSynchronizer loginSynchronizer, PacketSender sender) { GameProfile profile = ((ServerLoginNetworkHandlerAccessor) handler).getGameProfile(); - String clientHasUpdate = buf.readString(32767); + String clientHasUpdate = buf.readString(Short.MAX_VALUE); if ("true".equals(clientHasUpdate)) { // disconnect LOGGER.warn("{} has not installed modpack", profile.getName()); diff --git a/src/main/java/pl/skidam/automodpack/networking/packet/HandshakeC2SPacket.java b/src/main/java/pl/skidam/automodpack/networking/packet/HandshakeC2SPacket.java index 6ec09900..78efdfe7 100644 --- a/src/main/java/pl/skidam/automodpack/networking/packet/HandshakeC2SPacket.java +++ b/src/main/java/pl/skidam/automodpack/networking/packet/HandshakeC2SPacket.java @@ -19,7 +19,7 @@ public class HandshakeC2SPacket { public static CompletableFuture receive(MinecraftClient client, ClientLoginNetworkHandler handler, PacketByteBuf buf) { - String serverResponse = buf.readString(32767); + String serverResponse = buf.readString(Short.MAX_VALUE); HandshakePacket serverHandshakePacket = HandshakePacket.fromJson(serverResponse); @@ -27,7 +27,7 @@ public static CompletableFuture receive(MinecraftClient client, C PacketByteBuf outBuf = new PacketByteBuf(Unpooled.buffer()); HandshakePacket clientHandshakePacket = new HandshakePacket(List.of(loader), AM_VERSION, MC_VERSION); - outBuf.writeString(clientHandshakePacket.toJson(), 32767); + outBuf.writeString(clientHandshakePacket.toJson(), Short.MAX_VALUE); if (serverHandshakePacket.equals(clientHandshakePacket) || (serverHandshakePacket.loaders.contains(loader) && serverHandshakePacket.amVersion.equals(AM_VERSION))) { LOGGER.info("Versions match " + serverHandshakePacket.amVersion); diff --git a/src/main/java/pl/skidam/automodpack/networking/packet/HandshakeS2CPacket.java b/src/main/java/pl/skidam/automodpack/networking/packet/HandshakeS2CPacket.java index 23b34893..2c249c1b 100644 --- a/src/main/java/pl/skidam/automodpack/networking/packet/HandshakeS2CPacket.java +++ b/src/main/java/pl/skidam/automodpack/networking/packet/HandshakeS2CPacket.java @@ -57,7 +57,7 @@ public static void receive(MinecraftServer server, ServerLoginNetworkHandler han public static void handleHandshake(ClientConnection connection, String playerName, PacketByteBuf buf, PacketSender packetSender) { LOGGER.info("{} has installed AutoModpack.", playerName); - String clientResponse = buf.readString(32767); + String clientResponse = buf.readString(Short.MAX_VALUE); HandshakePacket clientHandshakePacket = HandshakePacket.fromJson(clientResponse); boolean isAcceptedLoader = false; @@ -125,7 +125,7 @@ public static void handleHandshake(ClientConnection connection, String playerNam String packetContentJson = dataPacket.toJson(); PacketByteBuf outBuf = new PacketByteBuf(Unpooled.buffer()); - outBuf.writeString(packetContentJson, 32767); + outBuf.writeString(packetContentJson, Short.MAX_VALUE); packetSender.sendPacket(DATA, outBuf); } diff --git a/src/main/java/pl/skidam/automodpack/networking/server/LoginRequestPayload.java b/src/main/java/pl/skidam/automodpack/networking/server/LoginRequestPayload.java index 6e2844bf..993bfdde 100644 --- a/src/main/java/pl/skidam/automodpack/networking/server/LoginRequestPayload.java +++ b/src/main/java/pl/skidam/automodpack/networking/server/LoginRequestPayload.java @@ -3,11 +3,11 @@ import net.minecraft.network.PacketByteBuf; import net.minecraft.util.Identifier; -///*? if <1.20.2 {*//* -//public record LoginRequestPayload(Identifier id, PacketByteBuf data) { } -//*//*}*/ +/*? if <1.20.2 {*/ +/*public record LoginRequestPayload(Identifier id, PacketByteBuf data) { } +*//*?}*/ -/*? if >=1.20.2 {*/ +/*? if >1.20.1 {*/ import net.minecraft.network.packet.s2c.login.LoginQueryRequestPayload; public record LoginRequestPayload(Identifier id, PacketByteBuf data) implements LoginQueryRequestPayload { diff --git a/src/main/java/pl/skidam/automodpack/networking/server/ServerLoginNetworking.java b/src/main/java/pl/skidam/automodpack/networking/server/ServerLoginNetworking.java index f291c25e..3a92a108 100644 --- a/src/main/java/pl/skidam/automodpack/networking/server/ServerLoginNetworking.java +++ b/src/main/java/pl/skidam/automodpack/networking/server/ServerLoginNetworking.java @@ -77,7 +77,7 @@ public interface LoginSynchronizer { * return; * } * - * String checkMessage = buf.readString(32767); + * String checkMessage = buf.readString(Short.MAX_VALUE); * * // Just send the CompletableFuture returned by the server's submit method * synchronizer.waitFor(server.submit(() -> {