added missing gradle files

This commit is contained in:
2023-11-11 23:22:52 +01:00
parent 541eb1e733
commit 2306308071
8 changed files with 112 additions and 22 deletions

View File

@ -1,4 +0,0 @@
package eu.mhsl.minenet.minigames;
public class Api {
}

View File

@ -0,0 +1,6 @@
package eu.mhsl.minenet.minigames.api;
import static spark.Spark.*;
public class HttpServer {
}

View File

@ -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());

View File

@ -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());
}

View File

@ -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;
}