diff --git a/src/main/java/dev/esophose/playerparticles/PlayerParticles.java b/src/main/java/dev/esophose/playerparticles/PlayerParticles.java index 12ccc4d..25c2b41 100644 --- a/src/main/java/dev/esophose/playerparticles/PlayerParticles.java +++ b/src/main/java/dev/esophose/playerparticles/PlayerParticles.java @@ -2,17 +2,19 @@ * TODO: v7.0 * + Add ability to create/manage fixed effects from the GUI * * Convert fixed effect ids into names - * + Add command '/pp fixed teleport ' that requires the permission playerparticles.fixed.teleport - * + Add named colors to the color data autocomplete - * * Clean up duplicated command parsing * + Add effect/style name customization through config files * + Add effect/style settings folder that lets you disable effects/style and edit style properties * + Add setting to disable particles while in combat * + Add a command aliases section to the config * * /ppo now uses your permissions instead of the player you are targetting + * */ /* + * + Added a setting 'dust-size' to change the size of dust particles in 1.13+ + * * Cleaned up duplicated command parsing + * + Added command '/pp fixed teleport ' that requires the permission playerparticles.fixed.teleport + * + Added named colors to the color data autocomplete * + Added an API, accessible through the dev.esophose.playerparticles.api.PlayerParticlesAPI class * * Refactored the DataManager to only handle saving/loading data * * Refactored and cleaned up code to remove static abuse @@ -30,9 +32,7 @@ * Renamed command-error-no-effects to command-error-missing-effects-or-styles * Changed message for command-error-missing-effects-or-styles * Added message gui-no-permission - * - * NEEDS TRANSLATING: - * SECTION TITLED this.put("#23.5", "Fixed Teleport Message"); + * Added messages for fixed particles under the section #23.5 */ package dev.esophose.playerparticles; diff --git a/src/main/java/dev/esophose/playerparticles/command/ListCommandModule.java b/src/main/java/dev/esophose/playerparticles/command/ListCommandModule.java index 8e039fd..8d2ba9a 100644 --- a/src/main/java/dev/esophose/playerparticles/command/ListCommandModule.java +++ b/src/main/java/dev/esophose/playerparticles/command/ListCommandModule.java @@ -25,8 +25,8 @@ public class ListCommandModule implements CommandModule { localeManager.sendMessage(pplayer, "list-you-have"); for (ParticlePair particle : particles) { StringPlaceholders stringPlaceholders = StringPlaceholders.builder("id", particle.getId()) - .addPlaceholder("effect", particle.getEffect()) - .addPlaceholder("style", particle.getStyle()) + .addPlaceholder("effect", particle.getEffect().getName()) + .addPlaceholder("style", particle.getStyle().getName()) .addPlaceholder("data", particle.getDataString()) .build(); localeManager.sendMessage(pplayer, "list-output", stringPlaceholders); diff --git a/src/main/java/dev/esophose/playerparticles/command/ReloadCommandModule.java b/src/main/java/dev/esophose/playerparticles/command/ReloadCommandModule.java index 46ac46a..f651026 100644 --- a/src/main/java/dev/esophose/playerparticles/command/ReloadCommandModule.java +++ b/src/main/java/dev/esophose/playerparticles/command/ReloadCommandModule.java @@ -2,19 +2,23 @@ package dev.esophose.playerparticles.command; import dev.esophose.playerparticles.PlayerParticles; import dev.esophose.playerparticles.manager.LocaleManager; +import dev.esophose.playerparticles.manager.ParticleStyleManager; import dev.esophose.playerparticles.manager.PermissionManager; import dev.esophose.playerparticles.particles.PPlayer; +import dev.esophose.playerparticles.styles.DefaultStyles; import java.util.ArrayList; import java.util.List; public class ReloadCommandModule implements CommandModule { public void onCommandExecute(PPlayer pplayer, String[] args) { - LocaleManager localeManager = PlayerParticles.getInstance().getManager(LocaleManager.class); - if (PlayerParticles.getInstance().getManager(PermissionManager.class).canReloadPlugin(pplayer.getMessageDestination())) { - PlayerParticles.getInstance().reload(); + PlayerParticles playerParticles = PlayerParticles.getInstance(); + LocaleManager localeManager = playerParticles.getManager(LocaleManager.class); + if (playerParticles.getManager(PermissionManager.class).canReloadPlugin(pplayer.getMessageDestination())) { + playerParticles.reload(); + DefaultStyles.reloadSettings(playerParticles.getManager(ParticleStyleManager.class)); localeManager.sendMessage(pplayer, "reload-success"); - PlayerParticles.getInstance().getLogger().info("Reloaded configuration."); + playerParticles.getLogger().info("Reloaded configuration."); } else { localeManager.sendMessage(pplayer, "reload-no-permission"); } diff --git a/src/main/java/dev/esophose/playerparticles/manager/ConfigurationManager.java b/src/main/java/dev/esophose/playerparticles/manager/ConfigurationManager.java index 88f8477..b633c28 100644 --- a/src/main/java/dev/esophose/playerparticles/manager/ConfigurationManager.java +++ b/src/main/java/dev/esophose/playerparticles/manager/ConfigurationManager.java @@ -50,7 +50,7 @@ public class ConfigurationManager extends Manager { PARTICLE_RENDER_RANGE_PLAYER("particle-render-range-player", 48, "From how many blocks away should a player be able to see the particles from another player?"), PARTICLE_RENDER_RANGE_FIXED_EFFECT("particle-render-range-fixed-effect", 32, "From how many blocks away should a player be able to see the particles from a fixed effect?"), RAINBOW_CYCLE_SPEED("rainbow-cycle-speed", 2, "How many out of 360 hue ticks to move per game tick", "Higher values make the rainbow cycle faster", "Note: Must be a positive whole number"), - DUST_SIZE("dust-size", 1, "How large should dust particles appear?", "Note: Can include decimals"), + DUST_SIZE("dust-size", 1, "How large should dust particles appear?", "Note: Can include decimals", "Only works in 1.13+"), MYSQL_SETTINGS("mysql-settings", null, "Settings for if you want to use MySQL for data management"), MYSQL_ENABLED("mysql-settings.enabled", false, "Enable MySQL", "If false, SQLite will be used instead"), diff --git a/src/main/java/dev/esophose/playerparticles/manager/DataManager.java b/src/main/java/dev/esophose/playerparticles/manager/DataManager.java index fa48af9..56cd1f1 100644 --- a/src/main/java/dev/esophose/playerparticles/manager/DataManager.java +++ b/src/main/java/dev/esophose/playerparticles/manager/DataManager.java @@ -18,7 +18,9 @@ import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.Collection; import java.util.HashMap; +import java.util.HashSet; import java.util.Map; +import java.util.Set; import java.util.UUID; import java.util.function.Consumer; import org.bukkit.Bukkit; @@ -136,6 +138,7 @@ public class DataManager extends Manager { try (PreparedStatement statement = connection.prepareStatement(groupQuery)) { statement.setString(1, playerUUID.toString()); + Set modifiedGroups = new HashSet<>(); ResultSet result = statement.executeQuery(); while (result.next()) { // Group properties @@ -151,11 +154,16 @@ public class DataManager extends Manager { OrdinaryColor color = new OrdinaryColor(result.getInt("r"), result.getInt("g"), result.getInt("b")); ParticlePair particle = new ParticlePair(playerUUID, id, effect, style, itemMaterial, blockMaterial, color, noteColor); + boolean invalid = effect == null || style == null; + if (invalid) // Effect or style is now missing or disabled, remove the particle + modifiedGroups.add(groupName); + // Try to add particle to an existing group boolean groupAlreadyExists = false; for (ParticleGroup group : groups.values()) { if (group.getName().equalsIgnoreCase(groupName)) { - group.getParticles().put(particle.getId(), particle); + if (!invalid) + group.getParticles().put(particle.getId(), particle); groupAlreadyExists = true; break; } @@ -164,11 +172,20 @@ public class DataManager extends Manager { // Add the particle to a new group if one didn't already exist if (!groupAlreadyExists) { HashMap particles = new HashMap<>(); - particles.put(particle.getId(), particle); + if (!invalid) + particles.put(particle.getId(), particle); ParticleGroup newGroup = new ParticleGroup(groupName, particles); groups.put(newGroup.getName().toLowerCase(), newGroup); } } + + // Update modified groups + for (String modifiedGroup : modifiedGroups) { + ParticleGroup group = groups.get(modifiedGroup.toLowerCase()); + this.saveParticleGroup(playerUUID, group); + if (group.getParticles().isEmpty() && !group.getName().equals(ParticleGroup.DEFAULT_NAME)) + groups.remove(modifiedGroup); + } } // Load fixed effects @@ -202,6 +219,12 @@ public class DataManager extends Manager { OrdinaryColor color = new OrdinaryColor(result.getInt("r"), result.getInt("g"), result.getInt("b")); ParticlePair particle = new ParticlePair(playerUUID, particleId, effect, style, itemMaterial, blockMaterial, color, noteColor); + // Effect or style is now missing or disabled, remove the fixed effect + if (effect == null || style == null) { + this.removeFixedEffect(playerUUID, fixedEffectId); + continue; + } + fixedParticles.put(fixedEffectId, new FixedParticleEffect(playerUUID, fixedEffectId, new Location(world, xPos, yPos, zPos), particle)); } } @@ -270,12 +293,17 @@ public class DataManager extends Manager { } /** - * Saves a ParticleGroup. If it already exists, update it. + * Saves a ParticleGroup. If it already exists, update it. If it's empty, delete it. * * @param playerUUID The owner of the group * @param group The group to create/update */ public void saveParticleGroup(UUID playerUUID, ParticleGroup group) { + if (group.getParticles().isEmpty() && !group.getName().equals(ParticleGroup.DEFAULT_NAME)) { + this.removeParticleGroup(playerUUID, group.getName()); + return; + } + this.async(() -> this.databaseConnector.connect((connection) -> { String groupUUID; diff --git a/src/main/java/dev/esophose/playerparticles/manager/ParticleStyleManager.java b/src/main/java/dev/esophose/playerparticles/manager/ParticleStyleManager.java index 8f17199..d434ac9 100644 --- a/src/main/java/dev/esophose/playerparticles/manager/ParticleStyleManager.java +++ b/src/main/java/dev/esophose/playerparticles/manager/ParticleStyleManager.java @@ -5,6 +5,7 @@ import dev.esophose.playerparticles.styles.DefaultStyles; import dev.esophose.playerparticles.styles.ParticleStyle; import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; public class ParticleStyleManager extends Manager { @@ -82,11 +83,16 @@ public class ParticleStyleManager extends Manager { } /** - * Gets all registered styles - * - * @return A List of ParticleStyles that are registered + * @return A List of styles that are registered and enabled */ public List getStyles() { + return this.styles.stream().filter(ParticleStyle::isEnabled).collect(Collectors.toList()); + } + + /** + * @return all registered styles, regardless if they are enabled or not + */ + public List getStylesWithDisabled() { return this.styles; } diff --git a/src/main/java/dev/esophose/playerparticles/manager/PermissionManager.java b/src/main/java/dev/esophose/playerparticles/manager/PermissionManager.java index e705bd3..26f74fe 100644 --- a/src/main/java/dev/esophose/playerparticles/manager/PermissionManager.java +++ b/src/main/java/dev/esophose/playerparticles/manager/PermissionManager.java @@ -200,7 +200,7 @@ public class PermissionManager extends Manager { */ public List getEffectNamesUserHasPermissionFor(Player p) { List list = new ArrayList<>(); - for (ParticleEffect pe : ParticleEffect.getSupportedEffects()) + for (ParticleEffect pe : ParticleEffect.getEnabledEffects()) if (this.hasEffectPermission(p, pe)) list.add(pe.getName()); return list; @@ -242,7 +242,7 @@ public class PermissionManager extends Manager { */ public List getEffectsUserHasPermissionFor(Player p) { List list = new ArrayList<>(); - for (ParticleEffect pe : ParticleEffect.getSupportedEffects()) + for (ParticleEffect pe : ParticleEffect.getEnabledEffects()) if (this.hasEffectPermission(p, pe)) list.add(pe); return list; diff --git a/src/main/java/dev/esophose/playerparticles/particles/ParticleEffect.java b/src/main/java/dev/esophose/playerparticles/particles/ParticleEffect.java index 1bc10c6..eb8d4c8 100644 --- a/src/main/java/dev/esophose/playerparticles/particles/ParticleEffect.java +++ b/src/main/java/dev/esophose/playerparticles/particles/ParticleEffect.java @@ -141,11 +141,11 @@ public enum ParticleEffect { } /** - * Returns a ParticleEffect List of all supported effects for the server version + * Returns a ParticleEffect List of all enabled effects for the server version * - * @return Supported effects + * @return Enabled effects */ - public static List getSupportedEffects() { + public static List getEnabledEffects() { List effects = new ArrayList<>(); for (ParticleEffect pe : values()) if (pe.isSupported()) diff --git a/src/main/java/dev/esophose/playerparticles/styles/DefaultParticleStyle.java b/src/main/java/dev/esophose/playerparticles/styles/DefaultParticleStyle.java new file mode 100644 index 0000000..32de4d2 --- /dev/null +++ b/src/main/java/dev/esophose/playerparticles/styles/DefaultParticleStyle.java @@ -0,0 +1,127 @@ +package dev.esophose.playerparticles.styles; + +import com.google.common.collect.ObjectArrays; +import dev.esophose.playerparticles.PlayerParticles; +import dev.esophose.playerparticles.config.CommentedFileConfiguration; +import dev.esophose.playerparticles.util.ParticleUtils; +import java.io.File; + +public abstract class DefaultParticleStyle implements ParticleStyle { + + protected PlayerParticles playerParticles; + private CommentedFileConfiguration config; + private String styleName; + private boolean canBeFixedByDefault; + private boolean canToggleWithMovementByDefault; + private double fixedEffectOffsetByDefault; + + private boolean enabled; + private boolean canBeFixed; + private boolean canToggleWithMovement; + private double fixedEffectOffset; + + public DefaultParticleStyle(String styleName, boolean canBeFixedByDefault, boolean canToggleWithMovementByDefault, double fixedEffectOffsetByDefault) { + this.styleName = styleName; + this.canBeFixedByDefault = canBeFixedByDefault; + this.canToggleWithMovementByDefault = canToggleWithMovementByDefault; + this.fixedEffectOffsetByDefault = fixedEffectOffsetByDefault; + this.playerParticles = PlayerParticles.getInstance(); + + this.setDefaultSettings(); + this.loadSettings(false); + } + + /** + * Sets the default settings shared for each style then calls setDefaultSettings(CommentedFileConfiguration) + */ + private void setDefaultSettings() { + File directory = new File(this.playerParticles.getDataFolder(), "styles"); + directory.mkdirs(); + + File file = new File(directory, this.getName() + ".yml"); + this.config = CommentedFileConfiguration.loadConfiguration(PlayerParticles.getInstance(), file); + + this.setIfNotExists("enabled", true, "If the style is enabled or not"); + this.setIfNotExists("can-be-fixed", this.canBeFixedByDefault, "If the style can be used in /pp fixed"); + this.setIfNotExists("can-toggle-with-movement", this.canToggleWithMovementByDefault, "If the style will only be shown at the player's feet while moving"); + this.setIfNotExists("fixed-effect-offset", this.fixedEffectOffsetByDefault, "How far vertically to offset the style position for fixed effects"); + + this.setDefaultSettings(this.config); + this.config.save(); + } + + /** + * Loads the settings shared for each style then calls loadSettings(CommentedFileConfiguration) + */ + public final void loadSettings(boolean reloadConfig) { + if (reloadConfig) + this.config.reloadConfig(); + + this.enabled = this.config.getBoolean("enabled"); + this.canBeFixed = this.config.getBoolean("can-be-fixed"); + this.canToggleWithMovement = this.config.getBoolean("can-toggle-with-movement"); + this.fixedEffectOffset = this.config.getDouble("fixed-effect-offset"); + + this.loadSettings(this.config); + } + + /** + * Sets a value to the config if it doesn't already exist + * + * @param setting The setting name + * @param value The setting value + */ + protected final void setIfNotExists(String setting, Object value, String... comments) { + if (this.config.get(setting) != null) + return; + + String defaultMessage = "Default: "; + if (value instanceof String && ParticleUtils.containsConfigSpecialCharacters((String) value)) { + defaultMessage += "'" + value + "'"; + } else { + defaultMessage += value; + } + + this.config.set(setting, value, ObjectArrays.concat(comments, new String[] { defaultMessage }, String.class)); + } + + @Override + public final boolean isEnabled() { + return this.enabled; + } + + @Override + public final String getName() { + return this.styleName; + } + + @Override + public final boolean canBeFixed() { + return this.canBeFixed; + } + + @Override + public final boolean canToggleWithMovement() { + return this.canToggleWithMovement; + } + + @Override + public final double getFixedEffectOffset() { + return this.fixedEffectOffset; + } + + /** + * Sets the default settings for this style + * + * @param config The config to save to + */ + protected abstract void setDefaultSettings(CommentedFileConfiguration config); + + /** + * Loads the settings for this style + * + * @param config The config to load from + */ + protected abstract void loadSettings(CommentedFileConfiguration config); + +} diff --git a/src/main/java/dev/esophose/playerparticles/styles/DefaultStyles.java b/src/main/java/dev/esophose/playerparticles/styles/DefaultStyles.java index b5c24d6..c669904 100644 --- a/src/main/java/dev/esophose/playerparticles/styles/DefaultStyles.java +++ b/src/main/java/dev/esophose/playerparticles/styles/DefaultStyles.java @@ -93,4 +93,13 @@ public class DefaultStyles { pluginManager.registerEvents((Listener) SWORDS, playerParticles); } + /** + * Reloads the settings for all default styles + */ + public static void reloadSettings(ParticleStyleManager particleStyleManager) { + for (ParticleStyle style : particleStyleManager.getStylesWithDisabled()) + if (style instanceof DefaultParticleStyle) + ((DefaultParticleStyle) style).loadSettings(true); + } + } diff --git a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyle.java b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyle.java index f5d8f58..c8bb056 100644 --- a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyle.java +++ b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyle.java @@ -23,6 +23,11 @@ public interface ParticleStyle { */ void updateTimers(); + /** + * @return true if the style is enabled, false otherwise + */ + boolean isEnabled(); + /** * The name of the style * diff --git a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleArrows.java b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleArrows.java index 58b2ef0..92ad9e1 100644 --- a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleArrows.java +++ b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleArrows.java @@ -1,5 +1,6 @@ package dev.esophose.playerparticles.styles; +import dev.esophose.playerparticles.config.CommentedFileConfiguration; import dev.esophose.playerparticles.particles.PParticle; import dev.esophose.playerparticles.particles.ParticlePair; import java.util.ArrayList; @@ -13,12 +14,17 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.entity.EntityShootBowEvent; -public class ParticleStyleArrows implements ParticleStyle, Listener { +public class ParticleStyleArrows extends DefaultParticleStyle implements Listener { private static final String[] arrowEntityNames = new String[] { "ARROW", "SPECTRAL_ARROW", "TIPPED_ARROW" }; private static final int MAX_ARROWS_PER_PLAYER = 10; private List arrows = new ArrayList<>(); + public ParticleStyleArrows() { + super("arrows", false, false, 0); + } + + @Override public List getParticles(ParticlePair particle, Location location) { List particles = new ArrayList<>(); @@ -40,6 +46,7 @@ public class ParticleStyleArrows implements ParticleStyle, Listener { /** * Removes all arrows that are considered dead */ + @Override public void updateTimers() { for (int i = this.arrows.size() - 1; i >= 0; i--) { Projectile arrow = this.arrows.get(i); @@ -48,22 +55,6 @@ public class ParticleStyleArrows implements ParticleStyle, Listener { } } - public String getName() { - return "arrows"; - } - - public boolean canBeFixed() { - return false; - } - - public boolean canToggleWithMovement() { - return false; - } - - public double getFixedEffectOffset() { - return 0; - } - /** * The event used to get all arrows fired by players * Adds all arrows fired from players to the array @@ -80,4 +71,14 @@ public class ParticleStyleArrows implements ParticleStyle, Listener { this.arrows.add((Projectile) e.getProjectile()); } + @Override + protected void setDefaultSettings(CommentedFileConfiguration config) { + + } + + @Override + protected void loadSettings(CommentedFileConfiguration config) { + + } + } diff --git a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleBatman.java b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleBatman.java index 21486fd..63678f6 100644 --- a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleBatman.java +++ b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleBatman.java @@ -1,5 +1,6 @@ package dev.esophose.playerparticles.styles; +import dev.esophose.playerparticles.config.CommentedFileConfiguration; import dev.esophose.playerparticles.particles.PParticle; import dev.esophose.playerparticles.particles.ParticlePair; import dev.esophose.playerparticles.util.VectorUtils; @@ -8,10 +9,15 @@ import java.util.List; import org.bukkit.Location; import org.bukkit.util.Vector; -public class ParticleStyleBatman implements ParticleStyle { +public class ParticleStyleBatman extends DefaultParticleStyle { private int step = 0; + public ParticleStyleBatman() { + super("batman", true, true, -1); + } + + @Override public List getParticles(ParticlePair particle, Location location) { List particles = new ArrayList<>(); @@ -106,24 +112,19 @@ public class ParticleStyleBatman implements ParticleStyle { return particles; } + @Override public void updateTimers() { step = (step + 1) % 20; // Only spawn once per second } - public String getName() { - return "batman"; + @Override + protected void setDefaultSettings(CommentedFileConfiguration config) { + } - public boolean canBeFixed() { - return true; - } - - public boolean canToggleWithMovement() { - return true; - } - - public double getFixedEffectOffset() { - return -1; + @Override + protected void loadSettings(CommentedFileConfiguration config) { + } } diff --git a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleBeam.java b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleBeam.java index dd20bb4..9cd4880 100644 --- a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleBeam.java +++ b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleBeam.java @@ -1,12 +1,13 @@ package dev.esophose.playerparticles.styles; +import dev.esophose.playerparticles.config.CommentedFileConfiguration; import dev.esophose.playerparticles.particles.PParticle; import dev.esophose.playerparticles.particles.ParticlePair; import java.util.ArrayList; import java.util.List; import org.bukkit.Location; -public class ParticleStyleBeam implements ParticleStyle { +public class ParticleStyleBeam extends DefaultParticleStyle { private static double[] cos, sin; private static final int points = 16; @@ -25,6 +26,11 @@ public class ParticleStyleBeam implements ParticleStyle { } } + public ParticleStyleBeam() { + super("beam", true, true, 0.5); + } + + @Override public List getParticles(ParticlePair particle, Location location) { double radius = 1; List particles = new ArrayList<>(); @@ -37,6 +43,7 @@ public class ParticleStyleBeam implements ParticleStyle { return particles; } + @Override public void updateTimers() { if (!reversed) step++; else step--; @@ -48,20 +55,14 @@ public class ParticleStyleBeam implements ParticleStyle { } } - public String getName() { - return "beam"; + @Override + protected void setDefaultSettings(CommentedFileConfiguration config) { + } - public boolean canBeFixed() { - return true; - } - - public boolean canToggleWithMovement() { - return true; - } - - public double getFixedEffectOffset() { - return 0.5; + @Override + protected void loadSettings(CommentedFileConfiguration config) { + } } diff --git a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleBlockBreak.java b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleBlockBreak.java index db1dcd5..d7e3633 100644 --- a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleBlockBreak.java +++ b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleBlockBreak.java @@ -1,6 +1,7 @@ package dev.esophose.playerparticles.styles; import dev.esophose.playerparticles.PlayerParticles; +import dev.esophose.playerparticles.config.CommentedFileConfiguration; import dev.esophose.playerparticles.manager.DataManager; import dev.esophose.playerparticles.manager.ParticleManager; import dev.esophose.playerparticles.particles.PParticle; @@ -15,8 +16,13 @@ import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.block.BlockBreakEvent; -public class ParticleStyleBlockBreak implements ParticleStyle, Listener { +public class ParticleStyleBlockBreak extends DefaultParticleStyle implements Listener { + public ParticleStyleBlockBreak() { + super("blockbreak", false, false, 0); + } + + @Override public List getParticles(ParticlePair particle, Location location) { List particles = new ArrayList<>(); @@ -28,24 +34,19 @@ public class ParticleStyleBlockBreak implements ParticleStyle, Listener { return particles; } + @Override public void updateTimers() { } - public String getName() { - return "blockbreak"; + @Override + protected void setDefaultSettings(CommentedFileConfiguration config) { + } - public boolean canBeFixed() { - return false; - } - - public boolean canToggleWithMovement() { - return false; - } - - public double getFixedEffectOffset() { - return 0; + @Override + protected void loadSettings(CommentedFileConfiguration config) { + } @EventHandler(priority = EventPriority.MONITOR) diff --git a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleBlockPlace.java b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleBlockPlace.java index 653e4f1..059976b 100644 --- a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleBlockPlace.java +++ b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleBlockPlace.java @@ -1,6 +1,7 @@ package dev.esophose.playerparticles.styles; import dev.esophose.playerparticles.PlayerParticles; +import dev.esophose.playerparticles.config.CommentedFileConfiguration; import dev.esophose.playerparticles.manager.DataManager; import dev.esophose.playerparticles.manager.ParticleManager; import dev.esophose.playerparticles.particles.PParticle; @@ -15,8 +16,13 @@ import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.block.BlockPlaceEvent; -public class ParticleStyleBlockPlace implements ParticleStyle, Listener { +public class ParticleStyleBlockPlace extends DefaultParticleStyle implements Listener { + public ParticleStyleBlockPlace() { + super("blockplace", false, false, 0); + } + + @Override public List getParticles(ParticlePair particle, Location location) { List particles = new ArrayList<>(); @@ -28,24 +34,19 @@ public class ParticleStyleBlockPlace implements ParticleStyle, Listener { return particles; } + @Override public void updateTimers() { } - public String getName() { - return "blockplace"; + @Override + protected void setDefaultSettings(CommentedFileConfiguration config) { + } - public boolean canBeFixed() { - return false; - } - - public boolean canToggleWithMovement() { - return false; - } - - public double getFixedEffectOffset() { - return 0; + @Override + protected void loadSettings(CommentedFileConfiguration config) { + } @EventHandler(priority = EventPriority.MONITOR) diff --git a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleCelebration.java b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleCelebration.java index b5e318b..270e5b1 100644 --- a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleCelebration.java +++ b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleCelebration.java @@ -1,6 +1,7 @@ package dev.esophose.playerparticles.styles; import dev.esophose.playerparticles.PlayerParticles; +import dev.esophose.playerparticles.config.CommentedFileConfiguration; import dev.esophose.playerparticles.manager.ParticleManager; import dev.esophose.playerparticles.manager.PermissionManager; import dev.esophose.playerparticles.particles.FixedParticleEffect; @@ -17,11 +18,16 @@ import org.bukkit.Location; import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; -public class ParticleStyleCelebration implements ParticleStyle { +public class ParticleStyleCelebration extends DefaultParticleStyle { private int step = 0; private final int spawnTime = 15; + public ParticleStyleCelebration() { + super("celebration", true, true, 0); + } + + @Override public List getParticles(ParticlePair particle, Location location) { return new ArrayList<>(); } @@ -30,6 +36,7 @@ public class ParticleStyleCelebration implements ParticleStyle { * Spawns fireworks every spawnTime number of ticks * This style uses two different effects, one is always 'firework' */ + @Override public void updateTimers() { PermissionManager permissionManager = PlayerParticles.getInstance().getManager(PermissionManager.class); ParticleManager particleManager = PlayerParticles.getInstance().getManager(ParticleManager.class); @@ -52,6 +59,16 @@ public class ParticleStyleCelebration implements ParticleStyle { } } } + + @Override + protected void setDefaultSettings(CommentedFileConfiguration config) { + + } + + @Override + protected void loadSettings(CommentedFileConfiguration config) { + + } private void spawnFirework(final Location location, final PPlayer pplayer, final ParticlePair particle, final Random random) { double angle = random.nextDouble() * Math.PI * 2; @@ -99,20 +116,4 @@ public class ParticleStyleCelebration implements ParticleStyle { }.runTaskTimer(PlayerParticles.getInstance(), 0, 1); } - public String getName() { - return "celebration"; - } - - public boolean canBeFixed() { - return true; - } - - public boolean canToggleWithMovement() { - return true; - } - - public double getFixedEffectOffset() { - return 0; - } - } diff --git a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleChains.java b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleChains.java index 08363a6..69c6fe5 100644 --- a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleChains.java +++ b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleChains.java @@ -1,13 +1,19 @@ package dev.esophose.playerparticles.styles; +import dev.esophose.playerparticles.config.CommentedFileConfiguration; import dev.esophose.playerparticles.particles.PParticle; import dev.esophose.playerparticles.particles.ParticlePair; import java.util.ArrayList; import java.util.List; import org.bukkit.Location; -public class ParticleStyleChains implements ParticleStyle { +public class ParticleStyleChains extends DefaultParticleStyle { + public ParticleStyleChains() { + super("chains", true, true, 0); + } + + @Override public List getParticles(ParticlePair particle, Location location) { List particles = new ArrayList<>(); @@ -21,24 +27,19 @@ public class ParticleStyleChains implements ParticleStyle { return particles; } + @Override public void updateTimers() { } - public String getName() { - return "chains"; + @Override + protected void setDefaultSettings(CommentedFileConfiguration config) { + } - public boolean canBeFixed() { - return true; - } - - public boolean canToggleWithMovement() { - return true; - } - - public double getFixedEffectOffset() { - return 0; + @Override + protected void loadSettings(CommentedFileConfiguration config) { + } } diff --git a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleCompanion.java b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleCompanion.java index 07b97ff..ea4c259 100644 --- a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleCompanion.java +++ b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleCompanion.java @@ -23,6 +23,7 @@ */ package dev.esophose.playerparticles.styles; +import dev.esophose.playerparticles.config.CommentedFileConfiguration; import dev.esophose.playerparticles.particles.PParticle; import dev.esophose.playerparticles.particles.ParticlePair; import java.util.ArrayList; @@ -30,7 +31,7 @@ import java.util.List; import org.bukkit.Location; import org.bukkit.util.Vector; -public class ParticleStyleCompanion implements ParticleStyle { +public class ParticleStyleCompanion extends DefaultParticleStyle { private int numParticles = 150; private int particlesPerIteration = 5; @@ -39,6 +40,11 @@ public class ParticleStyleCompanion implements ParticleStyle { private double xOffset = 0.0, yOffset = -0.75, zOffset = 0.0; private int step = 0; + public ParticleStyleCompanion() { + super("companion", true, false, 1); + } + + @Override public List getParticles(ParticlePair particle, Location location) { List particles = new ArrayList<>(); @@ -59,24 +65,19 @@ public class ParticleStyleCompanion implements ParticleStyle { return particles; } + @Override public void updateTimers() { step++; } - public String getName() { - return "companion"; + @Override + protected void setDefaultSettings(CommentedFileConfiguration config) { + } - public boolean canBeFixed() { - return true; - } - - public boolean canToggleWithMovement() { - return false; - } - - public double getFixedEffectOffset() { - return 1; + @Override + protected void loadSettings(CommentedFileConfiguration config) { + } } diff --git a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleCube.java b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleCube.java index 30520b5..9e8ca0e 100644 --- a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleCube.java +++ b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleCube.java @@ -23,6 +23,7 @@ */ package dev.esophose.playerparticles.styles; +import dev.esophose.playerparticles.config.CommentedFileConfiguration; import dev.esophose.playerparticles.particles.PParticle; import dev.esophose.playerparticles.particles.ParticlePair; import dev.esophose.playerparticles.util.VectorUtils; @@ -36,7 +37,7 @@ import org.bukkit.util.Vector; * The project this is from is called EffectLib and can be found here: * https://github.com/Slikey/EffectLib */ -public class ParticleStyleCube implements ParticleStyle { +public class ParticleStyleCube extends DefaultParticleStyle { private double edgeLength = 2; private double angularVelocityX = (Math.PI / 200) / 5; @@ -46,6 +47,11 @@ public class ParticleStyleCube implements ParticleStyle { private int step = 0; private boolean skipNextStep = false; // Only spawn every 2 ticks + public ParticleStyleCube() { + super("cube", true, true, 0); + } + + @Override public List getParticles(ParticlePair particle, Location location) { List pparticles = new ArrayList<>(); @@ -83,25 +89,20 @@ public class ParticleStyleCube implements ParticleStyle { return pparticles; } + @Override public void updateTimers() { skipNextStep = !skipNextStep; step++; } - public String getName() { - return "cube"; + @Override + protected void setDefaultSettings(CommentedFileConfiguration config) { + } - public boolean canBeFixed() { - return true; - } - - public boolean canToggleWithMovement() { - return true; - } - - public double getFixedEffectOffset() { - return 0; + @Override + protected void loadSettings(CommentedFileConfiguration config) { + } } diff --git a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleFeet.java b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleFeet.java index ca0f741..9baf0a1 100644 --- a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleFeet.java +++ b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleFeet.java @@ -1,37 +1,38 @@ package dev.esophose.playerparticles.styles; +import dev.esophose.playerparticles.config.CommentedFileConfiguration; import dev.esophose.playerparticles.particles.PParticle; import dev.esophose.playerparticles.particles.ParticlePair; import java.util.ArrayList; import java.util.List; import org.bukkit.Location; -public class ParticleStyleFeet implements ParticleStyle { +public class ParticleStyleFeet extends DefaultParticleStyle { + public ParticleStyleFeet() { + super("feet", true, false, 0.5); + } + + @Override public List getParticles(ParticlePair particle, Location location) { List particles = new ArrayList<>(); particles.add(new PParticle(location.clone().subtract(0, 0.95, 0), 0.4F, 0.0F, 0.4F, 0.0F)); return particles; } + @Override public void updateTimers() { } - public String getName() { - return "feet"; + @Override + protected void setDefaultSettings(CommentedFileConfiguration config) { + } - public boolean canBeFixed() { - return true; - } - - public boolean canToggleWithMovement() { - return false; - } - - public double getFixedEffectOffset() { - return 0.5; + @Override + protected void loadSettings(CommentedFileConfiguration config) { + } } diff --git a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleHalo.java b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleHalo.java index dabcb39..d8277bd 100644 --- a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleHalo.java +++ b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleHalo.java @@ -1,12 +1,13 @@ package dev.esophose.playerparticles.styles; +import dev.esophose.playerparticles.config.CommentedFileConfiguration; import dev.esophose.playerparticles.particles.PParticle; import dev.esophose.playerparticles.particles.ParticlePair; import java.util.ArrayList; import java.util.List; import org.bukkit.Location; -public class ParticleStyleHalo implements ParticleStyle { +public class ParticleStyleHalo extends DefaultParticleStyle { private static double[] cos, sin; private static final int points = 16; @@ -24,6 +25,11 @@ public class ParticleStyleHalo implements ParticleStyle { } } + public ParticleStyleHalo() { + super("halo", true, false, -0.5); + } + + @Override public List getParticles(ParticlePair particle, Location location) { if (step % 2 == 0) return new ArrayList<>(); @@ -39,6 +45,7 @@ public class ParticleStyleHalo implements ParticleStyle { return particles; } + @Override public void updateTimers() { step++; if (step > 30) { @@ -46,20 +53,14 @@ public class ParticleStyleHalo implements ParticleStyle { } } - public String getName() { - return "halo"; + @Override + protected void setDefaultSettings(CommentedFileConfiguration config) { + } - public boolean canBeFixed() { - return true; - } - - public boolean canToggleWithMovement() { - return false; - } - - public double getFixedEffectOffset() { - return -0.5; + @Override + protected void loadSettings(CommentedFileConfiguration config) { + } } diff --git a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleHurt.java b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleHurt.java index eaaac9a..e9c4b11 100644 --- a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleHurt.java +++ b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleHurt.java @@ -1,6 +1,7 @@ package dev.esophose.playerparticles.styles; import dev.esophose.playerparticles.PlayerParticles; +import dev.esophose.playerparticles.config.CommentedFileConfiguration; import dev.esophose.playerparticles.manager.DataManager; import dev.esophose.playerparticles.manager.ParticleManager; import dev.esophose.playerparticles.particles.PParticle; @@ -15,8 +16,13 @@ import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.entity.EntityDamageEvent; -public class ParticleStyleHurt implements ParticleStyle, Listener { +public class ParticleStyleHurt extends DefaultParticleStyle implements Listener { + public ParticleStyleHurt() { + super("hurt", false, false, 0); + } + + @Override public List getParticles(ParticlePair particle, Location location) { List baseParticles = DefaultStyles.THICK.getParticles(particle, location); @@ -29,26 +35,11 @@ public class ParticleStyleHurt implements ParticleStyle, Listener { return particles; } + @Override public void updateTimers() { } - public String getName() { - return "hurt"; - } - - public boolean canBeFixed() { - return false; - } - - public boolean canToggleWithMovement() { - return false; - } - - public double getFixedEffectOffset() { - return 0; - } - @EventHandler(priority = EventPriority.MONITOR) public void onEntityDamage(EntityDamageEvent event) { ParticleManager particleManager = PlayerParticles.getInstance().getManager(ParticleManager.class); @@ -65,4 +56,14 @@ public class ParticleStyleHurt implements ParticleStyle, Listener { } } + @Override + protected void setDefaultSettings(CommentedFileConfiguration config) { + + } + + @Override + protected void loadSettings(CommentedFileConfiguration config) { + + } + } diff --git a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleInvocation.java b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleInvocation.java index d8dcf68..ee7f5ac 100644 --- a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleInvocation.java +++ b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleInvocation.java @@ -1,5 +1,6 @@ package dev.esophose.playerparticles.styles; +import dev.esophose.playerparticles.config.CommentedFileConfiguration; import dev.esophose.playerparticles.particles.PParticle; import dev.esophose.playerparticles.particles.ParticleEffect; import dev.esophose.playerparticles.particles.ParticlePair; @@ -7,7 +8,7 @@ import java.util.ArrayList; import java.util.List; import org.bukkit.Location; -public class ParticleStyleInvocation implements ParticleStyle { +public class ParticleStyleInvocation extends DefaultParticleStyle { private int points = 6; private double radius = 3.5; @@ -15,6 +16,10 @@ public class ParticleStyleInvocation implements ParticleStyle { private int circleStep = 0; private int numSteps = 120; + public ParticleStyleInvocation() { + super("invocation", true, true, 0.5); + } + public List getParticles(ParticlePair particle, Location location) { List particles = new ArrayList<>(); double speed = getSpeedByEffect(particle.getEffect()); @@ -88,20 +93,14 @@ public class ParticleStyleInvocation implements ParticleStyle { circleStep = (circleStep + 1) % numSteps; } - public String getName() { - return "invocation"; + @Override + protected void setDefaultSettings(CommentedFileConfiguration config) { + } - public boolean canBeFixed() { - return true; - } - - public boolean canToggleWithMovement() { - return true; - } - - public double getFixedEffectOffset() { - return 0.5; + @Override + protected void loadSettings(CommentedFileConfiguration config) { + } } diff --git a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleMove.java b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleMove.java index e9eb0d9..235cf0d 100644 --- a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleMove.java +++ b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleMove.java @@ -1,6 +1,7 @@ package dev.esophose.playerparticles.styles; import dev.esophose.playerparticles.PlayerParticles; +import dev.esophose.playerparticles.config.CommentedFileConfiguration; import dev.esophose.playerparticles.manager.DataManager; import dev.esophose.playerparticles.manager.ParticleManager; import dev.esophose.playerparticles.particles.PParticle; @@ -13,30 +14,30 @@ import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerMoveEvent; -public class ParticleStyleMove implements ParticleStyle, Listener { +public class ParticleStyleMove extends DefaultParticleStyle implements Listener { + public ParticleStyleMove() { + super("move", false, false, 0); + } + + @Override public List getParticles(ParticlePair particle, Location location) { return DefaultStyles.NORMAL.getParticles(particle, location); } + @Override public void updateTimers() { } - public String getName() { - return "move"; + @Override + protected void setDefaultSettings(CommentedFileConfiguration config) { + } - public boolean canBeFixed() { - return false; - } - - public boolean canToggleWithMovement() { - return false; - } - - public double getFixedEffectOffset() { - return 0; + @Override + protected void loadSettings(CommentedFileConfiguration config) { + } @EventHandler(priority = EventPriority.MONITOR) diff --git a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleNormal.java b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleNormal.java index 905d620..8e2fa5b 100644 --- a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleNormal.java +++ b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleNormal.java @@ -1,5 +1,6 @@ package dev.esophose.playerparticles.styles; +import dev.esophose.playerparticles.config.CommentedFileConfiguration; import dev.esophose.playerparticles.particles.PParticle; import dev.esophose.playerparticles.particles.ParticleEffect; import dev.esophose.playerparticles.particles.ParticlePair; @@ -8,8 +9,13 @@ import java.util.Collections; import java.util.List; import org.bukkit.Location; -public class ParticleStyleNormal implements ParticleStyle { +public class ParticleStyleNormal extends DefaultParticleStyle { + public ParticleStyleNormal() { + super("normal", true, false, 0); + } + + @Override public List getParticles(ParticlePair particle, Location location) { ParticleEffect particleEffect = particle.getEffect(); List particles = new ArrayList<>(); @@ -124,24 +130,19 @@ public class ParticleStyleNormal implements ParticleStyle { } } + @Override public void updateTimers() { } - public String getName() { - return "normal"; + @Override + protected void setDefaultSettings(CommentedFileConfiguration config) { + } - public boolean canBeFixed() { - return true; - } - - public boolean canToggleWithMovement() { - return false; - } - - public double getFixedEffectOffset() { - return 0; + @Override + protected void loadSettings(CommentedFileConfiguration config) { + } } diff --git a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleOrbit.java b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleOrbit.java index a057fc1..803ab26 100644 --- a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleOrbit.java +++ b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleOrbit.java @@ -1,12 +1,13 @@ package dev.esophose.playerparticles.styles; +import dev.esophose.playerparticles.config.CommentedFileConfiguration; import dev.esophose.playerparticles.particles.PParticle; import dev.esophose.playerparticles.particles.ParticlePair; import java.util.ArrayList; import java.util.List; import org.bukkit.Location; -public class ParticleStyleOrbit implements ParticleStyle { +public class ParticleStyleOrbit extends DefaultParticleStyle { private static double[] cos, sin; private static final int orbs = 3; @@ -25,6 +26,11 @@ public class ParticleStyleOrbit implements ParticleStyle { } } + public ParticleStyleOrbit() { + super("orbit", true, true, 0); + } + + @Override public List getParticles(ParticlePair particle, Location location) { List particles = new ArrayList<>(); for (int i = 0; i < orbs; i++) { @@ -35,6 +41,7 @@ public class ParticleStyleOrbit implements ParticleStyle { return particles; } + @Override public void updateTimers() { step++; if (step > numSteps) { @@ -42,20 +49,14 @@ public class ParticleStyleOrbit implements ParticleStyle { } } - public String getName() { - return "orbit"; + @Override + protected void setDefaultSettings(CommentedFileConfiguration config) { + } - public boolean canBeFixed() { - return true; - } - - public boolean canToggleWithMovement() { - return true; - } - - public double getFixedEffectOffset() { - return 0; + @Override + protected void loadSettings(CommentedFileConfiguration config) { + } } diff --git a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleOverhead.java b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleOverhead.java index c814de8..7ad9283 100644 --- a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleOverhead.java +++ b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleOverhead.java @@ -1,13 +1,19 @@ package dev.esophose.playerparticles.styles; +import dev.esophose.playerparticles.config.CommentedFileConfiguration; import dev.esophose.playerparticles.particles.PParticle; import dev.esophose.playerparticles.particles.ParticlePair; import java.util.ArrayList; import java.util.List; import org.bukkit.Location; -public class ParticleStyleOverhead implements ParticleStyle { +public class ParticleStyleOverhead extends DefaultParticleStyle { + public ParticleStyleOverhead() { + super("overhead", true, false, -0.5); + } + + @Override public List getParticles(ParticlePair particle, Location location) { List particles = new ArrayList<>(); particles.add(new PParticle(location.clone().add(0, 1.75, 0), 0.4F, 0.1F, 0.4F, 0.0F)); @@ -15,24 +21,19 @@ public class ParticleStyleOverhead implements ParticleStyle { return particles; } + @Override public void updateTimers() { } - public String getName() { - return "overhead"; + @Override + protected void setDefaultSettings(CommentedFileConfiguration config) { + } - public boolean canBeFixed() { - return true; - } - - public boolean canToggleWithMovement() { - return false; - } - - public double getFixedEffectOffset() { - return -0.5; + @Override + protected void loadSettings(CommentedFileConfiguration config) { + } } diff --git a/src/main/java/dev/esophose/playerparticles/styles/ParticleStylePoint.java b/src/main/java/dev/esophose/playerparticles/styles/ParticleStylePoint.java index 02a4f7b..f2ad613 100644 --- a/src/main/java/dev/esophose/playerparticles/styles/ParticleStylePoint.java +++ b/src/main/java/dev/esophose/playerparticles/styles/ParticleStylePoint.java @@ -1,35 +1,36 @@ package dev.esophose.playerparticles.styles; +import dev.esophose.playerparticles.config.CommentedFileConfiguration; import dev.esophose.playerparticles.particles.PParticle; import dev.esophose.playerparticles.particles.ParticlePair; import java.util.Collections; import java.util.List; import org.bukkit.Location; -public class ParticleStylePoint implements ParticleStyle { +public class ParticleStylePoint extends DefaultParticleStyle { + public ParticleStylePoint() { + super("point", true, false, -0.5); + } + + @Override public List getParticles(ParticlePair particle, Location location) { return Collections.singletonList(new PParticle(location.clone().add(0.0, 1.5, 0.0))); } + @Override public void updateTimers() { } - public String getName() { - return "point"; + @Override + protected void setDefaultSettings(CommentedFileConfiguration config) { + } - public boolean canBeFixed() { - return true; - } - - public boolean canToggleWithMovement() { - return false; - } - - public double getFixedEffectOffset() { - return -0.5; + @Override + protected void loadSettings(CommentedFileConfiguration config) { + } } diff --git a/src/main/java/dev/esophose/playerparticles/styles/ParticleStylePopper.java b/src/main/java/dev/esophose/playerparticles/styles/ParticleStylePopper.java index b77a386..40e17aa 100644 --- a/src/main/java/dev/esophose/playerparticles/styles/ParticleStylePopper.java +++ b/src/main/java/dev/esophose/playerparticles/styles/ParticleStylePopper.java @@ -1,5 +1,6 @@ package dev.esophose.playerparticles.styles; +import dev.esophose.playerparticles.config.CommentedFileConfiguration; import dev.esophose.playerparticles.particles.PParticle; import dev.esophose.playerparticles.particles.ParticlePair; import java.util.ArrayList; @@ -7,7 +8,7 @@ import java.util.List; import org.bukkit.Location; import org.bukkit.util.Vector; -public class ParticleStylePopper implements ParticleStyle { +public class ParticleStylePopper extends DefaultParticleStyle { private double grow = 0.08f; private double radials = Math.PI / 16; @@ -15,6 +16,11 @@ public class ParticleStylePopper implements ParticleStyle { private int step = 0; private int maxStep = 35; + public ParticleStylePopper() { + super("popper", true, true, 0.5); + } + + @Override public List getParticles(ParticlePair particle, Location location) { List particles = new ArrayList<>(); @@ -35,24 +41,19 @@ public class ParticleStylePopper implements ParticleStyle { return particles; } + @Override public void updateTimers() { step = (step + 1) % maxStep; } - public String getName() { - return "popper"; + @Override + protected void setDefaultSettings(CommentedFileConfiguration config) { + } - public boolean canBeFixed() { - return true; - } - - public boolean canToggleWithMovement() { - return true; - } - - public double getFixedEffectOffset() { - return 0.5; + @Override + protected void loadSettings(CommentedFileConfiguration config) { + } } diff --git a/src/main/java/dev/esophose/playerparticles/styles/ParticleStylePulse.java b/src/main/java/dev/esophose/playerparticles/styles/ParticleStylePulse.java index 349275c..586b8af 100644 --- a/src/main/java/dev/esophose/playerparticles/styles/ParticleStylePulse.java +++ b/src/main/java/dev/esophose/playerparticles/styles/ParticleStylePulse.java @@ -1,5 +1,6 @@ package dev.esophose.playerparticles.styles; +import dev.esophose.playerparticles.config.CommentedFileConfiguration; import dev.esophose.playerparticles.particles.PParticle; import dev.esophose.playerparticles.particles.ParticleEffect; import dev.esophose.playerparticles.particles.ParticlePair; @@ -7,13 +8,18 @@ import java.util.ArrayList; import java.util.List; import org.bukkit.Location; -public class ParticleStylePulse implements ParticleStyle { +public class ParticleStylePulse extends DefaultParticleStyle { private int points = 50; private double radius = 0.5; private double step = 0; private int numSteps = 15; + public ParticleStylePulse() { + super("pulse", true, true, 0.5); + } + + @Override public List getParticles(ParticlePair particle, Location location) { List particles = new ArrayList<>(); double speed = getSpeedByEffect(particle.getEffect()); @@ -62,24 +68,19 @@ public class ParticleStylePulse implements ParticleStyle { } } + @Override public void updateTimers() { step = (step + 1) % numSteps; } - public String getName() { - return "pulse"; + @Override + protected void setDefaultSettings(CommentedFileConfiguration config) { + } - public boolean canBeFixed() { - return true; - } + @Override + protected void loadSettings(CommentedFileConfiguration config) { - public boolean canToggleWithMovement() { - return true; - } - - public double getFixedEffectOffset() { - return 0.5; } } diff --git a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleQuadhelix.java b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleQuadhelix.java index 04e9ca6..ba07df4 100644 --- a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleQuadhelix.java +++ b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleQuadhelix.java @@ -1,12 +1,13 @@ package dev.esophose.playerparticles.styles; +import dev.esophose.playerparticles.config.CommentedFileConfiguration; import dev.esophose.playerparticles.particles.PParticle; import dev.esophose.playerparticles.particles.ParticlePair; import java.util.ArrayList; import java.util.List; import org.bukkit.Location; -public class ParticleStyleQuadhelix implements ParticleStyle { +public class ParticleStyleQuadhelix extends DefaultParticleStyle { private static double[] cos, sin; private static final int orbs = 4; @@ -28,6 +29,11 @@ public class ParticleStyleQuadhelix implements ParticleStyle { } } + public ParticleStyleQuadhelix() { + super("quadhelix", true, true, 0); + } + + @Override public List getParticles(ParticlePair particle, Location location) { List particles = new ArrayList<>(); for (int i = 0; i < orbs; i++) { @@ -40,6 +46,7 @@ public class ParticleStyleQuadhelix implements ParticleStyle { return particles; } + @Override public void updateTimers() { stepX++; if (stepX > maxStepX) { @@ -54,20 +61,14 @@ public class ParticleStyleQuadhelix implements ParticleStyle { } } - public String getName() { - return "quadhelix"; + @Override + protected void setDefaultSettings(CommentedFileConfiguration config) { + } - public boolean canBeFixed() { - return true; - } - - public boolean canToggleWithMovement() { - return true; - } - - public double getFixedEffectOffset() { - return 0; + @Override + protected void loadSettings(CommentedFileConfiguration config) { + } } diff --git a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleRings.java b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleRings.java index c262a87..25ea2b8 100644 --- a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleRings.java +++ b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleRings.java @@ -1,12 +1,13 @@ package dev.esophose.playerparticles.styles; +import dev.esophose.playerparticles.config.CommentedFileConfiguration; import dev.esophose.playerparticles.particles.PParticle; import dev.esophose.playerparticles.particles.ParticlePair; import java.util.ArrayList; import java.util.List; import org.bukkit.Location; -public class ParticleStyleRings implements ParticleStyle { +public class ParticleStyleRings extends DefaultParticleStyle { private static double[] cos, sin; private int index = 0; @@ -23,6 +24,11 @@ public class ParticleStyleRings implements ParticleStyle { } } + public ParticleStyleRings() { + super("rings", true, true, 0); + } + + @Override public List getParticles(ParticlePair particle, Location location) { List particles = new ArrayList<>(); @@ -44,24 +50,19 @@ public class ParticleStyleRings implements ParticleStyle { return index % cos.length; } + @Override public void updateTimers() { index = (index + 1) % cos.length; } - public String getName() { - return "rings"; + @Override + protected void setDefaultSettings(CommentedFileConfiguration config) { + } - public boolean canBeFixed() { - return true; - } - - public boolean canToggleWithMovement() { - return true; - } - - public double getFixedEffectOffset() { - return 0; + @Override + protected void loadSettings(CommentedFileConfiguration config) { + } } diff --git a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleSphere.java b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleSphere.java index 423f8d7..31138a6 100644 --- a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleSphere.java +++ b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleSphere.java @@ -1,13 +1,19 @@ package dev.esophose.playerparticles.styles; +import dev.esophose.playerparticles.config.CommentedFileConfiguration; import dev.esophose.playerparticles.particles.PParticle; import dev.esophose.playerparticles.particles.ParticlePair; import java.util.ArrayList; import java.util.List; import org.bukkit.Location; -public class ParticleStyleSphere implements ParticleStyle { +public class ParticleStyleSphere extends DefaultParticleStyle { + public ParticleStyleSphere() { + super("sphere", true, true, 0); + } + + @Override public List getParticles(ParticlePair particle, Location location) { int density = 15; double radius = 1.5f; @@ -27,24 +33,19 @@ public class ParticleStyleSphere implements ParticleStyle { return particles; } + @Override public void updateTimers() { } - public String getName() { - return "sphere"; + @Override + protected void setDefaultSettings(CommentedFileConfiguration config) { + } - public boolean canBeFixed() { - return true; - } - - public boolean canToggleWithMovement() { - return true; - } - - public double getFixedEffectOffset() { - return 0; + @Override + protected void loadSettings(CommentedFileConfiguration config) { + } } diff --git a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleSpin.java b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleSpin.java index fbc4963..e23bfbd 100644 --- a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleSpin.java +++ b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleSpin.java @@ -1,12 +1,13 @@ package dev.esophose.playerparticles.styles; +import dev.esophose.playerparticles.config.CommentedFileConfiguration; import dev.esophose.playerparticles.particles.PParticle; import dev.esophose.playerparticles.particles.ParticlePair; import java.util.Collections; import java.util.List; import org.bukkit.Location; -public class ParticleStyleSpin implements ParticleStyle { +public class ParticleStyleSpin extends DefaultParticleStyle { private static double[] cos, sin; private static final int maxSteps = 30; @@ -24,6 +25,11 @@ public class ParticleStyleSpin implements ParticleStyle { } } + public ParticleStyleSpin() { + super("spin", true, true, -0.5); + } + + @Override public List getParticles(ParticlePair particle, Location location) { double radius = .5; double newX = location.getX() + radius * cos[step]; @@ -32,24 +38,19 @@ public class ParticleStyleSpin implements ParticleStyle { return Collections.singletonList(new PParticle(new Location(location.getWorld(), newX, newY, newZ))); } + @Override public void updateTimers() { step = (step + 1) % maxSteps; } - public String getName() { - return "spin"; + @Override + protected void setDefaultSettings(CommentedFileConfiguration config) { + } - public boolean canBeFixed() { - return true; - } - - public boolean canToggleWithMovement() { - return true; - } - - public double getFixedEffectOffset() { - return -0.5; + @Override + protected void loadSettings(CommentedFileConfiguration config) { + } } diff --git a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleSpiral.java b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleSpiral.java index 92288e4..34c6657 100644 --- a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleSpiral.java +++ b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleSpiral.java @@ -1,15 +1,21 @@ package dev.esophose.playerparticles.styles; +import dev.esophose.playerparticles.config.CommentedFileConfiguration; import dev.esophose.playerparticles.particles.PParticle; import dev.esophose.playerparticles.particles.ParticlePair; import java.util.ArrayList; import java.util.List; import org.bukkit.Location; -public class ParticleStyleSpiral implements ParticleStyle { +public class ParticleStyleSpiral extends DefaultParticleStyle { private int stepX = 0; + public ParticleStyleSpiral() { + super("spiral", true, true, 0); + } + + @Override public List getParticles(ParticlePair particle, Location location) { List particles = new ArrayList<>(); for (int stepY = -60; stepY < 60; stepY += 10) { @@ -21,24 +27,19 @@ public class ParticleStyleSpiral implements ParticleStyle { return particles; } + @Override public void updateTimers() { stepX++; } - public String getName() { - return "spiral"; + @Override + protected void setDefaultSettings(CommentedFileConfiguration config) { + } - public boolean canBeFixed() { - return true; - } - - public boolean canToggleWithMovement() { - return true; - } - - public double getFixedEffectOffset() { - return 0; + @Override + protected void loadSettings(CommentedFileConfiguration config) { + } } diff --git a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleSwords.java b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleSwords.java index cb9af8e..d38ec26 100644 --- a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleSwords.java +++ b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleSwords.java @@ -1,6 +1,7 @@ package dev.esophose.playerparticles.styles; import dev.esophose.playerparticles.PlayerParticles; +import dev.esophose.playerparticles.config.CommentedFileConfiguration; import dev.esophose.playerparticles.manager.DataManager; import dev.esophose.playerparticles.manager.ParticleManager; import dev.esophose.playerparticles.particles.PParticle; @@ -17,7 +18,7 @@ import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.entity.EntityDamageByEntityEvent; -public class ParticleStyleSwords implements ParticleStyle, Listener { +public class ParticleStyleSwords extends DefaultParticleStyle implements Listener { private static final List SWORD_NAMES; @@ -26,6 +27,11 @@ public class ParticleStyleSwords implements ParticleStyle, Listener { SWORD_NAMES.addAll(Arrays.asList("WOOD_SWORD", "STONE_SWORD", "IRON_SWORD", "GOLD_SWORD", "GOLDEN_SWORD", "DIAMOND_SWORD", "TRIDENT")); } + public ParticleStyleSwords() { + super("swords", false, false, 0); + } + + @Override public List getParticles(ParticlePair particle, Location location) { List baseParticles = DefaultStyles.NORMAL.getParticles(particle, location); @@ -38,24 +44,19 @@ public class ParticleStyleSwords implements ParticleStyle, Listener { return particles; } + @Override public void updateTimers() { } - public String getName() { - return "swords"; + @Override + protected void setDefaultSettings(CommentedFileConfiguration config) { + } - public boolean canBeFixed() { - return false; - } - - public boolean canToggleWithMovement() { - return false; - } - - public double getFixedEffectOffset() { - return 0; + @Override + protected void loadSettings(CommentedFileConfiguration config) { + } @EventHandler(priority = EventPriority.MONITOR) diff --git a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleThick.java b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleThick.java index a6e1270..7adb419 100644 --- a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleThick.java +++ b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleThick.java @@ -1,13 +1,19 @@ package dev.esophose.playerparticles.styles; +import dev.esophose.playerparticles.config.CommentedFileConfiguration; import dev.esophose.playerparticles.particles.PParticle; import dev.esophose.playerparticles.particles.ParticlePair; import java.util.ArrayList; import java.util.List; import org.bukkit.Location; -public class ParticleStyleThick implements ParticleStyle { +public class ParticleStyleThick extends DefaultParticleStyle { + public ParticleStyleThick() { + super("thick", true, true, 0); + } + + @Override public List getParticles(ParticlePair particle, Location location) { List baseParticles = DefaultStyles.NORMAL.getParticles(particle, location); @@ -20,24 +26,19 @@ public class ParticleStyleThick implements ParticleStyle { return particles; } + @Override public void updateTimers() { } - public String getName() { - return "thick"; + @Override + protected void setDefaultSettings(CommentedFileConfiguration config) { + } - public boolean canBeFixed() { - return true; - } - - public boolean canToggleWithMovement() { - return true; - } - - public double getFixedEffectOffset() { - return 0; + @Override + protected void loadSettings(CommentedFileConfiguration config) { + } } diff --git a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleTwins.java b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleTwins.java index b97a16d..e8f50c7 100644 --- a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleTwins.java +++ b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleTwins.java @@ -1,12 +1,13 @@ package dev.esophose.playerparticles.styles; +import dev.esophose.playerparticles.config.CommentedFileConfiguration; import dev.esophose.playerparticles.particles.PParticle; import dev.esophose.playerparticles.particles.ParticlePair; import java.util.ArrayList; import java.util.List; import org.bukkit.Location; -public class ParticleStyleTwins implements ParticleStyle { +public class ParticleStyleTwins extends DefaultParticleStyle { private static double[] cos, sin; private static final int orbs = 2; @@ -28,6 +29,11 @@ public class ParticleStyleTwins implements ParticleStyle { } } + public ParticleStyleTwins() { + super("twins", true, true, 0); + } + + @Override public List getParticles(ParticlePair particle, Location location) { List particles = new ArrayList<>(); for (int i = 0; i < orbs; i++) { @@ -39,6 +45,7 @@ public class ParticleStyleTwins implements ParticleStyle { return particles; } + @Override public void updateTimers() { stepX++; if (stepX > numSteps) { @@ -54,20 +61,14 @@ public class ParticleStyleTwins implements ParticleStyle { } } - public String getName() { - return "twins"; + @Override + protected void setDefaultSettings(CommentedFileConfiguration config) { + } - public boolean canBeFixed() { - return true; - } - - public boolean canToggleWithMovement() { - return true; - } - - public double getFixedEffectOffset() { - return 0; + @Override + protected void loadSettings(CommentedFileConfiguration config) { + } } diff --git a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleVortex.java b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleVortex.java index b3a57b2..b816760 100644 --- a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleVortex.java +++ b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleVortex.java @@ -23,6 +23,7 @@ */ package dev.esophose.playerparticles.styles; +import dev.esophose.playerparticles.config.CommentedFileConfiguration; import dev.esophose.playerparticles.particles.PParticle; import dev.esophose.playerparticles.particles.ParticlePair; import java.util.ArrayList; @@ -30,7 +31,7 @@ import java.util.List; import org.bukkit.Location; import org.bukkit.util.Vector; -public class ParticleStyleVortex implements ParticleStyle { +public class ParticleStyleVortex extends DefaultParticleStyle { private double grow = .05f; private double radials = Math.PI / 16; @@ -38,6 +39,11 @@ public class ParticleStyleVortex implements ParticleStyle { private int step = 0; private int maxStep = 70; + public ParticleStyleVortex() { + super("vortex", true, true, 0.5); + } + + @Override public List getParticles(ParticlePair particle, Location location) { List particles = new ArrayList<>(); @@ -52,24 +58,19 @@ public class ParticleStyleVortex implements ParticleStyle { return particles; } + @Override public void updateTimers() { step = (step + 1) % maxStep; } - public String getName() { - return "vortex"; + @Override + protected void setDefaultSettings(CommentedFileConfiguration config) { + } - public boolean canBeFixed() { - return true; - } - - public boolean canToggleWithMovement() { - return true; - } - - public double getFixedEffectOffset() { - return 0.5; + @Override + protected void loadSettings(CommentedFileConfiguration config) { + } } diff --git a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleWhirl.java b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleWhirl.java index f137f47..f0f5a0a 100644 --- a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleWhirl.java +++ b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleWhirl.java @@ -1,5 +1,6 @@ package dev.esophose.playerparticles.styles; +import dev.esophose.playerparticles.config.CommentedFileConfiguration; import dev.esophose.playerparticles.particles.PParticle; import dev.esophose.playerparticles.particles.ParticleEffect; import dev.esophose.playerparticles.particles.ParticlePair; @@ -7,12 +8,17 @@ import java.util.ArrayList; import java.util.List; import org.bukkit.Location; -public class ParticleStyleWhirl implements ParticleStyle { +public class ParticleStyleWhirl extends DefaultParticleStyle { private int points = 2; private double step = 0; private int numSteps = 40; + public ParticleStyleWhirl() { + super("whirl", true, true, 0.5); + } + + @Override public List getParticles(ParticlePair particle, Location location) { List particles = new ArrayList<>(); double speed = getSpeedByEffect(particle.getEffect()); @@ -59,24 +65,19 @@ public class ParticleStyleWhirl implements ParticleStyle { } } + @Override public void updateTimers() { step = (step + Math.PI * 2 / numSteps) % numSteps; } - public String getName() { - return "whirl"; + @Override + protected void setDefaultSettings(CommentedFileConfiguration config) { + } - public boolean canBeFixed() { - return true; - } - - public boolean canToggleWithMovement() { - return true; - } - - public double getFixedEffectOffset() { - return 0.5; + @Override + protected void loadSettings(CommentedFileConfiguration config) { + } } diff --git a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleWhirlwind.java b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleWhirlwind.java index 3c4b8fa..740deff 100644 --- a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleWhirlwind.java +++ b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleWhirlwind.java @@ -1,5 +1,6 @@ package dev.esophose.playerparticles.styles; +import dev.esophose.playerparticles.config.CommentedFileConfiguration; import dev.esophose.playerparticles.particles.PParticle; import dev.esophose.playerparticles.particles.ParticleEffect; import dev.esophose.playerparticles.particles.ParticlePair; @@ -7,12 +8,17 @@ import java.util.ArrayList; import java.util.List; import org.bukkit.Location; -public class ParticleStyleWhirlwind implements ParticleStyle { +public class ParticleStyleWhirlwind extends DefaultParticleStyle { private int points = 3; private double step = 0; private int numSteps = 40; + public ParticleStyleWhirlwind() { + super("whirlwind", true, true, 0.5); + } + + @Override public List getParticles(ParticlePair particle, Location location) { List particles = new ArrayList<>(); double speed = getSpeedByEffect(particle.getEffect()) * 2.5; @@ -60,24 +66,19 @@ public class ParticleStyleWhirlwind implements ParticleStyle { } } + @Override public void updateTimers() { step = (step + Math.PI * 2 / numSteps) % numSteps; } - public String getName() { - return "whirlwind"; + @Override + protected void setDefaultSettings(CommentedFileConfiguration config) { + } - public boolean canBeFixed() { - return true; - } - - public boolean canToggleWithMovement() { - return true; - } - - public double getFixedEffectOffset() { - return 0.5; + @Override + protected void loadSettings(CommentedFileConfiguration config) { + } } diff --git a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleWings.java b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleWings.java index 335784c..bcd1380 100644 --- a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleWings.java +++ b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleWings.java @@ -1,5 +1,6 @@ package dev.esophose.playerparticles.styles; +import dev.esophose.playerparticles.config.CommentedFileConfiguration; import dev.esophose.playerparticles.particles.PParticle; import dev.esophose.playerparticles.particles.ParticlePair; import dev.esophose.playerparticles.util.VectorUtils; @@ -8,10 +9,15 @@ import java.util.List; import org.bukkit.Location; import org.bukkit.util.Vector; -public class ParticleStyleWings implements ParticleStyle { +public class ParticleStyleWings extends DefaultParticleStyle { private int spawnTimer = 0; // Spawn particles every 3 ticks + public ParticleStyleWings() { + super("wings", false, true, 0); + } + + @Override public List getParticles(ParticlePair particle, Location location) { List particles = new ArrayList<>(); if (spawnTimer == 0) { @@ -26,25 +32,20 @@ public class ParticleStyleWings implements ParticleStyle { return particles; } + @Override public void updateTimers() { spawnTimer++; spawnTimer %= 3; } - public String getName() { - return "wings"; + @Override + protected void setDefaultSettings(CommentedFileConfiguration config) { + } - public boolean canBeFixed() { - return false; - } - - public boolean canToggleWithMovement() { - return true; - } - - public double getFixedEffectOffset() { - return 0; + @Override + protected void loadSettings(CommentedFileConfiguration config) { + } }