BungeeChatServerSwitchEvent.java
package dev.aura.bungeechat.event;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.RequiredArgsConstructor;
import lombok.ToString;
import net.md_5.bungee.api.config.ServerInfo;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import net.md_5.bungee.api.event.ServerSwitchEvent;
import net.md_5.bungee.api.plugin.Event;
/**
* Called when a player has changed servers.
*
* <p>Used by BungeeChat internally to make sure people joining while they are online don't cause
* issues.
*/
@Data
@RequiredArgsConstructor
@ToString(callSuper = false)
@EqualsAndHashCode(callSuper = false)
public class BungeeChatServerSwitchEvent extends Event {
private static boolean useModernMethods = true;
/** Player whom the server is for. */
private final ProxiedPlayer player;
/** Server the player is switch from. */
private final ServerInfo from;
public BungeeChatServerSwitchEvent(ProxiedPlayer player, ServerSwitchEvent event) {
this(player, getServerInfo(event));
}
private static ServerInfo getServerInfo(ServerSwitchEvent event) {
if (useModernMethods) {
try {
return event.getFrom();
} catch (NoSuchMethodError e) {
// If it fails once, we need to use the old method always
useModernMethods = false;
return getServerInfo(event);
}
} else {
return null;
}
}
}