更新项目结构

This commit is contained in:
BRanulf 2025-07-16 00:18:11 +08:00
parent 2b922647ab
commit 2334a12f19
17 changed files with 303 additions and 84 deletions

View File

@ -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")
doFirst {
println 'Gathering builds'
def buildLibs = {
p -> p.buildDir.toPath().resolve('libs')
}
processResources {
inputs.property "version", project.version
filteringCharset "UTF-8"
filesMatching("fabric.mod.json") {
expand "version": project.version
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
}
}
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
}
}
// 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.
}
}

174
common.gradle Normal file
View File

@ -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 {
// }
//}

View File

@ -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

View File

@ -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"
}

8
settings.json Normal file
View File

@ -0,0 +1,8 @@
{
"versions": [
"1.21.4",
"1.21.5",
"1.21.6",
"1.21.7"
]
}

View File

@ -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);
}
}
}

View File

@ -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 -> {

View File

@ -2,7 +2,7 @@
"required": true,
"minVersion": "0.8",
"package": "semmiedev.disc_jockey_revive.mixin",
"compatibilityLevel": "JAVA_21",
"compatibilityLevel": "{{COMPATIBILITY_LEVEL}}",
"mixins": [
"ClientWorldMixin"
],

View File

@ -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": "*"
}

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

1
versions/mainProject Normal file
View File

@ -0,0 +1 @@
1.21.4

View File

View File

View File