mirror of
https://gitlab.com/phoenix-dvpmt/mmoitems.git
synced 2025-03-01 15:51:03 +01:00
Fixed custom sounds not playing correctly when used alongside lutes
This commit is contained in:
parent
99e8e7e9a6
commit
4e3ea77dbb
@ -14,7 +14,6 @@ import net.mmogroup.mmolib.api.item.NBTItem;
|
||||
import net.mmogroup.mmolib.version.VersionSound;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Particle;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
@ -46,7 +45,7 @@ public class Lute extends UntargetedWeapon {
|
||||
Vector weight = new Vector(0, -.003 * getNBTItem().getStat(ItemStats.NOTE_WEIGHT.getId()), 0);
|
||||
|
||||
LuteAttackEffect effect = LuteAttackEffect.get(getNBTItem());
|
||||
Sound sound = new SoundReader(getNBTItem().getString("MMOITEMS_LUTE_ATTACK_SOUND"), VersionSound.BLOCK_NOTE_BLOCK_BELL.toSound()).getSound();
|
||||
SoundReader sound = new SoundReader(getNBTItem().getString("MMOITEMS_LUTE_ATTACK_SOUND"), VersionSound.BLOCK_NOTE_BLOCK_BELL.toSound());
|
||||
if (effect != null) {
|
||||
effect.getAttack().handle(stats, getNBTItem(), attackDamage, range, weight, sound);
|
||||
return;
|
||||
@ -63,7 +62,7 @@ public class Lute extends UntargetedWeapon {
|
||||
|
||||
List<Entity> entities = MMOUtils.getNearbyChunkEntities(loc);
|
||||
loc.getWorld().spawnParticle(Particle.NOTE, loc, 0);
|
||||
loc.getWorld().playSound(loc, sound, 2, (float) (.5 + (double) ti / range));
|
||||
sound.play(loc, 2, (float) (.5 + (double) ti / range));
|
||||
for (int j = 0; j < 3; j++) {
|
||||
loc.add(vec.add(weight));
|
||||
if (loc.getBlock().getType().isSolid()) {
|
||||
|
@ -1,34 +1,32 @@
|
||||
package net.Indyuce.mmoitems.api.interaction.weapon.untargeted.lute;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Particle;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import net.Indyuce.mmoitems.MMOItems;
|
||||
import net.Indyuce.mmoitems.MMOUtils;
|
||||
import net.Indyuce.mmoitems.api.ItemAttackResult;
|
||||
import net.Indyuce.mmoitems.api.player.PlayerStats.CachedStats;
|
||||
import net.Indyuce.mmoitems.api.util.SoundReader;
|
||||
import net.mmogroup.mmolib.api.DamageType;
|
||||
import net.mmogroup.mmolib.api.item.NBTItem;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Particle;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class BruteLuteAttack implements LuteAttackHandler {
|
||||
|
||||
@Override
|
||||
public void handle(CachedStats stats, NBTItem nbt, double attackDamage, double range, Vector weight, Sound sound) {
|
||||
public void handle(CachedStats stats, NBTItem nbt, double attackDamage, double range, Vector weight, SoundReader sound) {
|
||||
new BukkitRunnable() {
|
||||
final Vector vec = stats.getPlayer().getEyeLocation().getDirection().multiply(.4);
|
||||
final Location loc = stats.getPlayer().getEyeLocation();
|
||||
int ti = 0;
|
||||
|
||||
public void run() {
|
||||
if (ti++ > range)
|
||||
cancel();
|
||||
if (ti++ > range) cancel();
|
||||
|
||||
List<Entity> entities = MMOUtils.getNearbyChunkEntities(loc);
|
||||
for (int j = 0; j < 3; j++) {
|
||||
@ -39,8 +37,7 @@ public class BruteLuteAttack implements LuteAttackHandler {
|
||||
}
|
||||
|
||||
loc.getWorld().spawnParticle(Particle.NOTE, loc, 2, .1, .1, .1, 0);
|
||||
if (j == 0)
|
||||
loc.getWorld().playSound(loc, sound, 2, (float) (.5 + (double) ti / range));
|
||||
if (j == 0) sound.play(loc, 2, (float) (.5 + (double) ti / range));
|
||||
|
||||
for (Entity target : entities)
|
||||
if (MMOUtils.canDamage(stats.getPlayer(), loc, target)) {
|
||||
|
@ -1,34 +1,32 @@
|
||||
package net.Indyuce.mmoitems.api.interaction.weapon.untargeted.lute;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Particle;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import net.Indyuce.mmoitems.MMOItems;
|
||||
import net.Indyuce.mmoitems.MMOUtils;
|
||||
import net.Indyuce.mmoitems.api.ItemAttackResult;
|
||||
import net.Indyuce.mmoitems.api.player.PlayerStats.CachedStats;
|
||||
import net.Indyuce.mmoitems.api.util.SoundReader;
|
||||
import net.mmogroup.mmolib.api.DamageType;
|
||||
import net.mmogroup.mmolib.api.item.NBTItem;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Particle;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class CircularLuteAttack implements LuteAttackHandler {
|
||||
|
||||
@Override
|
||||
public void handle(CachedStats stats, NBTItem nbt, double attackDamage, double range, Vector weight, Sound sound) {
|
||||
public void handle(CachedStats stats, NBTItem nbt, double attackDamage, double range, Vector weight, SoundReader sound) {
|
||||
new BukkitRunnable() {
|
||||
final Vector vec = stats.getPlayer().getEyeLocation().getDirection().multiply(.4);
|
||||
final Location loc = stats.getPlayer().getEyeLocation();
|
||||
int ti = 0;
|
||||
|
||||
public void run() {
|
||||
if (ti++ > range)
|
||||
cancel();
|
||||
if (ti++ > range) cancel();
|
||||
|
||||
List<Entity> entities = MMOUtils.getNearbyChunkEntities(loc);
|
||||
for (int j = 0; j < 3; j++) {
|
||||
@ -42,8 +40,7 @@ public class CircularLuteAttack implements LuteAttackHandler {
|
||||
Vector vec = MMOUtils.rotateFunc(new Vector(Math.cos(a), Math.sin(a), 0).multiply(.3), loc);
|
||||
loc.getWorld().spawnParticle(Particle.NOTE, loc.clone().add(vec), 0);
|
||||
loc.getWorld().spawnParticle(Particle.NOTE, loc.clone().add(vec.multiply(-1)), 0);
|
||||
if (j == 0)
|
||||
loc.getWorld().playSound(loc, sound, 2, (float) (.5 + (double) ti / range));
|
||||
if (j == 0) sound.play(loc, 2, (float) (.5 + (double) ti / range));
|
||||
|
||||
for (Entity target : entities)
|
||||
if (MMOUtils.canDamage(stats.getPlayer(), loc, target)) {
|
||||
|
@ -2,6 +2,7 @@ package net.Indyuce.mmoitems.api.interaction.weapon.untargeted.lute;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
import net.Indyuce.mmoitems.api.util.SoundReader;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
@ -9,7 +10,7 @@ import net.Indyuce.mmoitems.api.player.PlayerStats.CachedStats;
|
||||
import net.mmogroup.mmolib.api.item.NBTItem;
|
||||
|
||||
public interface LuteAttackHandler {
|
||||
void handle(CachedStats stats, NBTItem nbt, double attackDamage, double range, Vector weight, Sound sound);
|
||||
void handle(CachedStats stats, NBTItem nbt, double attackDamage, double range, Vector weight, SoundReader sound);
|
||||
|
||||
Random random = new Random();
|
||||
}
|
||||
|
@ -1,34 +1,32 @@
|
||||
package net.Indyuce.mmoitems.api.interaction.weapon.untargeted.lute;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Particle;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import net.Indyuce.mmoitems.MMOItems;
|
||||
import net.Indyuce.mmoitems.MMOUtils;
|
||||
import net.Indyuce.mmoitems.api.ItemAttackResult;
|
||||
import net.Indyuce.mmoitems.api.player.PlayerStats.CachedStats;
|
||||
import net.Indyuce.mmoitems.api.util.SoundReader;
|
||||
import net.mmogroup.mmolib.api.DamageType;
|
||||
import net.mmogroup.mmolib.api.item.NBTItem;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Particle;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class SimpleLuteAttack implements LuteAttackHandler {
|
||||
|
||||
@Override
|
||||
public void handle(CachedStats stats, NBTItem nbt, double attackDamage, double range, Vector weight, Sound sound) {
|
||||
public void handle(CachedStats stats, NBTItem nbt, double attackDamage, double range, Vector weight, SoundReader sound) {
|
||||
new BukkitRunnable() {
|
||||
final Vector vec = stats.getPlayer().getEyeLocation().getDirection().multiply(.4);
|
||||
final Location loc = stats.getPlayer().getEyeLocation();
|
||||
int ti = 0;
|
||||
|
||||
public void run() {
|
||||
if (ti++ > range)
|
||||
cancel();
|
||||
if (ti++ > range) cancel();
|
||||
|
||||
List<Entity> entities = MMOUtils.getNearbyChunkEntities(loc);
|
||||
for (int j = 0; j < 3; j++) {
|
||||
@ -39,8 +37,7 @@ public class SimpleLuteAttack implements LuteAttackHandler {
|
||||
}
|
||||
|
||||
loc.getWorld().spawnParticle(Particle.NOTE, loc, 0);
|
||||
if (j == 0)
|
||||
loc.getWorld().playSound(loc, sound, 2, (float) (.5 + (double) ti / range));
|
||||
if (j == 0) sound.play(loc, 2, (float) (.5 + (double) ti / range));
|
||||
|
||||
for (Entity target : entities)
|
||||
if (MMOUtils.canDamage(stats.getPlayer(), loc, target)) {
|
||||
|
@ -1,34 +1,32 @@
|
||||
package net.Indyuce.mmoitems.api.interaction.weapon.untargeted.lute;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Particle;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import net.Indyuce.mmoitems.MMOItems;
|
||||
import net.Indyuce.mmoitems.MMOUtils;
|
||||
import net.Indyuce.mmoitems.api.ItemAttackResult;
|
||||
import net.Indyuce.mmoitems.api.player.PlayerStats.CachedStats;
|
||||
import net.Indyuce.mmoitems.api.util.SoundReader;
|
||||
import net.mmogroup.mmolib.api.DamageType;
|
||||
import net.mmogroup.mmolib.api.item.NBTItem;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Particle;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
public class SlashLuteAttack implements LuteAttackHandler {
|
||||
|
||||
@Override
|
||||
public void handle(CachedStats stats, NBTItem nbt, double attackDamage, double range, Vector weight, Sound sound) {
|
||||
public void handle(CachedStats stats, NBTItem nbt, double attackDamage, double range, Vector weight, SoundReader sound) {
|
||||
new BukkitRunnable() {
|
||||
final Vector vec = stats.getPlayer().getEyeLocation().getDirection();
|
||||
final Location loc = stats.getPlayer().getLocation().add(0, 1.3, 0);
|
||||
double ti = 1;
|
||||
|
||||
public void run() {
|
||||
if ((ti += .6) > 5)
|
||||
cancel();
|
||||
if ((ti += .6) > 5) cancel();
|
||||
|
||||
loc.getWorld().playSound(loc, sound, 2, (float) (.5 + ti / 5));
|
||||
sound.play(loc, 2, (float) (.5 + ti / range));
|
||||
for (int k = -30; k < 30; k += 3)
|
||||
if (random.nextBoolean()) {
|
||||
loc.setDirection(vec);
|
||||
|
@ -1,34 +1,32 @@
|
||||
package net.Indyuce.mmoitems.api.interaction.weapon.untargeted.lute;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Particle;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import net.Indyuce.mmoitems.MMOItems;
|
||||
import net.Indyuce.mmoitems.MMOUtils;
|
||||
import net.Indyuce.mmoitems.api.ItemAttackResult;
|
||||
import net.Indyuce.mmoitems.api.player.PlayerStats.CachedStats;
|
||||
import net.Indyuce.mmoitems.api.util.SoundReader;
|
||||
import net.mmogroup.mmolib.api.DamageType;
|
||||
import net.mmogroup.mmolib.api.item.NBTItem;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Particle;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class WaveLuteAttack implements LuteAttackHandler {
|
||||
|
||||
@Override
|
||||
public void handle(CachedStats stats, NBTItem nbt, double attackDamage, double range, Vector weight, Sound sound) {
|
||||
public void handle(CachedStats stats, NBTItem nbt, double attackDamage, double range, Vector weight, SoundReader sound) {
|
||||
new BukkitRunnable() {
|
||||
final Vector vec = stats.getPlayer().getEyeLocation().getDirection().multiply(.4);
|
||||
final Location loc = stats.getPlayer().getEyeLocation();
|
||||
int ti = 0;
|
||||
|
||||
public void run() {
|
||||
if (ti++ > range)
|
||||
cancel();
|
||||
if (ti++ > range) cancel();
|
||||
|
||||
List<Entity> entities = MMOUtils.getNearbyChunkEntities(loc);
|
||||
for (int j = 0; j < 3; j++) {
|
||||
@ -41,8 +39,7 @@ public class WaveLuteAttack implements LuteAttackHandler {
|
||||
Vector vec = MMOUtils.rotateFunc(new Vector(.5, 0, 0), loc);
|
||||
loc.getWorld().spawnParticle(Particle.NOTE, loc.clone().add(vec.multiply(Math.sin((double) ti / 2))), 0);
|
||||
loc.getWorld().spawnParticle(Particle.NOTE, loc.clone().add(vec.multiply(-1)), 0);
|
||||
if (j == 0)
|
||||
loc.getWorld().playSound(loc, sound, 2, (float) (.5 + (double) ti / range));
|
||||
if (j == 0) sound.play(loc, 2, (float) (.5 + (double) ti / range));
|
||||
|
||||
for (Entity target : entities)
|
||||
if (MMOUtils.canDamage(stats.getPlayer(), loc, target)) {
|
||||
|
@ -1,5 +1,6 @@
|
||||
package net.Indyuce.mmoitems.api.util;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
@ -25,7 +26,7 @@ public class SoundReader {
|
||||
}
|
||||
|
||||
this.sound = sound;
|
||||
this.soundKey = soundKey;
|
||||
this.soundKey = soundKey.toLowerCase();
|
||||
}
|
||||
|
||||
public Sound getSound() {
|
||||
@ -46,4 +47,15 @@ public class SoundReader {
|
||||
else
|
||||
player.playSound(player.getLocation(), soundKey, vol, pitch);
|
||||
}
|
||||
|
||||
public void play(Location loc) {
|
||||
play(loc, 1, 1);
|
||||
}
|
||||
|
||||
public void play(Location loc, float vol, float pitch) {
|
||||
if(soundKey.isEmpty())
|
||||
loc.getWorld().playSound(loc, sound, vol, pitch);
|
||||
else
|
||||
loc.getWorld().playSound(loc, soundKey, vol, pitch);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user