From 67688fe8e72af8a1681081dc01e1e94ea322b57b Mon Sep 17 00:00:00 2001 From: Qiuzhizhe <42761326+quizhizhe@users.noreply.github.com> Date: Thu, 9 Feb 2023 23:03:14 -0800 Subject: [PATCH] `Level::BlockPalettePtr` replace `Level::BlockPalette` --- LiteLoader/Header/MC/BlockPalette.hpp | 11 +++++++++-- LiteLoader/Header/MC/Level.hpp | 2 +- LiteLoader/Kernel/MC/BlockAPI.cpp | 4 ++-- LiteLoader/Kernel/MC/LevelAPI.cpp | 4 ++++ LiteLoader/Kernel/MC/StructureTemplateAPI.cpp | 4 ++-- 5 files changed, 18 insertions(+), 7 deletions(-) diff --git a/LiteLoader/Header/MC/BlockPalette.hpp b/LiteLoader/Header/MC/BlockPalette.hpp index becff1e..2b1b91a 100644 --- a/LiteLoader/Header/MC/BlockPalette.hpp +++ b/LiteLoader/Header/MC/BlockPalette.hpp @@ -4,13 +4,20 @@ #include "../Global.h" #define BEFORE_EXTRA - +class BlockLegacy; +#include #undef BEFORE_EXTRA class BlockPalette { #define AFTER_EXTRA - +public: + std::mutex mLegacyBlockStatesConversionWarningMutex; + std::set> mLegacyBlockStatesConversionWarningSet; + std::map mNameLookup; + std::mapmBlockFromSerId; + std::vectormBlockFromRuntimeId; + Level *mLevel; #undef AFTER_EXTRA #ifndef DISABLE_CONSTRUCTOR_PREVENTION_BLOCKPALETTE public: diff --git a/LiteLoader/Header/MC/Level.hpp b/LiteLoader/Header/MC/Level.hpp index 9b86204..2354581 100644 --- a/LiteLoader/Header/MC/Level.hpp +++ b/LiteLoader/Header/MC/Level.hpp @@ -83,7 +83,7 @@ public: //Helper LIAPI static BlockSource* getBlockSource(int dimid); LIAPI static BlockSource* getBlockSource(Actor* actor); - //LIAPI static BlockPalette* getBlockPalette(); + LIAPI static BlockPalette* getBlockPalettePtr(); //LIAPI static Dimension* getDimension(class AutomaticID a0); LIAPI static Actor* getDamageSourceEntity(ActorDamageSource* ads); LIAPI static void broadcastText(const string& text, TextType type); diff --git a/LiteLoader/Kernel/MC/BlockAPI.cpp b/LiteLoader/Kernel/MC/BlockAPI.cpp index a12feb0..7b26eed 100644 --- a/LiteLoader/Kernel/MC/BlockAPI.cpp +++ b/LiteLoader/Kernel/MC/BlockAPI.cpp @@ -9,8 +9,8 @@ #include Block* Block::create(const string& name, unsigned short tileData) { - BlockPalette& generator = Global->getBlockPalette(); - auto blk = generator.getBlockLegacy(name); + BlockPalette* generator = Global->getBlockPalettePtr(); + auto blk = generator->getBlockLegacy(name); if (!blk) return nullptr; return (Block*)((BlockLegacy*)blk)->toBlock(tileData); diff --git a/LiteLoader/Kernel/MC/LevelAPI.cpp b/LiteLoader/Kernel/MC/LevelAPI.cpp index 22c1826..84237a8 100644 --- a/LiteLoader/Kernel/MC/LevelAPI.cpp +++ b/LiteLoader/Kernel/MC/LevelAPI.cpp @@ -62,6 +62,10 @@ Block* Level::getBlock(const BlockPos& pos, BlockSource* blockSource) { return (Block*)&(blockSource->getBlock(pos)); } +BlockPalette* Level::getBlockPalettePtr(){ + // MovingBlockActor::load Line69 + return dAccess(Global,2000); +}; // Return nullptr when failing to get block Block* Level::getBlockEx(const BlockPos& pos, int dimId) { diff --git a/LiteLoader/Kernel/MC/StructureTemplateAPI.cpp b/LiteLoader/Kernel/MC/StructureTemplateAPI.cpp index 02c058f..0f7f598 100644 --- a/LiteLoader/Kernel/MC/StructureTemplateAPI.cpp +++ b/LiteLoader/Kernel/MC/StructureTemplateAPI.cpp @@ -41,13 +41,13 @@ #include bool StructureTemplate::toWorld(int dimID, BlockPos const& p1, Mirror mirror, Rotation rotation) { - auto& palette = Global->getBlockPalette(); + auto palette = Global->getBlockPalettePtr(); auto bs = Level::getBlockSource(dimID); auto setting = StructureSettings(); setting.setMirror(mirror); setting.setStructureSize(getSize()); setting.setRotation(rotation); - placeInWorld(*bs, palette, p1, setting, nullptr, false); + placeInWorld(*bs, *palette, p1, setting, nullptr, false); return true; };