|
29 | 29 | import me.innectic.permissify.api.PermissifyConstants; |
30 | 30 | import me.innectic.permissify.api.permission.Permission; |
31 | 31 | import me.innectic.permissify.api.permission.PermissionGroup; |
| 32 | +import me.innectic.permissify.spigot.utils.MiscUtil; |
32 | 33 | import me.innectic.permissify.spigot.utils.PermissionUtil; |
33 | 34 | import net.md_5.bungee.api.chat.TextComponent; |
34 | 35 | import org.bukkit.Bukkit; |
35 | 36 | import org.bukkit.OfflinePlayer; |
36 | 37 | import org.bukkit.command.CommandSender; |
37 | 38 | import org.bukkit.entity.Player; |
| 39 | +import org.bukkit.permissions.PermissionAttachment; |
38 | 40 |
|
39 | 41 | import java.util.ArrayList; |
40 | 42 | import java.util.List; |
@@ -113,10 +115,29 @@ public CommandResponse handleAddPermission(CommandSender sender, String[] args) |
113 | 115 | if (!PermissionUtil.hasPermissionOrSuperAdmin(sender, PermissifyConstants.PERMISSIFY_PLAYER_PERMISSION_ADD)) |
114 | 116 | return new CommandResponse(PermissifyConstants.INSUFFICIENT_PERMISSIONS, false); |
115 | 117 | if (args.length < 2) return new CommandResponse(PermissifyConstants.NOT_ENOUGH_ARGUMENTS_PLAYER_ADD_PERMISSION, false); |
| 118 | + |
116 | 119 | OfflinePlayer targetPlayer = Bukkit.getPlayer(args[0]); |
117 | 120 | if (targetPlayer == null || !targetPlayer.hasPlayedBefore()) return new CommandResponse(PermissifyConstants.INVALID_PLAYER, false); |
| 121 | + |
118 | 122 | plugin.getPermissifyAPI().getDatabaseHandler().get().addPermission(targetPlayer.getUniqueId(), args[1]); |
119 | 123 | if (targetPlayer.isOnline()) targetPlayer.getPlayer().addAttachment(plugin, args[1], true); |
| 124 | + |
| 125 | + if (args.length >= 3) { |
| 126 | + // Timed permission. |
| 127 | + if (!MiscUtil.isInt(args[2])) return new CommandResponse(PermissifyConstants.INVALID_ARGUMENT.replace("<ARGUMENT>", args[2]), false); |
| 128 | + int time = Integer.parseInt(args[2]); |
| 129 | + Bukkit.getScheduler().runTaskLater(plugin, () -> { |
| 130 | + targetPlayer.getPlayer().addAttachment(plugin, args[1], false); |
| 131 | + if (!plugin.getPermissifyAPI().getDatabaseHandler().isPresent()) return; |
| 132 | + plugin.getPermissifyAPI().getDatabaseHandler().get().removePermission(targetPlayer.getUniqueId(), args[1]); |
| 133 | + plugin.getPermissifyAPI().getDatabaseHandler().get().updateCache(targetPlayer.getUniqueId()); |
| 134 | + }, time * 1000); |
| 135 | + return new CommandResponse(PermissifyConstants.PERMISSION_ADDED_PLAYER_TIMED |
| 136 | + .replace("<PLAYER>", targetPlayer.getName()) |
| 137 | + .replace("<PERMISSION>", args[1]) |
| 138 | + .replace("<SECONDS>", args[2]), true); |
| 139 | + } |
| 140 | + |
120 | 141 | plugin.getPermissifyAPI().getDatabaseHandler().get().updateCache(targetPlayer.getUniqueId()); |
121 | 142 | return new CommandResponse(PermissifyConstants.PERMISSION_ADDED_PLAYER |
122 | 143 | .replace("<PLAYER>", targetPlayer.getName()).replace("<PERMISSION>", args[1]), true); |
|
0 commit comments