Skip to content

Commit 5979db9

Browse files
author
UserNugget
committed
Ensure that KickedFromServerEvent hook never fails
1 parent 1489153 commit 5979db9

1 file changed

Lines changed: 7 additions & 2 deletions

File tree

plugin/src/main/java/net/elytrium/limboapi/injection/event/EventManagerHook.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,8 +136,13 @@ private <E> CompletableFuture<E> proxyHook(E event) {
136136
} else if (event instanceof KickedFromServerEvent kicked) {
137137
CompletableFuture<E> hookFuture = new CompletableFuture<>();
138138
super.fire(kicked).thenRunAsync(() -> {
139-
Function<KickedFromServerEvent, Boolean> callback = this.plugin.getKickCallback(kicked.getPlayer());
140-
if (callback == null || !callback.apply(kicked)) {
139+
try {
140+
Function<KickedFromServerEvent, Boolean> callback = this.plugin.getKickCallback(kicked.getPlayer());
141+
if (callback == null || !callback.apply(kicked)) {
142+
hookFuture.complete(event);
143+
}
144+
} catch (Throwable throwable) {
145+
LimboAPI.getLogger().error("Failed to handle KickCallback, ignoring its result", throwable);
141146
hookFuture.complete(event);
142147
}
143148
}, ((ConnectedPlayer) kicked.getPlayer()).getConnection().eventLoop());

0 commit comments

Comments
 (0)