Added style 'fishing'

This commit is contained in:
Esophose 2020-04-15 13:23:06 -06:00
parent 9d9b42dadf
commit 4e571f2114
2 changed files with 85 additions and 0 deletions

View file

@ -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);

View file

@ -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) {
}
}