diff --git a/src/main/java/fr/xephi/authme/AuthMe.java b/src/main/java/fr/xephi/authme/AuthMe.java index 1adad034..6c87fcbe 100644 --- a/src/main/java/fr/xephi/authme/AuthMe.java +++ b/src/main/java/fr/xephi/authme/AuthMe.java @@ -17,6 +17,7 @@ import fr.xephi.authme.initialization.TaskCloser; import fr.xephi.authme.listener.BlockListener; import fr.xephi.authme.listener.EntityListener; import fr.xephi.authme.listener.PlayerListener; +import fr.xephi.authme.listener.PlayerListener111; import fr.xephi.authme.listener.PlayerListener16; import fr.xephi.authme.listener.PlayerListener18; import fr.xephi.authme.listener.PlayerListener19; @@ -301,6 +302,11 @@ public class AuthMe extends JavaPlugin { if (isClassLoaded("org.bukkit.event.player.PlayerSwapHandItemsEvent")) { pluginManager.registerEvents(injector.getSingleton(PlayerListener19.class), this); } + + // Register listener for 1.11 events if available + if (isClassLoaded("org.bukkit.event.entity.EntityAirChangeEvent")) { + pluginManager.registerEvents(injector.getSingleton(PlayerListener111.class), this); + } } /** diff --git a/src/main/java/fr/xephi/authme/listener/PlayerListener111.java b/src/main/java/fr/xephi/authme/listener/PlayerListener111.java new file mode 100644 index 00000000..43b4ca33 --- /dev/null +++ b/src/main/java/fr/xephi/authme/listener/PlayerListener111.java @@ -0,0 +1,24 @@ +package fr.xephi.authme.listener; + +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.EntityAirChangeEvent; + +import javax.inject.Inject; + +/** + * Listener of player events for events introduced in Minecraft 1.11. + */ +public class PlayerListener111 implements Listener { + + @Inject + private ListenerService listenerService; + + @EventHandler(ignoreCancelled = true, priority = EventPriority.LOWEST) + public void onPlayerAirChange(EntityAirChangeEvent event) { + if (listenerService.shouldCancelEvent(event)) { + event.setCancelled(true); + } + } +} diff --git a/src/test/java/fr/xephi/authme/listener/PlayerListener111Test.java b/src/test/java/fr/xephi/authme/listener/PlayerListener111Test.java new file mode 100644 index 00000000..8f479a71 --- /dev/null +++ b/src/test/java/fr/xephi/authme/listener/PlayerListener111Test.java @@ -0,0 +1,30 @@ +package fr.xephi.authme.listener; + +import org.bukkit.event.entity.EntityAirChangeEvent; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.runners.MockitoJUnitRunner; + +import static fr.xephi.authme.listener.EventCancelVerifier.withServiceMock; + +/** + * Test for {@link PlayerListener111}. + */ +@RunWith(MockitoJUnitRunner.class) +public class PlayerListener111Test { + + @InjectMocks + private PlayerListener111 listener; + + @Mock + private ListenerService listenerService; + + @Test + public void shouldCancelEvent() { + withServiceMock(listenerService) + .check(listener::onPlayerAirChange, EntityAirChangeEvent.class); + } + +}