[FEAT] Add a way for login/logout event to know if it was sent from vanish

This commit is contained in:
2024-07-05 20:49:37 +02:00
parent 55e7e2211b
commit 0f17e8f844
3 changed files with 19 additions and 4 deletions

View File

@@ -4,6 +4,7 @@ import com.hypherionmc.craterlib.core.event.CraterEvent;
import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.Setter;
@RequiredArgsConstructor
@Getter
@@ -11,18 +12,32 @@ public class CraterPlayerEvent extends CraterEvent {
private final BridgedPlayer player;
@Getter
public static class PlayerLoggedIn extends CraterPlayerEvent {
private final boolean isFromVanish;
public PlayerLoggedIn(BridgedPlayer player) {
this(player, false);
}
public PlayerLoggedIn(BridgedPlayer player, boolean isFromVanish) {
super(player);
this.isFromVanish = false;
}
}
@Getter @Setter
public static class PlayerLoggedOut extends CraterPlayerEvent {
private final boolean isFromVanish;
public PlayerLoggedOut(BridgedPlayer player) {
this(player, false);
}
public PlayerLoggedOut(BridgedPlayer player, boolean isFromVanish) {
super(player);
this.isFromVanish = false;
}
}

View File

@@ -12,9 +12,9 @@ public class Vanish {
public static void register() {
VanishEvents.VANISH_EVENT.register((serverPlayer, b) -> {
if (b) {
CraterEventBus.INSTANCE.postEvent(new CraterPlayerEvent.PlayerLoggedOut(BridgedPlayer.of(serverPlayer)));
CraterEventBus.INSTANCE.postEvent(new CraterPlayerEvent.PlayerLoggedOut(BridgedPlayer.of(serverPlayer), true));
} else {
CraterEventBus.INSTANCE.postEvent(new CraterPlayerEvent.PlayerLoggedIn(BridgedPlayer.of(serverPlayer)));
CraterEventBus.INSTANCE.postEvent(new CraterPlayerEvent.PlayerLoggedIn(BridgedPlayer.of(serverPlayer), true));
}
});
}

View File

@@ -15,9 +15,9 @@ public class Vanish {
@SubscribeEvent
public void vanishevent(PlayerVanishEvent event) {
if (event.isVanished()) {
CraterEventBus.INSTANCE.postEvent(new CraterPlayerEvent.PlayerLoggedOut(BridgedPlayer.of(event.getEntity())));
CraterEventBus.INSTANCE.postEvent(new CraterPlayerEvent.PlayerLoggedOut(BridgedPlayer.of(event.getEntity()), true));
} else {
CraterEventBus.INSTANCE.postEvent(new CraterPlayerEvent.PlayerLoggedIn(BridgedPlayer.of(event.getEntity())));
CraterEventBus.INSTANCE.postEvent(new CraterPlayerEvent.PlayerLoggedIn(BridgedPlayer.of(event.getEntity()), true));
}
}