66import com .dev7ex .multiworld .api .bukkit .user .BukkitWorldUser ;
77import com .dev7ex .multiworld .api .bukkit .world .BukkitWorldHolder ;
88import com .dev7ex .multiworld .api .bukkit .world .location .BukkitWorldLocation ;
9+ import com .dev7ex .multiworld .api .user .WorldUser ;
910import org .bukkit .Bukkit ;
1011import org .bukkit .entity .Player ;
1112import org .bukkit .event .EventHandler ;
@@ -33,7 +34,7 @@ public UserTeleportWorldListener(@NotNull final MultiWorldBukkitApi multiWorldAp
3334 */
3435 @ EventHandler (priority = EventPriority .NORMAL )
3536 public void onUserGameModeChange (final WorldUserTeleportWorldEvent event ) {
36- final Player player = Bukkit . getPlayer ( event .getUser ().getUniqueId () );
37+ final Player player = event .getUser ().getEntity ( );
3738 if (!super .getConfiguration ().isAutoGameModeEnabled ()) {
3839 return ;
3940 }
@@ -48,6 +49,23 @@ public void onUserGameModeChange(final WorldUserTeleportWorldEvent event) {
4849 player .setGameMode (event .getNextWorldHolder ().getGameMode ());
4950 }
5051
52+ @ EventHandler (priority = EventPriority .NORMAL )
53+ public void handleUserTeleportWorld (final WorldUserTeleportWorldEvent event ) {
54+ final BukkitWorldUser worldUser = event .getUser ();
55+ final Player player = event .getUser ().getEntity ();
56+ final BukkitWorldHolder nextHolder = event .getNextWorldHolder ();
57+
58+ if (player .hasPermission ("multiworld.command.world.teleport.admin" )) {
59+ return ;
60+ }
61+ if (!player .hasPermission ("multiworld.command.world.teleport." + nextHolder .getName ())) {
62+ player .sendMessage (super .getTranslationProvider ().getMessage (player , "commands.world.teleport.missing-permission" )
63+ .replaceAll ("%prefix%" , super .getPrefix ())
64+ .replaceAll ("%world_name%" , nextHolder .getName ()));
65+ event .setCancelled (true );
66+ }
67+ }
68+
5169 /**
5270 * Handles user entering a world upon teleportation.
5371 *
0 commit comments