Skip to content

Commit 01db735

Browse files
committed
Spigot: Support permission changes to offline players
1 parent 20dcdae commit 01db735

File tree

1 file changed

+20
-17
lines changed

1 file changed

+20
-17
lines changed

Spigot/src/main/java/me/innectic/permissify/spigot/commands/permissify/PlayerCommand.java

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import me.innectic.permissify.api.permission.Permission;
3131
import me.innectic.permissify.api.permission.PermissionGroup;
3232
import org.bukkit.Bukkit;
33+
import org.bukkit.OfflinePlayer;
3334
import org.bukkit.command.CommandSender;
3435
import org.bukkit.entity.Player;
3536

@@ -51,13 +52,14 @@ public CommandResponse handleAddPlayerToGroup(CommandSender sender, String[] arg
5152
if (!sender.hasPermission(PermissifyConstants.PERMISSIFY_PLAYER_GROUP_ADD) && !plugin.getPermissifyAPI().getDatabaseHandler().get().isSuperAdmin(((Player) sender).getUniqueId()))
5253
return new CommandResponse(PermissifyConstants.INSUFFICIENT_PERMISSIONS, false);
5354
if (args.length < 2) return new CommandResponse(PermissifyConstants.NOT_ENOUGH_ARGUMENTS_PLAYER_ADD_GROUP, false);
54-
Player targetPlayer = Bukkit.getPlayer(args[0]);
55-
if (targetPlayer == null) return new CommandResponse(PermissifyConstants.INVALID_PLAYER, false);
55+
OfflinePlayer targetPlayer = Bukkit.getPlayer(args[0]);
56+
if (targetPlayer == null || !targetPlayer.hasPlayedBefore()) return new CommandResponse(PermissifyConstants.INVALID_PLAYER, false);
5657
Optional<PermissionGroup> group = plugin.getPermissifyAPI().getDatabaseHandler().get().getGroups().stream()
5758
.filter(permissionGroup -> permissionGroup.getName().equals(args[1])).findFirst();
5859
if (!group.isPresent()) return new CommandResponse(PermissifyConstants.INVALID_GROUP, false);
5960
plugin.getPermissifyAPI().getDatabaseHandler().get().addPlayerToGroup(targetPlayer.getUniqueId(), group.get());
60-
group.get().getPermissions().forEach(permission -> targetPlayer.addAttachment(plugin, permission.getPermission(), true));
61+
if (targetPlayer.isOnline()) group.get().getPermissions().forEach(permission ->
62+
targetPlayer.getPlayer().addAttachment(plugin, permission.getPermission(), true));
6163
return new CommandResponse(PermissifyConstants.PLAYER_ADDED_TO_GROUP
6264
.replace("<PLAYER>", targetPlayer.getName()).replace("<GROUP>", group.get().getName()), true);
6365
}
@@ -69,13 +71,14 @@ public CommandResponse handleRemovePlayerFromGroup(CommandSender sender, String[
6971
if (!sender.hasPermission(PermissifyConstants.PERMISSIFY_PLAYER_GROUP_REMOVE) && !plugin.getPermissifyAPI().getDatabaseHandler().get().isSuperAdmin(((Player) sender).getUniqueId()))
7072
return new CommandResponse(PermissifyConstants.INSUFFICIENT_PERMISSIONS, false);
7173
if (args.length < 2) return new CommandResponse(PermissifyConstants.NOT_ENOUGH_ARGUMENTS_PLAYER_REMOVE_GROUP, false);
72-
Player targetPlayer = Bukkit.getPlayer(args[0]);
73-
if (targetPlayer == null) return new CommandResponse(PermissifyConstants.INVALID_PLAYER, false);
74+
OfflinePlayer targetPlayer = Bukkit.getPlayer(args[0]);
75+
if (targetPlayer == null || !targetPlayer.hasPlayedBefore()) return new CommandResponse(PermissifyConstants.INVALID_PLAYER, false);
7476
Optional<PermissionGroup> group = plugin.getPermissifyAPI().getDatabaseHandler().get().getGroups().stream()
7577
.filter(permissionGroup -> permissionGroup.getName().equals(args[1])).findFirst();
7678
if (!group.isPresent()) return new CommandResponse(PermissifyConstants.INVALID_GROUP, false);
7779
plugin.getPermissifyAPI().getDatabaseHandler().get().removePlayerFromGroup(targetPlayer.getUniqueId(), group.get());
78-
group.get().getPermissions().forEach(permission -> targetPlayer.addAttachment(plugin, permission.getPermission(), false));
80+
if (targetPlayer.isOnline()) group.get().getPermissions().forEach(permission ->
81+
targetPlayer.getPlayer().addAttachment(plugin, permission.getPermission(), false));
7982
return new CommandResponse(PermissifyConstants.PLAYER_REMOVED_FROM_GROUP
8083
.replace("<PLAYER>", targetPlayer.getName()).replace("<GROUP>", group.get().getName()), true);
8184
}
@@ -87,8 +90,8 @@ public CommandResponse handleSetMainGroup(CommandSender sender, String[] args) {
8790
if (!sender.hasPermission(PermissifyConstants.PERMISSIFY_PLAYER_SET_MAIN_GROUP))
8891
return new CommandResponse(PermissifyConstants.INSUFFICIENT_PERMISSIONS, false);
8992
if (args.length < 2) return new CommandResponse(PermissifyConstants.NOT_ENOUGH_ARGUMENTS_SET_MAIN_GROUP, false);
90-
Player player = Bukkit.getPlayer(args[0]);
91-
if (player == null) return new CommandResponse(PermissifyConstants.INVALID_PLAYER, false);
93+
OfflinePlayer player = Bukkit.getPlayer(args[0]);
94+
if (player == null || !player.hasPlayedBefore()) return new CommandResponse(PermissifyConstants.INVALID_PLAYER, false);
9295
Optional<PermissionGroup> group = plugin.getPermissifyAPI().getDatabaseHandler().get().getGroups().stream()
9396
.filter(permissionGroup -> permissionGroup.getName().equals(args[1])).findFirst();
9497
if (!group.isPresent()) return new CommandResponse(PermissifyConstants.INVALID_GROUP, false);
@@ -108,10 +111,10 @@ public CommandResponse handleAddPermission(CommandSender sender, String[] args)
108111
if (!sender.hasPermission(PermissifyConstants.PERMISSIFY_PLAYER_PERMISSION_ADD) && !plugin.getPermissifyAPI().getDatabaseHandler().get().isSuperAdmin(((Player) sender).getUniqueId()))
109112
return new CommandResponse(PermissifyConstants.INSUFFICIENT_PERMISSIONS, false);
110113
if (args.length < 2) return new CommandResponse(PermissifyConstants.NOT_ENOUGH_ARGUMENTS_PLAYER_ADD_PERMISSION, false);
111-
Player targetPlayer = Bukkit.getPlayer(args[1]);
112-
if (targetPlayer == null) return new CommandResponse(PermissifyConstants.INVALID_PLAYER, false);
114+
OfflinePlayer targetPlayer = Bukkit.getPlayer(args[1]);
115+
if (targetPlayer == null || !targetPlayer.hasPlayedBefore()) return new CommandResponse(PermissifyConstants.INVALID_PLAYER, false);
113116
plugin.getPermissifyAPI().getDatabaseHandler().get().addPermission(targetPlayer.getUniqueId(), args[0]);
114-
targetPlayer.addAttachment(plugin, args[0], true);
117+
if (targetPlayer.isOnline()) targetPlayer.getPlayer().addAttachment(plugin, args[0], true);
115118
return new CommandResponse(PermissifyConstants.PERMISSION_ADDED_PLAYER
116119
.replace("<PLAYER>", targetPlayer.getName()).replace("<PERMISSION>", args[0]), true);
117120
}
@@ -123,10 +126,10 @@ public CommandResponse handleRemovePermission(CommandSender sender, String[] arg
123126
if (!sender.hasPermission(PermissifyConstants.PERMISSIFY_PLAYER_PERMISSION_REMOVE) && !plugin.getPermissifyAPI().getDatabaseHandler().get().isSuperAdmin(((Player) sender).getUniqueId()))
124127
return new CommandResponse(PermissifyConstants.INSUFFICIENT_PERMISSIONS, false);
125128
if (args.length < 2) return new CommandResponse(PermissifyConstants.NOT_ENOUGH_ARGUMENTS_PLAYER_REMOVE_PERMISSION, false);
126-
Player targetPlayer = Bukkit.getPlayer(args[1]);
127-
if (targetPlayer == null) return new CommandResponse(PermissifyConstants.INVALID_PLAYER, false);
129+
OfflinePlayer targetPlayer = Bukkit.getPlayer(args[1]);
130+
if (targetPlayer == null || !targetPlayer.hasPlayedBefore()) return new CommandResponse(PermissifyConstants.INVALID_PLAYER, false);
128131
plugin.getPermissifyAPI().getDatabaseHandler().get().removePermission(targetPlayer.getUniqueId(), args[0]);
129-
targetPlayer.addAttachment(plugin, args[0], false);
132+
if (targetPlayer.isOnline()) targetPlayer.getPlayer().addAttachment(plugin, args[0], false);
130133
return new CommandResponse(PermissifyConstants.PERMISSION_REMOVED_PLAYER
131134
.replace("<PLAYER>", targetPlayer.getName()).replace("<PERMISSION>", args[0]), true);
132135
}
@@ -138,8 +141,8 @@ public CommandResponse handleListGroups(CommandSender sender, String[] args) {
138141
if (!sender.hasPermission(PermissifyConstants.PERMISSIFY_PLAYER_GROUP_LIST) && !plugin.getPermissifyAPI().getDatabaseHandler().get().isSuperAdmin(((Player) sender).getUniqueId()))
139142
return new CommandResponse(PermissifyConstants.INSUFFICIENT_PERMISSIONS, false);
140143
if (args.length < 1) return new CommandResponse(PermissifyConstants.NOT_ENOUGH_ARGUMENTS_PLAYER_LIST_GROUP, false);
141-
Player targetPlayer = Bukkit.getPlayer(args[0]);
142-
if (targetPlayer == null) return new CommandResponse(PermissifyConstants.INVALID_PLAYER, false);
144+
OfflinePlayer targetPlayer = Bukkit.getPlayer(args[0]);
145+
if (targetPlayer == null || !targetPlayer.hasPlayedBefore()) return new CommandResponse(PermissifyConstants.INVALID_PLAYER, false);
143146
List<String> groups = plugin.getPermissifyAPI().getDatabaseHandler().get().getGroups().stream()
144147
.filter(permissionGroup -> permissionGroup.hasPlayer(targetPlayer.getUniqueId()))
145148
.map(PermissionGroup::getName)
@@ -155,7 +158,7 @@ public CommandResponse handleListPermissions(CommandSender sender, String[] args
155158
if (!sender.hasPermission(PermissifyConstants.PERMISSIFY_PLAYER_PERMISSION_LIST) && !plugin.getPermissifyAPI().getDatabaseHandler().get().isSuperAdmin(((Player) sender).getUniqueId()))
156159
return new CommandResponse(PermissifyConstants.INSUFFICIENT_PERMISSIONS, false);
157160
if (args.length < 1) return new CommandResponse(PermissifyConstants.NOT_ENOUGH_ARGUMENTS_PLAYER_LIST_PERMISSIONS, false);
158-
Player targetPlayer = Bukkit.getPlayer(args[0]);
161+
OfflinePlayer targetPlayer = Bukkit.getPlayer(args[0]);
159162
if (targetPlayer == null) return new CommandResponse(PermissifyConstants.INVALID_PLAYER, false);
160163
// This sucks, can probably be cleanup up.
161164
List<PermissionGroup> groups = plugin.getPermissifyAPI().getDatabaseHandler().get().getGroups().stream()

0 commit comments

Comments
 (0)