Register plugin permissions with Bukkit

This commit is contained in:
Esophose 2020-01-17 00:03:20 -07:00
parent dc020d5bf8
commit e994c49bb1
4 changed files with 113 additions and 55 deletions

View file

@ -2,10 +2,10 @@
* TODO: v7.0 * TODO: v7.0
* + Add ability to create/manage fixed effects from the GUI * + Add ability to create/manage fixed effects from the GUI
* * Convert fixed effect ids into names * * Convert fixed effect ids into names
* + Add effect/style settings folder that lets you disable effects/style and edit style properties
*/ */
/* /*
* + Added effect/style settings folder that lets you disable effects/style and edit style properties
* + Added setting to disable particles while in combat * + Added setting to disable particles while in combat
* * /ppo now uses your permissions instead of the player you are targetting * * /ppo now uses your permissions instead of the player you are targetting
* + Added effect/style name customization through config files * + Added effect/style name customization through config files

View file

@ -7,11 +7,18 @@ import dev.esophose.playerparticles.particles.PPlayer;
import dev.esophose.playerparticles.particles.ParticleEffect; import dev.esophose.playerparticles.particles.ParticleEffect;
import dev.esophose.playerparticles.styles.ParticleStyle; import dev.esophose.playerparticles.styles.ParticleStyle;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Set;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender; import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.permissions.Permissible; import org.bukkit.permissions.Permissible;
import org.bukkit.permissions.Permission;
import org.bukkit.plugin.PluginManager;
public class PermissionManager extends Manager { public class PermissionManager extends Manager {
@ -54,7 +61,7 @@ public class PermissionManager extends Manager {
/** /**
* Checks if a Permissible has a PlayerParticles permission with a sub-permission * Checks if a Permissible has a PlayerParticles permission with a sub-permission
* *
* @param p The Permissibhle * @param p The Permissible
* @param subPermission The sub-permission * @param subPermission The sub-permission
* @return True if the Player has permission * @return True if the Player has permission
*/ */
@ -66,6 +73,57 @@ public class PermissionManager extends Manager {
public PermissionManager(PlayerParticles playerParticles) { public PermissionManager(PlayerParticles playerParticles) {
super(playerParticles); super(playerParticles);
// Register plugin permissions to Bukkit
PluginManager pluginManager = Bukkit.getPluginManager();
Set<Permission> allPermissions = new HashSet<>();
// Effects
Map<String, Boolean> effectPermissions = new HashMap<>();
for (ParticleEffect effect : ParticleEffect.values()) {
Permission permission = new Permission("playerparticles.effect." + effect.getInternalName());
pluginManager.addPermission(permission);
effectPermissions.put(permission.getName(), true);
}
// Effects Wildcard
allPermissions.add(new Permission("playerparticles.effect.*", effectPermissions));
// Styles
List<ParticleStyle> styles = this.playerParticles.getManager(ParticleStyleManager.class).getStylesWithDisabled();
Map<String, Boolean> stylePermissions = new HashMap<>();
for (ParticleStyle style : styles) {
Permission permission = new Permission("playerparticles.style." + style.getInternalName());
pluginManager.addPermission(permission);
stylePermissions.put(permission.getName(), true);
}
// Styles Wildcard
allPermissions.add(new Permission("playerparticles.style.*", stylePermissions));
// Fixed
pluginManager.addPermission(new Permission("playerparticles.fixed"));
pluginManager.addPermission(new Permission("playerparticles.fixed.unlimited"));
pluginManager.addPermission(new Permission("playerparticles.fixed.clear"));
pluginManager.addPermission(new Permission("playerparticles.fixed.teleport"));
// Misc
pluginManager.addPermission(new Permission("playerparticles.reload"));
pluginManager.addPermission(new Permission("playerparticles.override"));
pluginManager.addPermission(new Permission("playerparticles.gui"));
pluginManager.addPermission(new Permission("playerparticles.particles.unlimited"));
pluginManager.addPermission(new Permission("playerparticles.groups.unlimited"));
// Register all non-child permissions
Map<String, Boolean> childPermissions = new HashMap<>();
for (Permission permission : allPermissions) {
pluginManager.addPermission(permission);
childPermissions.put(permission.getName(), true);
}
// Register all permissions as a child to the global plugin permission
pluginManager.addPermission(new Permission("playerparticles.*", childPermissions));
} }
@Override @Override

View file

@ -7,8 +7,8 @@ author: Esophose
website: https://www.spigotmc.org/resources/playerparticles.40261/ website: https://www.spigotmc.org/resources/playerparticles.40261/
softdepend: [PlaceholderAPI] softdepend: [PlaceholderAPI]
commands: commands:
pp: pp:
description: The main PlayerParticles command. By default, opens the GUI. description: The main PlayerParticles command. By default, opens the GUI.
ppo: ppo:
description: Allows executing a /pp command for another player. description: Allows executing a /pp command for another player.
permission: playerparticles.other permission: playerparticles.override

View file

@ -14,18 +14,18 @@
# #
# Use the following format for adding new groups: # Use the following format for adding new groups:
# group-name: # group-name:
# display-name: 'My Amazing Group' # display-name: 'My Amazing Group'
# gui-icon: 'ENDER_CHEST' # gui-icon: 'ENDER_CHEST'
# permission: 'playerparticles.group.group-name' # permission: 'playerparticles.group.group-name'
# allow-permission-override: true # allow-permission-override: true
# 1: # 1:
# effect: 'dust' # effect: 'dust'
# style: 'wings' # style: 'wings'
# data: '255 255 255' # data: '255 255 255'
# 2: # 2:
# effect: 'cloud' # effect: 'cloud'
# style: 'overhead' # style: 'overhead'
# data: '' # data: ''
# #
# What everything means: # What everything means:
# group-name: The name of the group, how it will be applied by using /pp group load <group-name>. # group-name: The name of the group, how it will be applied by using /pp group load <group-name>.
@ -42,41 +42,41 @@
# https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html # https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html
raincloud: raincloud:
display-name: 'Raincloud' display-name: 'Raincloud'
gui-icon: 'ENDER_CHEST' gui-icon: 'ENDER_CHEST'
permission: '' permission: ''
allow-permission-override: false allow-permission-override: false
1: 1:
effect: 'cloud' effect: 'cloud'
style: 'overhead' style: 'overhead'
data: '' data: ''
2: 2:
effect: 'rain' effect: 'rain'
style: 'overhead' style: 'overhead'
data: '' data: ''
rainbows: rainbows:
display-name: 'Rainbows' display-name: 'Rainbows'
gui-icon: 'ENDER_CHEST' gui-icon: 'ENDER_CHEST'
permission: '' permission: ''
allow-permission-override: false allow-permission-override: false
1: 1:
effect: 'dust' effect: 'dust'
style: 'orbit' style: 'orbit'
data: 'rainbow' data: 'rainbow'
2: 2:
effect: 'entity_effect' effect: 'entity_effect'
style: 'feet' style: 'feet'
data: 'rainbow' data: 'rainbow'
angel: angel:
display-name: 'Angel' display-name: 'Angel'
gui-icon: 'ENDER_CHEST' gui-icon: 'ENDER_CHEST'
permission: '' permission: ''
allow-permission-override: false allow-permission-override: false
1: 1:
effect: 'dust' effect: 'dust'
style: 'wings' style: 'wings'
data: '255 255 255' data: '255 255 255'
2: 2:
effect: 'dust' effect: 'dust'
style: 'halo' style: 'halo'
data: '255 255 0' data: '255 255 0'