mirror of
https://github.com/quizhizhe/LiteLoaderBDS-1.16.40.git
synced 2025-06-03 04:23:39 +00:00
67 lines
1.7 KiB
C++
67 lines
1.7 KiB
C++
#include <LoggerAPI.h>
|
|
#include <Main/LiteLoader.h>
|
|
#include <MC/Block.hpp>
|
|
#include <MC/BlockLegacy.hpp>
|
|
#include <MC/BlockPalette.hpp>
|
|
#include <MC/BlockSerializationUtils.hpp>
|
|
#include <MC/CompoundTag.hpp>
|
|
#include <MC/HashedString.hpp>
|
|
#include <MC/Level.hpp>
|
|
|
|
Block* Block::create(const string& name, unsigned short tileData) {
|
|
BlockPalette* generator = Global<Level>->getBlockPalettePtr();
|
|
auto blk = generator->getBlockLegacy(name);
|
|
if (!blk)
|
|
return nullptr;
|
|
return (Block*)((BlockLegacy*)blk)->toBlock(tileData);
|
|
}
|
|
|
|
Block* Block::create(CompoundTag* nbt) {
|
|
// pair<enum BlockSerializationUtils::NBTState, Block*>
|
|
auto result = BlockSerializationUtils::tryGetBlockFromNBT(*nbt, nullptr);
|
|
return const_cast<Block*>(result);
|
|
}
|
|
|
|
string Block::getTypeName() const {
|
|
return Block::toDebugString();
|
|
}
|
|
|
|
|
|
int Block::getId() const {
|
|
return getLegacyBlock().getBlockItemId();
|
|
}
|
|
|
|
unsigned short Block::getTileData() {
|
|
// 等待大佬改进
|
|
auto tileData = dAccess<unsigned short, 8>(this);
|
|
auto blk = &getLegacyBlock();
|
|
|
|
if (((BlockLegacy*)blk)->toBlock(tileData) == (Block*)this) {
|
|
return tileData;
|
|
}
|
|
|
|
for (unsigned short i = 0; i < 16; ++i) {
|
|
if (i == tileData) {
|
|
continue;
|
|
}
|
|
if (((BlockLegacy*)blk)->toBlock(i) == (Block*)this) {
|
|
return i;
|
|
}
|
|
}
|
|
logger.error("Error in GetTileData");
|
|
return 0;
|
|
}
|
|
|
|
std::unique_ptr<CompoundTag> Block::getNbt() {
|
|
return CompoundTag::fromBlock(this);
|
|
}
|
|
|
|
bool Block::setNbt(CompoundTag* nbt) {
|
|
nbt->setBlock(this);
|
|
return true;
|
|
}
|
|
|
|
unsigned int const & Block::getRuntimeId() const{
|
|
// Actor::_playFlySound Line7
|
|
return dAccess<unsigned int>(this, 12);
|
|
} |