From 2334a12f191cd32c42d33d13c4c21d7e584d0c76 Mon Sep 17 00:00:00 2001 From: BRanulf Date: Wed, 16 Jul 2025 00:18:11 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=A1=B9=E7=9B=AE=E7=BB=93?= =?UTF-8?q?=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 114 ++++-------- common.gradle | 174 ++++++++++++++++++ gradle.properties | 4 +- settings.gradle | 26 +++ settings.json | 8 + .../disc_jockey_revive/DebugLogger.java | 5 +- .../gui/screen/DiscJockeyScreen.java | 2 +- src/main/resources/disc_jockey.mixins.json | 2 +- src/main/resources/fabric.mod.json | 7 +- versions/1.21.4/gradle.properties | 11 ++ versions/1.21.5/gradle.properties | 11 ++ versions/1.21.6/gradle.properties | 11 ++ versions/1.21.7/gradle.properties | 11 ++ versions/mainProject | 1 + versions/mapping_12105_12104.txt | 0 versions/mapping_12106_12105.txt | 0 versions/mapping_12107_12106.txt | 0 17 files changed, 303 insertions(+), 84 deletions(-) create mode 100644 common.gradle create mode 100644 settings.json create mode 100644 versions/1.21.4/gradle.properties create mode 100644 versions/1.21.5/gradle.properties create mode 100644 versions/1.21.6/gradle.properties create mode 100644 versions/1.21.7/gradle.properties create mode 100644 versions/mainProject create mode 100644 versions/mapping_12105_12104.txt create mode 100644 versions/mapping_12106_12105.txt create mode 100644 versions/mapping_12107_12106.txt diff --git a/build.gradle b/build.gradle index 7c7acec..6610a0b 100644 --- a/build.gradle +++ b/build.gradle @@ -1,89 +1,49 @@ plugins { - id 'fabric-loom' version '1.9.2' - id 'maven-publish' + id 'fabric-loom' version '1.10.5' apply false +// id 'maven-publish' apply false + + id 'com.replaymod.preprocess' version '9d21b334a7' + + id 'com.github.johnrengelman.shadow' version '8.1.1' apply false } version = project.mod_version group = project.maven_group -repositories { - maven { url "https://maven.shedaniel.me/" } - maven {url "https://maven.terraformersmc.com/"} +preprocess { + strictExtraMappings.set(false) + + def mc12104 = createNode("1.21.4", 1_21_04, "") + def mc12105 = createNode("1.21.5", 1_21_05, "") + def mc12106 = createNode("1.21.6", 1_21_06, "") + def mc12107 = createNode("1.21.7", 1_21_07, "") + + mc12107.link(mc12106, file("versions/mapping_12107_12106.txt")) + mc12106.link(mc12105, file("versions/mapping_12106_12105.txt")) + mc12105.link(mc12104, file("versions/mapping_12105_12104.txt")) } -dependencies { - // To change the versions see the gradle.properties file -// implementation files("libs/modmenu-13.0.3.jar") -// implementation files("libs/modmenu-13.0.3.pom") - minecraft "com.mojang:minecraft:${project.minecraft_version}" - mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" - modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" - - // Fabric API. This is technically optional, but you probably want it anyway. - modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" - - include modApi("me.shedaniel.cloth:cloth-config-fabric:17.0.142") { - exclude(group: "net.fabricmc.fabric-api") +tasks.register('buildAndGather') { + subprojects { + dependsOn project.tasks.named('build').get() } - modImplementation "me.shedaniel.cloth:cloth-config-fabric:17.0.142" - -// modCompileOnly("com.terraformersmc:modmenu:13.0.3")、 - modCompileOnly files("libs/modmenu-13.0.3.jar") - modImplementation files("libs/LibGui-12.0.1+1.21.2.jar") -} - -processResources { - inputs.property "version", project.version - filteringCharset "UTF-8" - - filesMatching("fabric.mod.json") { - expand "version": project.version - } -} - -def targetJavaVersion = 21 -tasks.withType(JavaCompile).configureEach { - // ensure that the encoding is set to UTF-8, no matter what the system default is - // this fixes some edge cases with special characters not displaying correctly - // see http://yodaconditions.net/blog/fix-for-java-file-encoding-problems-with-gradle.html - // If Javadoc is generated, this must be specified in that task too. - it.options.encoding = "UTF-8" - if (targetJavaVersion >= 10 || JavaVersion.current().isJava10Compatible()) { - it.options.release = targetJavaVersion - } -} - -java { - def javaVersion = JavaVersion.toVersion(targetJavaVersion) - if (JavaVersion.current() < javaVersion) { - toolchain.languageVersion = JavaLanguageVersion.of(targetJavaVersion) - } - archivesBaseName = project.archives_base_name - // Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task - // if it is present. - // If you remove this line, sources will not be generated. - withSourcesJar() -} - -jar { - from("LICENSE") { - rename { "${it}_${project.archivesBaseName}" } - } -} - -// configure the maven publication -publishing { - publications { - mavenJava(MavenPublication) { - from components.java + doFirst { + println 'Gathering builds' + def buildLibs = { + p -> p.buildDir.toPath().resolve('libs') + } + delete fileTree(buildLibs(rootProject)) { + include '*' + } + subprojects { + copy { + from(buildLibs(project)) { + include '*.jar' + exclude '*-dev.jar', '*-sources.jar', '*-shadow.jar' + } + into buildLibs(rootProject) + duplicatesStrategy DuplicatesStrategy.INCLUDE + } } } - - // See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing. - repositories { - // Add repositories to publish to here. - // Notice: This block does NOT have the same function as the block in the top level. - // The repositories here will be used for publishing your artifact, not for - // retrieving dependencies. - } } diff --git a/common.gradle b/common.gradle new file mode 100644 index 0000000..401808c --- /dev/null +++ b/common.gradle @@ -0,0 +1,174 @@ +apply plugin: 'maven-publish' +apply plugin: 'com.github.johnrengelman.shadow' +apply plugin: 'fabric-loom' +apply plugin: 'com.replaymod.preprocess' + +int mcVersion = project.mcVersion + +repositories { + maven { + url 'https://maven.fabricmc.net/' // loom + } + maven { + url 'https://masa.dy.fi/maven' // mama(随便加的) + } + maven { + url 'https://maven.fallenbreath.me/releases' // preprocessor + } + maven { + url 'https://jitpack.io' // preprocessor + } + maven { + url 'https://www.cursemaven.com' // curseforge(随便加的) + } + maven { + url "https://maven.shedaniel.me/" // cloth config + } + maven { + url "https://maven.terraformersmc.com/" // modmenu + } +} + +dependencies { + minecraft "com.mojang:minecraft:${project.minecraft_version}" // 从子项目 + mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" // 从子项目 + modImplementation "net.fabricmc:fabric-loader:${rootProject.loader_version}" // 从根项目 + + modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_api_version}" + + include modApi("me.shedaniel.cloth:cloth-config-fabric:${project.cloth_config_version}") { + exclude(group: "net.fabricmc.fabric-api") + } + modImplementation "me.shedaniel.cloth:cloth-config-fabric:${project.cloth_config_version}" + +// modCompileOnly files("${rootProject.projectDir}/libs/modmenu-13.0.3.jar") + modImplementation("com.terraformersmc:modmenu:${project.modmenu_version}") +// modImplementation files("${rootProject.projectDir}/libs/LibGui-12.0.1+1.21.2.jar") +} + +String MIXIN_CONFIG_PATH = 'disc_jockey.mixins.json' // mixin + +JavaVersion JAVA_COMPATIBILITY // java自动 +if (mcVersion >= 12100) { + JAVA_COMPATIBILITY = JavaVersion.VERSION_21 +} else if (mcVersion >= 11800) { + JAVA_COMPATIBILITY = JavaVersion.VERSION_17 +} else if (mcVersion >= 11700) { + JAVA_COMPATIBILITY = JavaVersion.VERSION_16 +} else { + JAVA_COMPATIBILITY = JavaVersion.VERSION_1_8 +} +JavaVersion MIXIN_COMPATIBILITY_LEVEL = JAVA_COMPATIBILITY + +loom { + def commonVmArgs = ['-Dmixin.debug.export=true'] + runConfigs.configureEach { + runDir '../../run' + vmArgs commonVmArgs + ideConfigGenerated true + } + + runs { + def auditVmArgs = [*commonVmArgs, '-Ddisc_jockey_revive.mixin_audit=true'] + serverMixinAudit { + server() + vmArgs auditVmArgs + ideConfigGenerated false + } + clientMixinAudit { + client() + vmArgs auditVmArgs + ideConfigGenerated false + } + } +} + +// 打包胖子 +shadowJar { + configurations = [project.configurations.shadow] + exclude("META-INF") + archiveClassifier.set('shadow') +} + +import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar + +tasks.withType(ShadowJar).configureEach { + enableRelocation true + relocationPrefix 'semmiedev.disc_jockey_revive.libs' +} + +remapJar { + dependsOn(shadowJar) + mustRunAfter(shadowJar) + inputFile = shadowJar.archiveFile +} + +String modVersionSuffix = '' +if (System.getenv("BUILD_RELEASE") != "true") { + String buildNumber = System.getenv("BUILD_ID") + modVersionSuffix += buildNumber != null ? ('+build.' + buildNumber) : '' // 文件名前 +} +String fullModVersion = rootProject.mod_version + modVersionSuffix + +String fullProjectVersion + +group = rootProject.maven_group +if (System.getenv("JITPACK") == "true") { + base.archivesName = rootProject.archives_base_name + '-' + project.minecraft_version + fullProjectVersion = 'v' + rootProject.mod_version + modVersionSuffix +} else { + base.archivesName = rootProject.archives_base_name + fullProjectVersion = 'v' + rootProject.mod_version + '-' + project.minecraft_version + modVersionSuffix +} +version = fullProjectVersion + +processResources { + inputs.property "id", rootProject.mod_id // 从根项目 + inputs.property "name", rootProject.mod_name // 从根项目 + inputs.property "version", fullModVersion + + filesMatching("fabric.mod.json") { + def valueMap = [ + "id" : rootProject.mod_id, + "name" : rootProject.mod_name, + "version" : fullModVersion, + "minecraft_version": project.minecraft_dependency, // 从子项目 + "loader_version" : rootProject.loader_version // 从根项目 + ] + expand valueMap + } + + filesMatching(MIXIN_CONFIG_PATH) { + filter { s -> s.replace('{{COMPATIBILITY_LEVEL}}', "JAVA_${MIXIN_COMPATIBILITY_LEVEL.ordinal() + 1}") } + } +} + +tasks.withType(JavaCompile).configureEach { + options.encoding = "UTF-8" + options.compilerArgs << "-Xlint:deprecation" << "-Xlint:unchecked" + if (JAVA_COMPATIBILITY <= JavaVersion.VERSION_1_8) { + options.compilerArgs << '-Xlint:-options' + } +} + +java { + sourceCompatibility = JAVA_COMPATIBILITY + targetCompatibility = JAVA_COMPATIBILITY + withSourcesJar() +} + +jar { + from(rootProject.file('LICENSE')) { + rename { "${it}_${rootProject.archives_base_name}" } + } +} + +//publishing { +// publications { +// mavenJava(MavenPublication) { +// from components.java +// } +// } +// repositories { +// } +//} diff --git a/gradle.properties b/gradle.properties index 5351d67..3611439 100644 --- a/gradle.properties +++ b/gradle.properties @@ -5,8 +5,10 @@ org.gradle.jvmargs=-Xmx1G minecraft_version=1.21.4 yarn_mappings=1.21.4+build.8 loader_version=0.16.10 +mod_name=Disc Jockey Revive +mod_id=disc_jockey_revive # Mod Properties -mod_version=1.14.514.045 +mod_version=1.14.514.046 maven_group=semmiedev archives_base_name=disc_jockey_revive # Dependencies diff --git a/settings.gradle b/settings.gradle index f91a4fe..41e3eaa 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,9 +1,35 @@ +import groovy.json.JsonSlurper + pluginManagement { repositories { maven { name = 'Fabric' url = 'https://maven.fabricmc.net/' } + maven { + name = 'Jitpack' + url = 'https://jitpack.io' // preprocessor + } + mavenCentral() gradlePluginPortal() } + resolutionStrategy { + eachPlugin { + switch (requested.id.id) { + case "com.replaymod.preprocess": { + useModule("com.github.Fallen-Breath:preprocessor:${requested.version}") + break + } + } + } + } +} + +def settings = new JsonSlurper().parseText(file('settings.json').text) +for (String version : settings.versions) { + include(":$version") + + def proj = project(":$version") + proj.projectDir = file("versions/$version") + proj.buildFileName = "../../common.gradle" } diff --git a/settings.json b/settings.json new file mode 100644 index 0000000..2c8244b --- /dev/null +++ b/settings.json @@ -0,0 +1,8 @@ +{ + "versions": [ + "1.21.4", + "1.21.5", + "1.21.6", + "1.21.7" + ] +} diff --git a/src/main/java/semmiedev/disc_jockey_revive/DebugLogger.java b/src/main/java/semmiedev/disc_jockey_revive/DebugLogger.java index 7fb01b8..d626f5e 100644 --- a/src/main/java/semmiedev/disc_jockey_revive/DebugLogger.java +++ b/src/main/java/semmiedev/disc_jockey_revive/DebugLogger.java @@ -32,8 +32,11 @@ public class DebugLogger { } public static void sendMessage(String message) { - if (Main.config != null && Main.config.debugModeChatMessages) { + MinecraftClient client = MinecraftClient.getInstance(); + if (client != null && client.inGameHud != null && client.inGameHud.getChatHud() != null) { MinecraftClient.getInstance().inGameHud.getChatHud().addMessage(Text.of("[DiscJockeyRevive-调试]"+message.formatted(Formatting.GRAY))); + } else { + Main.LOGGER.error("[DiscJockeyRevive-调试] 聊天窗口未初始化,{}",message); } } } diff --git a/src/main/java/semmiedev/disc_jockey_revive/gui/screen/DiscJockeyScreen.java b/src/main/java/semmiedev/disc_jockey_revive/gui/screen/DiscJockeyScreen.java index 81c5c16..f97ea29 100644 --- a/src/main/java/semmiedev/disc_jockey_revive/gui/screen/DiscJockeyScreen.java +++ b/src/main/java/semmiedev/disc_jockey_revive/gui/screen/DiscJockeyScreen.java @@ -152,7 +152,7 @@ public class DiscJockeyScreen extends Screen { // 配置按钮 int configButtonSize = 20; - int configButtonX = width - 120 - sliderWidth - configButtonSize - 10; + int configButtonX = width - 120 - sliderWidth - configButtonSize - 10 - 10; int configButtonY = 10; if (!isLargeScreen) configButtonX = width - 120 - configButtonSize - 10; configButton = ButtonWidget.builder(Text.literal("⚙"), button -> { diff --git a/src/main/resources/disc_jockey.mixins.json b/src/main/resources/disc_jockey.mixins.json index 0c3d589..ea6e26d 100644 --- a/src/main/resources/disc_jockey.mixins.json +++ b/src/main/resources/disc_jockey.mixins.json @@ -2,7 +2,7 @@ "required": true, "minVersion": "0.8", "package": "semmiedev.disc_jockey_revive.mixin", - "compatibilityLevel": "JAVA_21", + "compatibilityLevel": "{{COMPATIBILITY_LEVEL}}", "mixins": [ "ClientWorldMixin" ], diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 40191c8..a37de49 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -2,7 +2,7 @@ "schemaVersion": 1, "id": "disc_jockey_revive", "version": "${version}", - "name": "Disc Jockey Revive", + "name": "${name}", "description": "在游戏中播放音符盒(打碟机)", "authors": [ "SemmieDev", @@ -10,7 +10,7 @@ "BRanulf(仅限该版本,请支持上面两个原作者)" ], "contact": { - "homepage": "https://git.branulf.top/Branulf/DIsc_Jockey_revive", + "homepage": "https://git.branulf.top/Branulf", "sources": "https://git.branulf.top/Branulf/DIsc_Jockey_revive" }, "license": "MIT", @@ -28,8 +28,9 @@ "disc_jockey.mixins.json" ], "depends": { + "fabricloader": ">=${loader_version}", "fabric": "*", - "minecraft": "~1.21.4", + "minecraft": "${minecraft_version}", "java": ">=21", "cloth-config": "*" } diff --git a/versions/1.21.4/gradle.properties b/versions/1.21.4/gradle.properties new file mode 100644 index 0000000..6363f49 --- /dev/null +++ b/versions/1.21.4/gradle.properties @@ -0,0 +1,11 @@ +minecraft_version=1.21.4 +yarn_mappings=1.21.4+build.8 + +minecraft_dependency=1.21.4 + +game_versions=1.21.4 + +fabric_api_version=0.119.2+1.21.4 + +modmenu_version=13.0.3 +cloth_config_version=17.0.144 diff --git a/versions/1.21.5/gradle.properties b/versions/1.21.5/gradle.properties new file mode 100644 index 0000000..05ac3d5 --- /dev/null +++ b/versions/1.21.5/gradle.properties @@ -0,0 +1,11 @@ +minecraft_version=1.21.5 +yarn_mappings=1.21.5+build.1 + +minecraft_dependency=1.21.5 + +game_versions=1.21.5 + +fabric_api_version=0.119.5+1.21.5 + +modmenu_version=14.0.0-rc.2 +cloth_config_version=18.0.145 diff --git a/versions/1.21.6/gradle.properties b/versions/1.21.6/gradle.properties new file mode 100644 index 0000000..0b7f719 --- /dev/null +++ b/versions/1.21.6/gradle.properties @@ -0,0 +1,11 @@ +minecraft_version=1.21.6 +yarn_mappings=1.21.6+build.1 + +minecraft_dependency=1.21.6 + +game_versions=1.21.6 + +fabric_api_version=0.127.0+1.21.6 + +modmenu_version=15.0.0-beta.3 +cloth_config_version=19.0.147 diff --git a/versions/1.21.7/gradle.properties b/versions/1.21.7/gradle.properties new file mode 100644 index 0000000..4df3b0a --- /dev/null +++ b/versions/1.21.7/gradle.properties @@ -0,0 +1,11 @@ +minecraft_version=1.21.7 +yarn_mappings=1.21.7+build.7 + +minecraft_dependency=1.21.7 + +game_versions=1.21.7 + +fabric_api_version=0.128.1+1.21.7 + +modmenu_version=15.0.0-beta.3 +cloth_config_version=19.0.147 \ No newline at end of file diff --git a/versions/mainProject b/versions/mainProject new file mode 100644 index 0000000..3d8ac63 --- /dev/null +++ b/versions/mainProject @@ -0,0 +1 @@ +1.21.4 \ No newline at end of file diff --git a/versions/mapping_12105_12104.txt b/versions/mapping_12105_12104.txt new file mode 100644 index 0000000..e69de29 diff --git a/versions/mapping_12106_12105.txt b/versions/mapping_12106_12105.txt new file mode 100644 index 0000000..e69de29 diff --git a/versions/mapping_12107_12106.txt b/versions/mapping_12107_12106.txt new file mode 100644 index 0000000..e69de29