mirror of
https://github.com/4jcraft/4jcraft.git
synced 2026-04-24 12:53:37 +00:00
64 lines
1.7 KiB
C++
64 lines
1.7 KiB
C++
#pragma once
|
|
class ServerPlayer;
|
|
class Level;
|
|
class ItemInstance;
|
|
class ServerLevel;
|
|
class GameRulesInstance;
|
|
class GameType;
|
|
|
|
class ServerPlayerGameMode {
|
|
public:
|
|
Level* level;
|
|
std::shared_ptr<ServerPlayer> player;
|
|
|
|
private:
|
|
GameType* gameModeForPlayer;
|
|
|
|
private:
|
|
bool isDestroyingBlock;
|
|
int destroyProgressStart;
|
|
int xDestroyBlock, yDestroyBlock, zDestroyBlock;
|
|
int gameTicks;
|
|
|
|
bool hasDelayedDestroy;
|
|
int delayedDestroyX, delayedDestroyY, delayedDestroyZ;
|
|
int delayedTickStart;
|
|
int lastSentState;
|
|
|
|
private:
|
|
// 4J Added
|
|
GameRulesInstance* m_gameRules;
|
|
|
|
public:
|
|
void setGameRules(GameRulesInstance* rules);
|
|
GameRulesInstance* getGameRules() { return m_gameRules; }
|
|
|
|
public:
|
|
ServerPlayerGameMode(Level* level);
|
|
~ServerPlayerGameMode();
|
|
|
|
void setGameModeForPlayer(GameType* gameModeForPlayer);
|
|
GameType* getGameModeForPlayer();
|
|
bool isSurvival();
|
|
bool isCreative();
|
|
void updateGameMode(GameType* gameType);
|
|
|
|
void tick();
|
|
void startDestroyBlock(int x, int y, int z, int face);
|
|
void stopDestroyBlock(int x, int y, int z);
|
|
void abortDestroyBlock(int x, int y, int z);
|
|
|
|
private:
|
|
bool superDestroyBlock(int x, int y, int z);
|
|
|
|
public:
|
|
bool destroyBlock(int x, int y, int z);
|
|
bool useItem(std::shared_ptr<Player> player, Level* level,
|
|
std::shared_ptr<ItemInstance> item, bool bTestUseOnly = false);
|
|
bool useItemOn(std::shared_ptr<Player> player, Level* level,
|
|
std::shared_ptr<ItemInstance> item, int x, int y, int z,
|
|
int face, float clickX, float clickY, float clickZ,
|
|
bool bTestUseOnOnly = false, bool* pbUsedItem = NULL);
|
|
|
|
void setLevel(ServerLevel* newLevel);
|
|
}; |