Refactored Command structure, began support for API driven Rooms
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user