[DEV] Backport Fixes from DEV branch
- BUG - Server being pinged constantly during direct connect or lan - BUG - Single Player Nojang Server not returning null in multiplayer - FEAT - Way to check if login/logout event was sent from vanish
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -72,6 +72,9 @@ public class BridgedMinecraft {
|
||||
|
||||
@Nullable
|
||||
public BridgedIntegratedServer getSinglePlayerServer() {
|
||||
if (internal.getSingleplayerServer() == null)
|
||||
return null;
|
||||
|
||||
return BridgedIntegratedServer.of(internal.getSingleplayerServer());
|
||||
}
|
||||
|
||||
|
@@ -5,7 +5,6 @@ import lombok.RequiredArgsConstructor;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.minecraft.ChatFormatting;
|
||||
import net.minecraft.client.multiplayer.ServerData;
|
||||
import net.minecraft.client.multiplayer.ServerStatusPinger;
|
||||
|
||||
@RequiredArgsConstructor(staticName = "of")
|
||||
public class BridgedServerData {
|
||||
@@ -26,9 +25,7 @@ public class BridgedServerData {
|
||||
|
||||
public int getMaxPlayers() {
|
||||
if (!internal.pinged || internal.status.getString() == null) {
|
||||
try {
|
||||
new ServerStatusPinger().pingServer(internal, () -> {});
|
||||
} catch (Exception ignored) {}
|
||||
return internal.playerList.size() + 1;
|
||||
}
|
||||
|
||||
try {
|
||||
|
@@ -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));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@@ -17,9 +17,9 @@ public class Vanish {
|
||||
public void vanishevent(PlayerVanishEvent event) {
|
||||
if (event.getEntity() instanceof Player p) {
|
||||
if (event.isVanished()) {
|
||||
CraterEventBus.INSTANCE.postEvent(new CraterPlayerEvent.PlayerLoggedOut(BridgedPlayer.of(p)));
|
||||
CraterEventBus.INSTANCE.postEvent(new CraterPlayerEvent.PlayerLoggedOut(BridgedPlayer.of(p), true));
|
||||
} else {
|
||||
CraterEventBus.INSTANCE.postEvent(new CraterPlayerEvent.PlayerLoggedIn(BridgedPlayer.of(p)));
|
||||
CraterEventBus.INSTANCE.postEvent(new CraterPlayerEvent.PlayerLoggedIn(BridgedPlayer.of(p), true));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user