6
6
import org .bukkit .event .EventHandler ;
7
7
import org .bukkit .event .EventPriority ;
8
8
import org .bukkit .event .Listener ;
9
+ import org .bukkit .event .player .PlayerToggleFlightEvent ;
9
10
11
+ import world .bentobox .bentobox .api .events .island .IslandEnterEvent ;
10
12
import world .bentobox .bentobox .api .events .island .IslandExitEvent ;
11
13
import world .bentobox .bentobox .api .localization .TextVariables ;
12
14
import world .bentobox .bentobox .api .user .User ;
@@ -32,6 +34,33 @@ public FlyListener(final IslandFlyAddon addon) {
32
34
this .addon = addon ;
33
35
}
34
36
37
+ @ EventHandler (priority = EventPriority .NORMAL , ignoreCancelled = true )
38
+ public void onToggleFlight (final PlayerToggleFlightEvent event ) {
39
+ final User user = User .getInstance (event .getPlayer ());
40
+ if (checkUser (user )) {
41
+ user .sendMessage ("islandfly.not-allowed" );
42
+ }
43
+ }
44
+
45
+ /**
46
+ * @param user user
47
+ * @return true if fly was blocked
48
+ */
49
+ private boolean checkUser (User user ) {
50
+ String permPrefix = addon .getPlugin ().getIWM ().getPermissionPrefix (user .getWorld ());
51
+ // Ignore ops
52
+ if (user .isOp () || user .getPlayer ().getGameMode ().equals (GameMode .CREATIVE )
53
+ || user .getPlayer ().getGameMode ().equals (GameMode .SPECTATOR )
54
+ || user .hasPermission (permPrefix + "island.flybypass" )) return false ;
55
+ return removeFly (user );
56
+ }
57
+
58
+ @ EventHandler (priority = EventPriority .NORMAL , ignoreCancelled = true )
59
+ public void onEnterIsland (final IslandEnterEvent event ) {
60
+ final User user = User .getInstance (event .getPlayerUUID ());
61
+ // Wait until after arriving at the island
62
+ Bukkit .getScheduler ().runTask (this .addon .getPlugin (), () -> checkUser (user ));
63
+ }
35
64
36
65
/**
37
66
* This method is triggered when player leaves their island.
0 commit comments