4jcraft/targets/minecraft/server/level/ServerPlayerGameMode.h
2026-04-01 13:27:58 -05:00

67 lines
1.7 KiB
C++

#pragma once
#include <memory>
class ServerPlayer;
class Level;
class ItemInstance;
class ServerLevel;
class GameRulesInstance;
class GameType;
class Player;
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 = nullptr);
void setLevel(ServerLevel* newLevel);
};