Fix non-spigot server support
This commit is contained in:
parent
60c7499cf4
commit
caf2a0ee9e
@ -21,6 +21,7 @@ import fr.xephi.authme.listener.PlayerListener111;
|
|||||||
import fr.xephi.authme.listener.PlayerListener16;
|
import fr.xephi.authme.listener.PlayerListener16;
|
||||||
import fr.xephi.authme.listener.PlayerListener18;
|
import fr.xephi.authme.listener.PlayerListener18;
|
||||||
import fr.xephi.authme.listener.PlayerListener19;
|
import fr.xephi.authme.listener.PlayerListener19;
|
||||||
|
import fr.xephi.authme.listener.PlayerListener19Spigot;
|
||||||
import fr.xephi.authme.listener.ServerListener;
|
import fr.xephi.authme.listener.ServerListener;
|
||||||
import fr.xephi.authme.security.HashAlgorithm;
|
import fr.xephi.authme.security.HashAlgorithm;
|
||||||
import fr.xephi.authme.security.crypts.Sha256;
|
import fr.xephi.authme.security.crypts.Sha256;
|
||||||
@ -313,6 +314,11 @@ public class AuthMe extends JavaPlugin {
|
|||||||
pluginManager.registerEvents(injector.getSingleton(PlayerListener19.class), this);
|
pluginManager.registerEvents(injector.getSingleton(PlayerListener19.class), this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Try to register 1.9 spigot player listeners
|
||||||
|
if (isClassLoaded("org.spigotmc.event.player.PlayerSpawnLocationEvent")) {
|
||||||
|
pluginManager.registerEvents(injector.getSingleton(PlayerListener19Spigot.class), this);
|
||||||
|
}
|
||||||
|
|
||||||
// Register listener for 1.11 events if available
|
// Register listener for 1.11 events if available
|
||||||
if (isClassLoaded("org.bukkit.event.entity.EntityAirChangeEvent")) {
|
if (isClassLoaded("org.bukkit.event.entity.EntityAirChangeEvent")) {
|
||||||
pluginManager.registerEvents(injector.getSingleton(PlayerListener111.class), this);
|
pluginManager.registerEvents(injector.getSingleton(PlayerListener111.class), this);
|
||||||
|
|||||||
@ -191,7 +191,7 @@ public class PlayerListener implements Listener {
|
|||||||
public void onPlayerJoin(PlayerJoinEvent event) {
|
public void onPlayerJoin(PlayerJoinEvent event) {
|
||||||
final Player player = event.getPlayer();
|
final Player player = event.getPlayer();
|
||||||
|
|
||||||
if (!PlayerListener19.isIsPlayerSpawnLocationEventCalled()) {
|
if (!PlayerListener19Spigot.isIsPlayerSpawnLocationEventCalled()) {
|
||||||
teleportationService.teleportOnJoin(player);
|
teleportationService.teleportOnJoin(player);
|
||||||
management.performJoin(player, player.getLocation());
|
management.performJoin(player, player.getLocation());
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,51 +1,20 @@
|
|||||||
package fr.xephi.authme.listener;
|
package fr.xephi.authme.listener;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
|
||||||
|
|
||||||
import fr.xephi.authme.process.Management;
|
|
||||||
import fr.xephi.authme.service.TeleportationService;
|
|
||||||
import org.bukkit.Location;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.player.PlayerSwapHandItemsEvent;
|
import org.bukkit.event.player.PlayerSwapHandItemsEvent;
|
||||||
import org.spigotmc.event.player.PlayerSpawnLocationEvent;
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Listener of player events for events introduced in Minecraft 1.9.
|
* Listener of player events for events introduced in Minecraft 1.9.
|
||||||
*/
|
*/
|
||||||
public class PlayerListener19 implements Listener {
|
public class PlayerListener19 implements Listener {
|
||||||
|
|
||||||
@Inject
|
|
||||||
private Management management;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
private TeleportationService teleportationService;
|
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private ListenerService listenerService;
|
private ListenerService listenerService;
|
||||||
|
|
||||||
private static boolean IS_PLAYER_SPAWN_LOCATION_EVENT_CALLED = false;
|
|
||||||
|
|
||||||
public static boolean isIsPlayerSpawnLocationEventCalled() {
|
|
||||||
return IS_PLAYER_SPAWN_LOCATION_EVENT_CALLED;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Note: the following event is called since MC1.9, in older versions we have to fallback on the PlayerJoinEvent
|
|
||||||
@EventHandler(priority = EventPriority.HIGH)
|
|
||||||
public void onPlayerSpawn(PlayerSpawnLocationEvent event) {
|
|
||||||
PlayerListener19.IS_PLAYER_SPAWN_LOCATION_EVENT_CALLED = true;
|
|
||||||
final Player player = event.getPlayer();
|
|
||||||
|
|
||||||
management.performJoin(player, event.getSpawnLocation());
|
|
||||||
|
|
||||||
Location customSpawnLocation = teleportationService.prepareOnJoinSpawnLocation(player);
|
|
||||||
if (customSpawnLocation != null) {
|
|
||||||
event.setSpawnLocation(customSpawnLocation);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler(ignoreCancelled = true, priority = EventPriority.LOWEST)
|
@EventHandler(ignoreCancelled = true, priority = EventPriority.LOWEST)
|
||||||
public void onPlayerSwapHandItems(PlayerSwapHandItemsEvent event) {
|
public void onPlayerSwapHandItems(PlayerSwapHandItemsEvent event) {
|
||||||
if (listenerService.shouldCancelEvent(event)) {
|
if (listenerService.shouldCancelEvent(event)) {
|
||||||
|
|||||||
@ -0,0 +1,42 @@
|
|||||||
|
package fr.xephi.authme.listener;
|
||||||
|
|
||||||
|
import fr.xephi.authme.process.Management;
|
||||||
|
import fr.xephi.authme.service.TeleportationService;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.EventPriority;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.spigotmc.event.player.PlayerSpawnLocationEvent;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
|
||||||
|
public class PlayerListener19Spigot implements Listener {
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private Management management;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private TeleportationService teleportationService;
|
||||||
|
|
||||||
|
private static boolean IS_PLAYER_SPAWN_LOCATION_EVENT_CALLED = false;
|
||||||
|
|
||||||
|
public static boolean isIsPlayerSpawnLocationEventCalled() {
|
||||||
|
return IS_PLAYER_SPAWN_LOCATION_EVENT_CALLED;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Note: the following event is called since MC1.9, in older versions we have to fallback on the PlayerJoinEvent
|
||||||
|
@EventHandler(priority = EventPriority.HIGH)
|
||||||
|
public void onPlayerSpawn(PlayerSpawnLocationEvent event) {
|
||||||
|
IS_PLAYER_SPAWN_LOCATION_EVENT_CALLED = true;
|
||||||
|
final Player player = event.getPlayer();
|
||||||
|
|
||||||
|
management.performJoin(player, event.getSpawnLocation());
|
||||||
|
|
||||||
|
Location customSpawnLocation = teleportationService.prepareOnJoinSpawnLocation(player);
|
||||||
|
if (customSpawnLocation != null) {
|
||||||
|
event.setSpawnLocation(customSpawnLocation);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -32,7 +32,7 @@ public final class ListenerConsistencyTest {
|
|||||||
"PlayerListener#onPlayerQuit", "ServerListener#onPluginDisable",
|
"PlayerListener#onPlayerQuit", "ServerListener#onPluginDisable",
|
||||||
"ServerListener#onServerPing", "ServerListener#onPluginEnable",
|
"ServerListener#onServerPing", "ServerListener#onPluginEnable",
|
||||||
"PlayerListener#onJoinMessage", "PlayerListener#onAsyncPlayerPreLoginEvent",
|
"PlayerListener#onJoinMessage", "PlayerListener#onAsyncPlayerPreLoginEvent",
|
||||||
"PlayerListener19#onPlayerSpawn");
|
"PlayerListener19Spigot#onPlayerSpawn");
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeClass
|
||||||
public static void collectListenerClasses() {
|
public static void collectListenerClasses() {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user