mirror of
https://github.com/TotalFreedomMC/PlayerParticles.git
synced 2025-08-05 20:13:03 +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 CHAINS = new ParticleStyleChains();
|
||||||
public static final ParticleStyle COMPANION = new ParticleStyleCompanion();
|
public static final ParticleStyle COMPANION = new ParticleStyleCompanion();
|
||||||
public static final ParticleStyle CUBE = new ParticleStyleCube();
|
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 FEET = new ParticleStyleFeet();
|
||||||
public static final ParticleStyle FISHING = new ParticleStyleFishing();
|
public static final ParticleStyle FISHING = new ParticleStyleFishing();
|
||||||
public static final ParticleStyle HALO = new ParticleStyleHalo();
|
public static final ParticleStyle HALO = new ParticleStyleHalo();
|
||||||
|
@ -65,6 +66,7 @@ public class DefaultStyles implements Listener {
|
||||||
pluginManager.registerEvents((Listener) ARROWS, playerParticles);
|
pluginManager.registerEvents((Listener) ARROWS, playerParticles);
|
||||||
pluginManager.registerEvents((Listener) BLOCKBREAK, playerParticles);
|
pluginManager.registerEvents((Listener) BLOCKBREAK, playerParticles);
|
||||||
pluginManager.registerEvents((Listener) BLOCKPLACE, playerParticles);
|
pluginManager.registerEvents((Listener) BLOCKPLACE, playerParticles);
|
||||||
|
pluginManager.registerEvents((Listener) DEATH, playerParticles);
|
||||||
pluginManager.registerEvents((Listener) FISHING, playerParticles);
|
pluginManager.registerEvents((Listener) FISHING, playerParticles);
|
||||||
pluginManager.registerEvents((Listener) HURT, playerParticles);
|
pluginManager.registerEvents((Listener) HURT, playerParticles);
|
||||||
pluginManager.registerEvents((Listener) MOVE, playerParticles);
|
pluginManager.registerEvents((Listener) MOVE, playerParticles);
|
||||||
|
@ -84,6 +86,7 @@ public class DefaultStyles implements Listener {
|
||||||
event.registerStyle(CHAINS);
|
event.registerStyle(CHAINS);
|
||||||
event.registerStyle(COMPANION);
|
event.registerStyle(COMPANION);
|
||||||
event.registerStyle(CUBE);
|
event.registerStyle(CUBE);
|
||||||
|
event.registerEventStyle(DEATH);
|
||||||
event.registerStyle(FEET);
|
event.registerStyle(FEET);
|
||||||
event.registerStyle(FISHING);
|
event.registerStyle(FISHING);
|
||||||
event.registerStyle(HALO);
|
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.PParticle;
|
||||||
import dev.esophose.playerparticles.particles.ParticlePair;
|
import dev.esophose.playerparticles.particles.ParticlePair;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
@ -34,7 +35,7 @@ public class ParticleStyleFeet extends DefaultParticleStyle {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected List<String> getGuiIconMaterialNames() {
|
protected List<String> getGuiIconMaterialNames() {
|
||||||
return Collections.singletonList("GRASS");
|
return Arrays.asList("GRASS_BLOCK", "GRASS");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue