From abb7739015e5b90046c69c5332860db13fe00407 Mon Sep 17 00:00:00 2001 From: Gurwi Date: Thu, 18 Jan 2024 18:12:15 +0100 Subject: [PATCH 1/4] Added UTF-8 encoding to Bukkit, BungeeCord & Velocity to the build.gradle --- .../resources/fileTemplates/j2ee/bukkit/Bukkit build.gradle.ft | 2 ++ .../fileTemplates/j2ee/bungeecord/BungeeCord build.gradle.ft | 2 ++ .../fileTemplates/j2ee/velocity/Velocity build.gradle.ft | 2 ++ 3 files changed, 6 insertions(+) diff --git a/src/main/resources/fileTemplates/j2ee/bukkit/Bukkit build.gradle.ft b/src/main/resources/fileTemplates/j2ee/bukkit/Bukkit build.gradle.ft index cb6cf20e2..2a1b61ec5 100644 --- a/src/main/resources/fileTemplates/j2ee/bukkit/Bukkit build.gradle.ft +++ b/src/main/resources/fileTemplates/j2ee/bukkit/Bukkit build.gradle.ft @@ -23,6 +23,8 @@ java { } tasks.withType(JavaCompile).configureEach { + options.encoding = 'UTF-8' + if (targetJavaVersion >= 10 || JavaVersion.current().isJava10Compatible()) { options.release.set(targetJavaVersion) } diff --git a/src/main/resources/fileTemplates/j2ee/bungeecord/BungeeCord build.gradle.ft b/src/main/resources/fileTemplates/j2ee/bungeecord/BungeeCord build.gradle.ft index a38a3aec8..1be8224dd 100644 --- a/src/main/resources/fileTemplates/j2ee/bungeecord/BungeeCord build.gradle.ft +++ b/src/main/resources/fileTemplates/j2ee/bungeecord/BungeeCord build.gradle.ft @@ -21,6 +21,8 @@ java { } tasks.withType(JavaCompile).configureEach { + options.encoding = 'UTF-8' + if (targetJavaVersion >= 10 || JavaVersion.current().isJava10Compatible()) { options.release.set(targetJavaVersion) } diff --git a/src/main/resources/fileTemplates/j2ee/velocity/Velocity build.gradle.ft b/src/main/resources/fileTemplates/j2ee/velocity/Velocity build.gradle.ft index af27f6dc1..500fbecd8 100644 --- a/src/main/resources/fileTemplates/j2ee/velocity/Velocity build.gradle.ft +++ b/src/main/resources/fileTemplates/j2ee/velocity/Velocity build.gradle.ft @@ -24,6 +24,8 @@ java { } tasks.withType(JavaCompile).configureEach { + options.encoding = 'UTF-8' + if (targetJavaVersion >= 10 || JavaVersion.current().isJava10Compatible()) { options.release.set(targetJavaVersion) } From d87e93098d1f93025bd2b0e72595692e26a9262d Mon Sep 17 00:00:00 2001 From: Gurwi Date: Sun, 11 Feb 2024 20:34:38 +0100 Subject: [PATCH 2/4] Added Fabric API Main Class & ClientClass templates --- .../platform/fabric/creator/asset-steps.kt | 78 ++++++++++--------- src/main/kotlin/util/MinecraftTemplates.kt | 8 +- .../j2ee/fabric/Fabric Mod Class.java.ft | 12 +++ .../j2ee/fabric/Fabric Mod Class.java.html | 25 ++++++ .../fabric/Fabric Mod Client Class.java.ft | 12 +++ .../fabric/Fabric Mod Client Class.java.html | 0 .../j2ee/fabric/fabric_mod.json.ft | 40 +++++++--- 7 files changed, 124 insertions(+), 51 deletions(-) create mode 100644 src/main/resources/fileTemplates/j2ee/fabric/Fabric Mod Class.java.ft create mode 100644 src/main/resources/fileTemplates/j2ee/fabric/Fabric Mod Class.java.html create mode 100644 src/main/resources/fileTemplates/j2ee/fabric/Fabric Mod Client Class.java.ft create mode 100644 src/main/resources/fileTemplates/j2ee/fabric/Fabric Mod Client Class.java.html diff --git a/src/main/kotlin/platform/fabric/creator/asset-steps.kt b/src/main/kotlin/platform/fabric/creator/asset-steps.kt index 7283a1e19..312485682 100644 --- a/src/main/kotlin/platform/fabric/creator/asset-steps.kt +++ b/src/main/kotlin/platform/fabric/creator/asset-steps.kt @@ -28,19 +28,11 @@ import com.demonwav.mcdev.creator.buildsystem.AbstractRunBuildSystemStep import com.demonwav.mcdev.creator.buildsystem.BuildSystemPropertiesStep import com.demonwav.mcdev.creator.buildsystem.BuildSystemSupport import com.demonwav.mcdev.creator.findStep -import com.demonwav.mcdev.creator.step.AbstractLongRunningAssetsStep -import com.demonwav.mcdev.creator.step.AbstractModIdStep -import com.demonwav.mcdev.creator.step.AbstractModNameStep -import com.demonwav.mcdev.creator.step.AuthorsStep -import com.demonwav.mcdev.creator.step.DescriptionStep -import com.demonwav.mcdev.creator.step.LicenseStep -import com.demonwav.mcdev.creator.step.RepositoryStep -import com.demonwav.mcdev.creator.step.UseMixinsStep -import com.demonwav.mcdev.creator.step.WebsiteStep -import com.demonwav.mcdev.platform.fabric.EntryPoint -import com.demonwav.mcdev.platform.fabric.util.FabricConstants +import com.demonwav.mcdev.creator.step.* import com.demonwav.mcdev.platform.forge.inspections.sideonly.Side import com.demonwav.mcdev.util.MinecraftTemplates.Companion.FABRIC_MIXINS_JSON_TEMPLATE +import com.demonwav.mcdev.util.MinecraftTemplates.Companion.FABRIC_MOD_CLASS_TEMPLATE +import com.demonwav.mcdev.util.MinecraftTemplates.Companion.FABRIC_MOD_CLIENT_CLASS_TEMPLATE import com.demonwav.mcdev.util.MinecraftTemplates.Companion.FABRIC_MOD_JSON_TEMPLATE import com.demonwav.mcdev.util.toJavaClassName import com.demonwav.mcdev.util.toPackageName @@ -61,6 +53,11 @@ class FabricBaseFilesStep(parent: NewProjectWizardStep) : AbstractLongRunningAss val buildSystemProps = findStep>() val modId = data.getUserData(AbstractModIdStep.KEY) ?: return val modName = data.getUserData(AbstractModNameStep.KEY) ?: return + val packageName = "${buildSystemProps.groupId.toPackageName()}.${modId.toPackageName()}" + val mainClassName = modName.toJavaClassName() + val clientClassName = "${modName.toJavaClassName()}Client" + val mainClass = "$packageName.${modName.toJavaClassName()}" + val clientClass = "$packageName.client.${modName.toJavaClassName()}Client" val description = data.getUserData(DescriptionStep.KEY) ?: "" val envName = when (data.getUserData(FabricEnvironmentStep.KEY) ?: Side.NONE) { Side.CLIENT -> "client" @@ -73,8 +70,17 @@ class FabricBaseFilesStep(parent: NewProjectWizardStep) : AbstractLongRunningAss val license = data.getUserData(LicenseStep.KEY) ?: return val apiVersion = data.getUserData(FabricVersionChainStep.API_VERSION_KEY) val useMixins = data.getUserData(UseMixinsStep.KEY) ?: false + val authors = data.getUserData(AuthorsStep.KEY) ?: emptyList() + val website = data.getUserData(WebsiteStep.KEY) ?: "" + val repo = data.getUserData(RepositoryStep.KEY) ?: "" assets.addTemplateProperties( + "MAIN_PACKAGE" to packageName, + "CLIENT_PACKAGE" to "${packageName}.client", + "MAIN_CLASS_NAME" to mainClassName, + "CLIENT_CLASS_NAME" to clientClassName, + "MAIN_CLASS" to mainClass, + "CLIENT_CLASS" to clientClass, "ARTIFACT_ID" to buildSystemProps.artifactId, "MOD_ID" to modId, "MOD_NAME" to StringUtil.escapeStringCharacters(modName), @@ -90,13 +96,25 @@ class FabricBaseFilesStep(parent: NewProjectWizardStep) : AbstractLongRunningAss assets.addTemplateProperties("API_VERSION" to apiVersion) } + if (authors.isNotEmpty()) { + assets.addTemplateProperties("AUTHOR_LIST" to authors.map { s -> "\u0022${s}\u0022" }.joinToString(",")) + } + + if (website.isNotBlank()) { + assets.addTemplateProperties("WEBSITE" to website) + } + + if (repo.isNotBlank()) { + assets.addTemplateProperties("REPOSITORY" to repo) + } + if (useMixins) { - val packageName = - "${buildSystemProps.groupId.toPackageName()}.${modId.toPackageName()}.mixin" + val mixinPackageName = "${buildSystemProps.groupId.toPackageName()}.${modId.toPackageName()}.mixin" assets.addTemplateProperties( "MIXINS" to "true", - "MIXIN_PACKAGE_NAME" to packageName, + "MIXIN_PACKAGE_NAME" to mixinPackageName, ) + val mixinsJsonFile = "src/main/resources/$modId.mixins.json" assets.addTemplates(project, mixinsJsonFile to FABRIC_MIXINS_JSON_TEMPLATE) } @@ -108,37 +126,21 @@ class FabricBaseFilesStep(parent: NewProjectWizardStep) : AbstractLongRunningAss GeneratorEmptyDirectory("src/main/resources"), ) - assets.addTemplates(project, "src/main/resources/fabric.mod.json" to FABRIC_MOD_JSON_TEMPLATE) + assets.addTemplates(project, + "src/main/java/${mainClass.replace(".", "/")}.java" to FABRIC_MOD_CLASS_TEMPLATE, + "src/main/java/${clientClass.replace(".", "/")}.java" to FABRIC_MOD_CLIENT_CLASS_TEMPLATE, + "src/main/resources/fabric.mod.json" to FABRIC_MOD_JSON_TEMPLATE + ) WriteAction.runAndWait { val dir = VfsUtil.createDirectoryIfMissing( LocalFileSystem.getInstance(), "${assets.outputDirectory}/.gradle", - ) - ?: throw IllegalStateException("Unable to create .gradle directory") - val file = dir.findOrCreateChildData(this, MAGIC_DEFERRED_INIT_FILE) - - val authors = data.getUserData(AuthorsStep.KEY) ?: emptyList() - val website = data.getUserData(WebsiteStep.KEY) - val repo = data.getUserData(RepositoryStep.KEY) + ) ?: throw IllegalStateException("Unable to create .gradle directory") - val packageName = "${buildSystemProps.groupId.toPackageName()}.${modId.toPackageName()}" - val mainClassName = "$packageName.${modName.toJavaClassName()}" - val clientClassName = "$packageName.client.${modName.toJavaClassName()}Client" - - val entrypoints = listOf( - "main,${EntryPoint.Type.CLASS.name},$mainClassName,${FabricConstants.MOD_INITIALIZER}", - "client,${EntryPoint.Type.CLASS.name},$clientClassName,${FabricConstants.CLIENT_MOD_INITIALIZER}", - ) - val fileContents = """ - ${authors.joinToString(",")} - $website - $repo - ${entrypoints.joinToString(";")} - """.trimIndent() // TODO: un-hardcode? - - VfsUtil.saveText(file, fileContents) + dir.findOrCreateChildData(this, MAGIC_DEFERRED_INIT_FILE) } + } } diff --git a/src/main/kotlin/util/MinecraftTemplates.kt b/src/main/kotlin/util/MinecraftTemplates.kt index 368e30cee..b0382f359 100644 --- a/src/main/kotlin/util/MinecraftTemplates.kt +++ b/src/main/kotlin/util/MinecraftTemplates.kt @@ -97,10 +97,10 @@ class MinecraftTemplates : FileTemplateGroupDescriptorFactory { FileTemplateGroupDescriptor("Fabric", PlatformAssets.FABRIC_ICON).let { fabricGroup -> group.addTemplate(fabricGroup) + fabricGroup.addTemplate(FileTemplateDescriptor(FABRIC_MOD_CLASS_TEMPLATE)) + fabricGroup.addTemplate(FileTemplateDescriptor(FABRIC_MOD_CLIENT_CLASS_TEMPLATE)) fabricGroup.addTemplate(FileTemplateDescriptor(FABRIC_BUILD_GRADLE_TEMPLATE, PlatformAssets.FABRIC_ICON)) - fabricGroup.addTemplate( - FileTemplateDescriptor(FABRIC_GRADLE_PROPERTIES_TEMPLATE, PlatformAssets.FABRIC_ICON), - ) + fabricGroup.addTemplate(FileTemplateDescriptor(FABRIC_GRADLE_PROPERTIES_TEMPLATE, PlatformAssets.FABRIC_ICON),) fabricGroup.addTemplate(FileTemplateDescriptor(FABRIC_MIXINS_JSON_TEMPLATE, PlatformAssets.FABRIC_ICON)) fabricGroup.addTemplate(FileTemplateDescriptor(FABRIC_MOD_JSON_TEMPLATE, PlatformAssets.FABRIC_ICON)) fabricGroup.addTemplate(FileTemplateDescriptor(FABRIC_SETTINGS_GRADLE_TEMPLATE, PlatformAssets.FABRIC_ICON)) @@ -221,6 +221,8 @@ class MinecraftTemplates : FileTemplateGroupDescriptorFactory { const val MODS_TOML_TEMPLATE = "mods.toml" const val PACK_MCMETA_TEMPLATE = "pack.mcmeta" + const val FABRIC_MOD_CLASS_TEMPLATE = "Fabric Mod Class.java" + const val FABRIC_MOD_CLIENT_CLASS_TEMPLATE = "Fabric Mod Client Class.java" const val FABRIC_BUILD_GRADLE_TEMPLATE = "fabric_build.gradle" const val FABRIC_GRADLE_PROPERTIES_TEMPLATE = "fabric_gradle.properties" const val FABRIC_MIXINS_JSON_TEMPLATE = "fabric_mixins.json" diff --git a/src/main/resources/fileTemplates/j2ee/fabric/Fabric Mod Class.java.ft b/src/main/resources/fileTemplates/j2ee/fabric/Fabric Mod Class.java.ft new file mode 100644 index 000000000..c102a93b8 --- /dev/null +++ b/src/main/resources/fileTemplates/j2ee/fabric/Fabric Mod Class.java.ft @@ -0,0 +1,12 @@ +package ${MAIN_PACKAGE}; + +import net.fabricmc.api.ModInitializer; + +public class ${MAIN_CLASS_NAME} implements ModInitializer { + + @Override + public void onInitialize() { + + } + +} diff --git a/src/main/resources/fileTemplates/j2ee/fabric/Fabric Mod Class.java.html b/src/main/resources/fileTemplates/j2ee/fabric/Fabric Mod Class.java.html new file mode 100644 index 000000000..f5dc15cb8 --- /dev/null +++ b/src/main/resources/fileTemplates/j2ee/fabric/Fabric Mod Class.java.html @@ -0,0 +1,25 @@ + + + + +

This is a built-in file template used to create a new mod class for Fabric.

+ + diff --git a/src/main/resources/fileTemplates/j2ee/fabric/Fabric Mod Client Class.java.ft b/src/main/resources/fileTemplates/j2ee/fabric/Fabric Mod Client Class.java.ft new file mode 100644 index 000000000..21c60ddf1 --- /dev/null +++ b/src/main/resources/fileTemplates/j2ee/fabric/Fabric Mod Client Class.java.ft @@ -0,0 +1,12 @@ +package ${CLIENT_PACKAGE}; + +import net.fabricmc.api.ClientModInitializer; + +public class ${CLIENT_CLASS_NAME} implements ClientModInitializer { + + @Override + public void onInitializeClient() { + + } + +} diff --git a/src/main/resources/fileTemplates/j2ee/fabric/Fabric Mod Client Class.java.html b/src/main/resources/fileTemplates/j2ee/fabric/Fabric Mod Client Class.java.html new file mode 100644 index 000000000..e69de29bb diff --git a/src/main/resources/fileTemplates/j2ee/fabric/fabric_mod.json.ft b/src/main/resources/fileTemplates/j2ee/fabric/fabric_mod.json.ft index 148ffeb83..d2d00cf85 100644 --- a/src/main/resources/fileTemplates/j2ee/fabric/fabric_mod.json.ft +++ b/src/main/resources/fileTemplates/j2ee/fabric/fabric_mod.json.ft @@ -6,26 +6,46 @@ "name": "${MOD_NAME}", "description": "${MOD_DESCRIPTION}", +#if (${AUTHOR_LIST}) + "authors": [${AUTHOR_LIST}], +#else "authors": [], - "contact": {}, +#end + + "contact": { +#if (${WEBSITE}) + "website": "${WEBSITE}"#if (${REPOSITORY}), +#end +#end +#if (${REPOSITORY}) + "repo": "${REPOSITORY}" +#end + }, "license": "${LICENSE}", "icon": "assets/${MOD_ID}/icon.png", "environment": "${MOD_ENVIRONMENT}", - "entrypoints": {}, + "entrypoints": { + "main": [ + "${MAIN_CLASS}" + ], + "client": [ + "${CLIENT_CLASS}" + ] + }, - #if (${MIXINS}) - "mixins": [ - "${MOD_ID}.mixins.json" - ], - #end +#if (${MIXINS}) + "mixins": [ + "${MOD_ID}.mixins.json" + ], +#end "depends": { "fabricloader": ">=${d}{loader_version}", - #if (${API_VERSION}) - "fabric": "*", - #end + #if (${API_VERSION}) + "fabric": "*", + #end "minecraft": "${d}{minecraft_version}" } } From ece606f74d862641ee7f98a6ff08aa3a687d5e6f Mon Sep 17 00:00:00 2001 From: Gurwi Date: Sun, 11 Feb 2024 21:04:21 +0100 Subject: [PATCH 3/4] Added Fabric API Main Class & ClientClass templates --- .../platform/fabric/creator/asset-steps.kt | 6 ++--- src/main/kotlin/util/MinecraftTemplates.kt | 2 +- .../j2ee/fabric/Fabric Mod Class.java.html | 2 +- .../fabric/Fabric Mod Client Class.java.html | 25 +++++++++++++++++++ 4 files changed, 30 insertions(+), 5 deletions(-) diff --git a/src/main/kotlin/platform/fabric/creator/asset-steps.kt b/src/main/kotlin/platform/fabric/creator/asset-steps.kt index 312485682..8020e09e2 100644 --- a/src/main/kotlin/platform/fabric/creator/asset-steps.kt +++ b/src/main/kotlin/platform/fabric/creator/asset-steps.kt @@ -76,7 +76,7 @@ class FabricBaseFilesStep(parent: NewProjectWizardStep) : AbstractLongRunningAss assets.addTemplateProperties( "MAIN_PACKAGE" to packageName, - "CLIENT_PACKAGE" to "${packageName}.client", + "CLIENT_PACKAGE" to "$packageName.client", "MAIN_CLASS_NAME" to mainClassName, "CLIENT_CLASS_NAME" to clientClassName, "MAIN_CLASS" to mainClass, @@ -126,7 +126,8 @@ class FabricBaseFilesStep(parent: NewProjectWizardStep) : AbstractLongRunningAss GeneratorEmptyDirectory("src/main/resources"), ) - assets.addTemplates(project, + assets.addTemplates( + project, "src/main/java/${mainClass.replace(".", "/")}.java" to FABRIC_MOD_CLASS_TEMPLATE, "src/main/java/${clientClass.replace(".", "/")}.java" to FABRIC_MOD_CLIENT_CLASS_TEMPLATE, "src/main/resources/fabric.mod.json" to FABRIC_MOD_JSON_TEMPLATE @@ -140,7 +141,6 @@ class FabricBaseFilesStep(parent: NewProjectWizardStep) : AbstractLongRunningAss dir.findOrCreateChildData(this, MAGIC_DEFERRED_INIT_FILE) } - } } diff --git a/src/main/kotlin/util/MinecraftTemplates.kt b/src/main/kotlin/util/MinecraftTemplates.kt index b0382f359..c75a82b3b 100644 --- a/src/main/kotlin/util/MinecraftTemplates.kt +++ b/src/main/kotlin/util/MinecraftTemplates.kt @@ -99,8 +99,8 @@ class MinecraftTemplates : FileTemplateGroupDescriptorFactory { group.addTemplate(fabricGroup) fabricGroup.addTemplate(FileTemplateDescriptor(FABRIC_MOD_CLASS_TEMPLATE)) fabricGroup.addTemplate(FileTemplateDescriptor(FABRIC_MOD_CLIENT_CLASS_TEMPLATE)) + fabricGroup.addTemplate(FileTemplateDescriptor(FABRIC_GRADLE_PROPERTIES_TEMPLATE)) fabricGroup.addTemplate(FileTemplateDescriptor(FABRIC_BUILD_GRADLE_TEMPLATE, PlatformAssets.FABRIC_ICON)) - fabricGroup.addTemplate(FileTemplateDescriptor(FABRIC_GRADLE_PROPERTIES_TEMPLATE, PlatformAssets.FABRIC_ICON),) fabricGroup.addTemplate(FileTemplateDescriptor(FABRIC_MIXINS_JSON_TEMPLATE, PlatformAssets.FABRIC_ICON)) fabricGroup.addTemplate(FileTemplateDescriptor(FABRIC_MOD_JSON_TEMPLATE, PlatformAssets.FABRIC_ICON)) fabricGroup.addTemplate(FileTemplateDescriptor(FABRIC_SETTINGS_GRADLE_TEMPLATE, PlatformAssets.FABRIC_ICON)) diff --git a/src/main/resources/fileTemplates/j2ee/fabric/Fabric Mod Class.java.html b/src/main/resources/fileTemplates/j2ee/fabric/Fabric Mod Class.java.html index f5dc15cb8..fa57f95b6 100644 --- a/src/main/resources/fileTemplates/j2ee/fabric/Fabric Mod Class.java.html +++ b/src/main/resources/fileTemplates/j2ee/fabric/Fabric Mod Class.java.html @@ -20,6 +20,6 @@ -

This is a built-in file template used to create a new mod class for Fabric.

+

This is a built-in file template used to create a new mod class.

diff --git a/src/main/resources/fileTemplates/j2ee/fabric/Fabric Mod Client Class.java.html b/src/main/resources/fileTemplates/j2ee/fabric/Fabric Mod Client Class.java.html index e69de29bb..fa57f95b6 100644 --- a/src/main/resources/fileTemplates/j2ee/fabric/Fabric Mod Client Class.java.html +++ b/src/main/resources/fileTemplates/j2ee/fabric/Fabric Mod Client Class.java.html @@ -0,0 +1,25 @@ + + + + +

This is a built-in file template used to create a new mod class.

+ + From 8b8716ee16c95cb5abf9c4e30c251e65d34f4c2a Mon Sep 17 00:00:00 2001 From: Gurwi Date: Sun, 11 Feb 2024 21:18:48 +0100 Subject: [PATCH 4/4] Disabled ktlint no-wildcard-imports rule --- build.gradle.kts | 1 + src/main/kotlin/platform/fabric/creator/asset-steps.kt | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index 5af594a6f..ef77ac56a 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -317,6 +317,7 @@ license { ktlint { disabledRules.add("filename") + disabledRules.add("no-wildcard-imports") } tasks.withType().configureEach { workerMaxHeapSize.set("512m") diff --git a/src/main/kotlin/platform/fabric/creator/asset-steps.kt b/src/main/kotlin/platform/fabric/creator/asset-steps.kt index 8020e09e2..9b66a6b08 100644 --- a/src/main/kotlin/platform/fabric/creator/asset-steps.kt +++ b/src/main/kotlin/platform/fabric/creator/asset-steps.kt @@ -97,7 +97,7 @@ class FabricBaseFilesStep(parent: NewProjectWizardStep) : AbstractLongRunningAss } if (authors.isNotEmpty()) { - assets.addTemplateProperties("AUTHOR_LIST" to authors.map { s -> "\u0022${s}\u0022" }.joinToString(",")) + assets.addTemplateProperties("AUTHOR_LIST" to authors.joinToString(",") { s -> "\u0022${s}\u0022" }) } if (website.isNotBlank()) {