diff --git a/.gitignore b/.gitignore index 2e0d56c..d3ee7cf 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ # Local server software **/.server +app/bin ############################################### ## Gradle files to ignore diff --git a/README.md b/README.md index 13bc770..1d16eee 100644 --- a/README.md +++ b/README.md @@ -21,9 +21,7 @@ A template for developing custom plugins for PaperMC Minecraft Servers - Or you can clone a copy: `git clone https://github.com/thehale/papermc-plugin-template` 2. Choose a name for your plugin (e.g. `my-plugin`). - Rename the repository. - - Open `gradle.properties` and change the `pluginOwner` variable to your - GitHub username, then change the `pluginName` to your plugin name (use only - letters and underscores). + - Run `./gradlew renamePlugin -PnewAuthor=YOUR_GITHUB_USERNAME -PnewPluginName=YOUR_PLUGIN_NAME` ## Contributing diff --git a/app/build.gradle b/app/build.gradle index 9c0dddd..87679b8 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -202,4 +202,115 @@ def getPluginYml() { String PLUGIN_YML_PATH = "app/src/main/resources/plugin.yml" InputStream pluginYml = new File(PLUGIN_YML_PATH).newInputStream() return new org.yaml.snakeyaml.Yaml().load(pluginYml) +} + +task renamePlugin { + doLast { + logger.lifecycle("Renaming plugin to " + newAuthor + "/" + newPluginName) + def pluginRenamer = new PluginRenamer( + pluginOwner, pluginName, + newAuthor, newPluginName + ) + + pluginRenamer.renameFolder(new File('app/src')) + pluginRenamer.renameFile(new File('gradle.properties')) + } +} + + +class PluginRenamer { + + String oldAuthor + String oldAuthorSnakeCase + String oldAuthorCapitalized + + String oldPluginName + String oldPluginNameSnakeCase + String oldPluginNameCapitalized + + String newAuthor + String newAuthorSnakeCase + String newAuthorCapitalized + + String newPluginName + String newPluginNameSnakeCase + String newPluginNameCapitalized + + PluginRenamer(String oldAuthor, String oldPluginName, String newAuthor, String newPluginName) { + this.oldAuthor = oldAuthor + this.oldAuthorSnakeCase = asSnakeCase(oldAuthor) + this.oldAuthorCapitalized = asCapitalized(oldAuthorSnakeCase) + + this.oldPluginName = oldPluginName + this.oldPluginNameSnakeCase = asSnakeCase(oldPluginName) + this.oldPluginNameCapitalized = asCapitalized(oldPluginNameSnakeCase) + + this.newAuthor = newAuthor + this.newAuthorSnakeCase = asSnakeCase(newAuthor) + this.newAuthorCapitalized = asCapitalized(newAuthorSnakeCase) + + this.newPluginName = newPluginName + this.newPluginNameSnakeCase = asSnakeCase(newPluginName) + this.newPluginNameCapitalized = asCapitalized(newPluginNameSnakeCase) + } + void renameFolder(File folder) { + folder.eachFile { + if (it.isFile()) { + renameFile(it) + } + } + folder.eachDir { + if (it.isDirectory()) { + renameFolder(it) + } + } + println("Renaming folder " + folder) + def newFolderName = renameText(folder.getName()) + if (newFolderName != folder.getName()) { + folder.renameTo(new File(folder.parent, newFolderName)) + } + } + void renameFile(File file) { + println("Renaming file " + file) + String text = file.text + text = renameText(text) + file.write(text) + + def newFileName = renameText(file.getName()) + if (newFileName != file.getName()) { + file.renameTo(new File(file.parent, newFileName)) + } + } + String renameText(String text) { + def lines = text.split("\n") + lines = lines.collect { + renameLine(it) + } + text = lines.join("\n") + return text + } + String renameLine(String line) { + if (line.contains("[ATTRIBUTION]")) { + return line // Don't rename attribution lines. + } + line = line.replaceAll(oldAuthor, newAuthor) + line = line.replaceAll(oldAuthorSnakeCase, newAuthorSnakeCase) + line = line.replaceAll(oldAuthorCapitalized, newAuthorCapitalized) + line = line.replaceAll(oldPluginName, newPluginName) + line = line.replaceAll(oldPluginNameSnakeCase, newPluginNameSnakeCase) + line = line.replaceAll(oldPluginNameCapitalized, newPluginNameCapitalized) + return line + } + def asSnakeCase(String s) { + return s + .toLowerCase() + .replaceAll(/[\s-]+/, "_") + .replaceAll(/[^a-z0-9_]/, "") + } + def asCapitalized(String s) { + return s + .split("_") + .collect { it.capitalize() } + .join("") + } } \ No newline at end of file diff --git a/app/src/main/java/dev/thehale/papermc_plugin_template/PapermcPluginTemplateListener.java b/app/src/main/java/dev/thehale/papermc_plugin_template/PapermcPluginTemplateListener.java index 4fbd1a8..480ce00 100644 --- a/app/src/main/java/dev/thehale/papermc_plugin_template/PapermcPluginTemplateListener.java +++ b/app/src/main/java/dev/thehale/papermc_plugin_template/PapermcPluginTemplateListener.java @@ -54,4 +54,4 @@ public class PapermcPluginTemplateListener implements Listener { player.sendMessage("Hello " + player.getName() + "! (from PapermcPluginTemplate)"); } -} +} \ No newline at end of file diff --git a/app/src/main/java/dev/thehale/papermc_plugin_template/PapermcPluginTemplatePlugin.java b/app/src/main/java/dev/thehale/papermc_plugin_template/PapermcPluginTemplatePlugin.java index 60f614f..cb4d303 100644 --- a/app/src/main/java/dev/thehale/papermc_plugin_template/PapermcPluginTemplatePlugin.java +++ b/app/src/main/java/dev/thehale/papermc_plugin_template/PapermcPluginTemplatePlugin.java @@ -20,7 +20,7 @@ public class PapermcPluginTemplatePlugin extends JavaPlugin { public static PapermcPluginTemplatePlugin instance; public static Logger log; public final static String NAME = "PapermcPluginTemplate"; - public final static int BSTATS_PLUGIN_ID = 20765; // TODO: Replace with your own bStats plugin ID + public final static int BSTATS_PLUGIN_ID = 20765; // Optional: Replace with your own bStats plugin ID /** * Default constructor. @@ -66,6 +66,6 @@ public class PapermcPluginTemplatePlugin extends JavaPlugin { @Override public void onDisable() { - log.info("Thanks for using papermc_plugin_template!"); + log.info("Thanks for using " + NAME + "!"); } } \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 37419f3..0f6acbf 100644 --- a/gradle.properties +++ b/gradle.properties @@ -5,7 +5,7 @@ pluginOwner = thehale ## The name of your plugin (match the name of your repository) -pluginName = papermc_plugin_template +pluginName = papermc-plugin-template ############################################