the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
at main 100 lines 3.1 kB view raw
1#include "stdafx.h" 2#include "net.minecraft.world.entity.item.h" 3#include "net.minecraft.world.item.h" 4#include "net.minecraft.world.level.h" 5#include "net.minecraft.h" 6#include "net.minecraft.world.h" 7#include "RecordPlayerTile.h" 8#include "LevelEvent.h" 9 10 11RecordPlayerTile::RecordPlayerTile(int id) : EntityTile(id, Material::wood) 12{ 13 iconTop = NULL; 14} 15 16Icon *RecordPlayerTile::getTexture(int face, int data) 17{ 18 if (face == Facing::UP) 19 { 20 return iconTop; 21 } 22 return icon; 23} 24 25// 4J-PB - Adding a TestUse for tooltip display 26bool RecordPlayerTile::TestUse(Level *level, int x, int y, int z, shared_ptr<Player> player) 27{ 28 // if the jukebox is empty, return true 29 if (level->getData(x, y, z) == 0) return false; 30 return true; 31} 32 33bool RecordPlayerTile::use(Level *level, int x, int y, int z, shared_ptr<Player> player, int clickedFace, float clickX, float clickY, float clickZ, bool soundOnly/*=false*/) // 4J added soundOnly param 34{ 35 if (soundOnly) return false; 36 if (level->getData(x, y, z) == 0) return false; 37 dropRecording(level, x, y, z); 38 return true; 39} 40 41void RecordPlayerTile::setRecord(Level *level, int x, int y, int z, int record) 42{ 43 if (level->isClientSide) return; 44 45 shared_ptr<RecordPlayerTile::Entity> rte = dynamic_pointer_cast<RecordPlayerTile::Entity>( level->getTileEntity(x, y, z) ); 46 rte->record = record; 47 rte->setChanged(); 48 49 level->setData(x, y, z, 1); 50} 51 52void RecordPlayerTile::dropRecording(Level *level, int x, int y, int z) 53{ 54 if (level->isClientSide) return; 55 56 shared_ptr<RecordPlayerTile::Entity> rte = dynamic_pointer_cast<RecordPlayerTile::Entity>( level->getTileEntity(x, y, z) ); 57 if( rte == NULL ) return; 58 59 int oldRecord = rte->record; 60 if (oldRecord == 0) return; 61 62 63 level->levelEvent(LevelEvent::SOUND_PLAY_RECORDING, x, y, z, 0); 64 // 4J-PB- the level event will play the music 65 //level->playStreamingMusic(L"", x, y, z); 66 rte->record = 0; 67 rte->setChanged(); 68 level->setData(x, y, z, 0); 69 70 float s = 0.7f; 71 double xo = level->random->nextFloat() * s + (1 - s) * 0.5; 72 double yo = level->random->nextFloat() * s + (1 - s) * 0.2 + 0.6; 73 double zo = level->random->nextFloat() * s + (1 - s) * 0.5; 74 shared_ptr<ItemEntity> item = shared_ptr<ItemEntity>( new ItemEntity(level, x + xo, y + yo, z + zo, shared_ptr<ItemInstance>( new ItemInstance(oldRecord, 1, 0) ) ) ); 75 item->throwTime = 10; 76 level->addEntity(item); 77} 78 79void RecordPlayerTile::onRemove(Level *level, int x, int y, int z, int id, int data) 80{ 81 dropRecording(level, x, y, z); 82 Tile::onRemove(level, x, y, z, id, data); 83} 84 85void RecordPlayerTile::spawnResources(Level *level, int x, int y, int z, int data, float odds, int playerBonus) 86{ 87 if (level->isClientSide) return; 88 Tile::spawnResources(level, x, y, z, data, odds, 0); 89} 90 91shared_ptr<TileEntity> RecordPlayerTile::newTileEntity(Level *level) 92{ 93 return shared_ptr<RecordPlayerTile::Entity>( new RecordPlayerTile::Entity() ); 94} 95 96void RecordPlayerTile::registerIcons(IconRegister *iconRegister) 97{ 98 icon = iconRegister->registerIcon(L"musicBlock"); 99 iconTop = iconRegister->registerIcon(L"jukebox_top"); 100}