@@ -100,6 +100,83 @@ reset_devserver_if_needed() {
|
||||
fi
|
||||
}
|
||||
|
||||
sync_third_party_plugins() {
|
||||
local src="$ROOT/plugins"
|
||||
local dest="$ROOT/devserver/mods"
|
||||
local jar
|
||||
|
||||
[[ -d "$src" ]] || return 0
|
||||
mkdir -p "$dest"
|
||||
|
||||
shopt -s nullglob
|
||||
for jar in "$src"/*.jar; do
|
||||
cp -u "$jar" "$dest/"
|
||||
echo "Plugin tiers: $(basename "$jar") -> devserver/mods/"
|
||||
done
|
||||
shopt -u nullglob
|
||||
}
|
||||
|
||||
apply_world_spawn() {
|
||||
local world_config="$ROOT/devserver/universe/worlds/default/config.json"
|
||||
local spawn_template="$ROOT/config/universe/worlds/default/spawn-provider.json"
|
||||
local players_dir="$ROOT/devserver/universe/players"
|
||||
|
||||
[[ -f "$spawn_template" ]] || return 0
|
||||
[[ -f "$world_config" ]] || return 0
|
||||
|
||||
python3 - "$spawn_template" "$world_config" "$players_dir" <<'PY'
|
||||
import json
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
spawn_template = Path(sys.argv[1])
|
||||
world_config = Path(sys.argv[2])
|
||||
players_dir = Path(sys.argv[3])
|
||||
|
||||
patch = json.loads(spawn_template.read_text(encoding="utf-8"))
|
||||
config = json.loads(world_config.read_text(encoding="utf-8"))
|
||||
config.update(patch)
|
||||
world_config.write_text(json.dumps(config, indent=2) + "\n", encoding="utf-8")
|
||||
|
||||
spawn = patch["SpawnProvider"]["SpawnPoint"]
|
||||
last_position = {
|
||||
"X": spawn["X"],
|
||||
"Y": spawn["Y"],
|
||||
"Z": spawn["Z"],
|
||||
"Pitch": spawn.get("Pitch", 0.0),
|
||||
"Yaw": spawn.get("Yaw", 0.0),
|
||||
"Roll": spawn.get("Roll", 0.0),
|
||||
}
|
||||
position = {"X": spawn["X"], "Y": spawn["Y"], "Z": spawn["Z"]}
|
||||
rotation = {
|
||||
"Pitch": spawn.get("Pitch", 0.0),
|
||||
"Yaw": spawn.get("Yaw", 0.0),
|
||||
"Roll": spawn.get("Roll", 0.0),
|
||||
}
|
||||
|
||||
if players_dir.is_dir():
|
||||
for player_file in players_dir.glob("*.json"):
|
||||
data = json.loads(player_file.read_text(encoding="utf-8"))
|
||||
components = data.get("Components", {})
|
||||
transform = components.get("Transform")
|
||||
if isinstance(transform, dict):
|
||||
transform["Position"] = dict(position)
|
||||
transform["Rotation"] = dict(rotation)
|
||||
|
||||
player_data = components.get("Player", {}).get("PlayerData", {})
|
||||
per_world = player_data.get("PerWorldData", {}).get("default")
|
||||
if isinstance(per_world, dict):
|
||||
per_world["LastPosition"] = dict(last_position)
|
||||
|
||||
player_file.write_text(json.dumps(data, indent=2) + "\n", encoding="utf-8")
|
||||
|
||||
print(
|
||||
f"Spawn default: X={spawn['X']}, Y={spawn['Y']}, Z={spawn['Z']} "
|
||||
f"(world config + joueurs existants)"
|
||||
)
|
||||
PY
|
||||
}
|
||||
|
||||
run_gradle() {
|
||||
"$ROOT/gradlew" --stop 2>/dev/null || true
|
||||
"$ROOT/gradlew" "${GRADLE_ARGS[@]}" "$@"
|
||||
@@ -116,9 +193,12 @@ reset_devserver_if_needed
|
||||
|
||||
echo "Configuration du serveur de dev..."
|
||||
run_gradle setupServer
|
||||
sync_third_party_plugins
|
||||
|
||||
echo "Compilation..."
|
||||
run_gradle build
|
||||
|
||||
apply_world_spawn
|
||||
|
||||
echo "Démarrage du serveur (logs: devserver/logs/)..."
|
||||
exec "$ROOT/gradlew" "${GRADLE_ARGS[@]}" runServer
|
||||
|
||||
Reference in New Issue
Block a user