J3c: a land server stopping tells its players and is started afresh when they rejoin; the extra ports to forward on the Host page, the hosting message, the server log and HOSTING.md
This commit is contained in:
@@ -181,6 +181,29 @@ func _body() -> void:
|
||||
await _load_world()
|
||||
check(world.worldlet_id() == "cove" and player.global_position.distance_to(spot) < 1.5,
|
||||
"where she left off (%.1f m off)" % player.global_position.distance_to(spot))
|
||||
print("the Cove's server crashes")
|
||||
var why := {"text": ""}
|
||||
var on_left := func(t): why.text = t
|
||||
Net.left.connect(on_left)
|
||||
var out: Array = []
|
||||
OS.execute("lsof", ["-nP", "-t", "-iUDP:%d" % (PORT + 1)], out)
|
||||
var pid := String(out[0] if not out.is_empty() else "").strip_edges().get_slice("\n", 0)
|
||||
check(pid.is_valid_int(), "(found the Cove's server: pid %s)" % pid)
|
||||
if pid.is_valid_int():
|
||||
OS.kill(int(pid))
|
||||
await _until(func(): return not String(why.text).is_empty(), 15.0)
|
||||
Net.left.disconnect(on_left)
|
||||
check(String(why.text).begins_with("Lost the connection to the Cove"), "Alice is told what happened (%s)" % why.text)
|
||||
world.queue_free()
|
||||
await process_frame
|
||||
world = null
|
||||
_arrived = ""
|
||||
r = await _join()
|
||||
await _until(func(): return not _arrived.is_empty(), 30.0)
|
||||
check(_arrived == "cove", "joining again: the hub starts the Cove's server afresh and sends her back (%s)" % _arrived)
|
||||
if _arrived == "cove":
|
||||
await _load_world()
|
||||
check(world.worldlet_id() == "cove" and player.inventory.count("antler_pickaxe") == 1, "in the Cove, with her things")
|
||||
print("an admin in the Cove kicks someone in the Valley")
|
||||
await _until(func(): return Net.roster.any(func(e): return String(e.name) == "Bob"), 4.0)
|
||||
root.get_node("Chat").say("/kick Bob")
|
||||
|
||||
Reference in New Issue
Block a user