Skip to content

Commit fefd8c8

Browse files
committed
fix: fix onContainerChange
fix: fix Command Player fix: fix some cancellable events
1 parent 4a52d03 commit fefd8c8

File tree

5 files changed

+45
-37
lines changed

5 files changed

+45
-37
lines changed

src/legacy/api/CommandAPI.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
#include "api/EntityAPI.h"
88
#include "api/ItemAPI.h"
99
#include "api/McAPI.h"
10+
#include "api/PlayerAPI.h"
1011
#include "engine/EngineOwnData.h"
1112
#include "engine/GlobalShareData.h"
1213
#include "engine/LocalShareData.h"
@@ -112,7 +113,7 @@ Local<Value> convertResult(ParamStorageType const& result, CommandOrigin const&
112113
} else if (result.hold(ParamKind::Kind::Player)) {
113114
auto arr = Array::newArray();
114115
for (auto i : std::get<CommandSelector<Player>>(result.value()).results(origin)) {
115-
arr.add(EntityClass::newEntity(i));
116+
arr.add(PlayerClass::newPlayer(i));
116117
}
117118
return arr;
118119
} else if (result.hold(ParamKind::Kind::BlockPos)) {

src/legacy/api/EventAPI.cpp

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -144,15 +144,21 @@ void EnableEventListener(int eventId) {
144144
switch ((EVENT_TYPES)eventId) {
145145
case EVENT_TYPES::onJoin:
146146
bus.emplaceListener<PlayerJoinEvent>([](PlayerJoinEvent& ev) {
147-
IF_LISTENED(EVENT_TYPES::onJoin) { CallEvent(EVENT_TYPES::onJoin, PlayerClass::newPlayer(&ev.self())); }
147+
IF_LISTENED(EVENT_TYPES::onJoin) {
148+
if (!CallEvent(EVENT_TYPES::onJoin, PlayerClass::newPlayer(&ev.self()))) {
149+
ev.cancel();
150+
}
151+
}
148152
IF_LISTENED_END(EVENT_TYPES::onJoin);
149153
});
150154
break;
151155

152156
case EVENT_TYPES::onPreJoin:
153157
bus.emplaceListener<PlayerConnectEvent>([](PlayerConnectEvent& ev) {
154158
IF_LISTENED(EVENT_TYPES::onPreJoin) {
155-
CallEvent(EVENT_TYPES::onPreJoin, PlayerClass::newPlayer(&ev.self()));
159+
if (!CallEvent(EVENT_TYPES::onPreJoin, PlayerClass::newPlayer(&ev.self()))) {
160+
ev.cancel();
161+
}
156162
}
157163
IF_LISTENED_END(EVENT_TYPES::onPreJoin);
158164
});
@@ -170,7 +176,13 @@ void EnableEventListener(int eventId) {
170176
case EVENT_TYPES::onChat:
171177
bus.emplaceListener<PlayerChatEvent>([](PlayerChatEvent& ev) {
172178
IF_LISTENED(EVENT_TYPES::onChat) {
173-
CallEvent(EVENT_TYPES::onChat, PlayerClass::newPlayer(&ev.self()), String::newString(ev.message()));
179+
if (!CallEvent(
180+
EVENT_TYPES::onChat,
181+
PlayerClass::newPlayer(&ev.self()),
182+
String::newString(ev.message())
183+
)) {
184+
ev.cancel();
185+
}
174186
}
175187
IF_LISTENED_END(EVENT_TYPES::onChat);
176188
});
@@ -191,11 +203,13 @@ void EnableEventListener(int eventId) {
191203
case EVENT_TYPES::onAttackEntity:
192204
bus.emplaceListener<PlayerAttackEvent>([](PlayerAttackEvent& ev) {
193205
IF_LISTENED(EVENT_TYPES::onAttackEntity) {
194-
CallEvent(
195-
EVENT_TYPES::onAttackEntity,
196-
PlayerClass::newPlayer(&ev.self()),
197-
EntityClass::newEntity(&ev.target())
198-
);
206+
if (!CallEvent(
207+
EVENT_TYPES::onAttackEntity,
208+
PlayerClass::newPlayer(&ev.self()),
209+
EntityClass::newEntity(&ev.target())
210+
)) {
211+
ev.cancel();
212+
}
199213
}
200214
IF_LISTENED_END(EVENT_TYPES::onAttackEntity);
201215
});

src/legacy/api/LoggerAPI.cpp

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -159,11 +159,7 @@ Local<Value> LoggerClass::setFile(const Arguments& args) {
159159
std::filesystem::path newFile = std::filesystem::path(args[0].asString().toString());
160160
std::shared_ptr<ll::io::FileSink> sink = std::make_shared<ll::io::FileSink>(
161161
newFile,
162-
ll::makePolymorphic<ll::io::PatternFormatter>(
163-
"{3:.3%T.} {2} {1} {0}",
164-
ll::io::Formatter::supportColorLog(),
165-
0b0010
166-
),
162+
ll::makePolymorphic<ll::io::PatternFormatter>("{3:.3%T.} {2} {1} {0}", false),
167163
std::ios::app
168164
);
169165
if (args.size() >= 2) {

src/lse/events/EventHooks.cpp

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -261,20 +261,17 @@ LL_TYPE_INSTANCE_HOOK(
261261
ItemStack const& newItem
262262
) {
263263
IF_LISTENED(EVENT_TYPES::onContainerChange) {
264-
Actor* actor = _getEntity();
265-
if (actor && actor->isType(ActorType::Player)) {
266-
Player* player = static_cast<Player*>(actor);
267-
if (player->hasOpenContainer()) {
268-
if (!CallEvent(
269-
EVENT_TYPES::onContainerChange,
270-
PlayerClass::newPlayer(player),
271-
BlockClass::newBlock(mUnk74419a.as<BlockPos>(), player->getDimensionId()),
272-
Number::newNumber(slotNumber + this->_getContainerOffset()),
273-
ItemClass::newItem(&const_cast<ItemStack&>(oldItem)),
274-
ItemClass::newItem(&const_cast<ItemStack&>(newItem))
275-
)) {
276-
return;
277-
}
264+
Player& player = mUnk84d147.as<Player&>();
265+
if (player.hasOpenContainer()) {
266+
if (!CallEvent(
267+
EVENT_TYPES::onContainerChange,
268+
PlayerClass::newPlayer(&player),
269+
BlockClass::newBlock(mUnk74419a.as<BlockPos>(), player.getDimensionId()),
270+
Number::newNumber(slotNumber + this->_getContainerOffset()),
271+
ItemClass::newItem(&const_cast<ItemStack&>(oldItem)),
272+
ItemClass::newItem(&const_cast<ItemStack&>(newItem))
273+
)) {
274+
return;
278275
}
279276
}
280277
}
@@ -501,12 +498,14 @@ LL_TYPE_INSTANCE_HOOK(
501498
WitherBoss::WitherAttackType type
502499
) {
503500
IF_LISTENED(EVENT_TYPES::onWitherBossDestroy) {
504-
CallEvent(
505-
EVENT_TYPES::onWitherBossDestroy,
506-
EntityClass::newEntity(this),
507-
IntPos::newPos(bb.min, region.getDimensionId()),
508-
IntPos::newPos(bb.max, region.getDimensionId())
509-
);
501+
if (!CallEvent(
502+
EVENT_TYPES::onWitherBossDestroy,
503+
EntityClass::newEntity(this),
504+
IntPos::newPos(bb.min, region.getDimensionId()),
505+
IntPos::newPos(bb.max, region.getDimensionId())
506+
)) {
507+
return;
508+
}
510509
}
511510
IF_LISTENED_END(EVENT_TYPES::onWitherBossDestroy);
512511
origin(level, bb, region, range, type);

src/tests/LSETests/ScriptTests.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
export function loggerTest(player) {
2-
if (player) {
3-
logger.setPlayer(player)
4-
}
2+
logger.setPlayer(player)
53
logger.setFile("logs/LegacyScriptEngine/ScriptTests.log");
64
logger.log("This is a log message");
75
logger.warn("This is a warning message");

0 commit comments

Comments
 (0)