idk some "cool" stuff

This commit is contained in:
hdvt
2025-06-28 00:36:06 +03:00
parent 54eb07cc86
commit e63ac83c17
17 changed files with 499 additions and 312 deletions

View File

@@ -1,12 +1,15 @@
package hdvtdev.blockAndSeek;
import me.libraryaddict.disguise.DisguiseAPI;
import org.bukkit.GameMode;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.persistence.PersistentDataType;
import java.security.SecureRandom;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicBoolean;
@@ -15,24 +18,32 @@ public class BlockAndSeekGame {
private final ConcurrentHashMap<Player, PlayerType> players = new ConcurrentHashMap<>();
private AtomicBoolean started = new AtomicBoolean(false);
private final AtomicBoolean started = new AtomicBoolean(false);
private final String name;
private final int maxPlayers;
public BlockAndSeekGame(String name) {
public BlockAndSeekGame(String name, int maxPlayers) {
this.name = name;
this.maxPlayers = maxPlayers;
}
public List<Player> getHiders() {
return players.entrySet().stream().filter(e -> Objects.equals(e.getValue(), PlayerType.HIDER)).map(Map.Entry::getKey).toList();
}
public void end() {
for (Player player : players.keySet()) {
EventListener.unfreezePlayer(player);
//EventListener.unfreezePlayer(player); TODO
player.getPersistentDataContainer().remove(BlockAndSeekContainer.PLAYER);
player.sendBlockChange(player.getLocation(), Material.AIR.createBlockData());
player.setGameMode(GameMode.SURVIVAL);
DisguiseAPI.undisguiseToAll(player);
}
}
public boolean addPlayer(Player player) {
if (started.get()) {
if (started.get() || playerCount() + 1 > maxPlayers) {
return false;
}
player.getPersistentDataContainer().set(BlockAndSeekContainer.PLAYER, PersistentDataType.STRING, name);
@@ -44,6 +55,11 @@ public class BlockAndSeekGame {
players.remove(player);
}
public void setSpectator(Player player) {
players.put(player, PlayerType.SPECTATOR);
player.setGameMode(GameMode.SPECTATOR);
}
public Set<Player> getPlayers() {
return players.keySet();
}
@@ -59,7 +75,7 @@ public class BlockAndSeekGame {
return (int) players.values().stream().filter(f -> f.equals(PlayerType.SEEKER)).count();
}
public int hidersCound() {
public int hidersCount() {
return (int) players.values().stream().filter(f -> f.equals(PlayerType.HIDER)).count();
}
@@ -80,14 +96,19 @@ public class BlockAndSeekGame {
int i = 0;
int randomNum = random.nextInt(0, players.size());
for (Player player : players.keySet()) {
if (i == randomNum) return player;
if (i == randomNum) {
players.put(player, PlayerType.SEEKER);
return player;
}
i++;
}
return null;
}
private enum PlayerType {
SEEKER,
HIDER
HIDER,
SPECTATOR
}