diff --git a/build.gradle b/build.gradle index 28da4e5..154bf6b 100644 --- a/build.gradle +++ b/build.gradle @@ -9,11 +9,11 @@ allprojects { version = project.mod_version java { - toolchain.languageVersion = JavaLanguageVersion.of(21) + toolchain.languageVersion = JavaLanguageVersion.of(25) } tasks.withType(JavaCompile).configureEach { - options.release = 21 + options.release = 25 options.encoding = 'UTF-8' } @@ -24,30 +24,7 @@ allprojects { } } -// ───── merged jar ────────────────────────────────────────────────────────── -// fabric + neoforge 각각의 remapJar 결과물을 한 jar 안에 압축해서 단일 배포물 생성. -// 같은 클래스(common 코드)는 한 번만 포함. 각 로더는 자신의 mod metadata -// (fabric.mod.json / META-INF/neoforge.mods.toml) 만 인식해서 자기 쪽 진입점만 로드. - -tasks.register('mergedJar', Jar) { - dependsOn ':fabric:relocatedJar', ':neoforge:jar' - archiveBaseName = project.mod_id - archiveVersion = project.mod_version - archiveClassifier = 'all' - destinationDirectory = file('build/libs') - - duplicatesStrategy = DuplicatesStrategy.EXCLUDE - - // Fabric: Shadow(relocatedJar) 가 common 패키지를 kr.tkrmagid.chatanswer.fabric.core 로 옮긴 jar - // NeoForge: common 은 그대로 kr.tkrmagid.chatanswer.core 에 위치 - // → 같은 클래스명 다른 매핑이라도 패키지 경로가 달라서 공존 가능 - from(zipTree(project(':fabric').tasks.named('relocatedJar').flatMap { it.archiveFile })) - from(zipTree(project(':neoforge').tasks.named('jar').flatMap { it.archiveFile })) { - // META-INF/MANIFEST.MF 는 Fabric 측 것을 그대로 사용 (둘 다 단순 manifest) - exclude 'META-INF/MANIFEST.MF' - } -} - +// MC 26.1.2 배포물은 Fabric jar 단일 빌드. buildAll = fabric remapJar 결과물. tasks.register('buildAll') { - dependsOn 'mergedJar' + dependsOn ':fabric:remapJar' } diff --git a/common/src/main/java/kr/tkrmagid/chatanswer/core/ChatAnswerCore.java b/common/src/main/java/kr/tkrmagid/chatanswer/core/ChatAnswerCore.java index 5f052c8..ba0d06d 100644 --- a/common/src/main/java/kr/tkrmagid/chatanswer/core/ChatAnswerCore.java +++ b/common/src/main/java/kr/tkrmagid/chatanswer/core/ChatAnswerCore.java @@ -38,7 +38,7 @@ public final class ChatAnswerCore { * 호출이 일어나지 않아 0b 로 유지되고, 모드가 있으면 첫 로그인 직후 1b 로 갱신. */ public static void onPlayerJoin(ServerPlayer player) { - MinecraftServer server = player.getServer(); + MinecraftServer server = player.level().getServer(); if (server == null) return; CommandSourceStack source = server.createCommandSourceStack().withSuppressedOutput(); try { @@ -55,7 +55,7 @@ public final class ChatAnswerCore { * @return true = 채팅을 평소처럼 broadcast / false = 채팅 차단 (이미 정답 제출 처리됨) */ public static boolean handleChat(ServerPlayer sender, String rawText) { - MinecraftServer server = sender.getServer(); + MinecraftServer server = sender.level().getServer(); if (server == null) return true; if (!isAcceptingAnswer(server)) return true; diff --git a/fabric/build.gradle b/fabric/build.gradle index 7051615..6fe61ff 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -1,9 +1,9 @@ plugins { - id 'fabric-loom' version '1.10-SNAPSHOT' - id 'com.gradleup.shadow' version '8.3.5' + id 'fabric-loom' version '1.16-SNAPSHOT' + id 'com.gradleup.shadow' version '9.4.1' } -archivesBaseName = "${project.mod_id}-fabric" +base.archivesName = "${project.mod_id}-fabric" // common/ 디렉토리의 로더 비종속 소스를 fabric 컴파일에 포함 (Mojang 매핑으로 컴파일) sourceSets { @@ -15,14 +15,11 @@ sourceSets { } dependencies { + // MC 26.x: server jar 가 unobfuscated. intermediary 0.0.0 = identity mapping. minecraft "com.mojang:minecraft:${project.minecraft_version}" - mappings loom.officialMojangMappings() - modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" - modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" -} - -loom { - serverOnlyMinecraftJar() + mappings "net.fabricmc:intermediary:0.0.0:v2" + implementation "net.fabricmc:fabric-loader:${project.loader_version}" + implementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" } processResources { @@ -30,6 +27,8 @@ processResources { inputs.property "mod_id", project.mod_id inputs.property "mod_name", project.mod_name + filteringCharset = 'UTF-8' + filesMatching("fabric.mod.json") { expand( "version": project.version, diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json index c112dfe..cb4596e 100644 --- a/fabric/src/main/resources/fabric.mod.json +++ b/fabric/src/main/resources/fabric.mod.json @@ -2,7 +2,7 @@ "schemaVersion": 1, "id": "${mod_id}", "version": "${version}", - "name": "${mod_name}", + "name": "채팅정답", "description": "음악퀴즈(mq) 데이터팩이 정답 입력을 받는 상태(init=5)에서 채팅을 가로채 mq:answer/submit 함수로 전달합니다.", "authors": [ "tkrmagid" ], "contact": { @@ -14,8 +14,8 @@ "main": [ "kr.tkrmagid.chatanswer.fabric.ChatAnswerFabric" ] }, "depends": { - "fabricloader": ">=0.16.0", - "minecraft": ">=1.21.6", + "fabricloader": ">=0.19.0", + "minecraft": ">=26.1.2", "java": ">=21", "fabric-api": "*" } diff --git a/gradle.properties b/gradle.properties index 65f9eb9..4418772 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,19 +2,19 @@ org.gradle.jvmargs=-Xmx3G org.gradle.parallel=true # ───── target Minecraft / loader versions ─────────────────────────────────── -# 1.21.6 = dialog system 최초 버전 = 음악퀴즈 데이터팩 최소 요구 버전 -minecraft_version=1.21.6 +# MC 26.1.2 = 사용자 환경. 1.21.6 과는 intermediary 매핑이 달라서 동일 jar 로 양쪽 +# 지원 불가 → 26.1.2 전용 빌드. +minecraft_version=26.1.2 # Fabric -yarn_mappings=1.21.6+build.1 -loader_version=0.16.10 -fabric_version=0.128.2+1.21.6 +loader_version=0.19.2 +fabric_version=0.148.2+26.1.2 # NeoForge -neoforge_version=21.6.20-beta +neoforge_version=26.1.2.36-beta # ───── mod metadata ───────────────────────────────────────────────────────── mod_id=chat_answer -mod_version=1.1.1 +mod_version=1.2.0 mod_group=kr.tkrmagid.chatanswer mod_name=채팅정답 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index cea7a79..5dd3c01 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.5.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/neoforge/build.gradle b/neoforge/build.gradle index 49236c8..1e12ceb 100644 --- a/neoforge/build.gradle +++ b/neoforge/build.gradle @@ -2,7 +2,7 @@ plugins { id 'net.neoforged.moddev' version '2.0.97' } -archivesBaseName = "${project.mod_id}-neoforge" +base.archivesName = "${project.mod_id}-neoforge" sourceSets { main { diff --git a/settings.gradle b/settings.gradle index a1dbe30..c1b2c30 100644 --- a/settings.gradle +++ b/settings.gradle @@ -8,4 +8,5 @@ pluginManagement { } rootProject.name = 'chat_answer' -include 'fabric', 'neoforge' +// NeoForge moddev plugin 이 MC 26.1.2 를 파싱하지 못함(1.21.5 로 fallback) → 26.x 정식 지원 전까지 제외. +include 'fabric'