mirror of
https://github.com/TotalFreedomMC/PlayerParticles.git
synced 2025-08-06 20:42:56 +00:00
Add initial settings files for particle styles
This commit is contained in:
parent
f7b4a38b68
commit
950a39f6d6
43 changed files with 660 additions and 451 deletions
|
@ -2,17 +2,19 @@
|
||||||
* TODO: v7.0
|
* TODO: v7.0
|
||||||
* + Add ability to create/manage fixed effects from the GUI
|
* + Add ability to create/manage fixed effects from the GUI
|
||||||
* * Convert fixed effect ids into names
|
* * Convert fixed effect ids into names
|
||||||
* + Add command '/pp fixed teleport <id>' 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 name customization through config files
|
||||||
* + Add effect/style settings folder that lets you disable effects/style and edit style properties
|
* + Add effect/style settings folder that lets you disable effects/style and edit style properties
|
||||||
* + Add setting to disable particles while in combat
|
* + Add setting to disable particles while in combat
|
||||||
* + Add a command aliases section to the config
|
* + Add a command aliases section to the config
|
||||||
* * /ppo now uses your permissions instead of the player you are targetting
|
* * /ppo now uses your permissions instead of the player you are targetting
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
* + Added a setting 'dust-size' to change the size of dust particles in 1.13+
|
||||||
|
* * Cleaned up duplicated command parsing
|
||||||
|
* + Added command '/pp fixed teleport <id>' 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
|
* + Added an API, accessible through the dev.esophose.playerparticles.api.PlayerParticlesAPI class
|
||||||
* * Refactored the DataManager to only handle saving/loading data
|
* * Refactored the DataManager to only handle saving/loading data
|
||||||
* * Refactored and cleaned up code to remove static abuse
|
* * 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
|
* Renamed command-error-no-effects to command-error-missing-effects-or-styles
|
||||||
* Changed message for command-error-missing-effects-or-styles
|
* Changed message for command-error-missing-effects-or-styles
|
||||||
* Added message gui-no-permission
|
* Added message gui-no-permission
|
||||||
*
|
* Added messages for fixed particles under the section #23.5
|
||||||
* NEEDS TRANSLATING:
|
|
||||||
* SECTION TITLED this.put("#23.5", "Fixed Teleport Message");
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package dev.esophose.playerparticles;
|
package dev.esophose.playerparticles;
|
||||||
|
|
|
@ -25,8 +25,8 @@ public class ListCommandModule implements CommandModule {
|
||||||
localeManager.sendMessage(pplayer, "list-you-have");
|
localeManager.sendMessage(pplayer, "list-you-have");
|
||||||
for (ParticlePair particle : particles) {
|
for (ParticlePair particle : particles) {
|
||||||
StringPlaceholders stringPlaceholders = StringPlaceholders.builder("id", particle.getId())
|
StringPlaceholders stringPlaceholders = StringPlaceholders.builder("id", particle.getId())
|
||||||
.addPlaceholder("effect", particle.getEffect())
|
.addPlaceholder("effect", particle.getEffect().getName())
|
||||||
.addPlaceholder("style", particle.getStyle())
|
.addPlaceholder("style", particle.getStyle().getName())
|
||||||
.addPlaceholder("data", particle.getDataString())
|
.addPlaceholder("data", particle.getDataString())
|
||||||
.build();
|
.build();
|
||||||
localeManager.sendMessage(pplayer, "list-output", stringPlaceholders);
|
localeManager.sendMessage(pplayer, "list-output", stringPlaceholders);
|
||||||
|
|
|
@ -2,19 +2,23 @@ package dev.esophose.playerparticles.command;
|
||||||
|
|
||||||
import dev.esophose.playerparticles.PlayerParticles;
|
import dev.esophose.playerparticles.PlayerParticles;
|
||||||
import dev.esophose.playerparticles.manager.LocaleManager;
|
import dev.esophose.playerparticles.manager.LocaleManager;
|
||||||
|
import dev.esophose.playerparticles.manager.ParticleStyleManager;
|
||||||
import dev.esophose.playerparticles.manager.PermissionManager;
|
import dev.esophose.playerparticles.manager.PermissionManager;
|
||||||
import dev.esophose.playerparticles.particles.PPlayer;
|
import dev.esophose.playerparticles.particles.PPlayer;
|
||||||
|
import dev.esophose.playerparticles.styles.DefaultStyles;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class ReloadCommandModule implements CommandModule {
|
public class ReloadCommandModule implements CommandModule {
|
||||||
|
|
||||||
public void onCommandExecute(PPlayer pplayer, String[] args) {
|
public void onCommandExecute(PPlayer pplayer, String[] args) {
|
||||||
LocaleManager localeManager = PlayerParticles.getInstance().getManager(LocaleManager.class);
|
PlayerParticles playerParticles = PlayerParticles.getInstance();
|
||||||
if (PlayerParticles.getInstance().getManager(PermissionManager.class).canReloadPlugin(pplayer.getMessageDestination())) {
|
LocaleManager localeManager = playerParticles.getManager(LocaleManager.class);
|
||||||
PlayerParticles.getInstance().reload();
|
if (playerParticles.getManager(PermissionManager.class).canReloadPlugin(pplayer.getMessageDestination())) {
|
||||||
|
playerParticles.reload();
|
||||||
|
DefaultStyles.reloadSettings(playerParticles.getManager(ParticleStyleManager.class));
|
||||||
localeManager.sendMessage(pplayer, "reload-success");
|
localeManager.sendMessage(pplayer, "reload-success");
|
||||||
PlayerParticles.getInstance().getLogger().info("Reloaded configuration.");
|
playerParticles.getLogger().info("Reloaded configuration.");
|
||||||
} else {
|
} else {
|
||||||
localeManager.sendMessage(pplayer, "reload-no-permission");
|
localeManager.sendMessage(pplayer, "reload-no-permission");
|
||||||
}
|
}
|
||||||
|
|
|
@ -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_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?"),
|
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"),
|
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_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"),
|
MYSQL_ENABLED("mysql-settings.enabled", false, "Enable MySQL", "If false, SQLite will be used instead"),
|
||||||
|
|
|
@ -18,7 +18,9 @@ import java.sql.PreparedStatement;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
@ -136,6 +138,7 @@ public class DataManager extends Manager {
|
||||||
try (PreparedStatement statement = connection.prepareStatement(groupQuery)) {
|
try (PreparedStatement statement = connection.prepareStatement(groupQuery)) {
|
||||||
statement.setString(1, playerUUID.toString());
|
statement.setString(1, playerUUID.toString());
|
||||||
|
|
||||||
|
Set<String> modifiedGroups = new HashSet<>();
|
||||||
ResultSet result = statement.executeQuery();
|
ResultSet result = statement.executeQuery();
|
||||||
while (result.next()) {
|
while (result.next()) {
|
||||||
// Group properties
|
// Group properties
|
||||||
|
@ -151,11 +154,16 @@ public class DataManager extends Manager {
|
||||||
OrdinaryColor color = new OrdinaryColor(result.getInt("r"), result.getInt("g"), result.getInt("b"));
|
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);
|
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
|
// Try to add particle to an existing group
|
||||||
boolean groupAlreadyExists = false;
|
boolean groupAlreadyExists = false;
|
||||||
for (ParticleGroup group : groups.values()) {
|
for (ParticleGroup group : groups.values()) {
|
||||||
if (group.getName().equalsIgnoreCase(groupName)) {
|
if (group.getName().equalsIgnoreCase(groupName)) {
|
||||||
group.getParticles().put(particle.getId(), particle);
|
if (!invalid)
|
||||||
|
group.getParticles().put(particle.getId(), particle);
|
||||||
groupAlreadyExists = true;
|
groupAlreadyExists = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -164,11 +172,20 @@ public class DataManager extends Manager {
|
||||||
// Add the particle to a new group if one didn't already exist
|
// Add the particle to a new group if one didn't already exist
|
||||||
if (!groupAlreadyExists) {
|
if (!groupAlreadyExists) {
|
||||||
HashMap<Integer, ParticlePair> particles = new HashMap<>();
|
HashMap<Integer, ParticlePair> particles = new HashMap<>();
|
||||||
particles.put(particle.getId(), particle);
|
if (!invalid)
|
||||||
|
particles.put(particle.getId(), particle);
|
||||||
ParticleGroup newGroup = new ParticleGroup(groupName, particles);
|
ParticleGroup newGroup = new ParticleGroup(groupName, particles);
|
||||||
groups.put(newGroup.getName().toLowerCase(), newGroup);
|
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
|
// 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"));
|
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);
|
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));
|
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 playerUUID The owner of the group
|
||||||
* @param group The group to create/update
|
* @param group The group to create/update
|
||||||
*/
|
*/
|
||||||
public void saveParticleGroup(UUID playerUUID, ParticleGroup group) {
|
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) -> {
|
this.async(() -> this.databaseConnector.connect((connection) -> {
|
||||||
String groupUUID;
|
String groupUUID;
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@ import dev.esophose.playerparticles.styles.DefaultStyles;
|
||||||
import dev.esophose.playerparticles.styles.ParticleStyle;
|
import dev.esophose.playerparticles.styles.ParticleStyle;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class ParticleStyleManager extends Manager {
|
public class ParticleStyleManager extends Manager {
|
||||||
|
|
||||||
|
@ -82,11 +83,16 @@ public class ParticleStyleManager extends Manager {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets all registered styles
|
* @return A List of styles that are registered and enabled
|
||||||
*
|
|
||||||
* @return A List of ParticleStyles that are registered
|
|
||||||
*/
|
*/
|
||||||
public List<ParticleStyle> getStyles() {
|
public List<ParticleStyle> getStyles() {
|
||||||
|
return this.styles.stream().filter(ParticleStyle::isEnabled).collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return all registered styles, regardless if they are enabled or not
|
||||||
|
*/
|
||||||
|
public List<ParticleStyle> getStylesWithDisabled() {
|
||||||
return this.styles;
|
return this.styles;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -200,7 +200,7 @@ public class PermissionManager extends Manager {
|
||||||
*/
|
*/
|
||||||
public List<String> getEffectNamesUserHasPermissionFor(Player p) {
|
public List<String> getEffectNamesUserHasPermissionFor(Player p) {
|
||||||
List<String> list = new ArrayList<>();
|
List<String> list = new ArrayList<>();
|
||||||
for (ParticleEffect pe : ParticleEffect.getSupportedEffects())
|
for (ParticleEffect pe : ParticleEffect.getEnabledEffects())
|
||||||
if (this.hasEffectPermission(p, pe))
|
if (this.hasEffectPermission(p, pe))
|
||||||
list.add(pe.getName());
|
list.add(pe.getName());
|
||||||
return list;
|
return list;
|
||||||
|
@ -242,7 +242,7 @@ public class PermissionManager extends Manager {
|
||||||
*/
|
*/
|
||||||
public List<ParticleEffect> getEffectsUserHasPermissionFor(Player p) {
|
public List<ParticleEffect> getEffectsUserHasPermissionFor(Player p) {
|
||||||
List<ParticleEffect> list = new ArrayList<>();
|
List<ParticleEffect> list = new ArrayList<>();
|
||||||
for (ParticleEffect pe : ParticleEffect.getSupportedEffects())
|
for (ParticleEffect pe : ParticleEffect.getEnabledEffects())
|
||||||
if (this.hasEffectPermission(p, pe))
|
if (this.hasEffectPermission(p, pe))
|
||||||
list.add(pe);
|
list.add(pe);
|
||||||
return list;
|
return list;
|
||||||
|
|
|
@ -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<ParticleEffect> getSupportedEffects() {
|
public static List<ParticleEffect> getEnabledEffects() {
|
||||||
List<ParticleEffect> effects = new ArrayList<>();
|
List<ParticleEffect> effects = new ArrayList<>();
|
||||||
for (ParticleEffect pe : values())
|
for (ParticleEffect pe : values())
|
||||||
if (pe.isSupported())
|
if (pe.isSupported())
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
}
|
|
@ -93,4 +93,13 @@ public class DefaultStyles {
|
||||||
pluginManager.registerEvents((Listener) SWORDS, playerParticles);
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,6 +23,11 @@ public interface ParticleStyle {
|
||||||
*/
|
*/
|
||||||
void updateTimers();
|
void updateTimers();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return true if the style is enabled, false otherwise
|
||||||
|
*/
|
||||||
|
boolean isEnabled();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The name of the style
|
* The name of the style
|
||||||
*
|
*
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package dev.esophose.playerparticles.styles;
|
package dev.esophose.playerparticles.styles;
|
||||||
|
|
||||||
|
import dev.esophose.playerparticles.config.CommentedFileConfiguration;
|
||||||
import dev.esophose.playerparticles.particles.PParticle;
|
import dev.esophose.playerparticles.particles.PParticle;
|
||||||
import dev.esophose.playerparticles.particles.ParticlePair;
|
import dev.esophose.playerparticles.particles.ParticlePair;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
@ -13,12 +14,17 @@ import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.entity.EntityShootBowEvent;
|
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 String[] arrowEntityNames = new String[] { "ARROW", "SPECTRAL_ARROW", "TIPPED_ARROW" };
|
||||||
private static final int MAX_ARROWS_PER_PLAYER = 10;
|
private static final int MAX_ARROWS_PER_PLAYER = 10;
|
||||||
private List<Projectile> arrows = new ArrayList<>();
|
private List<Projectile> arrows = new ArrayList<>();
|
||||||
|
|
||||||
|
public ParticleStyleArrows() {
|
||||||
|
super("arrows", false, false, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public List<PParticle> getParticles(ParticlePair particle, Location location) {
|
public List<PParticle> getParticles(ParticlePair particle, Location location) {
|
||||||
List<PParticle> particles = new ArrayList<>();
|
List<PParticle> particles = new ArrayList<>();
|
||||||
|
|
||||||
|
@ -40,6 +46,7 @@ public class ParticleStyleArrows implements ParticleStyle, Listener {
|
||||||
/**
|
/**
|
||||||
* Removes all arrows that are considered dead
|
* Removes all arrows that are considered dead
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public void updateTimers() {
|
public void updateTimers() {
|
||||||
for (int i = this.arrows.size() - 1; i >= 0; i--) {
|
for (int i = this.arrows.size() - 1; i >= 0; i--) {
|
||||||
Projectile arrow = this.arrows.get(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
|
* The event used to get all arrows fired by players
|
||||||
* Adds all arrows fired from players to the array
|
* 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());
|
this.arrows.add((Projectile) e.getProjectile());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void setDefaultSettings(CommentedFileConfiguration config) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void loadSettings(CommentedFileConfiguration config) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package dev.esophose.playerparticles.styles;
|
package dev.esophose.playerparticles.styles;
|
||||||
|
|
||||||
|
import dev.esophose.playerparticles.config.CommentedFileConfiguration;
|
||||||
import dev.esophose.playerparticles.particles.PParticle;
|
import dev.esophose.playerparticles.particles.PParticle;
|
||||||
import dev.esophose.playerparticles.particles.ParticlePair;
|
import dev.esophose.playerparticles.particles.ParticlePair;
|
||||||
import dev.esophose.playerparticles.util.VectorUtils;
|
import dev.esophose.playerparticles.util.VectorUtils;
|
||||||
|
@ -8,10 +9,15 @@ import java.util.List;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.util.Vector;
|
import org.bukkit.util.Vector;
|
||||||
|
|
||||||
public class ParticleStyleBatman implements ParticleStyle {
|
public class ParticleStyleBatman extends DefaultParticleStyle {
|
||||||
|
|
||||||
private int step = 0;
|
private int step = 0;
|
||||||
|
|
||||||
|
public ParticleStyleBatman() {
|
||||||
|
super("batman", true, true, -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public List<PParticle> getParticles(ParticlePair particle, Location location) {
|
public List<PParticle> getParticles(ParticlePair particle, Location location) {
|
||||||
List<PParticle> particles = new ArrayList<>();
|
List<PParticle> particles = new ArrayList<>();
|
||||||
|
|
||||||
|
@ -106,24 +112,19 @@ public class ParticleStyleBatman implements ParticleStyle {
|
||||||
return particles;
|
return particles;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void updateTimers() {
|
public void updateTimers() {
|
||||||
step = (step + 1) % 20; // Only spawn once per second
|
step = (step + 1) % 20; // Only spawn once per second
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getName() {
|
@Override
|
||||||
return "batman";
|
protected void setDefaultSettings(CommentedFileConfiguration config) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canBeFixed() {
|
@Override
|
||||||
return true;
|
protected void loadSettings(CommentedFileConfiguration config) {
|
||||||
}
|
|
||||||
|
|
||||||
public boolean canToggleWithMovement() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getFixedEffectOffset() {
|
|
||||||
return -1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,12 +1,13 @@
|
||||||
package dev.esophose.playerparticles.styles;
|
package dev.esophose.playerparticles.styles;
|
||||||
|
|
||||||
|
import dev.esophose.playerparticles.config.CommentedFileConfiguration;
|
||||||
import dev.esophose.playerparticles.particles.PParticle;
|
import dev.esophose.playerparticles.particles.PParticle;
|
||||||
import dev.esophose.playerparticles.particles.ParticlePair;
|
import dev.esophose.playerparticles.particles.ParticlePair;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
|
||||||
public class ParticleStyleBeam implements ParticleStyle {
|
public class ParticleStyleBeam extends DefaultParticleStyle {
|
||||||
|
|
||||||
private static double[] cos, sin;
|
private static double[] cos, sin;
|
||||||
private static final int points = 16;
|
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<PParticle> getParticles(ParticlePair particle, Location location) {
|
public List<PParticle> getParticles(ParticlePair particle, Location location) {
|
||||||
double radius = 1;
|
double radius = 1;
|
||||||
List<PParticle> particles = new ArrayList<>();
|
List<PParticle> particles = new ArrayList<>();
|
||||||
|
@ -37,6 +43,7 @@ public class ParticleStyleBeam implements ParticleStyle {
|
||||||
return particles;
|
return particles;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void updateTimers() {
|
public void updateTimers() {
|
||||||
if (!reversed) step++;
|
if (!reversed) step++;
|
||||||
else step--;
|
else step--;
|
||||||
|
@ -48,20 +55,14 @@ public class ParticleStyleBeam implements ParticleStyle {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getName() {
|
@Override
|
||||||
return "beam";
|
protected void setDefaultSettings(CommentedFileConfiguration config) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canBeFixed() {
|
@Override
|
||||||
return true;
|
protected void loadSettings(CommentedFileConfiguration config) {
|
||||||
}
|
|
||||||
|
|
||||||
public boolean canToggleWithMovement() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getFixedEffectOffset() {
|
|
||||||
return 0.5;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package dev.esophose.playerparticles.styles;
|
package dev.esophose.playerparticles.styles;
|
||||||
|
|
||||||
import dev.esophose.playerparticles.PlayerParticles;
|
import dev.esophose.playerparticles.PlayerParticles;
|
||||||
|
import dev.esophose.playerparticles.config.CommentedFileConfiguration;
|
||||||
import dev.esophose.playerparticles.manager.DataManager;
|
import dev.esophose.playerparticles.manager.DataManager;
|
||||||
import dev.esophose.playerparticles.manager.ParticleManager;
|
import dev.esophose.playerparticles.manager.ParticleManager;
|
||||||
import dev.esophose.playerparticles.particles.PParticle;
|
import dev.esophose.playerparticles.particles.PParticle;
|
||||||
|
@ -15,8 +16,13 @@ import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.block.BlockBreakEvent;
|
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<PParticle> getParticles(ParticlePair particle, Location location) {
|
public List<PParticle> getParticles(ParticlePair particle, Location location) {
|
||||||
List<PParticle> particles = new ArrayList<>();
|
List<PParticle> particles = new ArrayList<>();
|
||||||
|
|
||||||
|
@ -28,24 +34,19 @@ public class ParticleStyleBlockBreak implements ParticleStyle, Listener {
|
||||||
return particles;
|
return particles;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void updateTimers() {
|
public void updateTimers() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getName() {
|
@Override
|
||||||
return "blockbreak";
|
protected void setDefaultSettings(CommentedFileConfiguration config) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canBeFixed() {
|
@Override
|
||||||
return false;
|
protected void loadSettings(CommentedFileConfiguration config) {
|
||||||
}
|
|
||||||
|
|
||||||
public boolean canToggleWithMovement() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getFixedEffectOffset() {
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.MONITOR)
|
@EventHandler(priority = EventPriority.MONITOR)
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package dev.esophose.playerparticles.styles;
|
package dev.esophose.playerparticles.styles;
|
||||||
|
|
||||||
import dev.esophose.playerparticles.PlayerParticles;
|
import dev.esophose.playerparticles.PlayerParticles;
|
||||||
|
import dev.esophose.playerparticles.config.CommentedFileConfiguration;
|
||||||
import dev.esophose.playerparticles.manager.DataManager;
|
import dev.esophose.playerparticles.manager.DataManager;
|
||||||
import dev.esophose.playerparticles.manager.ParticleManager;
|
import dev.esophose.playerparticles.manager.ParticleManager;
|
||||||
import dev.esophose.playerparticles.particles.PParticle;
|
import dev.esophose.playerparticles.particles.PParticle;
|
||||||
|
@ -15,8 +16,13 @@ import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.block.BlockPlaceEvent;
|
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<PParticle> getParticles(ParticlePair particle, Location location) {
|
public List<PParticle> getParticles(ParticlePair particle, Location location) {
|
||||||
List<PParticle> particles = new ArrayList<>();
|
List<PParticle> particles = new ArrayList<>();
|
||||||
|
|
||||||
|
@ -28,24 +34,19 @@ public class ParticleStyleBlockPlace implements ParticleStyle, Listener {
|
||||||
return particles;
|
return particles;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void updateTimers() {
|
public void updateTimers() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getName() {
|
@Override
|
||||||
return "blockplace";
|
protected void setDefaultSettings(CommentedFileConfiguration config) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canBeFixed() {
|
@Override
|
||||||
return false;
|
protected void loadSettings(CommentedFileConfiguration config) {
|
||||||
}
|
|
||||||
|
|
||||||
public boolean canToggleWithMovement() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getFixedEffectOffset() {
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.MONITOR)
|
@EventHandler(priority = EventPriority.MONITOR)
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package dev.esophose.playerparticles.styles;
|
package dev.esophose.playerparticles.styles;
|
||||||
|
|
||||||
import dev.esophose.playerparticles.PlayerParticles;
|
import dev.esophose.playerparticles.PlayerParticles;
|
||||||
|
import dev.esophose.playerparticles.config.CommentedFileConfiguration;
|
||||||
import dev.esophose.playerparticles.manager.ParticleManager;
|
import dev.esophose.playerparticles.manager.ParticleManager;
|
||||||
import dev.esophose.playerparticles.manager.PermissionManager;
|
import dev.esophose.playerparticles.manager.PermissionManager;
|
||||||
import dev.esophose.playerparticles.particles.FixedParticleEffect;
|
import dev.esophose.playerparticles.particles.FixedParticleEffect;
|
||||||
|
@ -17,11 +18,16 @@ import org.bukkit.Location;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.scheduler.BukkitRunnable;
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
|
|
||||||
public class ParticleStyleCelebration implements ParticleStyle {
|
public class ParticleStyleCelebration extends DefaultParticleStyle {
|
||||||
|
|
||||||
private int step = 0;
|
private int step = 0;
|
||||||
private final int spawnTime = 15;
|
private final int spawnTime = 15;
|
||||||
|
|
||||||
|
public ParticleStyleCelebration() {
|
||||||
|
super("celebration", true, true, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public List<PParticle> getParticles(ParticlePair particle, Location location) {
|
public List<PParticle> getParticles(ParticlePair particle, Location location) {
|
||||||
return new ArrayList<>();
|
return new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
@ -30,6 +36,7 @@ public class ParticleStyleCelebration implements ParticleStyle {
|
||||||
* Spawns fireworks every spawnTime number of ticks
|
* Spawns fireworks every spawnTime number of ticks
|
||||||
* This style uses two different effects, one is always 'firework'
|
* This style uses two different effects, one is always 'firework'
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public void updateTimers() {
|
public void updateTimers() {
|
||||||
PermissionManager permissionManager = PlayerParticles.getInstance().getManager(PermissionManager.class);
|
PermissionManager permissionManager = PlayerParticles.getInstance().getManager(PermissionManager.class);
|
||||||
ParticleManager particleManager = PlayerParticles.getInstance().getManager(ParticleManager.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) {
|
private void spawnFirework(final Location location, final PPlayer pplayer, final ParticlePair particle, final Random random) {
|
||||||
double angle = random.nextDouble() * Math.PI * 2;
|
double angle = random.nextDouble() * Math.PI * 2;
|
||||||
|
@ -99,20 +116,4 @@ public class ParticleStyleCelebration implements ParticleStyle {
|
||||||
}.runTaskTimer(PlayerParticles.getInstance(), 0, 1);
|
}.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;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,13 +1,19 @@
|
||||||
package dev.esophose.playerparticles.styles;
|
package dev.esophose.playerparticles.styles;
|
||||||
|
|
||||||
|
import dev.esophose.playerparticles.config.CommentedFileConfiguration;
|
||||||
import dev.esophose.playerparticles.particles.PParticle;
|
import dev.esophose.playerparticles.particles.PParticle;
|
||||||
import dev.esophose.playerparticles.particles.ParticlePair;
|
import dev.esophose.playerparticles.particles.ParticlePair;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
|
||||||
public class ParticleStyleChains implements ParticleStyle {
|
public class ParticleStyleChains extends DefaultParticleStyle {
|
||||||
|
|
||||||
|
public ParticleStyleChains() {
|
||||||
|
super("chains", true, true, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public List<PParticle> getParticles(ParticlePair particle, Location location) {
|
public List<PParticle> getParticles(ParticlePair particle, Location location) {
|
||||||
List<PParticle> particles = new ArrayList<>();
|
List<PParticle> particles = new ArrayList<>();
|
||||||
|
|
||||||
|
@ -21,24 +27,19 @@ public class ParticleStyleChains implements ParticleStyle {
|
||||||
return particles;
|
return particles;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void updateTimers() {
|
public void updateTimers() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getName() {
|
@Override
|
||||||
return "chains";
|
protected void setDefaultSettings(CommentedFileConfiguration config) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canBeFixed() {
|
@Override
|
||||||
return true;
|
protected void loadSettings(CommentedFileConfiguration config) {
|
||||||
}
|
|
||||||
|
|
||||||
public boolean canToggleWithMovement() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getFixedEffectOffset() {
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
*/
|
*/
|
||||||
package dev.esophose.playerparticles.styles;
|
package dev.esophose.playerparticles.styles;
|
||||||
|
|
||||||
|
import dev.esophose.playerparticles.config.CommentedFileConfiguration;
|
||||||
import dev.esophose.playerparticles.particles.PParticle;
|
import dev.esophose.playerparticles.particles.PParticle;
|
||||||
import dev.esophose.playerparticles.particles.ParticlePair;
|
import dev.esophose.playerparticles.particles.ParticlePair;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
@ -30,7 +31,7 @@ import java.util.List;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.util.Vector;
|
import org.bukkit.util.Vector;
|
||||||
|
|
||||||
public class ParticleStyleCompanion implements ParticleStyle {
|
public class ParticleStyleCompanion extends DefaultParticleStyle {
|
||||||
|
|
||||||
private int numParticles = 150;
|
private int numParticles = 150;
|
||||||
private int particlesPerIteration = 5;
|
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 double xOffset = 0.0, yOffset = -0.75, zOffset = 0.0;
|
||||||
private int step = 0;
|
private int step = 0;
|
||||||
|
|
||||||
|
public ParticleStyleCompanion() {
|
||||||
|
super("companion", true, false, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public List<PParticle> getParticles(ParticlePair particle, Location location) {
|
public List<PParticle> getParticles(ParticlePair particle, Location location) {
|
||||||
List<PParticle> particles = new ArrayList<>();
|
List<PParticle> particles = new ArrayList<>();
|
||||||
|
|
||||||
|
@ -59,24 +65,19 @@ public class ParticleStyleCompanion implements ParticleStyle {
|
||||||
return particles;
|
return particles;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void updateTimers() {
|
public void updateTimers() {
|
||||||
step++;
|
step++;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getName() {
|
@Override
|
||||||
return "companion";
|
protected void setDefaultSettings(CommentedFileConfiguration config) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canBeFixed() {
|
@Override
|
||||||
return true;
|
protected void loadSettings(CommentedFileConfiguration config) {
|
||||||
}
|
|
||||||
|
|
||||||
public boolean canToggleWithMovement() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getFixedEffectOffset() {
|
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
*/
|
*/
|
||||||
package dev.esophose.playerparticles.styles;
|
package dev.esophose.playerparticles.styles;
|
||||||
|
|
||||||
|
import dev.esophose.playerparticles.config.CommentedFileConfiguration;
|
||||||
import dev.esophose.playerparticles.particles.PParticle;
|
import dev.esophose.playerparticles.particles.PParticle;
|
||||||
import dev.esophose.playerparticles.particles.ParticlePair;
|
import dev.esophose.playerparticles.particles.ParticlePair;
|
||||||
import dev.esophose.playerparticles.util.VectorUtils;
|
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:
|
* The project this is from is called EffectLib and can be found here:
|
||||||
* https://github.com/Slikey/EffectLib
|
* https://github.com/Slikey/EffectLib
|
||||||
*/
|
*/
|
||||||
public class ParticleStyleCube implements ParticleStyle {
|
public class ParticleStyleCube extends DefaultParticleStyle {
|
||||||
|
|
||||||
private double edgeLength = 2;
|
private double edgeLength = 2;
|
||||||
private double angularVelocityX = (Math.PI / 200) / 5;
|
private double angularVelocityX = (Math.PI / 200) / 5;
|
||||||
|
@ -46,6 +47,11 @@ public class ParticleStyleCube implements ParticleStyle {
|
||||||
private int step = 0;
|
private int step = 0;
|
||||||
private boolean skipNextStep = false; // Only spawn every 2 ticks
|
private boolean skipNextStep = false; // Only spawn every 2 ticks
|
||||||
|
|
||||||
|
public ParticleStyleCube() {
|
||||||
|
super("cube", true, true, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public List<PParticle> getParticles(ParticlePair particle, Location location) {
|
public List<PParticle> getParticles(ParticlePair particle, Location location) {
|
||||||
List<PParticle> pparticles = new ArrayList<>();
|
List<PParticle> pparticles = new ArrayList<>();
|
||||||
|
|
||||||
|
@ -83,25 +89,20 @@ public class ParticleStyleCube implements ParticleStyle {
|
||||||
return pparticles;
|
return pparticles;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void updateTimers() {
|
public void updateTimers() {
|
||||||
skipNextStep = !skipNextStep;
|
skipNextStep = !skipNextStep;
|
||||||
step++;
|
step++;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getName() {
|
@Override
|
||||||
return "cube";
|
protected void setDefaultSettings(CommentedFileConfiguration config) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canBeFixed() {
|
@Override
|
||||||
return true;
|
protected void loadSettings(CommentedFileConfiguration config) {
|
||||||
}
|
|
||||||
|
|
||||||
public boolean canToggleWithMovement() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getFixedEffectOffset() {
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,37 +1,38 @@
|
||||||
package dev.esophose.playerparticles.styles;
|
package dev.esophose.playerparticles.styles;
|
||||||
|
|
||||||
|
import dev.esophose.playerparticles.config.CommentedFileConfiguration;
|
||||||
import dev.esophose.playerparticles.particles.PParticle;
|
import dev.esophose.playerparticles.particles.PParticle;
|
||||||
import dev.esophose.playerparticles.particles.ParticlePair;
|
import dev.esophose.playerparticles.particles.ParticlePair;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import org.bukkit.Location;
|
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<PParticle> getParticles(ParticlePair particle, Location location) {
|
public List<PParticle> getParticles(ParticlePair particle, Location location) {
|
||||||
List<PParticle> particles = new ArrayList<>();
|
List<PParticle> particles = new ArrayList<>();
|
||||||
particles.add(new PParticle(location.clone().subtract(0, 0.95, 0), 0.4F, 0.0F, 0.4F, 0.0F));
|
particles.add(new PParticle(location.clone().subtract(0, 0.95, 0), 0.4F, 0.0F, 0.4F, 0.0F));
|
||||||
return particles;
|
return particles;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void updateTimers() {
|
public void updateTimers() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getName() {
|
@Override
|
||||||
return "feet";
|
protected void setDefaultSettings(CommentedFileConfiguration config) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canBeFixed() {
|
@Override
|
||||||
return true;
|
protected void loadSettings(CommentedFileConfiguration config) {
|
||||||
}
|
|
||||||
|
|
||||||
public boolean canToggleWithMovement() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getFixedEffectOffset() {
|
|
||||||
return 0.5;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,12 +1,13 @@
|
||||||
package dev.esophose.playerparticles.styles;
|
package dev.esophose.playerparticles.styles;
|
||||||
|
|
||||||
|
import dev.esophose.playerparticles.config.CommentedFileConfiguration;
|
||||||
import dev.esophose.playerparticles.particles.PParticle;
|
import dev.esophose.playerparticles.particles.PParticle;
|
||||||
import dev.esophose.playerparticles.particles.ParticlePair;
|
import dev.esophose.playerparticles.particles.ParticlePair;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
|
||||||
public class ParticleStyleHalo implements ParticleStyle {
|
public class ParticleStyleHalo extends DefaultParticleStyle {
|
||||||
|
|
||||||
private static double[] cos, sin;
|
private static double[] cos, sin;
|
||||||
private static final int points = 16;
|
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<PParticle> getParticles(ParticlePair particle, Location location) {
|
public List<PParticle> getParticles(ParticlePair particle, Location location) {
|
||||||
if (step % 2 == 0) return new ArrayList<>();
|
if (step % 2 == 0) return new ArrayList<>();
|
||||||
|
|
||||||
|
@ -39,6 +45,7 @@ public class ParticleStyleHalo implements ParticleStyle {
|
||||||
return particles;
|
return particles;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void updateTimers() {
|
public void updateTimers() {
|
||||||
step++;
|
step++;
|
||||||
if (step > 30) {
|
if (step > 30) {
|
||||||
|
@ -46,20 +53,14 @@ public class ParticleStyleHalo implements ParticleStyle {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getName() {
|
@Override
|
||||||
return "halo";
|
protected void setDefaultSettings(CommentedFileConfiguration config) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canBeFixed() {
|
@Override
|
||||||
return true;
|
protected void loadSettings(CommentedFileConfiguration config) {
|
||||||
}
|
|
||||||
|
|
||||||
public boolean canToggleWithMovement() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getFixedEffectOffset() {
|
|
||||||
return -0.5;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package dev.esophose.playerparticles.styles;
|
package dev.esophose.playerparticles.styles;
|
||||||
|
|
||||||
import dev.esophose.playerparticles.PlayerParticles;
|
import dev.esophose.playerparticles.PlayerParticles;
|
||||||
|
import dev.esophose.playerparticles.config.CommentedFileConfiguration;
|
||||||
import dev.esophose.playerparticles.manager.DataManager;
|
import dev.esophose.playerparticles.manager.DataManager;
|
||||||
import dev.esophose.playerparticles.manager.ParticleManager;
|
import dev.esophose.playerparticles.manager.ParticleManager;
|
||||||
import dev.esophose.playerparticles.particles.PParticle;
|
import dev.esophose.playerparticles.particles.PParticle;
|
||||||
|
@ -15,8 +16,13 @@ import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.entity.EntityDamageEvent;
|
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<PParticle> getParticles(ParticlePair particle, Location location) {
|
public List<PParticle> getParticles(ParticlePair particle, Location location) {
|
||||||
List<PParticle> baseParticles = DefaultStyles.THICK.getParticles(particle, location);
|
List<PParticle> baseParticles = DefaultStyles.THICK.getParticles(particle, location);
|
||||||
|
|
||||||
|
@ -29,26 +35,11 @@ public class ParticleStyleHurt implements ParticleStyle, Listener {
|
||||||
return particles;
|
return particles;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void updateTimers() {
|
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)
|
@EventHandler(priority = EventPriority.MONITOR)
|
||||||
public void onEntityDamage(EntityDamageEvent event) {
|
public void onEntityDamage(EntityDamageEvent event) {
|
||||||
ParticleManager particleManager = PlayerParticles.getInstance().getManager(ParticleManager.class);
|
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) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package dev.esophose.playerparticles.styles;
|
package dev.esophose.playerparticles.styles;
|
||||||
|
|
||||||
|
import dev.esophose.playerparticles.config.CommentedFileConfiguration;
|
||||||
import dev.esophose.playerparticles.particles.PParticle;
|
import dev.esophose.playerparticles.particles.PParticle;
|
||||||
import dev.esophose.playerparticles.particles.ParticleEffect;
|
import dev.esophose.playerparticles.particles.ParticleEffect;
|
||||||
import dev.esophose.playerparticles.particles.ParticlePair;
|
import dev.esophose.playerparticles.particles.ParticlePair;
|
||||||
|
@ -7,7 +8,7 @@ import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
|
||||||
public class ParticleStyleInvocation implements ParticleStyle {
|
public class ParticleStyleInvocation extends DefaultParticleStyle {
|
||||||
|
|
||||||
private int points = 6;
|
private int points = 6;
|
||||||
private double radius = 3.5;
|
private double radius = 3.5;
|
||||||
|
@ -15,6 +16,10 @@ public class ParticleStyleInvocation implements ParticleStyle {
|
||||||
private int circleStep = 0;
|
private int circleStep = 0;
|
||||||
private int numSteps = 120;
|
private int numSteps = 120;
|
||||||
|
|
||||||
|
public ParticleStyleInvocation() {
|
||||||
|
super("invocation", true, true, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
public List<PParticle> getParticles(ParticlePair particle, Location location) {
|
public List<PParticle> getParticles(ParticlePair particle, Location location) {
|
||||||
List<PParticle> particles = new ArrayList<>();
|
List<PParticle> particles = new ArrayList<>();
|
||||||
double speed = getSpeedByEffect(particle.getEffect());
|
double speed = getSpeedByEffect(particle.getEffect());
|
||||||
|
@ -88,20 +93,14 @@ public class ParticleStyleInvocation implements ParticleStyle {
|
||||||
circleStep = (circleStep + 1) % numSteps;
|
circleStep = (circleStep + 1) % numSteps;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getName() {
|
@Override
|
||||||
return "invocation";
|
protected void setDefaultSettings(CommentedFileConfiguration config) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canBeFixed() {
|
@Override
|
||||||
return true;
|
protected void loadSettings(CommentedFileConfiguration config) {
|
||||||
}
|
|
||||||
|
|
||||||
public boolean canToggleWithMovement() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getFixedEffectOffset() {
|
|
||||||
return 0.5;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package dev.esophose.playerparticles.styles;
|
package dev.esophose.playerparticles.styles;
|
||||||
|
|
||||||
import dev.esophose.playerparticles.PlayerParticles;
|
import dev.esophose.playerparticles.PlayerParticles;
|
||||||
|
import dev.esophose.playerparticles.config.CommentedFileConfiguration;
|
||||||
import dev.esophose.playerparticles.manager.DataManager;
|
import dev.esophose.playerparticles.manager.DataManager;
|
||||||
import dev.esophose.playerparticles.manager.ParticleManager;
|
import dev.esophose.playerparticles.manager.ParticleManager;
|
||||||
import dev.esophose.playerparticles.particles.PParticle;
|
import dev.esophose.playerparticles.particles.PParticle;
|
||||||
|
@ -13,30 +14,30 @@ import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.player.PlayerMoveEvent;
|
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<PParticle> getParticles(ParticlePair particle, Location location) {
|
public List<PParticle> getParticles(ParticlePair particle, Location location) {
|
||||||
return DefaultStyles.NORMAL.getParticles(particle, location);
|
return DefaultStyles.NORMAL.getParticles(particle, location);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void updateTimers() {
|
public void updateTimers() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getName() {
|
@Override
|
||||||
return "move";
|
protected void setDefaultSettings(CommentedFileConfiguration config) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canBeFixed() {
|
@Override
|
||||||
return false;
|
protected void loadSettings(CommentedFileConfiguration config) {
|
||||||
}
|
|
||||||
|
|
||||||
public boolean canToggleWithMovement() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getFixedEffectOffset() {
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.MONITOR)
|
@EventHandler(priority = EventPriority.MONITOR)
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package dev.esophose.playerparticles.styles;
|
package dev.esophose.playerparticles.styles;
|
||||||
|
|
||||||
|
import dev.esophose.playerparticles.config.CommentedFileConfiguration;
|
||||||
import dev.esophose.playerparticles.particles.PParticle;
|
import dev.esophose.playerparticles.particles.PParticle;
|
||||||
import dev.esophose.playerparticles.particles.ParticleEffect;
|
import dev.esophose.playerparticles.particles.ParticleEffect;
|
||||||
import dev.esophose.playerparticles.particles.ParticlePair;
|
import dev.esophose.playerparticles.particles.ParticlePair;
|
||||||
|
@ -8,8 +9,13 @@ import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
|
||||||
public class ParticleStyleNormal implements ParticleStyle {
|
public class ParticleStyleNormal extends DefaultParticleStyle {
|
||||||
|
|
||||||
|
public ParticleStyleNormal() {
|
||||||
|
super("normal", true, false, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public List<PParticle> getParticles(ParticlePair particle, Location location) {
|
public List<PParticle> getParticles(ParticlePair particle, Location location) {
|
||||||
ParticleEffect particleEffect = particle.getEffect();
|
ParticleEffect particleEffect = particle.getEffect();
|
||||||
List<PParticle> particles = new ArrayList<>();
|
List<PParticle> particles = new ArrayList<>();
|
||||||
|
@ -124,24 +130,19 @@ public class ParticleStyleNormal implements ParticleStyle {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void updateTimers() {
|
public void updateTimers() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getName() {
|
@Override
|
||||||
return "normal";
|
protected void setDefaultSettings(CommentedFileConfiguration config) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canBeFixed() {
|
@Override
|
||||||
return true;
|
protected void loadSettings(CommentedFileConfiguration config) {
|
||||||
}
|
|
||||||
|
|
||||||
public boolean canToggleWithMovement() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getFixedEffectOffset() {
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,12 +1,13 @@
|
||||||
package dev.esophose.playerparticles.styles;
|
package dev.esophose.playerparticles.styles;
|
||||||
|
|
||||||
|
import dev.esophose.playerparticles.config.CommentedFileConfiguration;
|
||||||
import dev.esophose.playerparticles.particles.PParticle;
|
import dev.esophose.playerparticles.particles.PParticle;
|
||||||
import dev.esophose.playerparticles.particles.ParticlePair;
|
import dev.esophose.playerparticles.particles.ParticlePair;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
|
||||||
public class ParticleStyleOrbit implements ParticleStyle {
|
public class ParticleStyleOrbit extends DefaultParticleStyle {
|
||||||
|
|
||||||
private static double[] cos, sin;
|
private static double[] cos, sin;
|
||||||
private static final int orbs = 3;
|
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<PParticle> getParticles(ParticlePair particle, Location location) {
|
public List<PParticle> getParticles(ParticlePair particle, Location location) {
|
||||||
List<PParticle> particles = new ArrayList<>();
|
List<PParticle> particles = new ArrayList<>();
|
||||||
for (int i = 0; i < orbs; i++) {
|
for (int i = 0; i < orbs; i++) {
|
||||||
|
@ -35,6 +41,7 @@ public class ParticleStyleOrbit implements ParticleStyle {
|
||||||
return particles;
|
return particles;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void updateTimers() {
|
public void updateTimers() {
|
||||||
step++;
|
step++;
|
||||||
if (step > numSteps) {
|
if (step > numSteps) {
|
||||||
|
@ -42,20 +49,14 @@ public class ParticleStyleOrbit implements ParticleStyle {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getName() {
|
@Override
|
||||||
return "orbit";
|
protected void setDefaultSettings(CommentedFileConfiguration config) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canBeFixed() {
|
@Override
|
||||||
return true;
|
protected void loadSettings(CommentedFileConfiguration config) {
|
||||||
}
|
|
||||||
|
|
||||||
public boolean canToggleWithMovement() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getFixedEffectOffset() {
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,13 +1,19 @@
|
||||||
package dev.esophose.playerparticles.styles;
|
package dev.esophose.playerparticles.styles;
|
||||||
|
|
||||||
|
import dev.esophose.playerparticles.config.CommentedFileConfiguration;
|
||||||
import dev.esophose.playerparticles.particles.PParticle;
|
import dev.esophose.playerparticles.particles.PParticle;
|
||||||
import dev.esophose.playerparticles.particles.ParticlePair;
|
import dev.esophose.playerparticles.particles.ParticlePair;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import org.bukkit.Location;
|
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<PParticle> getParticles(ParticlePair particle, Location location) {
|
public List<PParticle> getParticles(ParticlePair particle, Location location) {
|
||||||
List<PParticle> particles = new ArrayList<>();
|
List<PParticle> particles = new ArrayList<>();
|
||||||
particles.add(new PParticle(location.clone().add(0, 1.75, 0), 0.4F, 0.1F, 0.4F, 0.0F));
|
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;
|
return particles;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void updateTimers() {
|
public void updateTimers() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getName() {
|
@Override
|
||||||
return "overhead";
|
protected void setDefaultSettings(CommentedFileConfiguration config) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canBeFixed() {
|
@Override
|
||||||
return true;
|
protected void loadSettings(CommentedFileConfiguration config) {
|
||||||
}
|
|
||||||
|
|
||||||
public boolean canToggleWithMovement() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getFixedEffectOffset() {
|
|
||||||
return -0.5;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,35 +1,36 @@
|
||||||
package dev.esophose.playerparticles.styles;
|
package dev.esophose.playerparticles.styles;
|
||||||
|
|
||||||
|
import dev.esophose.playerparticles.config.CommentedFileConfiguration;
|
||||||
import dev.esophose.playerparticles.particles.PParticle;
|
import dev.esophose.playerparticles.particles.PParticle;
|
||||||
import dev.esophose.playerparticles.particles.ParticlePair;
|
import dev.esophose.playerparticles.particles.ParticlePair;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import org.bukkit.Location;
|
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<PParticle> getParticles(ParticlePair particle, Location location) {
|
public List<PParticle> getParticles(ParticlePair particle, Location location) {
|
||||||
return Collections.singletonList(new PParticle(location.clone().add(0.0, 1.5, 0.0)));
|
return Collections.singletonList(new PParticle(location.clone().add(0.0, 1.5, 0.0)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void updateTimers() {
|
public void updateTimers() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getName() {
|
@Override
|
||||||
return "point";
|
protected void setDefaultSettings(CommentedFileConfiguration config) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canBeFixed() {
|
@Override
|
||||||
return true;
|
protected void loadSettings(CommentedFileConfiguration config) {
|
||||||
}
|
|
||||||
|
|
||||||
public boolean canToggleWithMovement() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getFixedEffectOffset() {
|
|
||||||
return -0.5;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package dev.esophose.playerparticles.styles;
|
package dev.esophose.playerparticles.styles;
|
||||||
|
|
||||||
|
import dev.esophose.playerparticles.config.CommentedFileConfiguration;
|
||||||
import dev.esophose.playerparticles.particles.PParticle;
|
import dev.esophose.playerparticles.particles.PParticle;
|
||||||
import dev.esophose.playerparticles.particles.ParticlePair;
|
import dev.esophose.playerparticles.particles.ParticlePair;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
@ -7,7 +8,7 @@ import java.util.List;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.util.Vector;
|
import org.bukkit.util.Vector;
|
||||||
|
|
||||||
public class ParticleStylePopper implements ParticleStyle {
|
public class ParticleStylePopper extends DefaultParticleStyle {
|
||||||
|
|
||||||
private double grow = 0.08f;
|
private double grow = 0.08f;
|
||||||
private double radials = Math.PI / 16;
|
private double radials = Math.PI / 16;
|
||||||
|
@ -15,6 +16,11 @@ public class ParticleStylePopper implements ParticleStyle {
|
||||||
private int step = 0;
|
private int step = 0;
|
||||||
private int maxStep = 35;
|
private int maxStep = 35;
|
||||||
|
|
||||||
|
public ParticleStylePopper() {
|
||||||
|
super("popper", true, true, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public List<PParticle> getParticles(ParticlePair particle, Location location) {
|
public List<PParticle> getParticles(ParticlePair particle, Location location) {
|
||||||
List<PParticle> particles = new ArrayList<>();
|
List<PParticle> particles = new ArrayList<>();
|
||||||
|
|
||||||
|
@ -35,24 +41,19 @@ public class ParticleStylePopper implements ParticleStyle {
|
||||||
return particles;
|
return particles;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void updateTimers() {
|
public void updateTimers() {
|
||||||
step = (step + 1) % maxStep;
|
step = (step + 1) % maxStep;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getName() {
|
@Override
|
||||||
return "popper";
|
protected void setDefaultSettings(CommentedFileConfiguration config) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canBeFixed() {
|
@Override
|
||||||
return true;
|
protected void loadSettings(CommentedFileConfiguration config) {
|
||||||
}
|
|
||||||
|
|
||||||
public boolean canToggleWithMovement() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getFixedEffectOffset() {
|
|
||||||
return 0.5;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package dev.esophose.playerparticles.styles;
|
package dev.esophose.playerparticles.styles;
|
||||||
|
|
||||||
|
import dev.esophose.playerparticles.config.CommentedFileConfiguration;
|
||||||
import dev.esophose.playerparticles.particles.PParticle;
|
import dev.esophose.playerparticles.particles.PParticle;
|
||||||
import dev.esophose.playerparticles.particles.ParticleEffect;
|
import dev.esophose.playerparticles.particles.ParticleEffect;
|
||||||
import dev.esophose.playerparticles.particles.ParticlePair;
|
import dev.esophose.playerparticles.particles.ParticlePair;
|
||||||
|
@ -7,13 +8,18 @@ import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
|
||||||
public class ParticleStylePulse implements ParticleStyle {
|
public class ParticleStylePulse extends DefaultParticleStyle {
|
||||||
|
|
||||||
private int points = 50;
|
private int points = 50;
|
||||||
private double radius = 0.5;
|
private double radius = 0.5;
|
||||||
private double step = 0;
|
private double step = 0;
|
||||||
private int numSteps = 15;
|
private int numSteps = 15;
|
||||||
|
|
||||||
|
public ParticleStylePulse() {
|
||||||
|
super("pulse", true, true, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public List<PParticle> getParticles(ParticlePair particle, Location location) {
|
public List<PParticle> getParticles(ParticlePair particle, Location location) {
|
||||||
List<PParticle> particles = new ArrayList<>();
|
List<PParticle> particles = new ArrayList<>();
|
||||||
double speed = getSpeedByEffect(particle.getEffect());
|
double speed = getSpeedByEffect(particle.getEffect());
|
||||||
|
@ -62,24 +68,19 @@ public class ParticleStylePulse implements ParticleStyle {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void updateTimers() {
|
public void updateTimers() {
|
||||||
step = (step + 1) % numSteps;
|
step = (step + 1) % numSteps;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getName() {
|
@Override
|
||||||
return "pulse";
|
protected void setDefaultSettings(CommentedFileConfiguration config) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canBeFixed() {
|
@Override
|
||||||
return true;
|
protected void loadSettings(CommentedFileConfiguration config) {
|
||||||
}
|
|
||||||
|
|
||||||
public boolean canToggleWithMovement() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getFixedEffectOffset() {
|
|
||||||
return 0.5;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,12 +1,13 @@
|
||||||
package dev.esophose.playerparticles.styles;
|
package dev.esophose.playerparticles.styles;
|
||||||
|
|
||||||
|
import dev.esophose.playerparticles.config.CommentedFileConfiguration;
|
||||||
import dev.esophose.playerparticles.particles.PParticle;
|
import dev.esophose.playerparticles.particles.PParticle;
|
||||||
import dev.esophose.playerparticles.particles.ParticlePair;
|
import dev.esophose.playerparticles.particles.ParticlePair;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
|
||||||
public class ParticleStyleQuadhelix implements ParticleStyle {
|
public class ParticleStyleQuadhelix extends DefaultParticleStyle {
|
||||||
|
|
||||||
private static double[] cos, sin;
|
private static double[] cos, sin;
|
||||||
private static final int orbs = 4;
|
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<PParticle> getParticles(ParticlePair particle, Location location) {
|
public List<PParticle> getParticles(ParticlePair particle, Location location) {
|
||||||
List<PParticle> particles = new ArrayList<>();
|
List<PParticle> particles = new ArrayList<>();
|
||||||
for (int i = 0; i < orbs; i++) {
|
for (int i = 0; i < orbs; i++) {
|
||||||
|
@ -40,6 +46,7 @@ public class ParticleStyleQuadhelix implements ParticleStyle {
|
||||||
return particles;
|
return particles;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void updateTimers() {
|
public void updateTimers() {
|
||||||
stepX++;
|
stepX++;
|
||||||
if (stepX > maxStepX) {
|
if (stepX > maxStepX) {
|
||||||
|
@ -54,20 +61,14 @@ public class ParticleStyleQuadhelix implements ParticleStyle {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getName() {
|
@Override
|
||||||
return "quadhelix";
|
protected void setDefaultSettings(CommentedFileConfiguration config) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canBeFixed() {
|
@Override
|
||||||
return true;
|
protected void loadSettings(CommentedFileConfiguration config) {
|
||||||
}
|
|
||||||
|
|
||||||
public boolean canToggleWithMovement() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getFixedEffectOffset() {
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,12 +1,13 @@
|
||||||
package dev.esophose.playerparticles.styles;
|
package dev.esophose.playerparticles.styles;
|
||||||
|
|
||||||
|
import dev.esophose.playerparticles.config.CommentedFileConfiguration;
|
||||||
import dev.esophose.playerparticles.particles.PParticle;
|
import dev.esophose.playerparticles.particles.PParticle;
|
||||||
import dev.esophose.playerparticles.particles.ParticlePair;
|
import dev.esophose.playerparticles.particles.ParticlePair;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
|
||||||
public class ParticleStyleRings implements ParticleStyle {
|
public class ParticleStyleRings extends DefaultParticleStyle {
|
||||||
|
|
||||||
private static double[] cos, sin;
|
private static double[] cos, sin;
|
||||||
private int index = 0;
|
private int index = 0;
|
||||||
|
@ -23,6 +24,11 @@ public class ParticleStyleRings implements ParticleStyle {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ParticleStyleRings() {
|
||||||
|
super("rings", true, true, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public List<PParticle> getParticles(ParticlePair particle, Location location) {
|
public List<PParticle> getParticles(ParticlePair particle, Location location) {
|
||||||
List<PParticle> particles = new ArrayList<>();
|
List<PParticle> particles = new ArrayList<>();
|
||||||
|
|
||||||
|
@ -44,24 +50,19 @@ public class ParticleStyleRings implements ParticleStyle {
|
||||||
return index % cos.length;
|
return index % cos.length;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void updateTimers() {
|
public void updateTimers() {
|
||||||
index = (index + 1) % cos.length;
|
index = (index + 1) % cos.length;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getName() {
|
@Override
|
||||||
return "rings";
|
protected void setDefaultSettings(CommentedFileConfiguration config) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canBeFixed() {
|
@Override
|
||||||
return true;
|
protected void loadSettings(CommentedFileConfiguration config) {
|
||||||
}
|
|
||||||
|
|
||||||
public boolean canToggleWithMovement() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getFixedEffectOffset() {
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,13 +1,19 @@
|
||||||
package dev.esophose.playerparticles.styles;
|
package dev.esophose.playerparticles.styles;
|
||||||
|
|
||||||
|
import dev.esophose.playerparticles.config.CommentedFileConfiguration;
|
||||||
import dev.esophose.playerparticles.particles.PParticle;
|
import dev.esophose.playerparticles.particles.PParticle;
|
||||||
import dev.esophose.playerparticles.particles.ParticlePair;
|
import dev.esophose.playerparticles.particles.ParticlePair;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
|
||||||
public class ParticleStyleSphere implements ParticleStyle {
|
public class ParticleStyleSphere extends DefaultParticleStyle {
|
||||||
|
|
||||||
|
public ParticleStyleSphere() {
|
||||||
|
super("sphere", true, true, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public List<PParticle> getParticles(ParticlePair particle, Location location) {
|
public List<PParticle> getParticles(ParticlePair particle, Location location) {
|
||||||
int density = 15;
|
int density = 15;
|
||||||
double radius = 1.5f;
|
double radius = 1.5f;
|
||||||
|
@ -27,24 +33,19 @@ public class ParticleStyleSphere implements ParticleStyle {
|
||||||
return particles;
|
return particles;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void updateTimers() {
|
public void updateTimers() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getName() {
|
@Override
|
||||||
return "sphere";
|
protected void setDefaultSettings(CommentedFileConfiguration config) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canBeFixed() {
|
@Override
|
||||||
return true;
|
protected void loadSettings(CommentedFileConfiguration config) {
|
||||||
}
|
|
||||||
|
|
||||||
public boolean canToggleWithMovement() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getFixedEffectOffset() {
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,12 +1,13 @@
|
||||||
package dev.esophose.playerparticles.styles;
|
package dev.esophose.playerparticles.styles;
|
||||||
|
|
||||||
|
import dev.esophose.playerparticles.config.CommentedFileConfiguration;
|
||||||
import dev.esophose.playerparticles.particles.PParticle;
|
import dev.esophose.playerparticles.particles.PParticle;
|
||||||
import dev.esophose.playerparticles.particles.ParticlePair;
|
import dev.esophose.playerparticles.particles.ParticlePair;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
|
||||||
public class ParticleStyleSpin implements ParticleStyle {
|
public class ParticleStyleSpin extends DefaultParticleStyle {
|
||||||
|
|
||||||
private static double[] cos, sin;
|
private static double[] cos, sin;
|
||||||
private static final int maxSteps = 30;
|
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<PParticle> getParticles(ParticlePair particle, Location location) {
|
public List<PParticle> getParticles(ParticlePair particle, Location location) {
|
||||||
double radius = .5;
|
double radius = .5;
|
||||||
double newX = location.getX() + radius * cos[step];
|
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)));
|
return Collections.singletonList(new PParticle(new Location(location.getWorld(), newX, newY, newZ)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void updateTimers() {
|
public void updateTimers() {
|
||||||
step = (step + 1) % maxSteps;
|
step = (step + 1) % maxSteps;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getName() {
|
@Override
|
||||||
return "spin";
|
protected void setDefaultSettings(CommentedFileConfiguration config) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canBeFixed() {
|
@Override
|
||||||
return true;
|
protected void loadSettings(CommentedFileConfiguration config) {
|
||||||
}
|
|
||||||
|
|
||||||
public boolean canToggleWithMovement() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getFixedEffectOffset() {
|
|
||||||
return -0.5;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,15 +1,21 @@
|
||||||
package dev.esophose.playerparticles.styles;
|
package dev.esophose.playerparticles.styles;
|
||||||
|
|
||||||
|
import dev.esophose.playerparticles.config.CommentedFileConfiguration;
|
||||||
import dev.esophose.playerparticles.particles.PParticle;
|
import dev.esophose.playerparticles.particles.PParticle;
|
||||||
import dev.esophose.playerparticles.particles.ParticlePair;
|
import dev.esophose.playerparticles.particles.ParticlePair;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
|
||||||
public class ParticleStyleSpiral implements ParticleStyle {
|
public class ParticleStyleSpiral extends DefaultParticleStyle {
|
||||||
|
|
||||||
private int stepX = 0;
|
private int stepX = 0;
|
||||||
|
|
||||||
|
public ParticleStyleSpiral() {
|
||||||
|
super("spiral", true, true, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public List<PParticle> getParticles(ParticlePair particle, Location location) {
|
public List<PParticle> getParticles(ParticlePair particle, Location location) {
|
||||||
List<PParticle> particles = new ArrayList<>();
|
List<PParticle> particles = new ArrayList<>();
|
||||||
for (int stepY = -60; stepY < 60; stepY += 10) {
|
for (int stepY = -60; stepY < 60; stepY += 10) {
|
||||||
|
@ -21,24 +27,19 @@ public class ParticleStyleSpiral implements ParticleStyle {
|
||||||
return particles;
|
return particles;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void updateTimers() {
|
public void updateTimers() {
|
||||||
stepX++;
|
stepX++;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getName() {
|
@Override
|
||||||
return "spiral";
|
protected void setDefaultSettings(CommentedFileConfiguration config) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canBeFixed() {
|
@Override
|
||||||
return true;
|
protected void loadSettings(CommentedFileConfiguration config) {
|
||||||
}
|
|
||||||
|
|
||||||
public boolean canToggleWithMovement() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getFixedEffectOffset() {
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package dev.esophose.playerparticles.styles;
|
package dev.esophose.playerparticles.styles;
|
||||||
|
|
||||||
import dev.esophose.playerparticles.PlayerParticles;
|
import dev.esophose.playerparticles.PlayerParticles;
|
||||||
|
import dev.esophose.playerparticles.config.CommentedFileConfiguration;
|
||||||
import dev.esophose.playerparticles.manager.DataManager;
|
import dev.esophose.playerparticles.manager.DataManager;
|
||||||
import dev.esophose.playerparticles.manager.ParticleManager;
|
import dev.esophose.playerparticles.manager.ParticleManager;
|
||||||
import dev.esophose.playerparticles.particles.PParticle;
|
import dev.esophose.playerparticles.particles.PParticle;
|
||||||
|
@ -17,7 +18,7 @@ import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||||
|
|
||||||
public class ParticleStyleSwords implements ParticleStyle, Listener {
|
public class ParticleStyleSwords extends DefaultParticleStyle implements Listener {
|
||||||
|
|
||||||
private static final List<String> SWORD_NAMES;
|
private static final List<String> 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"));
|
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<PParticle> getParticles(ParticlePair particle, Location location) {
|
public List<PParticle> getParticles(ParticlePair particle, Location location) {
|
||||||
List<PParticle> baseParticles = DefaultStyles.NORMAL.getParticles(particle, location);
|
List<PParticle> baseParticles = DefaultStyles.NORMAL.getParticles(particle, location);
|
||||||
|
|
||||||
|
@ -38,24 +44,19 @@ public class ParticleStyleSwords implements ParticleStyle, Listener {
|
||||||
return particles;
|
return particles;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void updateTimers() {
|
public void updateTimers() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getName() {
|
@Override
|
||||||
return "swords";
|
protected void setDefaultSettings(CommentedFileConfiguration config) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canBeFixed() {
|
@Override
|
||||||
return false;
|
protected void loadSettings(CommentedFileConfiguration config) {
|
||||||
}
|
|
||||||
|
|
||||||
public boolean canToggleWithMovement() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getFixedEffectOffset() {
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.MONITOR)
|
@EventHandler(priority = EventPriority.MONITOR)
|
||||||
|
|
|
@ -1,13 +1,19 @@
|
||||||
package dev.esophose.playerparticles.styles;
|
package dev.esophose.playerparticles.styles;
|
||||||
|
|
||||||
|
import dev.esophose.playerparticles.config.CommentedFileConfiguration;
|
||||||
import dev.esophose.playerparticles.particles.PParticle;
|
import dev.esophose.playerparticles.particles.PParticle;
|
||||||
import dev.esophose.playerparticles.particles.ParticlePair;
|
import dev.esophose.playerparticles.particles.ParticlePair;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
|
||||||
public class ParticleStyleThick implements ParticleStyle {
|
public class ParticleStyleThick extends DefaultParticleStyle {
|
||||||
|
|
||||||
|
public ParticleStyleThick() {
|
||||||
|
super("thick", true, true, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public List<PParticle> getParticles(ParticlePair particle, Location location) {
|
public List<PParticle> getParticles(ParticlePair particle, Location location) {
|
||||||
List<PParticle> baseParticles = DefaultStyles.NORMAL.getParticles(particle, location);
|
List<PParticle> baseParticles = DefaultStyles.NORMAL.getParticles(particle, location);
|
||||||
|
|
||||||
|
@ -20,24 +26,19 @@ public class ParticleStyleThick implements ParticleStyle {
|
||||||
return particles;
|
return particles;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void updateTimers() {
|
public void updateTimers() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getName() {
|
@Override
|
||||||
return "thick";
|
protected void setDefaultSettings(CommentedFileConfiguration config) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canBeFixed() {
|
@Override
|
||||||
return true;
|
protected void loadSettings(CommentedFileConfiguration config) {
|
||||||
}
|
|
||||||
|
|
||||||
public boolean canToggleWithMovement() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getFixedEffectOffset() {
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,12 +1,13 @@
|
||||||
package dev.esophose.playerparticles.styles;
|
package dev.esophose.playerparticles.styles;
|
||||||
|
|
||||||
|
import dev.esophose.playerparticles.config.CommentedFileConfiguration;
|
||||||
import dev.esophose.playerparticles.particles.PParticle;
|
import dev.esophose.playerparticles.particles.PParticle;
|
||||||
import dev.esophose.playerparticles.particles.ParticlePair;
|
import dev.esophose.playerparticles.particles.ParticlePair;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
|
||||||
public class ParticleStyleTwins implements ParticleStyle {
|
public class ParticleStyleTwins extends DefaultParticleStyle {
|
||||||
|
|
||||||
private static double[] cos, sin;
|
private static double[] cos, sin;
|
||||||
private static final int orbs = 2;
|
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<PParticle> getParticles(ParticlePair particle, Location location) {
|
public List<PParticle> getParticles(ParticlePair particle, Location location) {
|
||||||
List<PParticle> particles = new ArrayList<>();
|
List<PParticle> particles = new ArrayList<>();
|
||||||
for (int i = 0; i < orbs; i++) {
|
for (int i = 0; i < orbs; i++) {
|
||||||
|
@ -39,6 +45,7 @@ public class ParticleStyleTwins implements ParticleStyle {
|
||||||
return particles;
|
return particles;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void updateTimers() {
|
public void updateTimers() {
|
||||||
stepX++;
|
stepX++;
|
||||||
if (stepX > numSteps) {
|
if (stepX > numSteps) {
|
||||||
|
@ -54,20 +61,14 @@ public class ParticleStyleTwins implements ParticleStyle {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getName() {
|
@Override
|
||||||
return "twins";
|
protected void setDefaultSettings(CommentedFileConfiguration config) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canBeFixed() {
|
@Override
|
||||||
return true;
|
protected void loadSettings(CommentedFileConfiguration config) {
|
||||||
}
|
|
||||||
|
|
||||||
public boolean canToggleWithMovement() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getFixedEffectOffset() {
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
*/
|
*/
|
||||||
package dev.esophose.playerparticles.styles;
|
package dev.esophose.playerparticles.styles;
|
||||||
|
|
||||||
|
import dev.esophose.playerparticles.config.CommentedFileConfiguration;
|
||||||
import dev.esophose.playerparticles.particles.PParticle;
|
import dev.esophose.playerparticles.particles.PParticle;
|
||||||
import dev.esophose.playerparticles.particles.ParticlePair;
|
import dev.esophose.playerparticles.particles.ParticlePair;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
@ -30,7 +31,7 @@ import java.util.List;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.util.Vector;
|
import org.bukkit.util.Vector;
|
||||||
|
|
||||||
public class ParticleStyleVortex implements ParticleStyle {
|
public class ParticleStyleVortex extends DefaultParticleStyle {
|
||||||
|
|
||||||
private double grow = .05f;
|
private double grow = .05f;
|
||||||
private double radials = Math.PI / 16;
|
private double radials = Math.PI / 16;
|
||||||
|
@ -38,6 +39,11 @@ public class ParticleStyleVortex implements ParticleStyle {
|
||||||
private int step = 0;
|
private int step = 0;
|
||||||
private int maxStep = 70;
|
private int maxStep = 70;
|
||||||
|
|
||||||
|
public ParticleStyleVortex() {
|
||||||
|
super("vortex", true, true, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public List<PParticle> getParticles(ParticlePair particle, Location location) {
|
public List<PParticle> getParticles(ParticlePair particle, Location location) {
|
||||||
List<PParticle> particles = new ArrayList<>();
|
List<PParticle> particles = new ArrayList<>();
|
||||||
|
|
||||||
|
@ -52,24 +58,19 @@ public class ParticleStyleVortex implements ParticleStyle {
|
||||||
return particles;
|
return particles;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void updateTimers() {
|
public void updateTimers() {
|
||||||
step = (step + 1) % maxStep;
|
step = (step + 1) % maxStep;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getName() {
|
@Override
|
||||||
return "vortex";
|
protected void setDefaultSettings(CommentedFileConfiguration config) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canBeFixed() {
|
@Override
|
||||||
return true;
|
protected void loadSettings(CommentedFileConfiguration config) {
|
||||||
}
|
|
||||||
|
|
||||||
public boolean canToggleWithMovement() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getFixedEffectOffset() {
|
|
||||||
return 0.5;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package dev.esophose.playerparticles.styles;
|
package dev.esophose.playerparticles.styles;
|
||||||
|
|
||||||
|
import dev.esophose.playerparticles.config.CommentedFileConfiguration;
|
||||||
import dev.esophose.playerparticles.particles.PParticle;
|
import dev.esophose.playerparticles.particles.PParticle;
|
||||||
import dev.esophose.playerparticles.particles.ParticleEffect;
|
import dev.esophose.playerparticles.particles.ParticleEffect;
|
||||||
import dev.esophose.playerparticles.particles.ParticlePair;
|
import dev.esophose.playerparticles.particles.ParticlePair;
|
||||||
|
@ -7,12 +8,17 @@ import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
|
||||||
public class ParticleStyleWhirl implements ParticleStyle {
|
public class ParticleStyleWhirl extends DefaultParticleStyle {
|
||||||
|
|
||||||
private int points = 2;
|
private int points = 2;
|
||||||
private double step = 0;
|
private double step = 0;
|
||||||
private int numSteps = 40;
|
private int numSteps = 40;
|
||||||
|
|
||||||
|
public ParticleStyleWhirl() {
|
||||||
|
super("whirl", true, true, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public List<PParticle> getParticles(ParticlePair particle, Location location) {
|
public List<PParticle> getParticles(ParticlePair particle, Location location) {
|
||||||
List<PParticle> particles = new ArrayList<>();
|
List<PParticle> particles = new ArrayList<>();
|
||||||
double speed = getSpeedByEffect(particle.getEffect());
|
double speed = getSpeedByEffect(particle.getEffect());
|
||||||
|
@ -59,24 +65,19 @@ public class ParticleStyleWhirl implements ParticleStyle {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void updateTimers() {
|
public void updateTimers() {
|
||||||
step = (step + Math.PI * 2 / numSteps) % numSteps;
|
step = (step + Math.PI * 2 / numSteps) % numSteps;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getName() {
|
@Override
|
||||||
return "whirl";
|
protected void setDefaultSettings(CommentedFileConfiguration config) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canBeFixed() {
|
@Override
|
||||||
return true;
|
protected void loadSettings(CommentedFileConfiguration config) {
|
||||||
}
|
|
||||||
|
|
||||||
public boolean canToggleWithMovement() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getFixedEffectOffset() {
|
|
||||||
return 0.5;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package dev.esophose.playerparticles.styles;
|
package dev.esophose.playerparticles.styles;
|
||||||
|
|
||||||
|
import dev.esophose.playerparticles.config.CommentedFileConfiguration;
|
||||||
import dev.esophose.playerparticles.particles.PParticle;
|
import dev.esophose.playerparticles.particles.PParticle;
|
||||||
import dev.esophose.playerparticles.particles.ParticleEffect;
|
import dev.esophose.playerparticles.particles.ParticleEffect;
|
||||||
import dev.esophose.playerparticles.particles.ParticlePair;
|
import dev.esophose.playerparticles.particles.ParticlePair;
|
||||||
|
@ -7,12 +8,17 @@ import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
|
||||||
public class ParticleStyleWhirlwind implements ParticleStyle {
|
public class ParticleStyleWhirlwind extends DefaultParticleStyle {
|
||||||
|
|
||||||
private int points = 3;
|
private int points = 3;
|
||||||
private double step = 0;
|
private double step = 0;
|
||||||
private int numSteps = 40;
|
private int numSteps = 40;
|
||||||
|
|
||||||
|
public ParticleStyleWhirlwind() {
|
||||||
|
super("whirlwind", true, true, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public List<PParticle> getParticles(ParticlePair particle, Location location) {
|
public List<PParticle> getParticles(ParticlePair particle, Location location) {
|
||||||
List<PParticle> particles = new ArrayList<>();
|
List<PParticle> particles = new ArrayList<>();
|
||||||
double speed = getSpeedByEffect(particle.getEffect()) * 2.5;
|
double speed = getSpeedByEffect(particle.getEffect()) * 2.5;
|
||||||
|
@ -60,24 +66,19 @@ public class ParticleStyleWhirlwind implements ParticleStyle {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void updateTimers() {
|
public void updateTimers() {
|
||||||
step = (step + Math.PI * 2 / numSteps) % numSteps;
|
step = (step + Math.PI * 2 / numSteps) % numSteps;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getName() {
|
@Override
|
||||||
return "whirlwind";
|
protected void setDefaultSettings(CommentedFileConfiguration config) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canBeFixed() {
|
@Override
|
||||||
return true;
|
protected void loadSettings(CommentedFileConfiguration config) {
|
||||||
}
|
|
||||||
|
|
||||||
public boolean canToggleWithMovement() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getFixedEffectOffset() {
|
|
||||||
return 0.5;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package dev.esophose.playerparticles.styles;
|
package dev.esophose.playerparticles.styles;
|
||||||
|
|
||||||
|
import dev.esophose.playerparticles.config.CommentedFileConfiguration;
|
||||||
import dev.esophose.playerparticles.particles.PParticle;
|
import dev.esophose.playerparticles.particles.PParticle;
|
||||||
import dev.esophose.playerparticles.particles.ParticlePair;
|
import dev.esophose.playerparticles.particles.ParticlePair;
|
||||||
import dev.esophose.playerparticles.util.VectorUtils;
|
import dev.esophose.playerparticles.util.VectorUtils;
|
||||||
|
@ -8,10 +9,15 @@ import java.util.List;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.util.Vector;
|
import org.bukkit.util.Vector;
|
||||||
|
|
||||||
public class ParticleStyleWings implements ParticleStyle {
|
public class ParticleStyleWings extends DefaultParticleStyle {
|
||||||
|
|
||||||
private int spawnTimer = 0; // Spawn particles every 3 ticks
|
private int spawnTimer = 0; // Spawn particles every 3 ticks
|
||||||
|
|
||||||
|
public ParticleStyleWings() {
|
||||||
|
super("wings", false, true, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public List<PParticle> getParticles(ParticlePair particle, Location location) {
|
public List<PParticle> getParticles(ParticlePair particle, Location location) {
|
||||||
List<PParticle> particles = new ArrayList<>();
|
List<PParticle> particles = new ArrayList<>();
|
||||||
if (spawnTimer == 0) {
|
if (spawnTimer == 0) {
|
||||||
|
@ -26,25 +32,20 @@ public class ParticleStyleWings implements ParticleStyle {
|
||||||
return particles;
|
return particles;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void updateTimers() {
|
public void updateTimers() {
|
||||||
spawnTimer++;
|
spawnTimer++;
|
||||||
spawnTimer %= 3;
|
spawnTimer %= 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getName() {
|
@Override
|
||||||
return "wings";
|
protected void setDefaultSettings(CommentedFileConfiguration config) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canBeFixed() {
|
@Override
|
||||||
return false;
|
protected void loadSettings(CommentedFileConfiguration config) {
|
||||||
}
|
|
||||||
|
|
||||||
public boolean canToggleWithMovement() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getFixedEffectOffset() {
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue