mirror of
https://github.com/quizhizhe/LiteLoaderBDS-1.16.40.git
synced 2025-06-03 04:23:39 +00:00
修复ProjectileHitBlock
事件
This commit is contained in:
parent
d4632e915f
commit
1f2e7e5516
@ -1027,23 +1027,39 @@ TClasslessInstanceHook(bool, "?mayPlace@FireBlock@@UEBA_NAEAVBlockSource@@AEBVBl
|
|||||||
|
|
||||||
|
|
||||||
/////////////////// ProjectileHitBlock ///////////////////
|
/////////////////// ProjectileHitBlock ///////////////////
|
||||||
// 没有这个符号
|
// Block::onProjectileHit实际是调用以下其中之一
|
||||||
// TInstanceHook(void, "?onProjectileHit@Block@@QEBAXAEAVBlockSource@@AEBVBlockPos@@AEBVActor@@@Z",
|
TInstanceHook(void, "?onProjectileHit@TargetBlock@@UEBAXAEAVBlockSource@@AEBVBlockPos@@AEBVActor@@@Z",
|
||||||
// Block, BlockSource* bs, BlockPos* bp, Actor* actor) {
|
Block, BlockSource* bs, BlockPos* bp, Actor* actor) {
|
||||||
// // Exclude default position BlockPos::Zero
|
// Exclude default position BlockPos::Zero
|
||||||
// if ((bp->x | bp->y | bp->z) == 0) // actor->getPos().distanceTo(bp->center())>5)
|
if ((bp->x | bp->y | bp->z) == 0) // actor->getPos().distanceTo(bp->center())>5)
|
||||||
// return original(this, bs, bp, actor);
|
return original(this, bs, bp, actor);
|
||||||
// IF_LISTENED(ProjectileHitBlockEvent) {
|
IF_LISTENED(ProjectileHitBlockEvent) {
|
||||||
// if (this->getTypeName() != "minecraft:air") {
|
if (this->getTypeName() != "minecraft:air") {
|
||||||
// ProjectileHitBlockEvent ev{};
|
ProjectileHitBlockEvent ev{};
|
||||||
// ev.mBlockInstance = Level::getBlockInstance(bp, bs);
|
ev.mBlockInstance = Level::getBlockInstance(bp, bs);
|
||||||
// ev.mSource = actor;
|
ev.mSource = actor;
|
||||||
// ev.call();
|
ev.call();
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
// IF_LISTENED_END(ProjectileHitBlockEvent)
|
IF_LISTENED_END(ProjectileHitBlockEvent)
|
||||||
// return original(this, bs, bp, actor);
|
return original(this, bs, bp, actor);
|
||||||
// }
|
}
|
||||||
|
|
||||||
|
TInstanceHook(void, "??onProjectileHit@BellBlock@@UEBAXAEAVBlockSource@@AEBVBlockPos@@AEBVActor@@@Z",
|
||||||
|
Block, BlockSource* bs, BlockPos* bp, Actor* actor) {
|
||||||
|
if ((bp->x | bp->y | bp->z) == 0)
|
||||||
|
return original(this, bs, bp, actor);
|
||||||
|
IF_LISTENED(ProjectileHitBlockEvent) {
|
||||||
|
if (this->getTypeName() != "minecraft:air") {
|
||||||
|
ProjectileHitBlockEvent ev{};
|
||||||
|
ev.mBlockInstance = Level::getBlockInstance(bp, bs);
|
||||||
|
ev.mSource = actor;
|
||||||
|
ev.call();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
IF_LISTENED_END(ProjectileHitBlockEvent)
|
||||||
|
return original(this, bs, bp, actor);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/////////////////// RedStoneUpdate ///////////////////
|
/////////////////// RedStoneUpdate ///////////////////
|
||||||
|
Loading…
Reference in New Issue
Block a user