diff --git a/papermc.sh b/papermc.sh new file mode 100644 index 0000000..b8d229c --- /dev/null +++ b/papermc.sh @@ -0,0 +1,77 @@ +#!/bin/sh + +# Name: PaperMC Plugin Environment Creator +# Description: Creates a PaperMC plugin project structure with Gradle and a basic event listener +# Author: bacalhau + +echo "### PaperMC Plugin Environment Creator ### + +Choose a project name: " + +# Reads the project name +read PROJECT_NAME + +echo "Choose a package name (e.g., io.papermc.$PROJECT_NAME): " +read PACKAGE_NAME + +# Converts package name to folder structure +PACKAGE_PATH="$(echo "$PACKAGE_NAME" | tr '.' '/')" + +# Creates directories +mkdir -p "$PROJECT_NAME/src/main/java/$PACKAGE_PATH" +mkdir -p "$PROJECT_NAME/src/main/resources" + +# Writes settings.gradle.kts +echo "rootProject.name = \"$PROJECT_NAME\"" > "$PROJECT_NAME/settings.gradle.kts" + +# Writes build.gradle.kts +echo "plugins { + id(\"java\") +} + +repositories { + maven { + name = \"papermc\" + url = uri(\"https://repo.papermc.io/repository/maven-public/\") + } +} + +dependencies { + compileOnly(\"io.papermc.paper:paper-api:1.21.4-R0.1-SNAPSHOT\") +} + +java { + toolchain.languageVersion.set(JavaLanguageVersion.of(21)) +}" > "$PROJECT_NAME/build.gradle.kts" + +# Writes plugin.yml +echo "name: $PROJECT_NAME +main: $PACKAGE_NAME.$PROJECT_NAME +version: 1.0 +api-version: 1.20" > "$PROJECT_NAME/src/main/resources/plugin.yml" + +# Writes Main class +echo "package $PACKAGE_NAME; + +import net.kyori.adventure.text.Component; +import org.bukkit.Bukkit; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.plugin.java.JavaPlugin; + +public class $PROJECT_NAME extends JavaPlugin implements Listener { + @Override + public void onEnable() { + Bukkit.getPluginManager().registerEvents(this, this); + } + + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) { + event.getPlayer().sendMessage(Component.text(\"Hello, \" + event.getPlayer().getName() + \"!\")); + } +}" > "$PROJECT_NAME/src/main/java/$PACKAGE_PATH/$PROJECT_NAME.java" + +# Lists the project structure +tree "$PROJECT_NAME" +