aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/ServerPlayerGameMode.h
diff options
context:
space:
mode:
Diffstat (limited to 'Minecraft.Client/ServerPlayerGameMode.h')
-rw-r--r--Minecraft.Client/ServerPlayerGameMode.h60
1 files changed, 60 insertions, 0 deletions
diff --git a/Minecraft.Client/ServerPlayerGameMode.h b/Minecraft.Client/ServerPlayerGameMode.h
new file mode 100644
index 00000000..89b9e9b4
--- /dev/null
+++ b/Minecraft.Client/ServerPlayerGameMode.h
@@ -0,0 +1,60 @@
+#pragma once
+class ServerPlayer;
+class Level;
+class ItemInstance;
+class ServerLevel;
+class GameRulesInstance;
+class GameType;
+
+class ServerPlayerGameMode
+{
+public:
+ Level *level;
+ 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(shared_ptr<Player> player, Level *level, shared_ptr<ItemInstance> item, bool bTestUseOnly=false);
+ bool useItemOn(shared_ptr<Player> player, Level *level, 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);
+}; \ No newline at end of file