78 lines
2.0 KiB
Bash
78 lines
2.0 KiB
Bash
#!/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"
|
|
|