Skip to content

Commit 7fc0565

Browse files
committed
Add timed player permissions
1 parent 9331128 commit 7fc0565

File tree

3 files changed

+40
-1
lines changed

3 files changed

+40
-1
lines changed

API/src/main/java/me/innectic/permissify/api/PermissifyConstants.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ public class PermissifyConstants {
7575
public static final String PERMISSION_REMOVED_GROUP = PERMISSIFY_PREFIX + "&e&lPermission <PERMISSION> has been removed from <GROUP>!";
7676

7777
public static final String PERMISSION_ADDED_PLAYER = PERMISSIFY_PREFIX + "&e&lPermission <PERMISSION> has been added to <PLAYER>!";
78+
public static final String PERMISSION_ADDED_PLAYER_TIMED = PERMISSIFY_PREFIX + "&e&lPermission <PERMISSION> has been added to <PLAYER>, and will expire in <SECONDS>!";
7879
public static final String PERMISSION_REMOVED_PLAYER = PERMISSIFY_PREFIX + "&e&lPermission <PERMISSION> has been removed from <PLAYER>!";
7980
public static final String PLAYER_ADDED_TO_GROUP = PERMISSIFY_PREFIX + "&e&lAdded <PLAYER> to <GROUP>";
8081
public static final String PLAYER_REMOVED_FROM_GROUP = PERMISSIFY_PREFIX + "&e&lRemoved <PLAYER> from <GROUP>";
@@ -139,7 +140,7 @@ public class PermissifyConstants {
139140
"&a&l/permissify group create [name] [prefix] [suffix] [chatcolor]",
140141
"&a&l/permissify group remove [name]"
141142
), Arrays.asList(
142-
"&a&l/permissify group addpermission [group] [permissions...]",
143+
"&a&l/permissify group addpermission [group] [permissions...] [(optional) lifespan]",
143144
"&a&l/permissify group removepermission [group] [permissions...]",
144145
"&a&l/permissify group listpermissions [group]",
145146
"&a&l/permissify group list",

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

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,14 @@
2929
import me.innectic.permissify.api.PermissifyConstants;
3030
import me.innectic.permissify.api.permission.Permission;
3131
import me.innectic.permissify.api.permission.PermissionGroup;
32+
import me.innectic.permissify.spigot.utils.MiscUtil;
3233
import me.innectic.permissify.spigot.utils.PermissionUtil;
3334
import net.md_5.bungee.api.chat.TextComponent;
3435
import org.bukkit.Bukkit;
3536
import org.bukkit.OfflinePlayer;
3637
import org.bukkit.command.CommandSender;
3738
import org.bukkit.entity.Player;
39+
import org.bukkit.permissions.PermissionAttachment;
3840

3941
import java.util.ArrayList;
4042
import java.util.List;
@@ -113,10 +115,29 @@ public CommandResponse handleAddPermission(CommandSender sender, String[] args)
113115
if (!PermissionUtil.hasPermissionOrSuperAdmin(sender, PermissifyConstants.PERMISSIFY_PLAYER_PERMISSION_ADD))
114116
return new CommandResponse(PermissifyConstants.INSUFFICIENT_PERMISSIONS, false);
115117
if (args.length < 2) return new CommandResponse(PermissifyConstants.NOT_ENOUGH_ARGUMENTS_PLAYER_ADD_PERMISSION, false);
118+
116119
OfflinePlayer targetPlayer = Bukkit.getPlayer(args[0]);
117120
if (targetPlayer == null || !targetPlayer.hasPlayedBefore()) return new CommandResponse(PermissifyConstants.INVALID_PLAYER, false);
121+
118122
plugin.getPermissifyAPI().getDatabaseHandler().get().addPermission(targetPlayer.getUniqueId(), args[1]);
119123
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+
120141
plugin.getPermissifyAPI().getDatabaseHandler().get().updateCache(targetPlayer.getUniqueId());
121142
return new CommandResponse(PermissifyConstants.PERMISSION_ADDED_PLAYER
122143
.replace("<PLAYER>", targetPlayer.getName()).replace("<PERMISSION>", args[1]), true);
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package me.innectic.permissify.spigot.utils;
2+
3+
/**
4+
* @author Innectic
5+
* @since 8/26/2017
6+
*/
7+
public class MiscUtil {
8+
9+
public static boolean isInt(String checking) {
10+
try {
11+
Integer.parseInt(checking);
12+
return true;
13+
} catch (NumberFormatException e) {
14+
return false;
15+
}
16+
}
17+
}

0 commit comments

Comments
 (0)