Something went wrong. Try again.
the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
Something went wrong. Try again.
6.9 kB · 219 lines
C
at main
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220#pragma once#include "..\Minecraft.World\SmoothFloat.h"#include "..\Minecraft.World\net.minecraft.world.entity.player.h"#include "..\Minecraft.World\Pos.h"class Level;class User;class CompoundTag;class FurnaceTileEntity;class DispenserTileEntity;class SignTileEntity;class Container;class Input;class Stat;class Minecraft;
using namespace std;
// Time in seconds before the players presence is update to Idle#define PLAYER_IDLE_TIME 300
class LocalPlayer : public Player{public: static const int SPRINT_DURATION = 20 * 30;
eINSTANCEOF GetType() { return eTYPE_LOCALPLAYER; }
Input *input;protected: Minecraft *minecraft; int sprintTriggerTime; bool sprintTriggerRegisteredReturn; // 4J added bool twoJumpsRegistered; // 4J added
unsigned int m_uiInactiveTicks; // To measure time for idle anims
unsigned long long m_awardedThisSession;
// 4J - Last time we checked for achievement uunlocks. //long long m_lastAchievementUpdate;
public: int sprintTime;
float yBob, xBob; float yBobO, xBobO;
float portalTime; float oPortalTime;
LocalPlayer(Minecraft *minecraft, Level *level, User *user, int dimension); virtual ~LocalPlayer();
int m_iScreenSection; // assuming 4player splitscreen for now, or -1 for single player __uint64 ullButtonsPressed; // Stores the button presses, since the inputmanager can be ticked faster than the minecraft // player tick, and a button press and release combo can be missed in the minecraft::tick
__uint64 ullDpad_last; __uint64 ullDpad_this; __uint64 ullDpad_filtered;
// 4J-PB - moved these in from the minecraft structure, since they are per player things for splitscreen //int ticks; int missTime; int lastClickTick[2]; bool isRaining ; int m_iThirdPersonView;
bool m_bHasAwardedStayinFrosty;
private: float flyX, flyY, flyZ;
int jumpRidingTicks; float jumpRidingScale;
protected: // 4J-PB - player's xbox pad int m_iPad;
bool m_bIsIdle;
private: // local player fly // -------------------------------------------------------------------------- // smooth camera settings
SmoothFloat smoothFlyX; SmoothFloat smoothFlyY; SmoothFloat smoothFlyZ;
void calculateFlight(float xa, float ya, float za);
public: virtual void serverAiStep();
protected: bool isEffectiveAi();
public: virtual void aiStep(); virtual void changeDimension(int i); virtual float getFieldOfViewModifier(); virtual void addAdditonalSaveData(CompoundTag *entityTag); virtual void readAdditionalSaveData(CompoundTag *entityTag); virtual void closeContainer(); virtual void openTextEdit(shared_ptr<TileEntity> sign); virtual bool openContainer(shared_ptr<Container> container); // 4J added bool return virtual bool openHopper(shared_ptr<HopperTileEntity> container); // 4J added bool return virtual bool openHopper(shared_ptr<MinecartHopper> container); // 4J added bool return virtual bool openHorseInventory(shared_ptr<EntityHorse> horse, shared_ptr<Container> container); // 4J added bool return virtual bool startCrafting(int x, int y, int z); // 4J added bool return virtual bool openFireworks(int x, int y, int z); // 4J added virtual bool startEnchanting(int x, int y, int z, const wstring &name); // 4J added bool return virtual bool startRepairing(int x, int y, int z); virtual bool openFurnace(shared_ptr<FurnaceTileEntity> furnace); // 4J added bool return virtual bool openBrewingStand(shared_ptr<BrewingStandTileEntity> brewingStand); // 4J added bool return virtual bool openBeacon(shared_ptr<BeaconTileEntity> beacon); // 4J added bool return virtual bool openTrap(shared_ptr<DispenserTileEntity> trap); // 4J added bool return virtual bool openTrading(shared_ptr<Merchant> traderTarget, const wstring &name); virtual void crit(shared_ptr<Entity> e); virtual void magicCrit(shared_ptr<Entity> e); virtual void take(shared_ptr<Entity> e, int orgCount); virtual void chat(const wstring& message); virtual bool isSneaking(); //virtual bool isIdle(); virtual void hurtTo(float newHealth, ETelemetryChallenges damageSource); virtual void respawn(); virtual void animateRespawn(); virtual void displayClientMessage(int messageId); virtual void awardStat(Stat *stat, byteArray param); virtual int ThirdPersonView() { return m_iThirdPersonView;} // 4J - have changed 3rd person view to be 0 if not enabled, 1 for mode like original, 2 reversed mode virtual void SetThirdPersonView(int val) {m_iThirdPersonView=val;}
void ResetInactiveTicks() { m_uiInactiveTicks=0;} unsigned int GetInactiveTicks() { return m_uiInactiveTicks;} void IncrementInactiveTicks() { if(m_uiInactiveTicks<255) m_uiInactiveTicks++;}
void mapPlayerChunk(unsigned int); // 4J-PB - xbox pad for this player void SetXboxPad(int iPad) {m_iPad=iPad;} int GetXboxPad() {return m_iPad;} void SetPlayerRespawned(bool bVal) {m_bPlayerRespawned=bVal;} bool GetPlayerRespawned() {return m_bPlayerRespawned;}
// 4J-PB - Moved these in here from the minecraft structure since they are local player related void handleMouseDown(int button, bool down); bool handleMouseClick(int button);
// 4J - added for improved autorepeat bool creativeModeHandleMouseClick(int button, bool buttonPressed); float lastClickX; float lastClickY; float lastClickZ; float lastClickdX; float lastClickdY; float lastClickdZ; enum eLastClickState { lastClick_invalid, lastClick_init, lastClick_moving, lastClick_stopped, lastClick_oldRepeat, lastClick_disabled }; float lastClickTolerance; int lastClickState;
// 4J Stu - Added to allow callback to tutorial to stay within Minecraft.Client virtual void onCrafted(shared_ptr<ItemInstance> item);
virtual void setAndBroadcastCustomSkin(DWORD skinId); virtual void setAndBroadcastCustomCape(DWORD capeId);
private: bool isSolidBlock(int x, int y, int z); bool m_bPlayerRespawned;
protected: bool checkInTile(double x, double y, double z);
public: void setSprinting(bool value); void setExperienceValues(float experienceProgress, int totalExp, int experienceLevel);
// virtual void sendMessage(ChatMessageComponent *message); // 4J: removed virtual Pos getCommandSenderWorldPosition(); virtual shared_ptr<ItemInstance> getCarriedItem(); virtual void playSound(int soundId, float volume, float pitch); bool isRidingJumpable(); float getJumpRidingScale();
protected: virtual void sendRidingJump();
public: bool hasPermission(EGameCommand command);
void updateRichPresence();
// 4J Stu - Added for telemetry float m_sessionTimeStart; float m_dimensionTimeStart;
void SetSessionTimerStart(void); float getSessionTimer(void);
float getAndResetChangeDimensionTimer();
virtual void handleCollectItem(shared_ptr<ItemInstance> item); void SetPlayerAdditionalModelParts(vector<ModelPart *>pAdditionalModelParts);
private: vector<ModelPart *> m_pAdditionalModelParts;};