Fixed registering permissions before effects/styles were loaded

This commit is contained in:
Esophose 2020-12-05 17:20:43 -07:00
parent ee5b9ba7f1
commit dd9c0a6321
3 changed files with 78 additions and 79 deletions

View file

@ -10,7 +10,7 @@ sourceCompatibility = 1.8
targetCompatibility = 1.8 targetCompatibility = 1.8
compileJava.options.encoding = 'UTF-8' compileJava.options.encoding = 'UTF-8'
group = 'dev.esophose' group = 'dev.esophose'
version = '7.16' version = '7.17'
java { java {
withJavadocJar() withJavadocJar()

View file

@ -68,16 +68,6 @@ public class ParticleManager extends Manager implements Listener, Runnable {
@Override @Override
public void reload() { public void reload() {
if (this.particleTask != null)
this.particleTask.cancel();
if (this.worldGuardTask != null) {
this.worldGuardTask.cancel();
this.worldGuardTask = null;
}
this.particlePlayers.clear();
Bukkit.getScheduler().runTaskLater(this.playerParticles, () -> { Bukkit.getScheduler().runTaskLater(this.playerParticles, () -> {
long ticks = Setting.TICKS_PER_PARTICLE.getLong(); long ticks = Setting.TICKS_PER_PARTICLE.getLong();
this.particleTask = Bukkit.getScheduler().runTaskTimerAsynchronously(this.playerParticles, this, 0, ticks); this.particleTask = Bukkit.getScheduler().runTaskTimerAsynchronously(this.playerParticles, this, 0, ticks);
@ -97,8 +87,17 @@ public class ParticleManager extends Manager implements Listener, Runnable {
@Override @Override
public void disable() { public void disable() {
if (this.particleTask != null) if (this.particleTask != null) {
this.particleTask.cancel(); this.particleTask.cancel();
this.particleTask = null;
}
if (this.worldGuardTask != null) {
this.worldGuardTask.cancel();
this.worldGuardTask = null;
}
this.particlePlayers.clear();
} }
/** /**

View file

@ -86,82 +86,82 @@ 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();
// Don't register the permissions if we already have, could have happened because of a reload?
if (pluginManager.getPermission("playerparticles.*") != null)
return;
Set<Permission> allPermissions = new HashSet<>();
// Effects
Map<String, Boolean> effectPermissions = new HashMap<>();
for (ParticleEffect effect : ParticleEffect.values()) {
if (!effect.isSupported())
continue;
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.max"));
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.reset.others"));
pluginManager.addPermission(new Permission("playerparticles.gui"));
pluginManager.addPermission(new Permission("playerparticles.particles.max"));
pluginManager.addPermission(new Permission("playerparticles.particles.unlimited"));
pluginManager.addPermission(new Permission("playerparticles.groups.max"));
pluginManager.addPermission(new Permission("playerparticles.groups.unlimited"));
pluginManager.addPermission(new Permission("playerparticles.worldguard.bypass"));
// 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
public void reload() { public void reload() {
Bukkit.getScheduler().runTaskLater(this.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()) {
if (!effect.isSupported())
continue;
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.max"));
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.reset.others"));
pluginManager.addPermission(new Permission("playerparticles.gui"));
pluginManager.addPermission(new Permission("playerparticles.particles.max"));
pluginManager.addPermission(new Permission("playerparticles.particles.unlimited"));
pluginManager.addPermission(new Permission("playerparticles.groups.max"));
pluginManager.addPermission(new Permission("playerparticles.groups.unlimited"));
pluginManager.addPermission(new Permission("playerparticles.worldguard.bypass"));
// 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));
}, 5L);
} }
@Override @Override
public void disable() { public void disable() {
// Unregister all PlayerParticles permissions
PluginManager pluginManager = Bukkit.getPluginManager();
for (Permission permission : pluginManager.getPermissions())
if (permission.getName().startsWith("playerparticles"))
pluginManager.removePermission(permission);
} }
/** /**