From 055adfec0d98367e86088a6fa3b6f72a9f990147 Mon Sep 17 00:00:00 2001 From: acrylic-style Date: Fri, 19 Jul 2024 15:23:19 +0900 Subject: [PATCH] more fixes --- Blueberry-API/build.gradle.kts | 11 ++++ .../common/util/DiscordRPCTaskExecutor.java | 1 + .../blueberrymc/server/main/ServerMain.java | 10 +++ .../net/minecraft/launchwrapper/Launch.java | 5 +- MagmaCube-Patches/0001-decompile-fix.patch | 65 ++++++++++++++++-- MagmaCube-Patches/0005-Mods-support.patch | 24 +++++-- scripts/files/version.json | 66 ++++++++++++------- 7 files changed, 147 insertions(+), 35 deletions(-) diff --git a/Blueberry-API/build.gradle.kts b/Blueberry-API/build.gradle.kts index 509d9bf9..e4767327 100644 --- a/Blueberry-API/build.gradle.kts +++ b/Blueberry-API/build.gradle.kts @@ -1,4 +1,6 @@ import net.blueberrymc.gradle.buildSrc.constants.* +import org.gradle.jvm.component.internal.DefaultJvmSoftwareComponent +import org.gradle.jvm.component.internal.JvmSoftwareComponentInternal plugins { id("fabric-loom") version "1.7-SNAPSHOT" @@ -54,6 +56,12 @@ publishing { ) } } + + publications { + filterIsInstance().forEach { + it.artifact(tasks.jar.get()) + } + } } tasks { @@ -71,5 +79,8 @@ tasks { // restore default configuration destinationDirectory.set(destinationDirectory.get().asFile.parentFile.resolve("libs")) archiveClassifier.set("") + doLast { + println(project.components["java"]) + } } } diff --git a/Blueberry-API/src/main/java/net/blueberrymc/common/util/DiscordRPCTaskExecutor.java b/Blueberry-API/src/main/java/net/blueberrymc/common/util/DiscordRPCTaskExecutor.java index cc6165c3..06577fb1 100644 --- a/Blueberry-API/src/main/java/net/blueberrymc/common/util/DiscordRPCTaskExecutor.java +++ b/Blueberry-API/src/main/java/net/blueberrymc/common/util/DiscordRPCTaskExecutor.java @@ -373,6 +373,7 @@ public static void shutdownNow() { thread = null; init = false; LOGGER.info("Successfully disconnected from Discord."); + Thread.dumpStack(); } catch (Throwable ignore) {} } diff --git a/Blueberry-API/src/main/java/net/blueberrymc/server/main/ServerMain.java b/Blueberry-API/src/main/java/net/blueberrymc/server/main/ServerMain.java index db5ead4d..f563eebb 100644 --- a/Blueberry-API/src/main/java/net/blueberrymc/server/main/ServerMain.java +++ b/Blueberry-API/src/main/java/net/blueberrymc/server/main/ServerMain.java @@ -25,6 +25,7 @@ import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.concurrent.atomic.AtomicInteger; public class ServerMain { private static final Logger LOGGER = LogManager.getLogger(); @@ -97,6 +98,15 @@ public static void launch(@NotNull Side side, @NotNull List arguments, @ blackboard.put("universe", universe); blackboard.put("debug", set.has("debug")); BlueberryPreBootstrap.preBootstrap(side, universe); + AtomicInteger minecraftCount = new AtomicInteger(); + NativeUtil.registerClassLoadHook((classLoader, s, aClass, protectionDomain, bytes) -> { + if (minecraftCount.get() < 5 && s.startsWith("net/minecraft")) { + LOGGER.info("{} loaded by {} / {}", s, classLoader, (classLoader == null ? "null" : classLoader).getClass()); + Thread.dumpStack(); + minecraftCount.incrementAndGet(); + } + return null; + }); Launch.main(newArgs); } } diff --git a/Blueberry-API/src/main/java/net/minecraft/launchwrapper/Launch.java b/Blueberry-API/src/main/java/net/minecraft/launchwrapper/Launch.java index 80f56f43..ed467b12 100644 --- a/Blueberry-API/src/main/java/net/minecraft/launchwrapper/Launch.java +++ b/Blueberry-API/src/main/java/net/minecraft/launchwrapper/Launch.java @@ -161,8 +161,9 @@ private void launch(String[] args) { String launchTarget = Objects.requireNonNull(primaryTweaker).getLaunchTarget(); Class clazz; try { - clazz = Class.forName(launchTarget, false, classLoader); - } catch (Exception ignored) { + clazz = classLoader.findClass(launchTarget);//Class.forName(launchTarget, false, classLoader); + } catch (Exception e) { + LOGGER.warn("Failed to load class from LaunchClassLoader", e); clazz = Class.forName(launchTarget); } LOGGER.info("Loaded class {} from {} ({})", clazz.getTypeName(), ClasspathUtil.getClasspath(clazz), clazz.getClassLoader()); diff --git a/MagmaCube-Patches/0001-decompile-fix.patch b/MagmaCube-Patches/0001-decompile-fix.patch index f33e0331..92f2f31a 100644 --- a/MagmaCube-Patches/0001-decompile-fix.patch +++ b/MagmaCube-Patches/0001-decompile-fix.patch @@ -1030,9 +1030,33 @@ index 254da406433ee2229284cc8d30c326bed4589074..bf97c9ed6142be9237f9c115f41be251 } diff --git a/src/main/java/net/minecraft/core/BlockPos.java b/src/main/java/net/minecraft/core/BlockPos.java -index 625898f0aa8efef5ecf96e81a3aead81133042bd..5de50377686dfc3ee61a67adabec38b5008dbfaa 100644 +index 625898f0aa8efef5ecf96e81a3aead81133042bd..47989e2b424879993303a6aa676e95e96cb8b945 100644 --- a/src/main/java/net/minecraft/core/BlockPos.java +++ b/src/main/java/net/minecraft/core/BlockPos.java +@@ -378,10 +378,10 @@ public class BlockPos extends Vec3i { + return StreamSupport.stream(betweenClosed(i, j, k, l, m, n).spliterator(), false); + } + +- public static Iterable betweenClosed(int i, int j, int k, int l, int m, int n) { +- int o = l - i + 1; +- int p = m - j + 1; +- int q = n - k + 1; ++ public static Iterable betweenClosed(int startX, int startY, int startZ, int endX, int endY, int endZ) { ++ int o = endX - startX + 1; ++ int p = endY - startY + 1; ++ int q = endZ - startZ + 1; + int r = o * p * q; + return () -> new AbstractIterator() { + private final BlockPos.MutableBlockPos cursor = new BlockPos.MutableBlockPos(); +@@ -396,7 +396,7 @@ public class BlockPos extends Vec3i { + int k = j % p; + int l = j / p; + this.index++; +- return this.cursor.set(i + i, j + k, k + l); ++ return this.cursor.set(startX + i, startY + k, startZ + l); + } + } + }; @@ -453,7 +453,7 @@ public class BlockPos extends Vec3i { } @@ -1519,6 +1543,27 @@ index 46863b597998600653f5cf9418ec4e581facfcf9..299662c5564c181dbf360880e91618a0 } else { List list = Lists.newArrayList(collection); list.sort(Comparable::compareTo); +diff --git a/src/main/java/net/minecraft/network/chat/FormattedText.java b/src/main/java/net/minecraft/network/chat/FormattedText.java +index 112e3f3965ab2f297876edb2c97ec1d4c5ef8445..dbcbad3634b1a6ca1e6d47f978cc75cb024d3595 100644 +--- a/src/main/java/net/minecraft/network/chat/FormattedText.java ++++ b/src/main/java/net/minecraft/network/chat/FormattedText.java +@@ -38,6 +38,7 @@ public interface FormattedText { + } + + static FormattedText of(String string, Style style) { ++ Style param = style; + return new FormattedText() { + @Override + public Optional visit(FormattedText.ContentConsumer contentConsumer) { +@@ -46,7 +47,7 @@ public interface FormattedText { + + @Override + public Optional visit(FormattedText.StyledContentConsumer styledContentConsumer, Style style) { +- return styledContentConsumer.accept(style.applyTo(style), string); ++ return styledContentConsumer.accept(param.applyTo(style), string); + } + }; + } diff --git a/src/main/java/net/minecraft/network/chat/LastSeenMessages.java b/src/main/java/net/minecraft/network/chat/LastSeenMessages.java index 85a978c2e67022e5d98fa0fa6de93f175dd178db..f0580dc1857d6fc9f73f418a999b2958d7abdc31 100644 --- a/src/main/java/net/minecraft/network/chat/LastSeenMessages.java @@ -1565,19 +1610,29 @@ index 6a41e7bac4a7fc17c861fce344cf5892f1661453..b37880399072994c26c9dae9ff562d21 V object2 = streamCodec2.decode(byteBuf); map.put(object, object2); diff --git a/src/main/java/net/minecraft/network/codec/StreamCodec.java b/src/main/java/net/minecraft/network/codec/StreamCodec.java -index 07a552f31227981ac60ed460f8ffa679ae065e50..17a867f1b4b1cb9f5c8b4df060b55dd2e42286b5 100644 +index 07a552f31227981ac60ed460f8ffa679ae065e50..ea6d67c9d9dc33aa47ccf051b43279858dba7176 100644 --- a/src/main/java/net/minecraft/network/codec/StreamCodec.java +++ b/src/main/java/net/minecraft/network/codec/StreamCodec.java -@@ -44,7 +44,7 @@ public interface StreamCodec extends StreamDecoder, StreamEncoder extends StreamDecoder, StreamEncoder StreamCodec unit(V object) { ++ V param = object; return new StreamCodec() { @Override public V decode(B object) { - return object; -+ return (V) object; ++ return param; } @Override -@@ -283,18 +283,18 @@ public interface StreamCodec extends StreamDecoder, StreamEncoder extends StreamDecoder, StreamEncoder= p && n <= p + 10 && o >= j && o <= j + 8) { this.screen.setTooltipForNextRenderPass(this.statusIconTooltip); @@ -380,13 +392,13 @@ index c4f7ad8de9b05716ce9782e15ec24123f5b7c167..f25c75bef47f6f2f2908d6f69a7e73d9 + } else if (serverData.serverType != null && n >= p - 18 && n <= p - 5 && o >= 0 && o <= 22) { + String text = serverData.serverType.getBlueberryText().getContents(); + if (text.contains("%d")) text = String.format(text, serverData.modsCount); -+ this.screen.setTooltipForNextRenderPass(java.util.Collections.singletonList((FormattedCharSequence) Component.literal(text))); ++ this.screen.setTooltipForNextRenderPass(java.util.Collections.singletonList(FormattedCharSequence.forward(text, Style.EMPTY))); + // Blueberry end } else if (this.onlinePlayersTooltip != null && n >= r && n <= r + q && o >= j && o <= j - 1 + 9) { this.screen.setTooltipForNextRenderPass(Lists.transform(this.onlinePlayersTooltip, Component::getVisualOrderText)); } diff --git a/src/main/java/net/minecraft/client/main/Main.java b/src/main/java/net/minecraft/client/main/Main.java -index 251c4dda28c48b8c38480e44a8f3ee19268b0e1f..e4e864b97d6de2df587703de9a47f28e0f349b5e 100644 +index 251c4dda28c48b8c38480e44a8f3ee19268b0e1f..3a69cf50b1464c2d7da504fdfbec50f3d4e9b81f 100644 --- a/src/main/java/net/minecraft/client/main/Main.java +++ b/src/main/java/net/minecraft/client/main/Main.java @@ -57,8 +57,8 @@ public class Main { @@ -406,7 +418,7 @@ index 251c4dda28c48b8c38480e44a8f3ee19268b0e1f..e4e864b97d6de2df587703de9a47f28e List list = optionSet.valuesOf(optionSpec28); + // Blueberry start + net.blueberrymc.common.Blueberry.preBootstrap(); -+ net.blueberrymc.common.Blueberry.bootstrap(new net.blueberrymc.server.BlueberryServerImpl()); ++ net.blueberrymc.common.Blueberry.bootstrap(new net.blueberrymc.client.BlueberryClientImpl()); + SharedConstants.tryDetectVersion(); + SharedConstants.enableDataFixerOptimizations(); + // Blueberry end diff --git a/scripts/files/version.json b/scripts/files/version.json index 3e83dd8e..1c2b3186 100644 --- a/scripts/files/version.json +++ b/scripts/files/version.json @@ -162,28 +162,6 @@ }, "assets": "16", "complianceLevel": 1, - "downloads": { - "client": { - "sha1": "05b6f1c6b46a29d6ea82b4e0d42190e42402030f", - "size": 26565641, - "url": "https://piston-data.mojang.com/v1/objects/05b6f1c6b46a29d6ea82b4e0d42190e42402030f/client.jar" - }, - "client_mappings": { - "sha1": "de46c8f33d7826eb83e8ef0e9f80dc1f08cb9498", - "size": 9422442, - "url": "https://piston-data.mojang.com/v1/objects/de46c8f33d7826eb83e8ef0e9f80dc1f08cb9498/client.txt" - }, - "server": { - "sha1": "145ff0858209bcfc164859ba735d4199aafa1eea", - "size": 51420480, - "url": "https://piston-data.mojang.com/v1/objects/145ff0858209bcfc164859ba735d4199aafa1eea/server.jar" - }, - "server_mappings": { - "sha1": "9e96100f573a46ef44caab3e716d5eb974594bb7", - "size": 7283803, - "url": "https://piston-data.mojang.com/v1/objects/9e96100f573a46ef44caab3e716d5eb974594bb7/server.txt" - } - }, "javaVersion": { "component": "java-runtime-delta", "majorVersion": 21 @@ -1663,6 +1641,50 @@ } }, "name": "org.slf4j:slf4j-api:2.0.9" + }, + { + "downloads": { + "artifact": { + "path": "org/ow2/asm/asm/9.7/asm-9.7.jar", + "sha1": "073d7b3086e14beb604ced229c302feff6449723", + "size": 125428, + "url": "https://repository.ow2.org/nexus/content/repositories/releases/org/ow2/asm/asm/9.7/asm-9.7.jar" + } + }, + "name": "org.ow2.asm:asm:9.7" + }, + { + "downloads": { + "artifact": { + "path": "org/ow2/asm/asm-commons/9.7/asm-commons-9.7.jar", + "sha1": "e86dda4696d3c185fcc95d8d311904e7ce38a53f", + "size": 73426, + "url": "https://repository.ow2.org/nexus/content/repositories/releases/org/ow2/asm/asm-commons/9.7/asm-commons-9.7.jar" + } + }, + "name": "org.ow2.asm:asm-commons:9.7" + }, + { + "downloads": { + "artifact": { + "path": "org/ow2/asm/asm-tree/9.7/asm-tree-9.7.jar", + "sha1": "e446a17b175bfb733b87c5c2560ccb4e57d69f1a", + "size": 51934, + "url": "https://repository.ow2.org/nexus/content/repositories/releases/org/ow2/asm/asm-tree/9.7/asm-tree-9.7.jar" + } + }, + "name": "org.ow2.asm:asm-tree:9.7" + }, + { + "downloads": { + "artifact": { + "path": "org/yaml/snakeyaml/1.33/snakeyaml-1.33.jar", + "sha1": "2cd0a87ff7df953f810c344bdf2fe3340b954c69", + "size": 331715, + "url": "https://repo.maven.apache.org/maven2/org/yaml/snakeyaml/1.33/snakeyaml-1.33.jar" + } + }, + "name": "org.yaml:snakeyaml:1.33" } ], "logging": {