Player Loaded World API (#1541)
Co-authored-by: Emil <12966472+Emilxyz@users.noreply.github.com> Co-authored-by: Wouter Gritter <wouter@gritter.nl>
This commit is contained in:
co-authored by
Emil
Wouter Gritter
parent
a08972749b
commit
e11584ba35
+45
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
* Copyright (C) 2018-2026 Velocity Contributors
|
||||
*
|
||||
* The Velocity API is licensed under the terms of the MIT License. For more details,
|
||||
* reference the LICENSE file in the api top-level directory.
|
||||
*/
|
||||
|
||||
package com.velocitypowered.api.event.player;
|
||||
|
||||
import com.google.common.annotations.Beta;
|
||||
import com.google.common.base.Preconditions;
|
||||
import com.velocitypowered.api.proxy.Player;
|
||||
|
||||
/**
|
||||
* Called when a player is marked as loaded by the client.
|
||||
*
|
||||
* <p>This event is fired once per {@link com.velocitypowered.api.proxy.ServerConnection}
|
||||
* when the player explicitly notifies the server after loading the world (closing the downloading terrain screen)
|
||||
*
|
||||
* @implNote Unlike Paper this event will <u>not</u> fire due to a timeout nor respawning.
|
||||
* Though plugins can implement a timeout by scheduling a task in {@link ServerPostConnectEvent}
|
||||
* and checking {@link com.velocitypowered.api.proxy.ServerConnection#isClientLoaded()}.
|
||||
* @sinceMinecraft 1.21.4
|
||||
* @since 4.1.0
|
||||
*/
|
||||
@Beta
|
||||
public final class PlayerClientLoadedWorldEvent {
|
||||
|
||||
private final Player player;
|
||||
|
||||
public PlayerClientLoadedWorldEvent(Player player) {
|
||||
this.player = Preconditions.checkNotNull(player, "player");
|
||||
}
|
||||
|
||||
public Player getPlayer() {
|
||||
return player;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "PlayerClientLoadedWorldEvent{"
|
||||
+ "player=" + player
|
||||
+ '}';
|
||||
}
|
||||
}
|
||||
@@ -7,6 +7,7 @@
|
||||
|
||||
package com.velocitypowered.api.proxy;
|
||||
|
||||
import com.google.common.annotations.Beta;
|
||||
import com.velocitypowered.api.proxy.messages.ChannelMessageSink;
|
||||
import com.velocitypowered.api.proxy.messages.ChannelMessageSource;
|
||||
import com.velocitypowered.api.proxy.server.RegisteredServer;
|
||||
@@ -40,6 +41,17 @@ public interface ServerConnection extends ChannelMessageSource, ChannelMessageSi
|
||||
*/
|
||||
ServerInfo getServerInfo();
|
||||
|
||||
/**
|
||||
* Returns whether the client notified this connection of having loaded the world.
|
||||
*
|
||||
* @return true if the client has loaded the world
|
||||
* @implNote This is purely client-dependent; see {@link com.velocitypowered.api.event.player.PlayerClientLoadedWorldEvent}.
|
||||
* @sinceMinecraft 1.21.4
|
||||
* @since 4.1.0
|
||||
*/
|
||||
@Beta
|
||||
boolean isClientLoaded();
|
||||
|
||||
/**
|
||||
* Returns the player that this connection is associated with.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user