mirror of
https://github.com/quizhizhe/LiteLoaderBDS-1.16.40.git
synced 2025-06-01 19:53:41 +00:00
修复BlockExploded
事件
This commit is contained in:
parent
a73afd9fe9
commit
b14f5fe505
@ -926,20 +926,49 @@ TClasslessInstanceHook(unsigned short,
|
||||
}
|
||||
|
||||
/////////////////// BlockExploded ///////////////////
|
||||
// 没有这个符号
|
||||
// TInstanceHook(void, "?onExploded@Block@@QEBAXAEAVBlockSource@@AEBVBlockPos@@PEAVActor@@@Z",
|
||||
// Block, BlockSource* bs, BlockPos* bp, Actor* actor) {
|
||||
// IF_LISTENED(BlockExplodedEvent) {
|
||||
// if (actor) {
|
||||
// BlockExplodedEvent ev{};
|
||||
// ev.mBlockInstance = BlockInstance::createBlockInstance(this, *bp, bs->getDimensionId());
|
||||
// ev.mExplodeSource = actor;
|
||||
// ev.call();
|
||||
// }
|
||||
// }
|
||||
// IF_LISTENED_END(BlockExplodedEvent)
|
||||
// return original(this, bs, bp, actor);
|
||||
// }
|
||||
// block::onExploded实际是调用以下其中之一
|
||||
// StairBlock
|
||||
TInstanceHook(void, "onExploded@StairBlock@@UEBAXAEAVBlockSource@@AEBVBlockPos@@PEAVActor@@@Z",
|
||||
Block, BlockSource* bs, BlockPos* bp, Actor* actor) {
|
||||
IF_LISTENED(BlockExplodedEvent) {
|
||||
if (actor) {
|
||||
BlockExplodedEvent ev{};
|
||||
ev.mBlockInstance = BlockInstance::createBlockInstance(this, *bp, bs->getDimensionId());
|
||||
ev.mExplodeSource = actor;
|
||||
ev.call();
|
||||
}
|
||||
}
|
||||
IF_LISTENED_END(BlockExplodedEvent)
|
||||
return original(this, bs, bp, actor);
|
||||
}
|
||||
//TntBlock
|
||||
TInstanceHook(void, "?onExploded@TntBlock@@UEBAXAEAVBlockSource@@AEBVBlockPos@@PEAVActor@@@Z",
|
||||
Block, BlockSource* bs, BlockPos* bp, Actor* actor) {
|
||||
IF_LISTENED(BlockExplodedEvent) {
|
||||
if (actor) {
|
||||
BlockExplodedEvent ev{};
|
||||
ev.mBlockInstance = BlockInstance::createBlockInstance(this, *bp, bs->getDimensionId());
|
||||
ev.mExplodeSource = actor;
|
||||
ev.call();
|
||||
}
|
||||
}
|
||||
IF_LISTENED_END(BlockExplodedEvent)
|
||||
return original(this, bs, bp, actor);
|
||||
}
|
||||
//TopSnowBlock
|
||||
TInstanceHook(void, "?onExploded@TopSnowBlock@@UEBAXAEAVBlockSource@@AEBVBlockPos@@PEAVActor@@@Z",
|
||||
Block, BlockSource* bs, BlockPos* bp, Actor* actor) {
|
||||
IF_LISTENED(BlockExplodedEvent) {
|
||||
if (actor) {
|
||||
BlockExplodedEvent ev{};
|
||||
ev.mBlockInstance = BlockInstance::createBlockInstance(this, *bp, bs->getDimensionId());
|
||||
ev.mExplodeSource = actor;
|
||||
ev.call();
|
||||
}
|
||||
}
|
||||
IF_LISTENED_END(BlockExplodedEvent)
|
||||
return original(this, bs, bp, actor);
|
||||
}
|
||||
|
||||
|
||||
/////////////////// FireSpread ///////////////////
|
||||
|
Loading…
Reference in New Issue
Block a user