Files
MinecraftConsoles/Minecraft.Client/ServerPlayerGameMode.h
void_17 7074f35e4b shared_ptr -> std::shared_ptr
This is one of the first commits in a plan to remove all `using namespace std;` lines in the entire codebase as it is considered anti-pattern today.
2026-03-02 15:58:20 +07:00

60 lines
1.6 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);
};