mirror of
https://github.com/TotalFreedomMC/PlayerParticles.git
synced 2025-07-31 01:42:18 +00:00
Death Particle Style (#79)
* Death Style * Update ParticleStyleDeath.java * Move duration check
This commit is contained in:
parent
32d0995289
commit
70c398c41e
3 changed files with 109 additions and 1 deletions
|
@ -23,6 +23,7 @@ public class DefaultStyles implements Listener {
|
|||
public static final ParticleStyle CHAINS = new ParticleStyleChains();
|
||||
public static final ParticleStyle COMPANION = new ParticleStyleCompanion();
|
||||
public static final ParticleStyle CUBE = new ParticleStyleCube();
|
||||
public static final ParticleStyle DEATH = new ParticleStyleDeath();
|
||||
public static final ParticleStyle FEET = new ParticleStyleFeet();
|
||||
public static final ParticleStyle FISHING = new ParticleStyleFishing();
|
||||
public static final ParticleStyle HALO = new ParticleStyleHalo();
|
||||
|
@ -65,6 +66,7 @@ public class DefaultStyles implements Listener {
|
|||
pluginManager.registerEvents((Listener) ARROWS, playerParticles);
|
||||
pluginManager.registerEvents((Listener) BLOCKBREAK, playerParticles);
|
||||
pluginManager.registerEvents((Listener) BLOCKPLACE, playerParticles);
|
||||
pluginManager.registerEvents((Listener) DEATH, playerParticles);
|
||||
pluginManager.registerEvents((Listener) FISHING, playerParticles);
|
||||
pluginManager.registerEvents((Listener) HURT, playerParticles);
|
||||
pluginManager.registerEvents((Listener) MOVE, playerParticles);
|
||||
|
@ -84,6 +86,7 @@ public class DefaultStyles implements Listener {
|
|||
event.registerStyle(CHAINS);
|
||||
event.registerStyle(COMPANION);
|
||||
event.registerStyle(CUBE);
|
||||
event.registerEventStyle(DEATH);
|
||||
event.registerStyle(FEET);
|
||||
event.registerStyle(FISHING);
|
||||
event.registerStyle(HALO);
|
||||
|
|
|
@ -0,0 +1,104 @@
|
|||
package dev.esophose.playerparticles.styles;
|
||||
|
||||
import dev.esophose.playerparticles.PlayerParticles;
|
||||
import dev.esophose.playerparticles.config.CommentedFileConfiguration;
|
||||
import dev.esophose.playerparticles.manager.ConfigurationManager;
|
||||
import dev.esophose.playerparticles.manager.DataManager;
|
||||
import dev.esophose.playerparticles.manager.ParticleManager;
|
||||
import dev.esophose.playerparticles.particles.PParticle;
|
||||
import dev.esophose.playerparticles.particles.PPlayer;
|
||||
import dev.esophose.playerparticles.particles.ParticlePair;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.entity.EntityDamageEvent;
|
||||
import org.bukkit.event.entity.PlayerDeathEvent;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class ParticleStyleDeath extends DefaultParticleStyle implements Listener {
|
||||
|
||||
private String style;
|
||||
private List<EntityDamageEvent.DamageCause> causes;
|
||||
private int targetDuration;
|
||||
private final long ticksPerParticle = ConfigurationManager.Setting.TICKS_PER_PARTICLE.getLong();
|
||||
|
||||
protected ParticleStyleDeath() {
|
||||
super("death", false, false, 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PParticle> getParticles(ParticlePair particle, Location location) {
|
||||
ParticleStyle style = ParticleStyle.fromName(this.style);
|
||||
if (style == null || style == this)
|
||||
style = DefaultStyles.WHIRL;
|
||||
|
||||
return style.getParticles(particle, location);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateTimers() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<String> getGuiIconMaterialNames() {
|
||||
return Arrays.asList("TOTEM_OF_UNDYING", "TOTEM", "BED");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setDefaultSettings(CommentedFileConfiguration config) {
|
||||
this.setIfNotExists("style", "whirl", "The name of the style to be displayed.");
|
||||
this.setIfNotExists("target-duration", 60, "How long to display the particles for.");
|
||||
this.setIfNotExists("disabled-causes", Collections.singletonList("DROWNING"), "What damage types shouldn't spawn particles?");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void loadSettings(CommentedFileConfiguration config) {
|
||||
this.style = config.getString("style");
|
||||
this.targetDuration = config.getInt("target-duration");
|
||||
|
||||
// Nicole you may wanna clean this up a bit
|
||||
this.causes = config.getStringList("disabled-causes").stream()
|
||||
.map(s -> EntityDamageEvent.DamageCause.valueOf(s.toUpperCase()))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR)
|
||||
public void onDeath(PlayerDeathEvent event) {
|
||||
|
||||
final EntityDamageEvent damageEvent = event.getEntity().getLastDamageCause();
|
||||
if (damageEvent == null) return;
|
||||
|
||||
if (causes.contains(damageEvent.getCause())) return;
|
||||
|
||||
ParticleManager particleManager = PlayerParticles.getInstance().getManager(ParticleManager.class);
|
||||
PPlayer pplayer = PlayerParticles.getInstance().getManager(DataManager.class).getPPlayer(event.getEntity().getUniqueId());
|
||||
|
||||
new BukkitRunnable() {
|
||||
private int totalDuration = 0;
|
||||
final Location loc = event.getEntity().getLocation().clone().add(0, 1, 0);
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
for (ParticlePair particle : pplayer.getActiveParticlesForStyle(DefaultStyles.DEATH)) {
|
||||
particleManager.displayParticles(pplayer, event.getEntity().getWorld(), particle, DefaultStyles.DEATH.getParticles(particle, loc), false);
|
||||
}
|
||||
|
||||
this.totalDuration += ticksPerParticle;
|
||||
if (this.totalDuration > targetDuration)
|
||||
this.cancel();
|
||||
|
||||
}
|
||||
|
||||
}.runTaskTimer(PlayerParticles.getInstance(), 0, ticksPerParticle);
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -4,6 +4,7 @@ import dev.esophose.playerparticles.config.CommentedFileConfiguration;
|
|||
import dev.esophose.playerparticles.particles.PParticle;
|
||||
import dev.esophose.playerparticles.particles.ParticlePair;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import org.bukkit.Location;
|
||||
|
@ -34,7 +35,7 @@ public class ParticleStyleFeet extends DefaultParticleStyle {
|
|||
|
||||
@Override
|
||||
protected List<String> getGuiIconMaterialNames() {
|
||||
return Collections.singletonList("GRASS");
|
||||
return Arrays.asList("GRASS_BLOCK", "GRASS");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue