Files
minecraft-scala-plugin-temp…/dev-server.sh
mii443 b256736d95 Add hot reload functionality to development script
- Add 'reload' command for quick plugin updates
- Plugin files are copied to running server without restart
- Manual /reload command required in server console
- Safer alternative to full restart for development

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-18 00:44:35 +09:00

94 lines
3.0 KiB
Bash
Executable File

#!/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