diff --git a/LiteLoader/src/llapi/EventAPI.cpp b/LiteLoader/src/llapi/EventAPI.cpp index e6a24a0..8fb78c0 100644 --- a/LiteLoader/src/llapi/EventAPI.cpp +++ b/LiteLoader/src/llapi/EventAPI.cpp @@ -1000,30 +1000,30 @@ TClasslessInstanceHook(bool, "?mayPlace@FireBlock@@UEBA_NAEAVBlockSource@@AEBVBl /////////////////// ContainerChange /////////////////// -// #include + #include -// TInstanceHook(void, "?_onItemChanged@LevelContainerModel@@MEAAXHAEBVItemStack@@0@Z", -// LevelContainerModel, int slotNumber, ItemStack* oldItem, ItemStack* newItem) { -// IF_LISTENED(ContainerChangeEvent) { -// Player* pl = (Player*)dAccess(this, 208); // IDA LevelContainerModel::LevelContainerModel + TInstanceHook(void, "?_onItemChanged@LevelContainerModel@@MEAAXHAEBVItemStack@@0@Z", + LevelContainerModel, int slotNumber, ItemStack* oldItem, ItemStack* newItem) { + IF_LISTENED(ContainerChangeEvent) { + Player* player = this->mPlayer; // IDA LevelContainerModel::LevelContainerModel -// if (pl->hasOpenContainer()) { -// BlockPos* bp = (BlockPos*)((char*)this + 216); + if (player->canOpenContainerScreen()) { + BlockPos blockPos = this->mBlockPos; -// ContainerChangeEvent ev{}; -// ev.mBlockInstance = Level::getBlockInstance(bp, pl->getDimensionId()); -// ev.mContainer = ev.mBlockInstance.getContainer(); -// ev.mPlayer = pl; -// ev.mSlot = slotNumber + this->_getContainerOffset(); -// ev.mPreviousItemStack = oldItem; -// ev.mNewItemStack = newItem; -// ev.mActor = this->getEntity(); -// ev.call(); -// } -// } -// IF_LISTENED_END(ContainerChangeEvent) -// return original(this, slotNumber, oldItem, newItem); -// } + ContainerChangeEvent ev{}; + ev.mBlockInstance = Level::getBlockInstance(blockPos, player->getDimensionId()); + ev.mContainer = ev.mBlockInstance.getContainer(); + ev.mPlayer = player; + ev.mSlot = slotNumber + this->_getContainerOffset(); + ev.mPreviousItemStack = oldItem; + ev.mNewItemStack = newItem; + ev.mActor = Global->getEntity(this->mEntityUniqueId); + ev.call(); + } + } + IF_LISTENED_END(ContainerChangeEvent) + return original(this, slotNumber, oldItem, newItem); + } /////////////////// ProjectileHitBlock ///////////////////