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