added missing gradle files
This commit is contained in:
@ -1,4 +0,0 @@
|
||||
package eu.mhsl.minenet.minigames;
|
||||
|
||||
public class Api {
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
package eu.mhsl.minenet.minigames.api;
|
||||
|
||||
import static spark.Spark.*;
|
||||
|
||||
public class HttpServer {
|
||||
}
|
@ -18,7 +18,7 @@ public class RoomCommand extends PrivilegedCommand {
|
||||
|
||||
Room.getAllRooms().forEach((roomInstance) -> out
|
||||
.newLine()
|
||||
.appendStatic("Owner: ").appendStatic(roomInstance.getOwner().getUsername()).newLine()
|
||||
.appendStatic("Owner: ").appendStatic(roomInstance.getOwner() != null ? roomInstance.getOwner().getUsername() : "none").newLine()
|
||||
.appendStatic("Players: ").appendStatic(String.valueOf(roomInstance.getAllMembers().size())).newLine()
|
||||
.list(roomInstance.getAllMembers().stream().map(Player::getUsername).collect(Collectors.toList())).newLine());
|
||||
|
||||
|
@ -25,7 +25,8 @@ import java.util.logging.Logger;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class Room extends MineNetInstance implements Spawnable {
|
||||
private static final Map<Player, Room> rooms = new WeakHashMap<>();
|
||||
private static final Set<Room> rooms = new HashSet<>();
|
||||
private static final Map<Player, Room> players = new WeakHashMap<>();
|
||||
private static final Logger logger = Logger.getLogger("room");
|
||||
|
||||
public static Room createRoom(Player owner) {
|
||||
@ -34,15 +35,22 @@ public class Room extends MineNetInstance implements Spawnable {
|
||||
return getRoom(owner).orElseThrow();
|
||||
}
|
||||
|
||||
public static Room createOwnerlessRoom() {
|
||||
Room room = new Room();
|
||||
rooms.add(room);
|
||||
return room;
|
||||
}
|
||||
|
||||
public static void deleteRoom(Room room) {
|
||||
logger.info("Deleting room " + room.uniqueId);
|
||||
rooms.values().removeAll(Collections.singleton(room)); // remove(room) would only remove the first one
|
||||
rooms.remove(room);
|
||||
players.values().removeAll(Collections.singleton(room));
|
||||
room.getAllMembers().forEach(player -> MoveInstance.move(player, Hub.INSTANCE));
|
||||
MoveInstance.forceCloseInstance(room);
|
||||
}
|
||||
|
||||
public static Optional<Room> getRoom(Player p) {
|
||||
return Optional.ofNullable(rooms.get(p));
|
||||
return Optional.ofNullable(players.get(p));
|
||||
}
|
||||
|
||||
public static void setOwnRoom(Player p) {
|
||||
@ -50,42 +58,45 @@ public class Room extends MineNetInstance implements Spawnable {
|
||||
}
|
||||
|
||||
public static void setRoom(Player p, Room room) {
|
||||
logger.info("Set room for player " + p.getUsername() + " to room by " + room.owner.getUsername());
|
||||
p.clearEffects();
|
||||
p.clearTitle();
|
||||
p.getInventory().clear();
|
||||
p.setGameMode(GameMode.ADVENTURE);
|
||||
rooms.put(p, room);
|
||||
rooms.add(room);
|
||||
players.put(p, room);
|
||||
MoveInstance.move(p, room);
|
||||
}
|
||||
|
||||
public static void unsetRoom(Player p) {
|
||||
logger.info("Unset room for " + p.getUsername());
|
||||
rooms.remove(p);
|
||||
players.remove(p);
|
||||
}
|
||||
|
||||
public static Set<Room> getAllRooms() {
|
||||
return new HashSet<>(rooms.values());
|
||||
return rooms;
|
||||
}
|
||||
|
||||
private Player owner;
|
||||
public final UUID uuid = UUID.randomUUID();
|
||||
private GameSelector gameSelector;
|
||||
private Room(Player owner) {
|
||||
super(Dimension.THE_END.DIMENSION);
|
||||
construct();
|
||||
setOwner(owner);
|
||||
this.gameSelector = new GameSelector();
|
||||
this.gameSelector.setInstance(this, new Pos(0.5, 50, 19.5));
|
||||
}
|
||||
|
||||
protected Room() {
|
||||
super(Dimension.THE_END.DIMENSION);
|
||||
construct();
|
||||
}
|
||||
|
||||
private void construct() {
|
||||
MinecraftServer.getInstanceManager().registerInstance(this);
|
||||
setChunkLoader(new AnvilLoader(Resource.LOBBY_MAP.getPath()));
|
||||
|
||||
this.gameSelector = new GameSelector();
|
||||
this.gameSelector.setInstance(this, new Pos(0.5, 50, 19.5));
|
||||
|
||||
eventNode().addListener(PlayerBlockBreakEvent.class, CommonEventHandles::cancel);
|
||||
eventNode().addListener(PlayerDisconnectEvent.class, playerDisconnectEvent -> unsetRoom(playerDisconnectEvent.getPlayer()));
|
||||
}
|
||||
@ -128,7 +139,7 @@ public class Room extends MineNetInstance implements Spawnable {
|
||||
}
|
||||
|
||||
public Set<Player> getAllMembers() {
|
||||
return rooms.keySet().stream()
|
||||
return players.keySet().stream()
|
||||
.filter(player -> getRoom(player).orElse(null) == this)
|
||||
.collect(Collectors.toSet());
|
||||
}
|
||||
|
@ -37,10 +37,7 @@ public class GameSelector extends InteractableEntity {
|
||||
if(playerEntityInteractEvent.getPlayer() != room.getOwner()) {
|
||||
abstractVillagerMeta.setHeadShakeTimer(20);
|
||||
|
||||
new ChatMessage(Icon.ERROR).appendStatic("Only the room leader can start games!").newLine()
|
||||
.appendStatic("current leader: ").appendStatic(room.getOwner().getUsername())
|
||||
.send(playerEntityInteractEvent.getPlayer());
|
||||
|
||||
new ChatMessage(Icon.ERROR).appendStatic("Only the room leader can start games!").send(playerEntityInteractEvent.getPlayer());
|
||||
return;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user