forked from SteamWar/SteamWar
Add world-based permissions and migration commands
- Switch bau logic from owner-scoped to world-scoped data - Add CLI commands for world migration, templating, and archiving - Extend world storage with team worlds and lock state support
This commit is contained in:
@@ -29,6 +29,7 @@ import java.util.function.Consumer;
|
||||
@Getter
|
||||
public class Bauserver extends Subserver {
|
||||
private static final Map<UUID, Bauserver> servers = new HashMap<>();
|
||||
private static final Map<UUID, Bauserver> serversByWorld = new HashMap<>();
|
||||
|
||||
public static Bauserver get(UUID owner) {
|
||||
synchronized (servers) {
|
||||
@@ -36,25 +37,43 @@ public class Bauserver extends Subserver {
|
||||
}
|
||||
}
|
||||
|
||||
public static Bauserver getByWorld(UUID world) {
|
||||
synchronized (serversByWorld) {
|
||||
return serversByWorld.get(world);
|
||||
}
|
||||
}
|
||||
|
||||
private final UUID owner;
|
||||
private final UUID world;
|
||||
|
||||
public Bauserver(String serverName, UUID owner, int port, ProcessBuilder processBuilder, Runnable shutdownCallback) {
|
||||
this(serverName, owner, port, processBuilder, shutdownCallback, null);
|
||||
this(serverName, owner, owner, port, processBuilder, shutdownCallback, null);
|
||||
}
|
||||
|
||||
public Bauserver(String serverName, UUID owner, int port, ProcessBuilder processBuilder, Runnable shutdownCallback, Consumer<Exception> failureCallback) {
|
||||
this(serverName, owner, owner, port, processBuilder, shutdownCallback, failureCallback);
|
||||
}
|
||||
|
||||
public Bauserver(String serverName, UUID owner, UUID world, int port, ProcessBuilder processBuilder, Runnable shutdownCallback, Consumer<Exception> failureCallback) {
|
||||
super(serverName, port, processBuilder, shutdownCallback, failureCallback);
|
||||
this.owner = owner;
|
||||
this.world = world;
|
||||
|
||||
synchronized (servers) {
|
||||
servers.put(owner, this);
|
||||
servers.putIfAbsent(owner, this);
|
||||
}
|
||||
synchronized (serversByWorld) {
|
||||
serversByWorld.put(world, this);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void unregister() {
|
||||
synchronized (servers) {
|
||||
servers.remove(owner);
|
||||
servers.remove(owner, this);
|
||||
}
|
||||
synchronized (serversByWorld) {
|
||||
serversByWorld.remove(world);
|
||||
}
|
||||
super.unregister();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user