From d83b1dbcd11a6903009f74dd7ae12798b97bed8b Mon Sep 17 00:00:00 2001 From: Minecon724 Date: Fri, 20 Dec 2024 11:14:42 +0100 Subject: [PATCH] Large spekars --- .../item/speaker/BlockChecker.java | 2 +- .../item/speaker/BlockSpeaker.java | 36 ++++++++++++++----- .../musicPlugin/player/EntityMusicPlayer.java | 6 ++++ .../musicPlugin/player/LocalMusicPlayer.java | 3 ++ .../musicPlugin/player/MovingMusicPlayer.java | 6 ++++ .../m724/musicPlugin/player/MusicPlayer.java | 1 + .../musicPlugin/player/StaticMusicPlayer.java | 6 ++++ 7 files changed, 50 insertions(+), 10 deletions(-) diff --git a/src/main/java/eu/m724/musicPlugin/item/speaker/BlockChecker.java b/src/main/java/eu/m724/musicPlugin/item/speaker/BlockChecker.java index 79d189b..43e4d07 100644 --- a/src/main/java/eu/m724/musicPlugin/item/speaker/BlockChecker.java +++ b/src/main/java/eu/m724/musicPlugin/item/speaker/BlockChecker.java @@ -7,6 +7,6 @@ import java.util.HashSet; public class BlockChecker extends BukkitRunnable { @Override public void run() { - new HashSet<>(BlockSpeaker.speakers.values()).forEach(BlockSpeaker::check); + new HashSet<>(BlockSpeaker.speakers.values()).forEach(BlockSpeaker::tick); } } diff --git a/src/main/java/eu/m724/musicPlugin/item/speaker/BlockSpeaker.java b/src/main/java/eu/m724/musicPlugin/item/speaker/BlockSpeaker.java index dde461c..6e38430 100644 --- a/src/main/java/eu/m724/musicPlugin/item/speaker/BlockSpeaker.java +++ b/src/main/java/eu/m724/musicPlugin/item/speaker/BlockSpeaker.java @@ -1,19 +1,15 @@ package eu.m724.musicPlugin.item.speaker; import eu.m724.musicPlugin.Statics; -import eu.m724.musicPlugin.player.MovingMusicPlayer; -import eu.m724.musicPlugin.player.MusicPlayer; import eu.m724.musicPlugin.player.StaticMusicPlayer; import org.bukkit.Location; import org.bukkit.Material; -import org.bukkit.NamespacedKey; +import org.bukkit.Particle; import org.bukkit.metadata.FixedMetadataValue; -import org.bukkit.metadata.MetadataValue; -import org.bukkit.metadata.MetadataValueAdapter; -import org.checkerframework.checker.units.qual.N; import java.util.HashMap; import java.util.Map; +import java.util.concurrent.ThreadLocalRandom; public class BlockSpeaker extends Speaker { static final Map speakers = new HashMap<>(); @@ -31,6 +27,7 @@ public class BlockSpeaker extends Speaker { /* */ private final Location location; + private boolean large; public BlockSpeaker(Location location) { super(new StaticMusicPlayer(location)); @@ -43,13 +40,34 @@ public class BlockSpeaker extends Speaker { speakers.remove(location); } - public boolean check() { + public void tick() { if (location.getBlock().getType() == Material.NOTE_BLOCK && location.getBlock().hasMetadata("t_speaker")) { - return true; + if (location.clone().add(0, 1, 0).getBlock().getType() == Material.NOTE_BLOCK) { + if (!large) { + System.out.println("Speaker now large"); + getMusicPlayer().setDistance(64); + this.large = true; + } + } else { + if (large) { + System.out.println("Speaker now small"); + getMusicPlayer().setDistance(32); + this.large = false; + } + } + if (getMusicPlayer().isPlaying()) { + if (large) { + location.getWorld().spawnParticle(Particle.NOTE, location.clone().add(0.6, 0.5, 0), 1, 0, ThreadLocalRandom.current().nextDouble(-1, 0.5), ThreadLocalRandom.current().nextDouble(-0.4, 0.4)); + location.getWorld().spawnParticle(Particle.NOTE, location.clone().add(-0.6, 0.5, 0), 1, 0, ThreadLocalRandom.current().nextDouble(-1, 0.5), ThreadLocalRandom.current().nextDouble(-0.4, 0.4)); + location.getWorld().spawnParticle(Particle.NOTE, location.clone().add(0, 0.5, 0.6), 1, ThreadLocalRandom.current().nextDouble(-0.4, 0.4), ThreadLocalRandom.current().nextDouble(-1, 0.5), 0); + location.getWorld().spawnParticle(Particle.NOTE, location.clone().add(0, 0.5, -0.6), 1, ThreadLocalRandom.current().nextDouble(-0.4, 0.4), ThreadLocalRandom.current().nextDouble(-1, 0.5), 0); + } else { + location.getWorld().spawnParticle(Particle.NOTE, location.clone().add(0, 0.7, 0), 1, ThreadLocalRandom.current().nextDouble(-0.4, 0.4), 0, ThreadLocalRandom.current().nextDouble(-0.4, 0.4)); + } + } } else { System.out.println("Speaker disaper"); destroy(); - return false; } } } diff --git a/src/main/java/eu/m724/musicPlugin/player/EntityMusicPlayer.java b/src/main/java/eu/m724/musicPlugin/player/EntityMusicPlayer.java index c32ac6d..becaabd 100644 --- a/src/main/java/eu/m724/musicPlugin/player/EntityMusicPlayer.java +++ b/src/main/java/eu/m724/musicPlugin/player/EntityMusicPlayer.java @@ -1,6 +1,7 @@ package eu.m724.musicPlugin.player; import de.maxhenkel.voicechat.api.audiochannel.AudioChannel; +import de.maxhenkel.voicechat.api.audiochannel.EntityAudioChannel; import org.bukkit.entity.Entity; import java.util.UUID; @@ -24,4 +25,9 @@ public class EntityMusicPlayer extends MusicPlayer { return channel; } + + @Override + public void setDistance(int distance) { + ((EntityAudioChannel)this.channel).setDistance(distance); + } } diff --git a/src/main/java/eu/m724/musicPlugin/player/LocalMusicPlayer.java b/src/main/java/eu/m724/musicPlugin/player/LocalMusicPlayer.java index 659a930..7c54947 100644 --- a/src/main/java/eu/m724/musicPlugin/player/LocalMusicPlayer.java +++ b/src/main/java/eu/m724/musicPlugin/player/LocalMusicPlayer.java @@ -34,5 +34,8 @@ public class LocalMusicPlayer extends MusicPlayer { return channel; } + @Override + public void setDistance(int distance) { } // distance doesn't apply to this one + public static class NotConnectedException extends Exception {} } diff --git a/src/main/java/eu/m724/musicPlugin/player/MovingMusicPlayer.java b/src/main/java/eu/m724/musicPlugin/player/MovingMusicPlayer.java index aca953f..d157bb0 100644 --- a/src/main/java/eu/m724/musicPlugin/player/MovingMusicPlayer.java +++ b/src/main/java/eu/m724/musicPlugin/player/MovingMusicPlayer.java @@ -1,6 +1,7 @@ package eu.m724.musicPlugin.player; import de.maxhenkel.voicechat.api.audiochannel.AudioChannel; +import de.maxhenkel.voicechat.api.audiochannel.LocationalAudioChannel; import org.bukkit.Location; import org.bukkit.entity.Entity; @@ -47,4 +48,9 @@ public class MovingMusicPlayer extends MusicPlayer { return channel; } + + @Override + public void setDistance(int distance) { + ((LocationalAudioChannel)this.channel).setDistance(distance); + } } diff --git a/src/main/java/eu/m724/musicPlugin/player/MusicPlayer.java b/src/main/java/eu/m724/musicPlugin/player/MusicPlayer.java index e80c215..3c8b6c1 100644 --- a/src/main/java/eu/m724/musicPlugin/player/MusicPlayer.java +++ b/src/main/java/eu/m724/musicPlugin/player/MusicPlayer.java @@ -22,6 +22,7 @@ public abstract class MusicPlayer { private Consumer onAction = (r) -> {}; abstract AudioChannel createChannel(); + abstract public void setDistance(int distance); /** * Initializes this music player diff --git a/src/main/java/eu/m724/musicPlugin/player/StaticMusicPlayer.java b/src/main/java/eu/m724/musicPlugin/player/StaticMusicPlayer.java index 3f4aec1..f751555 100644 --- a/src/main/java/eu/m724/musicPlugin/player/StaticMusicPlayer.java +++ b/src/main/java/eu/m724/musicPlugin/player/StaticMusicPlayer.java @@ -1,6 +1,7 @@ package eu.m724.musicPlugin.player; import de.maxhenkel.voicechat.api.audiochannel.AudioChannel; +import de.maxhenkel.voicechat.api.audiochannel.LocationalAudioChannel; import org.bukkit.Location; import java.util.UUID; @@ -25,4 +26,9 @@ public class StaticMusicPlayer extends MusicPlayer { return channel; } + + @Override + public void setDistance(int distance) { + ((LocationalAudioChannel)this.channel).setDistance(distance); + } }