mirror of
https://github.com/TotalFreedomMC/PlayerParticles.git
synced 2025-02-11 03:29:53 +00:00
Added style 'fishing'
This commit is contained in:
parent
9d9b42dadf
commit
4e571f2114
2 changed files with 85 additions and 0 deletions
|
@ -24,6 +24,7 @@ public class DefaultStyles implements Listener {
|
|||
public static final ParticleStyle COMPANION = new ParticleStyleCompanion();
|
||||
public static final ParticleStyle CUBE = new ParticleStyleCube();
|
||||
public static final ParticleStyle FEET = new ParticleStyleFeet();
|
||||
public static final ParticleStyle FISHING = new ParticleStyleFishing();
|
||||
public static final ParticleStyle HALO = new ParticleStyleHalo();
|
||||
public static final ParticleStyle HURT = new ParticleStyleHurt();
|
||||
public static final ParticleStyle INVOCATION = new ParticleStyleInvocation();
|
||||
|
@ -62,6 +63,7 @@ public class DefaultStyles implements Listener {
|
|||
pluginManager.registerEvents((Listener) ARROWS, playerParticles);
|
||||
pluginManager.registerEvents((Listener) BLOCKBREAK, playerParticles);
|
||||
pluginManager.registerEvents((Listener) BLOCKPLACE, playerParticles);
|
||||
pluginManager.registerEvents((Listener) FISHING, playerParticles);
|
||||
pluginManager.registerEvents((Listener) HURT, playerParticles);
|
||||
pluginManager.registerEvents((Listener) MOVE, playerParticles);
|
||||
pluginManager.registerEvents((Listener) SWORDS, playerParticles);
|
||||
|
@ -81,6 +83,7 @@ public class DefaultStyles implements Listener {
|
|||
event.registerStyle(COMPANION);
|
||||
event.registerStyle(CUBE);
|
||||
event.registerStyle(FEET);
|
||||
event.registerStyle(FISHING);
|
||||
event.registerStyle(HALO);
|
||||
event.registerEventStyle(HURT);
|
||||
event.registerStyle(INVOCATION);
|
||||
|
|
|
@ -0,0 +1,82 @@
|
|||
package dev.esophose.playerparticles.styles;
|
||||
|
||||
import dev.esophose.playerparticles.config.CommentedFileConfiguration;
|
||||
import dev.esophose.playerparticles.particles.PParticle;
|
||||
import dev.esophose.playerparticles.particles.ParticlePair;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.FishHook;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.entity.Projectile;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.entity.ProjectileLaunchEvent;
|
||||
import org.bukkit.event.player.PlayerFishEvent;
|
||||
import org.bukkit.event.player.PlayerFishEvent.State;
|
||||
|
||||
public class ParticleStyleFishing extends DefaultParticleStyle implements Listener {
|
||||
|
||||
private List<FishHook> projectiles;
|
||||
|
||||
public ParticleStyleFishing() {
|
||||
super("fishing", false, false, 0);
|
||||
|
||||
this.projectiles = Collections.synchronizedList(new ArrayList<>());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PParticle> getParticles(ParticlePair particle, Location location) {
|
||||
List<PParticle> particles = new ArrayList<>();
|
||||
|
||||
List<FishHook> listCopy = new ArrayList<>(this.projectiles); // Copy in case of modification while looping due to async
|
||||
for (FishHook fishHook : listCopy)
|
||||
particles.add(new PParticle(fishHook.getLocation(), 0.05F, 0.05F, 0.05F, 0.0F));
|
||||
|
||||
return particles;
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes all fish hooks that are considered dead
|
||||
*/
|
||||
@Override
|
||||
public void updateTimers() {
|
||||
this.projectiles.removeIf(x -> !x.isValid());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<String> getGuiIconMaterialNames() {
|
||||
return Collections.singletonList("FISHING_ROD");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasLongRangeVisibility() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerFish(PlayerFishEvent event) {
|
||||
switch (event.getState()) {
|
||||
case FISHING:
|
||||
this.projectiles.add(event.getHook());
|
||||
break;
|
||||
case CAUGHT_FISH:
|
||||
case REEL_IN:
|
||||
this.projectiles.remove(event.getHook());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setDefaultSettings(CommentedFileConfiguration config) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void loadSettings(CommentedFileConfiguration config) {
|
||||
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in a new issue