Skip to content

Commit f9b6715

Browse files
Add ParticleStyleKill
1 parent 22a8707 commit f9b6715

File tree

3 files changed

+138
-0
lines changed

3 files changed

+138
-0
lines changed

src/main/java/parallelmc/parallelutils/modules/charms/ParallelCharms.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import parallelmc.parallelutils.modules.charms.handlers.ICharmHandler;
2828
import parallelmc.parallelutils.modules.charms.helper.EncapsulatedType;
2929
import parallelmc.parallelutils.modules.charms.helper.Types;
30+
import parallelmc.parallelutils.modules.charms.playerparticles.styles.ParallelStyles;
3031

3132
import javax.annotation.Nullable;
3233
import java.io.IOException;
@@ -75,6 +76,7 @@ public void onEnable() {
7576
//PlayerParticles pp = (PlayerParticles) Bukkit.getPluginManager().getPlugin("PlayerParticles");
7677

7778
ppAPI = PlayerParticlesAPI.getInstance();
79+
ParallelStyles.initStyles(puPlugin);
7880
}
7981

8082
// Register handlers
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package parallelmc.parallelutils.modules.charms.playerparticles.styles;
2+
3+
import dev.esophose.playerparticles.event.ParticleStyleRegistrationEvent;
4+
import dev.esophose.playerparticles.styles.ParticleStyle;
5+
import org.bukkit.Bukkit;
6+
import org.bukkit.event.EventHandler;
7+
import org.bukkit.event.EventPriority;
8+
import org.bukkit.event.Listener;
9+
import org.bukkit.plugin.PluginManager;
10+
import parallelmc.parallelutils.Parallelutils;
11+
12+
public class ParallelStyles implements Listener {
13+
14+
public static final ParticleStyle KILL = new ParticleStyleKill();
15+
16+
public static void initStyles(Parallelutils puPlugin) {
17+
PluginManager pluginManager = Bukkit.getPluginManager();
18+
// Register event
19+
pluginManager.registerEvents(new ParallelStyles(), puPlugin);
20+
21+
pluginManager.registerEvents((Listener) KILL, puPlugin);
22+
}
23+
24+
@EventHandler(priority = EventPriority.LOW)
25+
public void onParticleStyleRegistration(ParticleStyleRegistrationEvent event) {
26+
event.registerEventStyle(KILL);
27+
}
28+
}
Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
package parallelmc.parallelutils.modules.charms.playerparticles.styles;
2+
3+
import dev.esophose.playerparticles.PlayerParticles;
4+
import dev.esophose.playerparticles.config.CommentedFileConfiguration;
5+
import dev.esophose.playerparticles.manager.DataManager;
6+
import dev.esophose.playerparticles.manager.ParticleManager;
7+
import dev.esophose.playerparticles.particles.PParticle;
8+
import dev.esophose.playerparticles.particles.PPlayer;
9+
import dev.esophose.playerparticles.particles.ParticlePair;
10+
import dev.esophose.playerparticles.styles.DefaultStyles;
11+
import dev.esophose.playerparticles.styles.ParticleStyle;
12+
import org.bukkit.Location;
13+
import org.bukkit.Material;
14+
import org.bukkit.Particle;
15+
import org.bukkit.entity.LivingEntity;
16+
import org.bukkit.entity.Player;
17+
import org.bukkit.event.EventHandler;
18+
import org.bukkit.event.EventPriority;
19+
import org.bukkit.event.Listener;
20+
import org.bukkit.event.entity.EntityDeathEvent;
21+
22+
import java.util.ArrayList;
23+
import java.util.List;
24+
25+
public class ParticleStyleKill implements ParticleStyle, Listener {
26+
27+
private final int MULTIPLIER = 15;
28+
29+
@Override
30+
public List<PParticle> getParticles(ParticlePair particle, Location location) {
31+
List<PParticle> particles = new ArrayList<>();
32+
33+
for (int i = 0; i < MULTIPLIER; i++) {
34+
particles.addAll(DefaultStyles.NORMAL.getParticles(particle, location));
35+
}
36+
37+
return particles;
38+
}
39+
40+
@Override
41+
public List<PParticle> getParticles(ParticlePair particle, Location location, Player player) {
42+
return getParticles(particle, location);
43+
}
44+
45+
@Override
46+
public void updateTimers() {
47+
}
48+
49+
@Override
50+
public boolean isEnabled() {
51+
return true;
52+
}
53+
54+
@Override
55+
public String getInternalName() {
56+
return "kill";
57+
}
58+
59+
@Override
60+
public Material getGuiIconMaterial() {
61+
return Material.BONE;
62+
}
63+
64+
@Override
65+
public boolean canBeFixed() {
66+
return false;
67+
}
68+
69+
@Override
70+
public boolean canToggleWithMovement() {
71+
return ParticleStyle.super.canToggleWithMovement();
72+
}
73+
74+
@Override
75+
public boolean canToggleWithCombat() {
76+
return ParticleStyle.super.canToggleWithCombat();
77+
}
78+
79+
@Override
80+
public double getFixedEffectOffset() {
81+
return ParticleStyle.super.getFixedEffectOffset();
82+
}
83+
84+
@Override
85+
public boolean hasLongRangeVisibility() {
86+
return true;
87+
}
88+
89+
@EventHandler(priority = EventPriority.MONITOR)
90+
public void onPlayerKill(EntityDeathEvent event) {
91+
LivingEntity entity = event.getEntity();
92+
93+
Player player = entity.getKiller();
94+
95+
if (player == null) return;
96+
97+
ParticleManager particleManager = PlayerParticles.getInstance().getManager(ParticleManager.class);
98+
99+
PPlayer pplayer = PlayerParticles.getInstance().getManager(DataManager.class).getPPlayer(player.getUniqueId());
100+
101+
if (pplayer == null) return;
102+
103+
for (ParticlePair particle : pplayer.getActiveParticlesForStyle(ParallelStyles.KILL)) {
104+
Location loc = entity.getLocation().add(0, 1, 0);
105+
particleManager.displayParticles(pplayer, player.getWorld(), particle, ParallelStyles.KILL.getParticles(particle, loc), false);
106+
}
107+
}
108+
}

0 commit comments

Comments
 (0)