-
-
Notifications
You must be signed in to change notification settings - Fork 121
Open
Labels
bugSomething isn't workingSomething isn't working
Description
Describe the bug
mod 监听了 ActorHurtEvent 事件,玩家、实体受伤时,事件监听器并未未执行。
经过测试,发现和问题 #1664 有关 (Actor::hurt 更换为 Actor::_hurt)
测试回滚 hook 点位后正常监听到了事件触发。
村民受伤依旧无法监听到
- 回滚后正常触发
LL_AUTO_TYPE_INSTANCE_HOOK(
ActorHurtEventHook,
HookPriority::Normal,
Actor,
&Actor::hurt,
bool,
ActorDamageSource const& source,
float damage,
bool knock,
bool ignite
) {
auto logger = &land::PLand::getInstance().getSelf().getLogger();
EVENT_TRACE("ActorHurtEventHook", "LOG", "Actor hurt hook called");
auto ev = ll::event::ActorHurtEvent(*this, source, damage, knock, ignite);
ll::event::EventBus::getInstance().publish(ev);
if (ev.isCancelled()) {
return false;
}
return origin(source, damage, knock, ignite);
}45:27.737 TRACE [PLand] [src\pland\hooks\hook\ActorHurtHook.cc:24|ActorHurtEventHook|LOG] Actor hurt hook called
21:45:27.737 TRACE [PLand] [src\pland\hooks\listeners\EntityListeners.ll.cc:67|ActorHurtEvent|PASS] land not found or permission allowed
21:45:29.872 TRACE [PLand] [src\pland\hooks\listeners\PlayerListeners.ll.cc:366|PlayerAttackEvent|LOG] player=engsr6982, target=minecraft:spider, pos=Vec3(16.0001,1,42.9335)
21:45:29.872 TRACE [PLand] [src\pland\hooks\listeners\PlayerListeners.ll.cc:370|PlayerAttackEvent|PASS] land not found or permission allowed
21:45:29.872 TRACE [PLand] [src\pland\hooks\hook\ActorHurtHook.cc:24|ActorHurtEventHook|LOG] Actor hurt hook called
21:45:29.872 TRACE [PLand] [src\pland\hooks\listeners\EntityListeners.ll.cc:67|ActorHurtEvent|PASS] land not found or permission allowed
- 未回滚的 mod 代码:
RegisterListenerIf(Config::cfg.listeners.ActorHurtEvent, [&]() {
return bus->emplaceListener<ll::event::ActorHurtEvent>([db, logger](ll::event::ActorHurtEvent& ev) {
auto& actor = ev.self();
auto& source = ev.source();
if (source.getEntityType() != ActorType::Player) {
EVENT_TRACE("ActorHurtEvent", EVENT_TRACE_SKIP, "non-player damage");
return; // skip non-player damage
}
auto sourcePlayer = actor.getLevel().getPlayer(source.getEntityUniqueID());
if (!sourcePlayer) {
EVENT_TRACE("ActorHurtEvent", EVENT_TRACE_PASS, "source player not found");
return;
}
auto land = db->getLandAt(actor.getPosition(), actor.getDimensionId());
if (PreCheckLandExistsAndPermission(land, sourcePlayer->getUuid())) {
EVENT_TRACE("ActorHurtEvent", EVENT_TRACE_PASS, "land not found or permission allowed");
return;
}
auto const& typeName = actor.getTypeName();
auto const& tab = land->getPermTable();
if (actor.isPlayer()) {
CANCEL_AND_RETURN_IF(
!tab.allowPlayerDamage,
EVENT_TRACE("ActorHurtEvent", EVENT_TRACE_CANCEL, "allowPlayerDamage denied")
);
} else if (Config::cfg.protection.mob.hostileMobTypeNames.contains(typeName)) {
CANCEL_AND_RETURN_IF(
!tab.allowMonsterDamage,
EVENT_TRACE("ActorHurtEvent", EVENT_TRACE_CANCEL, "allowMonsterDamage denied")
);
} else if (Config::cfg.protection.mob.specialMobTypeNames.contains(typeName)) {
CANCEL_AND_RETURN_IF(
!tab.allowSpecialDamage,
EVENT_TRACE("ActorHurtEvent", EVENT_TRACE_CANCEL, "allowSpecialDamage denied")
);
} else if (Config::cfg.protection.mob.passiveMobTypeNames.contains(typeName)) {
CANCEL_AND_RETURN_IF(
!tab.allowPassiveDamage,
EVENT_TRACE("ActorHurtEvent", EVENT_TRACE_CANCEL, "allowPassiveDamage denied")
);
} else if (Config::cfg.protection.mob.customSpecialMobTypeNames.contains(typeName)) {
CANCEL_AND_RETURN_IF(
!tab.allowCustomSpecialDamage,
EVENT_TRACE("ActorHurtEvent", EVENT_TRACE_CANCEL, "allowCustomSpecialDamage denied")
);
}
});
});测试控制台并未有任何 ActorHurtEvent 相关字样输出
21:31:41.226 INFO [LeviLamina] 正在加载 iListenAttentively v0.7.0
21:31:41.384 INFO [LeviLamina] iListenAttentively 已加载
21:31:41.384 INFO [LeviLamina] 正在加载 PLand v0.13.0
21:31:41.540 INFO [PLand] _____ _ _
21:31:41.540 INFO [PLand] | __ \ | | | |
21:31:41.540 INFO [PLand] | |__) || | __ _ _ __ __| |
21:31:41.540 INFO [PLand] | ___/ | | / _` || '_ \ / _` |
21:31:41.540 INFO [PLand] | | | |____| (_| || | | || (_| |
21:31:41.540 INFO [PLand] |_| |______|\__,_||_| |_| \__,_|
21:31:41.540 INFO [PLand]
21:31:41.540 INFO [PLand] Loading...
21:31:41.540 WARN [PLand] Version: [Snapshot] v0.13.0-15e2ee4+16
21:31:41.540 WARN [PLand] 您当前正在使用开发快照版本,此版本可能某些功能异常、损坏、甚至导致崩溃,请勿在生产环境
中使用。
21:31:41.540 WARN [PLand] You are using a development snapshot version, this version may have some abnormal, broken or even crash functions, please do not use it in production environment.
21:31:41.564 INFO [PLand] 已加载 1 位操作员
21:31:41.565 INFO [PLand] 已加载 1 位玩家的设置
21:31:41.571 INFO [PLand] 已加载 3 块领地数据
21:31:41.572 INFO [PLand] 已加载模板权限表
21:31:41.572 INFO [PLand] 初始化维度区块映射完成
21:31:41.572 DEBUG [PLand] using internals::EmtpyInterface
21:31:41.575 WARN [PLand] Debug Mode
21:31:41.575 INFO [LeviLamina] PLand 已加载
21:31:41.575 INFO [LeviLamina] 已加载 5 个模组
21:31:41.612 INFO [Server] setting up server logging...
21:31:41.612 INFO [Server] Starting Server
21:31:41.612 INFO [Server] Version: 1.21.93.1(ProtocolVersion 819) with LeviLamina-1.4.1
21:31:41.612 INFO [Server] Session ID: 83f076ac-cfe5-4664-b5a2-ad858eb3c2ba
21:31:41.612 INFO [Server] Build ID: 34699809
21:31:41.612 INFO [Server] Branch: r/21_u9
21:31:41.612 INFO [Server] Commit ID: b7557d74f35ab147554df05f6eb2ff4c5a217be2
21:31:41.612 INFO [Server] Configuration: Publish
21:31:41.613 INFO [Server] Level Name: Bedrock level
21:31:42.177 INFO [Server] No CDN config file found for dedicated server
21:31:42.177 INFO [Server] Game mode: 0 Survival
21:31:42.177 INFO [Server] Difficulty: 1 EASY
21:31:42.177 INFO [Server] Content logging to console is enabled.
21:31:42.177 INFO [Server] AuthHelper loading cert AppCertificate.pfx
21:31:42.177 WARN [Server] <LVL|4> AuthHelper could not find cert
21:31:42.757 INFO [Server] Opening level 'worlds/Bedrock level/db'
21:31:42.931 INFO [Server] [SERVER] Pack Stack - None
21:31:45.319 INFO [Server] IPv4 supported, port: 19132: Used for gameplay and LAN discovery
21:31:45.319 INFO [Server] IPv6 supported, port: 19133: Used for gameplay
21:31:45.453 INFO [Server] Server started in (4.7s)! For help, type "help" or "?"
21:31:45.453 INFO [Server] ================ TELEMETRY MESSAGE ===================
21:31:45.453 INFO [Server] Server Telemetry is currently not enabled.
21:31:45.453 INFO [Server] Enabling this telemetry helps us improve the game.
21:31:45.453 INFO [Server] To enable this feature, add the line 'emit-server-telemetry=true'
21:31:45.453 INFO [Server] to the server.properties file in the handheld/src-server directory
21:31:45.453 INFO [Server] ======================================================
21:31:45.467 WARN [CrashLogger] 检测到附加的调试器,崩溃记录器将不会被启用
21:31:45.467 INFO [LeviLamina] 正在启用模组……
21:31:45.467 INFO [LeviLamina] 正在启用 DebugShape v0.2.0
21:31:45.467 INFO [LeviLamina] 正在启用 more-dimensions v0.9.0
21:31:45.467 INFO [more-dimensions] Enabling...
21:31:45.467 INFO [LeviLamina] 正在启用 PlotX v0.0.0
21:31:45.612 INFO [LeviLamina] 正在启用 iListenAttentively v0.7.0
21:31:45.612 INFO [LeviLamina] 正在启用 PLand v0.13.0
21:31:47.666 INFO [LeviLamina] 5 个模组在 (2.2秒) 内启用
21:31:57.362 INFO [Server] Player connected: engsr6982, xuid: 2535457668222696
21:31:58.583 TRACE [PLand] [src\pland\hooks\listeners\EntityListeners.ll.cc:32|SpawnedMobEvent|LOG] position=Vec3(96.49,1,102.49)
21:31:58.584 TRACE [PLand] [src\pland\hooks\listeners\EntityListeners.ll.cc:36|SpawnedMobEvent|PASS] land not found or permission allowed
21:31:58.584 TRACE [PLand] [src\pland\hooks\listeners\EntityListeners.ll.cc:32|SpawnedMobEvent|LOG] position=Vec3(96.49,1,102.49)
21:31:58.584 TRACE [PLand] [src\pland\hooks\listeners\EntityListeners.ll.cc:36|SpawnedMobEvent|PASS] land not found or permission allowed
21:31:58.972 INFO [Server] Player Spawned: engsr6982 xuid: 2535457668222696, pfid: 73c99b0d7bb44e8d
21:31:59.982 TRACE [PLand] [src\pland\hooks\listeners\EntityListeners.ll.cc:32|SpawnedMobEvent|LOG] position=Vec3(80.49,1,58.49)
21:31:59.982 TRACE [PLand] [src\pland\hooks\listeners\EntityListeners.ll.cc:44|SpawnedMobEvent|CANCEL] mob despawned
21:32:00.577 TRACE [PLand] [src\pland\hooks\listeners\EntityListeners.ll.cc:32|SpawnedMobEvent|LOG] position=Vec3(65.49,1,123.49)
21:32:00.577 TRACE [PLand] [src\pland\hooks\listeners\EntityListeners.ll.cc:36|SpawnedMobEvent|PASS] land not found or permission allowed
21:32:03.630 TRACE [PLand] [src\pland\hooks\listeners\EntityListeners.ll.cc:32|SpawnedMobEvent|LOG] position=Vec3(41.49,1,63.49)
21:32:03.630 TRACE [PLand] [src\pland\hooks\listeners\EntityListeners.ll.cc:36|SpawnedMobEvent|PASS] land not found or permission allowed
21:32:11.775 TRACE [PLand] [src\pland\hooks\listeners\EntityListeners.ll.cc:32|SpawnedMobEvent|LOG] position=Vec3(35.49,1,69.49)
21:32:11.775 TRACE [PLand] [src\pland\hooks\listeners\EntityListeners.ll.cc:36|SpawnedMobEvent|PASS] land not found or permission allowed
21:32:14.847 TRACE [PLand] [src\pland\hooks\listeners\PlayerListeners.ll.cc:366|PlayerAttackEvent|LOG] player=engsr6982, target=minecraft:trader_llama, pos=Vec3(66.9054,1,90.8333)
21:32:14.847 TRACE [PLand] [src\pland\hooks\listeners\PlayerListeners.ll.cc:370|PlayerAttackEvent|PASS] land not found or permission allowed
21:32:19.077 TRACE [PLand] [src\pland\hooks\listeners\EntityListeners.ll.cc:32|SpawnedMobEvent|LOG] position=Vec3(24.49,1,88.49)
21:32:19.077 TRACE [PLand] [src\pland\hooks\listeners\EntityListeners.ll.cc:36|SpawnedMobEvent|PASS] land not found or permission allowed
21:32:19.077 TRACE [PLand] [src\pland\hooks\listeners\EntityListeners.ll.cc:32|SpawnedMobEvent|LOG] position=Vec3(24.49,1,88.49)
21:32:19.077 TRACE [PLand] [src\pland\hooks\listeners\EntityListeners.ll.cc:36|SpawnedMobEvent|PASS] land not found or permission allowed
21:32:22.178 TRACE [PLand] [src\pland\hooks\listeners\EntityListeners.ll.cc:32|SpawnedMobEvent|LOG] position=Vec3(28.49,1,108.49)
21:32:22.178 TRACE [PLand] [src\pland\hooks\listeners\EntityListeners.ll.cc:36|SpawnedMobEvent|PASS] land not found or permission allowed
21:32:30.472 TRACE [PLand] [src\pland\hooks\listeners\EntityListeners.ll.cc:28|SpawnedMobEvent|SKIP] mob not found
21:32:30.722 TRACE [PLand] [src\pland\hooks\listeners\EntityListeners.ll.cc:32|SpawnedMobEvent|LOG] position=Vec3(106.49,1,88.49)
21:32:30.722 TRACE [PLand] [src\pland\hooks\listeners\EntityListeners.ll.cc:36|SpawnedMobEvent|PASS] land not found or permission allowed
21:32:37.731 TRACE [PLand] [src\pland\hooks\listeners\EntityListeners.ll.cc:32|SpawnedMobEvent|LOG] position=Vec3(81.49,1,60.49)
21:32:37.731 TRACE [PLand] [src\pland\hooks\listeners\EntityListeners.ll.cc:44|SpawnedMobEvent|CANCEL] mob despawned
21:32:38.230 TRACE [PLand] [src\pland\hooks\listeners\EntityListeners.ll.cc:32|SpawnedMobEvent|LOG] position=Vec3(87.49,1,131.49)
21:32:38.230 TRACE [PLand] [src\pland\hooks\listeners\EntityListeners.ll.cc:36|SpawnedMobEvent|PASS] land not found or permission allowed
21:32:43.524 TRACE [PLand] [src\pland\hooks\listeners\EntityListeners.ll.cc:32|SpawnedMobEvent|LOG] position=Vec3(103.49,1,151.49)
21:32:43.524 TRACE [PLand] [src\pland\hooks\listeners\EntityListeners.ll.cc:36|SpawnedMobEvent|PASS] land not found or permission allowed
21:32:46.875 TRACE [PLand] [src\pland\hooks\listeners\PlayerListeners.ila.cc:117|PlayerDropItemEvent|LOG] player=engsr6982
21:32:46.875 TRACE [PLand] [src\pland\hooks\listeners\PlayerListeners.ila.cc:121|PlayerDropItemEvent|PASS] land not found or permission allowed
21:32:46.875 TRACE [PLand] [src\pland\hooks\listeners\PlayerListeners.ila.cc:117|PlayerDropItemEvent|LOG] player=engsr6982
21:32:46.875 TRACE [PLand] [src\pland\hooks\listeners\PlayerListeners.ila.cc:121|PlayerDropItemEvent|PASS] land not found or permission allowed
21:32:46.875 TRACE [PLand] [src\pland\hooks\listeners\PlayerListeners.ila.cc:117|PlayerDropItemEvent|LOG] player=engsr6982
21:32:46.875 TRACE [PLand] [src\pland\hooks\listeners\PlayerListeners.ila.cc:121|PlayerDropItemEvent|PASS] land not found or permission allowed
21:32:46.875 TRACE [PLand] [src\pland\hooks\listeners\PlayerListeners.ila.cc:117|PlayerDropItemEvent|LOG] player=engsr6982
21:32:46.875 TRACE [PLand] [src\pland\hooks\listeners\PlayerListeners.ila.cc:121|PlayerDropItemEvent|PASS] land not found or permission allowed
21:32:46.876 TRACE [PLand] [src\pland\hooks\listeners\PlayerListeners.ila.cc:117|PlayerDropItemEvent|LOG] player=engsr6982
21:32:46.876 TRACE [PLand] [src\pland\hooks\listeners\PlayerListeners.ila.cc:121|PlayerDropItemEvent|PASS] land not found or permission allowed
21:32:46.876 TRACE [PLand] [src\pland\hooks\listeners\PlayerListeners.ila.cc:117|PlayerDropItemEvent|LOG] player=engsr6982
21:32:46.876 TRACE [PLand] [src\pland\hooks\listeners\PlayerListeners.ila.cc:121|PlayerDropItemEvent|PASS] land not found or permission allowed
21:32:46.876 TRACE [PLand] [src\pland\hooks\listeners\PlayerListeners.ila.cc:117|PlayerDropItemEvent|LOG] player=engsr6982
21:32:46.876 TRACE [PLand] [src\pland\hooks\listeners\PlayerListeners.ila.cc:121|PlayerDropItemEvent|PASS] land not found or permission allowed
21:32:46.876 TRACE [PLand] [src\pland\hooks\listeners\PlayerListeners.ila.cc:117|PlayerDropItemEvent|LOG] player=engsr6982
21:32:46.876 TRACE [PLand] [src\pland\hooks\listeners\PlayerListeners.ila.cc:121|PlayerDropItemEvent|PASS] land not found or permission allowed
21:32:46.876 TRACE [PLand] [src\pland\hooks\listeners\PlayerListeners.ila.cc:117|PlayerDropItemEvent|LOG] player=engsr6982
21:32:46.876 TRACE [PLand] [src\pland\hooks\listeners\PlayerListeners.ila.cc:121|PlayerDropItemEvent|PASS] land not found or permission allowed
21:32:47.576 TRACE [PLand] [src\pland\hooks\listeners\EntityListeners.ll.cc:32|SpawnedMobEvent|LOG] position=Vec3(128.49,1,117.49)
21:32:47.577 TRACE [PLand] [src\pland\hooks\listeners\EntityListeners.ll.cc:36|SpawnedMobEvent|PASS] land not found or permission allowed
21:33:03.131 TRACE [PLand] [src\pland\hooks\listeners\EntityListeners.ll.cc:32|SpawnedMobEvent|LOG] position=Vec3(111.49,1,164.49)
21:33:03.131 TRACE [PLand] [src\pland\hooks\listeners\EntityListeners.ll.cc:36|SpawnedMobEvent|PASS] land not found or permission allowed
21:33:15.532 TRACE [PLand] [src\pland\hooks\listeners\EntityListeners.ll.cc:32|SpawnedMobEvent|LOG] position=Vec3(122.49,1,161.49)
21:33:15.532 TRACE [PLand] [src\pland\hooks\listeners\EntityListeners.ll.cc:36|SpawnedMobEvent|PASS] land not found or permission allowed
21:33:15.532 TRACE [PLand] [src\pland\hooks\listeners\EntityListeners.ll.cc:32|SpawnedMobEvent|LOG] position=Vec3(122.49,1,161.49)
21:33:15.532 TRACE [PLand] [src\pland\hooks\listeners\EntityListeners.ll.cc:36|SpawnedMobEvent|PASS] land not found or permission allowed
21:33:34.379 TRACE [PLand] [src\pland\hooks\listeners\EntityListeners.ll.cc:32|SpawnedMobEvent|LOG] position=Vec3(96.49,1,164.49)
21:33:34.379 TRACE [PLand] [src\pland\hooks\listeners\EntityListeners.ll.cc:36|SpawnedMobEvent|PASS] land not found or permission allowed
21:33:36.894 INFO [Server] Server stop requested.
21:33:36.916 INFO [Server] Stopping server...
To Reproduce
监听事件,对实体造成伤害
Expected behavior
正常监听
Screenshots
No response
Platform
win10
Version
1.21.93.1(ProtocolVersion 819) with LeviLamina-1.4.1
Additional context
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working