the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
at main 182 lines 4.5 kB view raw
1#include "stdafx.h" 2#include "GameMode.h" 3#include "LocalPlayer.h" 4#include "LevelRenderer.h" 5#include "..\Minecraft.World\net.minecraft.world.level.h" 6#include "..\Minecraft.World\net.minecraft.world.level.tile.h" 7#include "..\Minecraft.World\net.minecraft.world.level.dimension.h" 8#include "..\Minecraft.World\net.minecraft.world.item.h" 9#include "..\Minecraft.World\net.minecraft.world.inventory.h" 10#include "..\Minecraft.World\net.minecraft.world.entity.player.h" 11#include "..\Minecraft.World\net.minecraft.world.level.chunk.h" 12 13GameMode::GameMode(Minecraft *minecraft) 14{ 15 instaBuild = false; // 4J - added 16 this->minecraft = minecraft; 17} 18 19void GameMode::initLevel(Level *level) 20{ 21} 22 23bool GameMode::destroyBlock(int x, int y, int z, int face) 24{ 25 Level *level = minecraft->level; 26 Tile *oldTile = Tile::tiles[level->getTile(x, y, z)]; 27 if (oldTile == NULL) return false; 28 29 // 4J - Let the rendering side of thing know we are about to destroy the tile, so we can synchronise collision with async render data upates. 30 minecraft->levelRenderer->destroyedTileManager->destroyingTileAt(level, x, y, z); 31 level->levelEvent(LevelEvent::PARTICLES_DESTROY_BLOCK, x, y, z, oldTile->id + (level->getData(x, y, z) << Tile::TILE_NUM_SHIFT)); 32 int data = level->getData(x, y, z); 33 // 4J - before we remove the tile, recalc the heightmap - setTile depends on this being valid to be able to do 34 // a quick update of skylighting when the block is removed, and there are cases with falling tiles where this can get out of sync 35 level->getChunkAt(x,z)->recalcHeightmapOnly(); 36 bool changed = level->setTile(x, y, z, 0); 37 38 if (oldTile != NULL && changed) 39 { 40 oldTile->destroy(level, x, y, z, data); 41 } 42 return changed; 43} 44 45void GameMode::render(float a) 46{ 47} 48 49bool GameMode::useItem(shared_ptr<Player> player, Level *level, shared_ptr<ItemInstance> item, bool bTestUseOnly) 50{ 51} 52 53void GameMode::initPlayer(shared_ptr<Player> player) 54{ 55} 56 57void GameMode::tick() 58{ 59} 60 61void GameMode::adjustPlayer(shared_ptr<Player> player) 62{ 63} 64 65//bool GameMode::useItemOn(shared_ptr<Player> player, Level *level, shared_ptr<ItemInstance> item, int x, int y, int z, int face, bool bTestUseOnOnly) 66//{ 67// // 4J-PB - Adding a test only version to allow tooltips to be displayed 68// int t = level->getTile(x, y, z); 69// if (t > 0) 70// { 71// if(bTestUseOnOnly) 72// { 73// switch(t) 74// { 75// case Tile::recordPlayer_Id: 76// case Tile::bed_Id: // special case for a bed 77// if (Tile::tiles[t]->TestUse(level, x, y, z, player )) 78// { 79// return true; 80// } 81// else 82// { 83// // bed is too far away, or something 84// return false; 85// } 86// break; 87// default: 88// if (Tile::tiles[t]->TestUse()) return true; 89// break; 90// } 91// } 92// else 93// { 94// if (Tile::tiles[t]->use(level, x, y, z, player )) return true; 95// } 96// } 97// 98// if (item == NULL) return false; 99// return item->useOn(player, level, x, y, z, face, bTestUseOnOnly); 100//} 101 102 103shared_ptr<Player> GameMode::createPlayer(Level *level) 104{ 105 return shared_ptr<Player>( new LocalPlayer(minecraft, level, minecraft->user, level->dimension->id) ); 106} 107 108bool GameMode::interact(shared_ptr<Player> player, shared_ptr<Entity> entity) 109{ 110 return player->interact(entity); 111} 112 113void GameMode::attack(shared_ptr<Player> player, shared_ptr<Entity> entity) 114{ 115 player->attack(entity); 116} 117 118shared_ptr<ItemInstance> GameMode::handleInventoryMouseClick(int containerId, int slotNum, int buttonNum, bool quickKeyHeld, shared_ptr<Player> player) 119{ 120 return nullptr; 121} 122 123void GameMode::handleCloseInventory(int containerId, shared_ptr<Player> player) 124{ 125 player->containerMenu->removed(player); 126 delete player->containerMenu; 127 player->containerMenu = player->inventoryMenu; 128} 129 130void GameMode::handleInventoryButtonClick(int containerId, int buttonId) 131{ 132 133} 134 135bool GameMode::isCutScene() 136{ 137 return false; 138} 139 140void GameMode::releaseUsingItem(shared_ptr<Player> player) 141{ 142 player->releaseUsingItem(); 143} 144 145bool GameMode::hasExperience() 146{ 147 return false; 148} 149 150bool GameMode::hasMissTime() 151{ 152 return true; 153} 154 155bool GameMode::hasInfiniteItems() 156{ 157 return false; 158} 159 160bool GameMode::hasFarPickRange() 161{ 162 return false; 163} 164 165void GameMode::handleCreativeModeItemAdd(shared_ptr<ItemInstance> clicked, int i) 166{ 167} 168 169void GameMode::handleCreativeModeItemDrop(shared_ptr<ItemInstance> clicked) 170{ 171} 172 173bool GameMode::handleCraftItem(int recipe, shared_ptr<Player> player) 174{ 175 return true; 176} 177 178// 4J-PB 179void GameMode::handleDebugOptions(unsigned int uiVal, shared_ptr<Player> player) 180{ 181 player->SetDebugOptions(uiVal); 182}