the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
at main 136 lines 5.0 kB view raw
1#include "stdafx.h" 2 3#include "Tutorial.h" 4#include "..\..\Minecraft.h" 5#include "..\..\MultiplayerLocalPlayer.h" 6#include "..\..\..\Minecraft.World\net.minecraft.world.level.h" 7#include "ChangeStateConstraint.h" 8#include "..\..\..\Minecraft.World\AABB.h" 9#include "..\..\ClientConnection.h" 10#include "..\..\..\Minecraft.World\net.minecraft.network.packet.h" 11 12ChangeStateConstraint::ChangeStateConstraint( Tutorial *tutorial, eTutorial_State targetState, eTutorial_State sourceStates[], DWORD sourceStatesCount, 13 double x0, double y0, double z0, double x1, double y1, double z1, bool contains /*= true*/, bool changeGameMode /*= false*/, GameType *targetGameMode /*= 0*/ ) 14 : TutorialConstraint( -1 ) 15{ 16 movementArea = AABB::newPermanent(x0, y0, z0, x1, y1, z1); 17 18 this->contains = contains; 19 20 m_changeGameMode = changeGameMode; 21 m_targetGameMode = targetGameMode; 22 m_changedFromGameMode = 0; 23 24 m_tutorial = tutorial; 25 m_targetState = targetState; 26 m_sourceStatesCount = sourceStatesCount; 27 28 m_bHasChanged = false; 29 m_changedFromState = e_Tutorial_State_None; 30 31 m_bComplete = false; 32 33 m_sourceStates = new eTutorial_State [m_sourceStatesCount]; 34 for(unsigned int i=0;i<m_sourceStatesCount;i++) 35 { 36 m_sourceStates[i]=sourceStates[i]; 37 } 38} 39 40ChangeStateConstraint::~ChangeStateConstraint() 41{ 42 delete movementArea; 43 if(m_sourceStatesCount>0) delete [] m_sourceStates; 44} 45 46void ChangeStateConstraint::tick(int iPad) 47{ 48 if(m_bComplete) return; 49 50 if(m_tutorial->isStateCompleted(m_targetState)) 51 { 52 Minecraft *minecraft = Minecraft::GetInstance(); 53 if(m_changeGameMode) 54 { 55 unsigned int playerPrivs = minecraft->localplayers[iPad]->getAllPlayerGamePrivileges(); 56 Player::setPlayerGamePrivilege(playerPrivs,Player::ePlayerGamePrivilege_CreativeMode,m_changedFromGameMode == GameType::CREATIVE); 57 58 unsigned int originalPrivileges = minecraft->localplayers[iPad]->getAllPlayerGamePrivileges(); 59 if(originalPrivileges != playerPrivs) 60 { 61 // Send update settings packet to server 62 Minecraft *pMinecraft = Minecraft::GetInstance(); 63 shared_ptr<MultiplayerLocalPlayer> player = minecraft->localplayers[iPad]; 64 if(player != NULL && player->connection && player->connection->getNetworkPlayer() != NULL) 65 { 66 player->connection->send( shared_ptr<PlayerInfoPacket>( new PlayerInfoPacket( player->connection->getNetworkPlayer()->GetSmallId(), -1, playerPrivs) ) ); 67 } 68 } 69 } 70 m_bComplete = true; 71 return; 72 } 73 74 bool inASourceState = false; 75 Minecraft *minecraft = Minecraft::GetInstance(); 76 for(DWORD i = 0; i < m_sourceStatesCount; ++i) 77 { 78 if(m_sourceStates[i] == m_tutorial->getCurrentState()) 79 { 80 inASourceState = true; 81 break; 82 } 83 } 84 if( !m_bHasChanged && inASourceState && movementArea->contains( minecraft->localplayers[iPad]->getPos(1) ) == contains ) 85 { 86 m_bHasChanged = true; 87 m_changedFromState = m_tutorial->getCurrentState(); 88 m_tutorial->changeTutorialState(m_targetState); 89 90 if(m_changeGameMode) 91 { 92 if(minecraft->localgameModes[iPad] != NULL) 93 { 94 m_changedFromGameMode = minecraft->localplayers[iPad]->abilities.instabuild ? GameType::CREATIVE : GameType::SURVIVAL; 95 96 unsigned int playerPrivs = minecraft->localplayers[iPad]->getAllPlayerGamePrivileges(); 97 Player::setPlayerGamePrivilege(playerPrivs,Player::ePlayerGamePrivilege_CreativeMode,m_targetGameMode == GameType::CREATIVE); 98 99 unsigned int originalPrivileges = minecraft->localplayers[iPad]->getAllPlayerGamePrivileges(); 100 if(originalPrivileges != playerPrivs) 101 { 102 // Send update settings packet to server 103 Minecraft *pMinecraft = Minecraft::GetInstance(); 104 shared_ptr<MultiplayerLocalPlayer> player = minecraft->localplayers[iPad]; 105 if(player != NULL && player->connection && player->connection->getNetworkPlayer() != NULL) 106 { 107 player->connection->send( shared_ptr<PlayerInfoPacket>( new PlayerInfoPacket( player->connection->getNetworkPlayer()->GetSmallId(), -1, playerPrivs) ) ); 108 } 109 } 110 } 111 } 112 } 113 else if( m_bHasChanged && movementArea->contains( minecraft->localplayers[iPad]->getPos(1) ) != contains ) 114 { 115 m_bHasChanged = false; 116 m_tutorial->changeTutorialState(m_changedFromState); 117 118 if(m_changeGameMode) 119 { 120 unsigned int playerPrivs = minecraft->localplayers[iPad]->getAllPlayerGamePrivileges(); 121 Player::setPlayerGamePrivilege(playerPrivs,Player::ePlayerGamePrivilege_CreativeMode,m_changedFromGameMode == GameType::CREATIVE); 122 123 unsigned int originalPrivileges = minecraft->localplayers[iPad]->getAllPlayerGamePrivileges(); 124 if(originalPrivileges != playerPrivs) 125 { 126 // Send update settings packet to server 127 Minecraft *pMinecraft = Minecraft::GetInstance(); 128 shared_ptr<MultiplayerLocalPlayer> player = minecraft->localplayers[iPad]; 129 if(player != NULL && player->connection && player->connection->getNetworkPlayer() != NULL) 130 { 131 player->connection->send( shared_ptr<PlayerInfoPacket>( new PlayerInfoPacket( player->connection->getNetworkPlayer()->GetSmallId(), -1, playerPrivs) ) ); 132 } 133 } 134 } 135 } 136}