From b691c43c44ff180d10e7d4a9afc83b98551ff586 Mon Sep 17 00:00:00 2001 From: daoge_cmd <3523206925@qq.com> Date: Sun, 1 Mar 2026 12:16:08 +0800 Subject: Initial commit --- Minecraft.Client/MultiPlayerGameMode.h | 67 ++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 Minecraft.Client/MultiPlayerGameMode.h (limited to 'Minecraft.Client/MultiPlayerGameMode.h') diff --git a/Minecraft.Client/MultiPlayerGameMode.h b/Minecraft.Client/MultiPlayerGameMode.h new file mode 100644 index 00000000..c84410fa --- /dev/null +++ b/Minecraft.Client/MultiPlayerGameMode.h @@ -0,0 +1,67 @@ +#pragma once +#include "GameMode.h" +class ClientConnection; +class GameType; +class Vec3; + +class MultiPlayerGameMode +{ +private: + int xDestroyBlock; + int yDestroyBlock; + int zDestroyBlock; + float destroyProgress; + float oDestroyProgress; + int destroyTicks; // 4J was float but doesn't seem to need to be + int destroyDelay; + bool isDestroying; + GameType *localPlayerMode; + ClientConnection *connection; + +protected: + Minecraft *minecraft; + +public: + MultiPlayerGameMode(Minecraft *minecraft, ClientConnection *connection); + static void creativeDestroyBlock(Minecraft *minecraft, MultiPlayerGameMode *gameMode, int x, int y, int z, int face); + void adjustPlayer(shared_ptr player); + bool isCutScene(); + void setLocalMode(GameType *mode); + virtual void initPlayer(shared_ptr player); + virtual bool canHurtPlayer(); + virtual bool destroyBlock(int x, int y, int z, int face); + virtual void startDestroyBlock(int x, int y, int z, int face); + virtual void stopDestroyBlock(); + virtual void continueDestroyBlock(int x, int y, int z, int face); + virtual float getPickRange(); + virtual void tick(); +private: + int carriedItem; + +private: + void ensureHasSentCarriedItem(); +public: + virtual bool useItemOn(shared_ptr player, Level *level, shared_ptr item, int x, int y, int z, int face, Vec3 *hit, bool bTestUseOnly=false, bool *pbUsedItem=NULL); + virtual bool useItem(shared_ptr player, Level *level, shared_ptr item, bool bTestUseOnly=false); + virtual shared_ptr createPlayer(Level *level); + virtual void attack(shared_ptr player, shared_ptr entity); + virtual bool interact(shared_ptr player, shared_ptr entity); + virtual shared_ptr handleInventoryMouseClick(int containerId, int slotNum, int buttonNum, bool quickKeyHeld, shared_ptr player); + virtual void handleInventoryButtonClick(int containerId, int buttonId); + virtual void handleCreativeModeItemAdd(shared_ptr clicked, int slot); + virtual void handleCreativeModeItemDrop(shared_ptr clicked); + virtual void releaseUsingItem(shared_ptr player); + virtual bool hasExperience(); + virtual bool hasMissTime(); + virtual bool hasInfiniteItems(); + virtual bool hasFarPickRange(); + + // 4J Stu - Added so we can send packets for this in the network game + virtual bool handleCraftItem(int recipe, shared_ptr player); + virtual void handleDebugOptions(unsigned int uiVal, shared_ptr player); + + // 4J Stu - Added for tutorial checks + virtual bool isInputAllowed(int mapping) { return true; } + virtual bool isTutorial() { return false; } + virtual Tutorial *getTutorial() { return NULL; } +}; \ No newline at end of file -- cgit v1.2.3