diff --git a/TestFabricMod/build.gradle b/TestFabricMod/build.gradle index 9ca8524..cdad498 100644 --- a/TestFabricMod/build.gradle +++ b/TestFabricMod/build.gradle @@ -72,7 +72,7 @@ publishing { java { toolchain { - languageVersion.set(JavaLanguageVersion.of(17)) + languageVersion.set(JavaLanguageVersion.of(21)) } withSourcesJar() } \ No newline at end of file diff --git a/TestFabricMod/src/main/resources/nec_testmod.mixins.json b/TestFabricMod/src/main/resources/nec_testmod.mixins.json index 3f7868a..bc4d383 100644 --- a/TestFabricMod/src/main/resources/nec_testmod.mixins.json +++ b/TestFabricMod/src/main/resources/nec_testmod.mixins.json @@ -2,7 +2,7 @@ "required": true, "minVersion": "0.8", "package": "io.github.natanfudge.nectest.mixin", - "compatibilityLevel": "JAVA_17", + "compatibilityLevel": "JAVA_21", "mixins": [ "MixinMinecraftServer" ], diff --git a/build.gradle b/build.gradle index 7026f01..524c1d6 100644 --- a/build.gradle +++ b/build.gradle @@ -60,7 +60,7 @@ allprojects { task publishAll { group = "upload" dependsOn("fabric:publishFabric") - dependsOn("forge:publishForge") +// dependsOn("forge:publishForge") } task addTestFabricMod(type: Copy) { @@ -70,7 +70,7 @@ task addTestFabricMod(type: Copy) { } task addTestForgeMod(type: Copy) { - dependsOn project(":TestForgeMod").tasks.build +// dependsOn project(":TestForgeMod").tasks.build // Copy dev jar because there is no support for automatic remapping from "TestForgeMod/build/libs/nec_testmod-1.0.0-dev-shadow.jar" into "forge/run/mods" diff --git a/common/build.gradle b/common/build.gradle index a6fece0..895dd44 100644 --- a/common/build.gradle +++ b/common/build.gradle @@ -13,7 +13,7 @@ artifacts { } architectury { - common("fabric","forge") + common("fabric"/*,"forge"*/) } repositories { mavenCentral() diff --git a/common/src/main/java/fudge/notenoughcrashes/config/MidnightConfig.java b/common/src/main/java/fudge/notenoughcrashes/config/MidnightConfig.java index 1547be4..5977ac2 100644 --- a/common/src/main/java/fudge/notenoughcrashes/config/MidnightConfig.java +++ b/common/src/main/java/fudge/notenoughcrashes/config/MidnightConfig.java @@ -321,7 +321,7 @@ public void fillList() { info.index = 0; list.clear(); fillList(); - }), true).texture(new Identifier(NotEnoughCrashes.MOD_ID,"icon/reset"), 12, 12).dimension(40, 20).build(); + }), true).texture(Identifier.of(NotEnoughCrashes.MOD_ID,"icon/reset"), 12, 12).dimension(40, 20).build(); resetButton.setPosition(width - 205, 0); if (info.widget instanceof Map.Entry) { diff --git a/common/src/main/java/fudge/notenoughcrashes/gui/ProblemScreen.java b/common/src/main/java/fudge/notenoughcrashes/gui/ProblemScreen.java index 03177c7..a6d8768 100644 --- a/common/src/main/java/fudge/notenoughcrashes/gui/ProblemScreen.java +++ b/common/src/main/java/fudge/notenoughcrashes/gui/ProblemScreen.java @@ -18,8 +18,10 @@ import net.minecraft.text.*; import net.minecraft.util.Util; import net.minecraft.util.crash.CrashReport; +import net.minecraft.util.crash.ReportType; import java.io.File; +import java.nio.file.Path; import java.util.*; @Environment(EnvType.CLIENT) @@ -92,7 +94,7 @@ private void addSuspectedModsWidget() { private void handleLegacyLinkClick(ButtonWidget buttonWidget) { try { if (uploadedCrashLink == null) { - uploadedCrashLink = LegacyCrashLogUpload.upload(report.asString()); + uploadedCrashLink = LegacyCrashLogUpload.upload(report. asString(ReportType.MINECRAFT_CRASH_REPORT)); } Util.getOperatingSystem().open(uploadedCrashLink); } catch (Throwable e) { @@ -110,7 +112,7 @@ private void handleCrashyUploadClick(ButtonWidget buttonWidget) { if (crashyLink == null) { buttonWidget.active = false; buttonWidget.setMessage(uploadToCrashyLoadingText); - CrashyUpload.uploadToCrashy(report.asString()).thenAccept(link -> { + CrashyUpload.uploadToCrashy(report.asString(ReportType.MINECRAFT_CRASH_REPORT)).thenAccept(link -> { crashyLink = link; buttonWidget.active = true; buttonWidget.setMessage(uploadToCrashyText); @@ -140,11 +142,11 @@ public void init() { .build() ); - addDrawableChild( - ButtonWidget.builder(uploadToCrashyText,this::handleCrashyUploadClick) - .dimensions(width / 2 - 155 + 160, height / 4 + 120 + 12, 150, 20) - .build() - ); +// addDrawableChild( +// ButtonWidget.builder(uploadToCrashyText,this::handleCrashyUploadClick) +// .dimensions(width / 2 - 155 + 160, height / 4 + 120 + 12, 150, 20) +// .build() +// ); x = width / 2 - 155; @@ -156,7 +158,7 @@ public void init() { public boolean mouseClicked(double x, double y, int int_1) { for (Widget widget : widgets) widget.onClick(x, y); if (x >= xLeft && x <= xRight && y >= yTop && y <= yBottom) { - File file = report.getFile(); + Path file = report.getFile(); if (file != null) { Util.getOperatingSystem().open(file); } @@ -171,7 +173,7 @@ public boolean shouldCloseOnEsc() { protected void drawFileNameString(DrawContext context, int y) { - String fileNameString = report.getFile() != null ? "\u00A7n" + report.getFile().getName() + String fileNameString = report.getFile() != null ? "\u00A7n" + report.getFile().getFileName() : NecLocalization.localize("notenoughcrashes.crashscreen.reportSaveFailed"); int stLen = textRenderer.getWidth(fileNameString); xLeft = width / 2 - stLen / 2; diff --git a/common/src/main/java/fudge/notenoughcrashes/mixinhandlers/InGameCatcher.java b/common/src/main/java/fudge/notenoughcrashes/mixinhandlers/InGameCatcher.java index e49a9f2..b5dc0a9 100644 --- a/common/src/main/java/fudge/notenoughcrashes/mixinhandlers/InGameCatcher.java +++ b/common/src/main/java/fudge/notenoughcrashes/mixinhandlers/InGameCatcher.java @@ -93,7 +93,7 @@ public static void addInfoToCrash(CrashReport report) { report.getSystemDetailsSection().addSection("Integrated Server Crashes Since Restart", () -> String.valueOf(serverCrashCount)); } - private static void displayCrashScreen(CrashReport report, int crashCount, boolean clientCrash) { + public static void displayCrashScreen(CrashReport report, int crashCount, boolean clientCrash) { crashScreenActive = true; try { if (EntryPointCatcher.crashedDuringStartup()) { diff --git a/common/src/main/java/fudge/notenoughcrashes/mixins/MixinCrashReport.java b/common/src/main/java/fudge/notenoughcrashes/mixins/MixinCrashReport.java index 8b384c1..30bef6b 100644 --- a/common/src/main/java/fudge/notenoughcrashes/mixins/MixinCrashReport.java +++ b/common/src/main/java/fudge/notenoughcrashes/mixins/MixinCrashReport.java @@ -28,7 +28,7 @@ private CrashReport getThis() { /** * @reason Adds a list of mods which may have caused the crash to the report. */ - @Inject(method = "addStackTrace", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/SystemDetails;writeTo(Ljava/lang/StringBuilder;)V")) + @Inject(method = "addDetails", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/SystemDetails;writeTo(Ljava/lang/StringBuilder;)V")) private void beforeSystemDetailsAreWritten(CallbackInfo ci) { systemDetailsSection.addSection("Suspected Mods", () -> { try { diff --git a/common/src/main/java/fudge/notenoughcrashes/mixins/client/MixinBufferBuilder.java b/common/src/main/java/fudge/notenoughcrashes/mixins/client/MixinBufferBuilder.java index 502dc2c..025c7d9 100644 --- a/common/src/main/java/fudge/notenoughcrashes/mixins/client/MixinBufferBuilder.java +++ b/common/src/main/java/fudge/notenoughcrashes/mixins/client/MixinBufferBuilder.java @@ -2,6 +2,9 @@ import fudge.notenoughcrashes.StateManager; import net.minecraft.client.render.BufferBuilder; +import net.minecraft.client.render.BuiltBuffer; +import net.minecraft.client.render.VertexFormat; +import net.minecraft.client.util.BufferAllocator; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -13,10 +16,10 @@ public abstract class MixinBufferBuilder implements StateManager.IResettable { @Shadow private boolean building; - @Shadow public abstract BufferBuilder.BuiltBuffer end(); + @Shadow public abstract BuiltBuffer end(); @Inject(method = "", at = @At("RETURN")) - public void onInit(int bufferSizeIn, CallbackInfo ci) { + public void onInit(BufferAllocator allocator, VertexFormat.DrawMode drawMode, VertexFormat format, CallbackInfo ci) { register(); } diff --git a/common/src/main/java/fudge/notenoughcrashes/mixins/client/MixinMinecraftServerClientOnly.java b/common/src/main/java/fudge/notenoughcrashes/mixins/client/MixinMinecraftServerClientOnly.java index d550b2f..453cd23 100644 --- a/common/src/main/java/fudge/notenoughcrashes/mixins/client/MixinMinecraftServerClientOnly.java +++ b/common/src/main/java/fudge/notenoughcrashes/mixins/client/MixinMinecraftServerClientOnly.java @@ -3,11 +3,13 @@ import fudge.notenoughcrashes.NotEnoughCrashes; import net.minecraft.server.MinecraftServer; import net.minecraft.util.crash.CrashReport; +import net.minecraft.util.crash.ReportType; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; import java.io.File; +import java.nio.file.Path; /** * Only applied to client side because we aim to change the functionality of the integrated server (and not the dedicated one) @@ -18,9 +20,9 @@ public class MixinMinecraftServerClientOnly { * We write the log anyway using CrashUtils.outputReport in * {@link fudge.notenoughcrashes.mixinhandlers.InGameCatcher#displayCrashScreen(CrashReport, int, boolean)} */ - @Redirect(method = "runServer()V", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/crash/CrashReport;writeToFile(Ljava/io/File;)Z")) - private boolean disableIntegratedServerWriteToFileOnCrash(CrashReport instance, File file) { + @Redirect(method = "runServer()V", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/crash/CrashReport;writeToFile(Ljava/nio/file/Path;Lnet/minecraft/util/crash/ReportType;)Z")) + private boolean disableIntegratedServerWriteToFileOnCrash(CrashReport instance, Path path, ReportType type) { if (NotEnoughCrashes.enableGameloopCatching()) return true; - else return instance.writeToFile(file); + else return instance.writeToFile(path, type); } } diff --git a/common/src/main/java/fudge/notenoughcrashes/stacktrace/CrashUtils.java b/common/src/main/java/fudge/notenoughcrashes/stacktrace/CrashUtils.java index 28fcee1..92bc7f1 100644 --- a/common/src/main/java/fudge/notenoughcrashes/stacktrace/CrashUtils.java +++ b/common/src/main/java/fudge/notenoughcrashes/stacktrace/CrashUtils.java @@ -5,10 +5,12 @@ import net.fabricmc.loader.api.FabricLoader; import net.minecraft.client.MinecraftClient; import net.minecraft.util.crash.CrashReport; +import net.minecraft.util.crash.ReportType; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import java.io.File; +import java.nio.file.Path; import java.text.SimpleDateFormat; import java.util.Date; @@ -37,10 +39,10 @@ public static void outputReport(CrashReport report, boolean isClient) { reportName += isClient && MinecraftClient.getInstance().isOnThread() ? "-client" : "-server"; reportName += ".txt"; - File reportsDir = new File(NecPlatform.instance().getGameDirectory().toFile(), "crash-reports"); - File reportFile = new File(reportsDir, reportName); + Path reportsDir = NecPlatform.instance().getGameDirectory().resolve("crash-reports"); + Path reportFile = reportsDir.resolve(reportName); - report.writeToFile(reportFile); + report.writeToFile(reportFile, ReportType.MINECRAFT_CRASH_REPORT); } } catch (Throwable e) { NotEnoughCrashes.getLogger().fatal("Failed saving report", e); @@ -48,6 +50,6 @@ public static void outputReport(CrashReport report, boolean isClient) { NotEnoughCrashes.getLogger().fatal("Minecraft ran into a problem! " + (report.getFile() != null ? "Report saved to: " + report.getFile() : "Crash report could not be saved.") + "\n" + - report.asString()); + report.asString(ReportType.MINECRAFT_CRASH_REPORT)); } } diff --git a/common/src/main/resources/notenoughcrashes.mixins.json b/common/src/main/resources/notenoughcrashes.mixins.json index 377a2ee..460ea03 100644 --- a/common/src/main/resources/notenoughcrashes.mixins.json +++ b/common/src/main/resources/notenoughcrashes.mixins.json @@ -2,7 +2,7 @@ "package": "fudge.notenoughcrashes.mixins", "required": true, "target": "@env(DEFAULT)", - "compatibilityLevel": "JAVA_17", + "compatibilityLevel": "JAVA_21", "minVersion": "0.8", "mixins": [ "MixinCrashReport", diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 201ddce..58390e0 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -25,7 +25,7 @@ shadow = "8.1.1" task_tree = "4.0.0" # Minecraft -minecraft = "1.20.6" +minecraft = "1.21" # CurseForge & Modrinth MC overrides (or "mc" to use the main version) overrides_curseforge = "mc" @@ -33,10 +33,10 @@ overrides_modrinth = "mc" release_type = "release" # Mods & Libraries -yarn_mappings = "1.20.6+build.1" -fabric_loader = "0.15.11" -fabric_api = "0.100.0+1.20.6" -modmenu = "10.0.0-beta.1" +yarn_mappings = "1.21+build.9" +fabric_loader = "0.16.0" +fabric_api = "0.101.2+1.21" +modmenu = "11.0.1" quilt_loader = "0.26.0" forge = "50.1.0" diff --git a/settings.gradle b/settings.gradle index e59e872..239f868 100644 --- a/settings.gradle +++ b/settings.gradle @@ -26,8 +26,8 @@ plugins { include("common") include("fabric") -include("forge") +//include("forge") include("TestFabricMod") -include("TestForgeMod") +//include("TestForgeMod") rootProject.name = "notenoughcrashes"