the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
at main 139 lines 5.4 kB view raw
1#pragma once 2#include <deque> 3#include "..\Minecraft.World\ArrayWithLength.h" 4 5class ServerPlayer; 6class PlayerChunkMap; 7class MinecraftServer; 8class PlayerIO; 9class PendingConnection; 10class Packet; 11class ServerLevel; 12class TileEntity; 13class ProgressListener; 14class GameType; 15class LoginPacket; 16class ServerScoreboard; 17 18using namespace std; 19 20class PlayerList 21{ 22private: 23 static const int SEND_PLAYER_INFO_INTERVAL = 20 * 10; // 4J - brought forward from 1.2.3 24// public static Logger logger = Logger.getLogger("Minecraft"); 25public: 26 vector<shared_ptr<ServerPlayer> > players; 27 28private: 29 MinecraftServer *server; 30 unsigned int maxPlayers; 31 32 // 4J Added 33 vector<PlayerUID> m_bannedXuids; 34 deque<BYTE> m_smallIdsToKick; 35 CRITICAL_SECTION m_kickPlayersCS; 36 deque<BYTE> m_smallIdsToClose; 37 CRITICAL_SECTION m_closePlayersCS; 38/* 4J - removed 39 Set<String> bans = new HashSet<String>(); 40 Set<String> ipBans = new HashSet<String>(); 41 Set<String> ops = new HashSet<String>(); 42 Set<String> whitelist = new HashSet<String>(); 43 File banFile, ipBanFile, opFile, whiteListFile; 44 */ 45 PlayerIO *playerIo; 46 bool doWhiteList; 47 48 GameType *overrideGameMode; 49 bool allowCheatsForAllPlayers; 50 int viewDistance; 51 52 int sendAllPlayerInfoIn; 53 54 // 4J Added to maintain which players in which dimensions can receive all packet types 55 vector<shared_ptr<ServerPlayer> > receiveAllPlayers[3]; 56private: 57 shared_ptr<ServerPlayer> findAlivePlayerOnSystem(shared_ptr<ServerPlayer> currentPlayer); 58 59public: 60 void removePlayerFromReceiving(shared_ptr<ServerPlayer> player, bool usePlayerDimension = true, int dimension = 0); 61 void addPlayerToReceiving(shared_ptr<ServerPlayer> player); 62 bool canReceiveAllPackets(shared_ptr<ServerPlayer> player); 63 64public: 65 PlayerList(MinecraftServer *server); 66 ~PlayerList(); 67 void placeNewPlayer(Connection *connection, shared_ptr<ServerPlayer> player, shared_ptr<LoginPacket> packet); 68 69protected: 70 void updateEntireScoreboard(ServerScoreboard *scoreboard, shared_ptr<ServerPlayer> player); 71 72public: 73 void setLevel(ServerLevelArray levels); 74 void changeDimension(shared_ptr<ServerPlayer> player, ServerLevel *from); 75 int getMaxRange(); 76 CompoundTag *load(shared_ptr<ServerPlayer> player); 77protected: 78 void save(shared_ptr<ServerPlayer> player); 79public: 80 void validatePlayerSpawnPosition(shared_ptr<ServerPlayer> player); // 4J Added 81 void add(shared_ptr<ServerPlayer> player); 82 void move(shared_ptr<ServerPlayer> player); 83 void remove(shared_ptr<ServerPlayer> player); 84 shared_ptr<ServerPlayer> getPlayerForLogin(PendingConnection *pendingConnection, const wstring& userName, PlayerUID xuid, PlayerUID OnlineXuid); 85 shared_ptr<ServerPlayer> respawn(shared_ptr<ServerPlayer> serverPlayer, int targetDimension, bool keepAllPlayerData); 86 void toggleDimension(shared_ptr<ServerPlayer> player, int targetDimension); 87 void repositionAcrossDimension(shared_ptr<Entity> entity, int lastDimension, ServerLevel *oldLevel, ServerLevel *newLevel); 88 void tick(); 89 bool isTrackingTile(int x, int y, int z, int dimension); // 4J added 90 void prioritiseTileChanges(int x, int y, int z, int dimension); // 4J added 91 void broadcastAll(shared_ptr<Packet> packet); 92 void broadcastAll(shared_ptr<Packet> packet, int dimension); 93 94 wstring getPlayerNames(); 95 96public: 97 bool isWhiteListed(const wstring& name); 98 bool isOp(const wstring& name); 99 bool isOp(shared_ptr<ServerPlayer> player); // 4J Added 100 shared_ptr<ServerPlayer> getPlayer(const wstring& name); 101 shared_ptr<ServerPlayer> getPlayer(PlayerUID uid); 102 shared_ptr<ServerPlayer> getNearestPlayer(Pos *position, int range); 103 vector<ServerPlayer> *getPlayers(Pos *position, int rangeMin, int rangeMax, int count, int mode, int levelMin, int levelMax, unordered_map<wstring, int> *scoreRequirements, const wstring &playerName, const wstring &teamName, Level *level); 104 105private: 106 bool meetsScoreRequirements(shared_ptr<Player> player, unordered_map<wstring, int> scoreRequirements); 107 108public: 109 void sendMessage(const wstring& name, const wstring& message); 110 void broadcast(double x, double y, double z, double range, int dimension, shared_ptr<Packet> packet); 111 void broadcast(shared_ptr<Player> except, double x, double y, double z, double range, int dimension, shared_ptr<Packet> packet); 112 // 4J Added ProgressListener *progressListener param and bDeleteGuestMaps param 113 void saveAll(ProgressListener *progressListener, bool bDeleteGuestMaps = false); 114 void whiteList(const wstring& playerName); 115 void blackList(const wstring& playerName); 116// Set<String> getWhiteList(); / 4J removed 117 void reloadWhitelist(); 118 void sendLevelInfo(shared_ptr<ServerPlayer> player, ServerLevel *level); 119 void sendAllPlayerInfo(shared_ptr<ServerPlayer> player); 120 int getPlayerCount(); 121 int getPlayerCount(ServerLevel *level); // 4J Added 122 int getMaxPlayers(); 123 MinecraftServer *getServer(); 124 int getViewDistance(); 125 void setOverrideGameMode(GameType *gameMode); 126 127private: 128 void updatePlayerGameMode(shared_ptr<ServerPlayer> newPlayer, shared_ptr<ServerPlayer> oldPlayer, Level *level); 129 130public: 131 void setAllowCheatsForAllPlayers(bool allowCommands); 132 133 // 4J Added 134 void kickPlayerByShortId(BYTE networkSmallId); 135 void closePlayerConnectionBySmallId(BYTE networkSmallId); 136 bool isXuidBanned(PlayerUID xuid); 137 // AP added for Vita so the range can be increased once the level starts 138 void setViewDistance(int newViewDistance); 139};