#!/bin/bash # Minecraft Plugin Development Server Script set -e echo "🎮 Minecraft Plugin Development Server" echo "======================================" # Function to build plugin build_plugin() { echo "📦 Building plugin..." sbt clean package # Check if jar exists if [ ! -f "target/scala-2.13/minecraft-scala-plugin_2.13-1.0.0.jar" ]; then echo "❌ Plugin jar not found! Build failed." exit 1 fi echo "✅ Plugin built successfully!" } # Create necessary directories mkdir -p server-data server-logs # Start/restart the server case "${1:-start}" in "start") build_plugin echo "🚀 Starting development server..." docker compose up -d echo "✅ Server started! Connect to localhost:25565" echo "📜 To view logs: docker compose logs -f" echo "🛑 To stop: ./dev-server.sh stop" ;; "stop") echo "🛑 Stopping development server..." docker compose down echo "✅ Server stopped!" ;; "restart") echo "🔄 Restarting development server..." build_plugin docker compose down docker compose up -d echo "✅ Server restarted!" ;; "logs") echo "📜 Showing server logs..." docker compose logs -f ;; "console") echo "💻 Connecting to server console..." docker exec -it minecraft-dev-server /bin/bash ;; "attach") echo "📎 Attaching to Minecraft server console..." echo "💡 To detach: Press Ctrl+P then Ctrl+Q" docker attach minecraft-dev-server ;; "reload") echo "🔄 Hot reloading plugin..." build_plugin echo "📦 Copying plugin to server..." docker cp target/scala-2.13/minecraft-scala-plugin_2.13-1.0.0.jar minecraft-dev-server:/minecraft/plugins/minecraft-scala-plugin.jar echo "🔌 Reloading plugins in server..." docker exec minecraft-dev-server bash -c 'echo "reload" > /tmp/reload_cmd' || echo "⚠️ Use '/reload' command in server console for hot reload" echo "✅ Plugin copied! Use '/reload' in server console to apply changes" ;; "rebuild") echo "🔨 Rebuilding everything..." build_plugin docker compose down docker compose build --no-cache docker compose up -d echo "✅ Complete rebuild finished!" ;; *) echo "Usage: $0 {start|stop|restart|logs|console|attach|reload|rebuild}" echo "" echo "Commands:" echo " start - Build plugin and start server" echo " stop - Stop the server" echo " restart - Rebuild plugin and restart server" echo " logs - View server logs" echo " console - Connect to server console (bash)" echo " attach - Attach to Minecraft server console" echo " reload - Hot reload plugin (requires manual /reload)" echo " rebuild - Complete rebuild (server + plugin)" exit 1 ;; esac