Refactored Command structure, began support for API driven Rooms

This commit is contained in:
2023-10-01 19:32:14 +02:00
parent 8fddabe00f
commit 61448e77f2
18 changed files with 167 additions and 49 deletions

View File

@@ -70,24 +70,28 @@ public class Room extends MineNetInstance implements Spawnable {
private Player owner;
private Room(Player owner) {
super(Dimension.THE_END.DIMENSION);
construct();
setOwner(owner);
new GameSelector().setInstance(this, new Pos(0.5, 16, 9.5));
}
protected Room() {
super(Dimension.THE_END.DIMENSION);
}
private void construct() {
MinecraftServer.getInstanceManager().registerInstance(this);
setChunkLoader(new AnvilLoader(Resource.LOBBY_MAP.getPath()));
eventNode().addListener(PlayerBlockBreakEvent.class, CommonEventHandles::cancel);
eventNode().addListener(PlayerDisconnectEvent.class, playerDisconnectEvent -> unsetRoom(playerDisconnectEvent.getPlayer()));
setOwner(owner);
new GameSelector().setInstance(this, new Pos(0.5, 16, 9.5));
}
public Player getOwner() {
return owner;
}
private void setOwner(Player newOwner) {
public void setOwner(Player newOwner) {
this.owner = newOwner;
this.owner.eventNode().addListener(PlayerDisconnectEvent.class, playerDisconnectEvent -> {
@@ -97,7 +101,7 @@ public class Room extends MineNetInstance implements Spawnable {
getAllMembers().stream()
.filter(player -> player != p) // exclude the current leaving owner
.findFirst() // find first user meeting the requirement
.findFirst() // find the first user meeting the requirement
.ifPresentOrElse(
this::setOwner, // set the new owner
() -> Room.deleteRoom(Room.getRoom(p)) // or else delete the room (no players in the room)
@@ -108,10 +112,7 @@ public class Room extends MineNetInstance implements Spawnable {
new ChatMessage(Icon.ERROR).appendStatic("The room leader left!").send(getAllMembers());
new ChatMessage(Icon.SCIENCE).appendStatic(this.owner.getUsername()).appendStatic(" is the new Leader!").send(getAllMembers().stream().filter(player -> player != this.owner).collect(Collectors.toSet()));
new ChatMessage(Icon.SUCCESS).appendStatic("You are now the leader.").send(this.owner);
logger.info("Room owner changed from " + p.getUsername() + " to " + owner.getUsername());
});
}
public void moveMembersToGame(Game game) {

View File

@@ -0,0 +1,15 @@
package eu.mhsl.minenet.minigames.instance.virtualRoom;
import eu.mhsl.minenet.minigames.instance.room.Room;
import net.minestom.server.coordinate.Pos;
public class VirtualRoom extends Room {
public VirtualRoom() {
}
@Override
public Pos getSpawn() {
return null;
}
}