diff --git a/core/src/main/java/mc/core/player/InMemoryPlayerManager.java b/core/src/main/java/mc/core/player/InMemoryPlayerManager.java deleted file mode 100644 index 5bf7785..0000000 --- a/core/src/main/java/mc/core/player/InMemoryPlayerManager.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * DmitriyMX - * 2018-04-15 - */ -package mc.core.player; - -import lombok.Setter; -import lombok.extern.slf4j.Slf4j; -import mc.core.Config; -import mc.core.EntityLocation; -import mc.core.network.BroadcastNetChannel; -import mc.core.network.NetChannel; -import mc.core.world.World; -import org.springframework.beans.factory.annotation.Autowired; - -import java.util.*; -import java.util.stream.Collectors; - -@Slf4j -public class InMemoryPlayerManager implements PlayerManager, Runnable { - private static final Random rand = new Random(); - private List players; - private final Object lock = new Object(); - @Setter - private int keepAliveInterval = 1; - - @Autowired - public InMemoryPlayerManager(Config config) { - final int c = config.getMaxPlayers() > 50 ? 50 : config.getMaxPlayers(); - players = Collections.synchronizedList(new ArrayList<>(c)); - (new Thread(this, "KeepAlive")).start(); - } - - @Override - public Player createPlayer(String name, EntityLocation location, World world) { - SimplePlayer player = new SimplePlayer(); - player.setId(rand.nextInt(10000)); - player.setUUID(UUID.nameUUIDFromBytes(name.getBytes())); - player.setName(name); - player.getLocation().set(location); - player.setWorld(world); - player.setSettings(new PlayerSettings()); - - synchronized (lock) { - players.add(player); - lock.notify(); - } - return player; - } - - @Override - public void joinServer(Player player) { - ((SimplePlayer) player).setOnline(true); - } - - @Override - public void leftServer(Player player) { - ((SimplePlayer) player).setOnline(false); - } - - @Override - public Player getPlayer(final String name) { - return players.stream() - .filter(player -> player.getName().equalsIgnoreCase(name)) - .findFirst().get(); - } - - @Override - public List getPlayers() { - return players.stream().filter(Player::isOnline).collect(Collectors.toList()); - } - - @Override - public int getCountPlayers() { - return (int) players.stream().filter(Player::isOnline).count(); - } - - @Override - public NetChannel getBroadcastChannel() { - return new BroadcastNetChannel(players.stream().filter(Player::isOnline)); - } - - @Override - public Player getOfflinePlayer(String name) { - return players.stream() - .filter(player -> player.getName().equals(name)) - .filter(player -> !player.isOnline()) - .findFirst().orElse(null); - } - - @Override - public void run() { - while (!Thread.currentThread().isInterrupted()) { - synchronized (lock) { - while (players.size() == 0) { - try { - lock.wait(); - } catch (InterruptedException e) { - return; - } - } - } - - getBroadcastChannel().sendKeepAlive(); - - try { - Thread.sleep(keepAliveInterval); - } catch (InterruptedException e) { - return; - } - } - } -} diff --git a/core/src/main/java/mc/core/player/SimplePlayer.java b/core/src/main/java/mc/core/player/SimplePlayer.java deleted file mode 100644 index cfb002b..0000000 --- a/core/src/main/java/mc/core/player/SimplePlayer.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * DmitriyMX - * 2018-04-23 - */ -package mc.core.player; - -import lombok.Data; -import mc.core.EntityLocation; -import mc.core.exception.ResourceUnloadedException; -import mc.core.network.NetChannel; -import mc.core.world.World; - -import java.lang.ref.Reference; -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; -import java.util.UUID; - -@Data -public class SimplePlayer implements Player { - private int id; - private UUID uuid; - private String name; - private boolean online = false; - private NetChannel channel; - private EntityLocation location = EntityLocation.ZERO(); - private Reference $refWorld; - private boolean flying = false; - private PlayerSettings settings; - private List loadedChunks = new ArrayList<>(); - - @Override - public UUID getUuid() { - return uuid; - } - - @Override - public World getWorld() { - if ($refWorld == null) { - return null; - } else if ($refWorld.get() == null) { - throw new ResourceUnloadedException("You're trying to get unloaded world"); - } else { - return $refWorld.get(); - } - } - - @Override - public void setWorld(World world) { - this.$refWorld = new WeakReference<>(world); - } - - public void setUUID(UUID uuid) { - this.uuid = uuid; - } -}