mirror of
https://github.com/TotalFreedomMC/PlayerParticles.git
synced 2025-02-20 15:04:31 +00:00
v4.3.1 Fix Update
This update should fix some problems with too many players' data being stored
This commit is contained in:
parent
3f5cd1ce69
commit
022a4efee2
8 changed files with 106 additions and 76 deletions
|
@ -1,5 +1,9 @@
|
|||
== UPDATING WILL DELETE YOUR CONFIG.YML ==
|
||||
* Create a backup of your config.yml if you wish to import all your old settings!
|
||||
=== v4.3.1 ===
|
||||
* Fix players with the permission playerparticles.* being able to force reset other player's particles when they weren't supposed to be able to
|
||||
* Fix players being saved in the config/database even if they haven't used the plugin
|
||||
* Other internal changes & optimizations
|
||||
=== v4.3 ===
|
||||
* Fix effects and styles not defaulting to 'none' if the player no longer has permission
|
||||
* Fix errors printing to console resulting from offline players trying to spawn particles
|
||||
|
|
|
@ -87,7 +87,7 @@ public class FixedParticleEffect {
|
|||
this.particleColorData = colorData;
|
||||
this.particleNoteColorData = noteColorData;
|
||||
|
||||
PPlayer owner = ConfigManager.getInstance().getPPlayer(this.pplayerUUID, false);
|
||||
PPlayer owner = ConfigManager.getInstance().getPPlayer(this.pplayerUUID, true);
|
||||
|
||||
// Check nulls, if any are null set them to the PPlayer's values
|
||||
if (this.particleItemData == null) this.particleItemData = owner.getItemData();
|
||||
|
|
|
@ -10,7 +10,9 @@ package com.esophose.playerparticles;
|
|||
|
||||
import java.util.UUID;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import com.esophose.playerparticles.library.ParticleEffect;
|
||||
import com.esophose.playerparticles.library.ParticleEffect.BlockData;
|
||||
|
@ -74,6 +76,15 @@ public class PPlayer {
|
|||
public UUID getUniqueId() {
|
||||
return this.playerUUID;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the Player from their UUID
|
||||
*
|
||||
* @return The player if they are online, null if they are offline
|
||||
*/
|
||||
public Player getPlayer() {
|
||||
return Bukkit.getPlayer(this.playerUUID);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the player's particle effect
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
TODO: v4.4
|
||||
+ Add new style 'tornado'
|
||||
+ Add new style 'atom'
|
||||
+ Add new style 'wings'
|
||||
+ GUI for styles and effects - Requires no additional permissions
|
||||
/pp gui - Shows GUI that tells you your current effect, style, and data and lets you choose new ones
|
||||
/pp gui effect - Shows GUI that lets you select a new effect, also shows your current one
|
||||
|
|
|
@ -77,19 +77,21 @@ public class ConfigManager {
|
|||
* @param fileName The name of the file
|
||||
*/
|
||||
private ConfigManager(String fileName) {
|
||||
if (!PlayerParticles.getPlugin().getDataFolder().exists()) PlayerParticles.getPlugin().getDataFolder().mkdir();
|
||||
if (!PlayerParticles.useMySQL) { // Don't bother creating the playerData.yml file if we aren't going to use it
|
||||
if (!PlayerParticles.getPlugin().getDataFolder().exists()) PlayerParticles.getPlugin().getDataFolder().mkdir();
|
||||
|
||||
file = new File(PlayerParticles.getPlugin().getDataFolder(), fileName + ".yml");
|
||||
file = new File(PlayerParticles.getPlugin().getDataFolder(), fileName + ".yml");
|
||||
|
||||
if (!file.exists()) {
|
||||
try {
|
||||
file.createNewFile();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
if (!file.exists()) {
|
||||
try {
|
||||
file.createNewFile();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
config = YamlConfiguration.loadConfiguration(file);
|
||||
config = YamlConfiguration.loadConfiguration(file);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -110,18 +112,24 @@ public class ConfigManager {
|
|||
* @param addIfNotFound Adds the pplayer to the processing queue if they are not already in it
|
||||
* @return The found pplayer, or a newly generated one
|
||||
*/
|
||||
public PPlayer getPPlayer(UUID playerUUID, boolean addIfNotFound) {
|
||||
public PPlayer getPPlayer(UUID playerUUID, boolean createIfNotFound) {
|
||||
for (PPlayer pp : ParticleManager.particlePlayers) {
|
||||
if (pp.getUniqueId() == playerUUID) return pp;
|
||||
}
|
||||
|
||||
PPlayer pplayer = buildPPlayer(playerUUID);
|
||||
|
||||
if (addIfNotFound && Bukkit.getPlayer(playerUUID) != null) {
|
||||
ParticleManager.particlePlayers.add(pplayer);
|
||||
|
||||
PPlayer alreadySavedPPlayer = buildPPlayer(playerUUID, false); // If they exist, get them from the database
|
||||
if (alreadySavedPPlayer != null) {
|
||||
ParticleManager.particlePlayers.add(alreadySavedPPlayer);
|
||||
return alreadySavedPPlayer;
|
||||
}
|
||||
|
||||
return pplayer;
|
||||
if (createIfNotFound && Bukkit.getPlayer(playerUUID) != null) {
|
||||
PPlayer pplayer = buildPPlayer(playerUUID, true); // Build a new PPlayer and store them in the config
|
||||
ParticleManager.particlePlayers.add(pplayer);
|
||||
return pplayer;
|
||||
}
|
||||
|
||||
return null; // Not requesting a new PPlayer and nothing was found, return null
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -131,7 +139,7 @@ public class ConfigManager {
|
|||
* @param playerUUID The UUID to match the PPlayer to
|
||||
* @return A newly built pplayer
|
||||
*/
|
||||
private PPlayer buildPPlayer(UUID playerUUID) {
|
||||
private PPlayer buildPPlayer(UUID playerUUID, boolean createIfNotFound) {
|
||||
if (!PlayerParticles.useMySQL) {
|
||||
if (config.getString(playerUUID.toString() + ".style.name") != null) {
|
||||
ConfigurationSection section = config.getConfigurationSection(playerUUID.toString());
|
||||
|
@ -150,7 +158,7 @@ public class ConfigManager {
|
|||
NoteColor particleNoteColorData = new NoteColor(noteColorDataSection.getInt("note"));
|
||||
|
||||
return new PPlayer(playerUUID, particleEffect, particleStyle, particleItemData, particleBlockData, particleColorData, particleNoteColorData);
|
||||
} else {
|
||||
} else if (createIfNotFound) {
|
||||
PPlayer pplayer = PPlayer.getNewPPlayer(playerUUID);
|
||||
saveNewPPlayer(pplayer);
|
||||
return pplayer;
|
||||
|
@ -173,7 +181,7 @@ public class ConfigManager {
|
|||
NoteColor particleNoteColorData = new NoteColor(res.getByte("n.note"));
|
||||
|
||||
return new PPlayer(playerUUID, particleEffect, particleStyle, particleItemData, particleBlockData, particleColorData, particleNoteColorData);
|
||||
} else {
|
||||
} else if (createIfNotFound) {
|
||||
PPlayer pplayer = PPlayer.getNewPPlayer(playerUUID);
|
||||
saveNewPPlayer(pplayer);
|
||||
return pplayer;
|
||||
|
@ -288,6 +296,7 @@ public class ConfigManager {
|
|||
* @param particleEffect The effect that is being saved
|
||||
*/
|
||||
public void savePPlayer(UUID playerUUID, ParticleEffect particleEffect) {
|
||||
PPlayer pplayer = getPPlayer(playerUUID, true);
|
||||
if (!PlayerParticles.useMySQL) {
|
||||
ConfigurationSection section = config.getConfigurationSection(playerUUID.toString() + ".effect");
|
||||
section.set("name", particleEffect.getName());
|
||||
|
@ -299,7 +308,7 @@ public class ConfigManager {
|
|||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
getPPlayer(playerUUID, false).setParticleEffect(particleEffect);
|
||||
pplayer.setParticleEffect(particleEffect);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -309,6 +318,7 @@ public class ConfigManager {
|
|||
* @param particleStyle The style that is being saved
|
||||
*/
|
||||
public void savePPlayer(UUID playerUUID, ParticleStyle particleStyle) {
|
||||
PPlayer pplayer = getPPlayer(playerUUID, true);
|
||||
if (!PlayerParticles.useMySQL) {
|
||||
ConfigurationSection section = config.getConfigurationSection(playerUUID.toString() + ".style");
|
||||
section.set("name", particleStyle.getName());
|
||||
|
@ -320,7 +330,7 @@ public class ConfigManager {
|
|||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
getPPlayer(playerUUID, false).setParticleStyle(particleStyle);
|
||||
pplayer.setParticleStyle(particleStyle);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -330,6 +340,7 @@ public class ConfigManager {
|
|||
* @param particleItemData The data that is being saved
|
||||
*/
|
||||
public void savePPlayer(UUID playerUUID, ItemData particleItemData) {
|
||||
PPlayer pplayer = getPPlayer(playerUUID, true);
|
||||
if (!PlayerParticles.useMySQL) {
|
||||
ConfigurationSection section = config.getConfigurationSection(playerUUID.toString() + ".itemData");
|
||||
section.set("material", particleItemData.getMaterial().name());
|
||||
|
@ -342,7 +353,7 @@ public class ConfigManager {
|
|||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
getPPlayer(playerUUID, false).setItemData(particleItemData);
|
||||
pplayer.setItemData(particleItemData);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -352,6 +363,7 @@ public class ConfigManager {
|
|||
* @param particleBlockData The data that is being saved
|
||||
*/
|
||||
public void savePPlayer(UUID playerUUID, BlockData particleBlockData) {
|
||||
PPlayer pplayer = getPPlayer(playerUUID, true);
|
||||
if (!PlayerParticles.useMySQL) {
|
||||
ConfigurationSection section = config.getConfigurationSection(playerUUID.toString() + ".blockData");
|
||||
section.set("material", particleBlockData.getMaterial().name());
|
||||
|
@ -364,7 +376,7 @@ public class ConfigManager {
|
|||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
getPPlayer(playerUUID, false).setBlockData(particleBlockData);
|
||||
pplayer.setBlockData(particleBlockData);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -374,6 +386,7 @@ public class ConfigManager {
|
|||
* @param particleColorData The data that is being saved
|
||||
*/
|
||||
public void savePPlayer(UUID playerUUID, OrdinaryColor particleColorData) {
|
||||
PPlayer pplayer = getPPlayer(playerUUID, true);
|
||||
if (!PlayerParticles.useMySQL) {
|
||||
ConfigurationSection section = config.getConfigurationSection(playerUUID.toString() + ".colorData");
|
||||
section.set("r", particleColorData.getRed());
|
||||
|
@ -387,7 +400,7 @@ public class ConfigManager {
|
|||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
getPPlayer(playerUUID, false).setColorData(particleColorData);
|
||||
pplayer.setColorData(particleColorData);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -397,6 +410,7 @@ public class ConfigManager {
|
|||
* @param particleNoteColorData The data that is being saved
|
||||
*/
|
||||
public void savePPlayer(UUID playerUUID, NoteColor particleNoteColorData) {
|
||||
PPlayer pplayer = getPPlayer(playerUUID, true);
|
||||
if (!PlayerParticles.useMySQL) {
|
||||
ConfigurationSection section = config.getConfigurationSection(playerUUID.toString() + ".noteColorData");
|
||||
section.set("note", (byte) (particleNoteColorData.getValueX() * 24));
|
||||
|
@ -408,7 +422,7 @@ public class ConfigManager {
|
|||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
getPPlayer(playerUUID, false).setNoteColorData(particleNoteColorData);
|
||||
pplayer.setNoteColorData(particleNoteColorData);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -797,7 +811,7 @@ public class ConfigManager {
|
|||
* @return The max distance a fixed effect can be created from the player
|
||||
*/
|
||||
public int getMaxFixedEffectCreationDistance() {
|
||||
if (maxFixedEffectCreationDistance == -1) {
|
||||
if (maxFixedEffectCreationDistance == -1) { // Initialize on the fly
|
||||
maxFixedEffectCreationDistance = PlayerParticles.getPlugin().getConfig().getInt("max-fixed-effect-creation-distance");
|
||||
}
|
||||
return maxFixedEffectCreationDistance;
|
||||
|
|
|
@ -32,7 +32,7 @@ import com.esophose.playerparticles.styles.api.PParticle;
|
|||
import com.esophose.playerparticles.styles.api.ParticleStyleManager;
|
||||
|
||||
public class ParticleManager extends BukkitRunnable implements Listener {
|
||||
|
||||
|
||||
/**
|
||||
* How far away particles will spawn from players
|
||||
*/
|
||||
|
@ -42,12 +42,12 @@ public class ParticleManager extends BukkitRunnable implements Listener {
|
|||
* The list containing all the player effect info
|
||||
*/
|
||||
public static ArrayList<PPlayer> particlePlayers = new ArrayList<PPlayer>();
|
||||
|
||||
|
||||
/**
|
||||
* The list containing all the fixed effect info
|
||||
*/
|
||||
public static ArrayList<FixedParticleEffect> fixedParticleEffects = new ArrayList<FixedParticleEffect>();
|
||||
|
||||
|
||||
/**
|
||||
* Rainbow particle effect hue and note color used for rainbow colorable effects
|
||||
* These should be moved to a more appropriate place later
|
||||
|
@ -62,7 +62,7 @@ public class ParticleManager extends BukkitRunnable implements Listener {
|
|||
*/
|
||||
@EventHandler
|
||||
public void onPlayerJoin(PlayerJoinEvent e) {
|
||||
ConfigManager.getInstance().getPPlayer(e.getPlayer().getUniqueId(), true);
|
||||
ConfigManager.getInstance().getPPlayer(e.getPlayer().getUniqueId(), false);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -81,7 +81,7 @@ public class ParticleManager extends BukkitRunnable implements Listener {
|
|||
public static void addAllFixedEffects() {
|
||||
fixedParticleEffects.addAll(ConfigManager.getInstance().getAllFixedEffects());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Removes all fixed effects for the given pplayer
|
||||
*
|
||||
|
@ -89,11 +89,10 @@ public class ParticleManager extends BukkitRunnable implements Listener {
|
|||
*/
|
||||
public static void removeAllFixedEffectsForPlayer(UUID pplayerUUID) {
|
||||
for (int i = fixedParticleEffects.size() - 1; i >= 0; i--) {
|
||||
if (fixedParticleEffects.get(i).getOwnerUniqueId().equals(pplayerUUID))
|
||||
fixedParticleEffects.remove(i);
|
||||
if (fixedParticleEffects.get(i).getOwnerUniqueId().equals(pplayerUUID)) fixedParticleEffects.remove(i);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Adds a fixed effect
|
||||
*
|
||||
|
@ -102,7 +101,7 @@ public class ParticleManager extends BukkitRunnable implements Listener {
|
|||
public static void addFixedEffect(FixedParticleEffect fixedEffect) {
|
||||
fixedParticleEffects.add(fixedEffect);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Removes a fixed effect for the given pplayer with the given id
|
||||
*
|
||||
|
@ -111,12 +110,10 @@ public class ParticleManager extends BukkitRunnable implements Listener {
|
|||
*/
|
||||
public static void removeFixedEffectForPlayer(UUID pplayerUUID, int id) {
|
||||
for (int i = fixedParticleEffects.size() - 1; i >= 0; i--) {
|
||||
if (fixedParticleEffects.get(i).getOwnerUniqueId().equals(pplayerUUID) &&
|
||||
fixedParticleEffects.get(i).getId() == id)
|
||||
fixedParticleEffects.remove(i);
|
||||
if (fixedParticleEffects.get(i).getOwnerUniqueId().equals(pplayerUUID) && fixedParticleEffects.get(i).getId() == id) fixedParticleEffects.remove(i);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Clears the list then adds everybody on the server
|
||||
* Used for when the server reloads and we can't rely on players rejoining
|
||||
|
@ -124,7 +121,7 @@ public class ParticleManager extends BukkitRunnable implements Listener {
|
|||
public static void refreshPPlayers() {
|
||||
particlePlayers.clear();
|
||||
for (Player player : Bukkit.getOnlinePlayers()) {
|
||||
ConfigManager.getInstance().getPPlayer(player.getUniqueId(), true);
|
||||
ConfigManager.getInstance().getPPlayer(player.getUniqueId(), false);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -162,62 +159,65 @@ public class ParticleManager extends BukkitRunnable implements Listener {
|
|||
*/
|
||||
public void run() {
|
||||
ParticleStyleManager.updateTimers();
|
||||
|
||||
|
||||
hue++;
|
||||
hue %= 360;
|
||||
|
||||
|
||||
if (hue % 10 == 0) { // Only increment note by 2 notes per second
|
||||
note++;
|
||||
note %= 24;
|
||||
}
|
||||
|
||||
// Loop for PPlayers
|
||||
for (PPlayer pplayer : particlePlayers) {
|
||||
Player player = Bukkit.getPlayer(pplayer.getUniqueId());
|
||||
|
||||
if (player == null) continue; // Skip if they aren't online
|
||||
|
||||
|
||||
// Loop over backwards so we can remove pplayers if need be
|
||||
for (int i = particlePlayers.size() - 1; i >= 0; i--) {
|
||||
PPlayer pplayer = particlePlayers.get(i);
|
||||
Player player = pplayer.getPlayer();
|
||||
|
||||
if (player == null) { // Skip and remove, why are they still in the array if they are offline?
|
||||
particlePlayers.remove(i);
|
||||
}
|
||||
|
||||
// Perform permission and validity checks
|
||||
boolean valid = true;
|
||||
|
||||
|
||||
// If the player no longer has permission for the effect, remove it
|
||||
if (!PermissionManager.hasEffectPermission(player, pplayer.getParticleEffect())) {
|
||||
ConfigManager.getInstance().savePPlayer(pplayer.getUniqueId(), ParticleEffect.NONE);
|
||||
valid = false;
|
||||
}
|
||||
|
||||
|
||||
// If the player no longer has permission for the style, default to none
|
||||
if (!PermissionManager.hasStylePermission(player, pplayer.getParticleStyle())) {
|
||||
ConfigManager.getInstance().savePPlayer(pplayer.getUniqueId(), DefaultStyles.NONE);
|
||||
valid = false;
|
||||
}
|
||||
|
||||
|
||||
// Check for the string matching to maintain support for 1.7
|
||||
// This was checking GameMode.SPECTATOR before and was throwing errors
|
||||
if (player.getGameMode().name().equalsIgnoreCase("spectator")) {
|
||||
valid = false;
|
||||
}
|
||||
|
||||
|
||||
if (ConfigManager.getInstance().isWorldDisabled(player.getWorld().getName())) {
|
||||
valid = false;
|
||||
}
|
||||
|
||||
|
||||
if (!valid) continue;
|
||||
|
||||
|
||||
Location loc = player.getLocation();
|
||||
loc.setY(loc.getY() + 1);
|
||||
displayParticles(pplayer, loc);
|
||||
}
|
||||
|
||||
|
||||
// Loop for FixedParticleEffects
|
||||
for (FixedParticleEffect effect : fixedParticleEffects) {
|
||||
boolean valid = true;
|
||||
for (PPlayer pplayer: particlePlayers) {
|
||||
for (PPlayer pplayer : particlePlayers) {
|
||||
if (pplayer.getUniqueId() == effect.getOwnerUniqueId()) {
|
||||
valid = PermissionManager.canUseFixedEffects(Bukkit.getPlayer(pplayer.getUniqueId()));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (valid) {
|
||||
displayFixedParticleEffect(effect);
|
||||
}
|
||||
|
@ -265,7 +265,7 @@ public class ParticleManager extends BukkitRunnable implements Listener {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Displays particles at the given fixed effect location
|
||||
*
|
||||
|
@ -284,12 +284,12 @@ public class ParticleManager extends BukkitRunnable implements Listener {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static OrdinaryColor getRainbowParticleColor() {
|
||||
Color rgb = Color.getHSBColor(hue / 360F, 1.0F, 1.0F);
|
||||
return new OrdinaryColor(rgb.getRed(), rgb.getGreen(), rgb.getBlue());
|
||||
}
|
||||
|
||||
|
||||
public static NoteColor getRainbowNoteParticleColor() {
|
||||
return new NoteColor(note);
|
||||
}
|
||||
|
|
|
@ -12,19 +12,19 @@ public class DefaultStyles {
|
|||
/**
|
||||
* All the styles that are available by default from this plugin
|
||||
*/
|
||||
public static ParticleStyle NONE = new ParticleStyleNone();
|
||||
public static ParticleStyle BEAM = new ParticleStyleBeam();
|
||||
public static ParticleStyle HALO = new ParticleStyleHalo();
|
||||
public static ParticleStyle POINT = new ParticleStylePoint();
|
||||
public static ParticleStyle MOVE = new ParticleStyleMove();
|
||||
public static ParticleStyle SPIN = new ParticleStyleSpin();
|
||||
public static ParticleStyle QUADHELIX = new ParticleStyleQuadhelix();
|
||||
public static ParticleStyle ORBIT = new ParticleStyleOrbit();
|
||||
public static ParticleStyle FEET = new ParticleStyleFeet();
|
||||
public static ParticleStyle CUBE = new ParticleStyleCube();
|
||||
public static ParticleStyle ARROWS = new ParticleStyleArrows();
|
||||
public static ParticleStyle SPIRAL = new ParticleStyleSpiral();
|
||||
public static ParticleStyle THICK = new ParticleStyleThick();
|
||||
public static final ParticleStyle NONE = new ParticleStyleNone();
|
||||
public static final ParticleStyle BEAM = new ParticleStyleBeam();
|
||||
public static final ParticleStyle HALO = new ParticleStyleHalo();
|
||||
public static final ParticleStyle POINT = new ParticleStylePoint();
|
||||
public static final ParticleStyle MOVE = new ParticleStyleMove();
|
||||
public static final ParticleStyle SPIN = new ParticleStyleSpin();
|
||||
public static final ParticleStyle QUADHELIX = new ParticleStyleQuadhelix();
|
||||
public static final ParticleStyle ORBIT = new ParticleStyleOrbit();
|
||||
public static final ParticleStyle FEET = new ParticleStyleFeet();
|
||||
public static final ParticleStyle CUBE = new ParticleStyleCube();
|
||||
public static final ParticleStyle ARROWS = new ParticleStyleArrows();
|
||||
public static final ParticleStyle SPIRAL = new ParticleStyleSpiral();
|
||||
public static final ParticleStyle THICK = new ParticleStyleThick();
|
||||
|
||||
/**
|
||||
* Registers all the default styles to the ParticleStyleManager
|
||||
|
|
|
@ -24,7 +24,7 @@ public class ParticleStyleMove extends ParticleStyleNone implements Listener {
|
|||
@EventHandler
|
||||
public void onPlayerMove(PlayerMoveEvent e) {
|
||||
PPlayer pplayer = ConfigManager.getInstance().getPPlayer(e.getPlayer().getUniqueId(), false);
|
||||
if (pplayer.getParticleStyle() == DefaultStyles.MOVE) {
|
||||
if (pplayer != null && pplayer.getParticleStyle() == DefaultStyles.MOVE) {
|
||||
if (PermissionManager.hasStylePermission(e.getPlayer(), DefaultStyles.MOVE)) {
|
||||
Location loc = e.getPlayer().getLocation();
|
||||
loc.setY(loc.getY() + 0.05);
|
||||
|
|
Loading…
Reference in a new issue