diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/ChimeBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/ChimeBlockBehavior.java index b61aa1243..fffedcef1 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/ChimeBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/ChimeBlockBehavior.java @@ -7,44 +7,34 @@ import net.momirealms.craftengine.core.block.BlockBehavior; import net.momirealms.craftengine.core.block.CustomBlock; import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory; import net.momirealms.craftengine.core.sound.SoundData; -import net.momirealms.craftengine.core.util.Pair; -import net.momirealms.craftengine.core.util.RandomUtils; import net.momirealms.craftengine.core.util.ResourceConfigUtils; -import java.util.List; import java.util.Map; import java.util.Optional; import java.util.concurrent.Callable; public class ChimeBlockBehavior extends BukkitBlockBehavior { public static final Factory FACTORY = new Factory(); - private final List> hitSounds; + private final SoundData hitSound; - public ChimeBlockBehavior(CustomBlock customBlock, List> hitSounds) { + public ChimeBlockBehavior(CustomBlock customBlock, SoundData hitSound) { super(customBlock); - this.hitSounds = hitSounds; + this.hitSound = hitSound; } @Override public void onProjectileHit(Object thisBlock, Object[] args, Callable superMethod) { - if (hitSounds.isEmpty()) return; - Pair hitSound = hitSounds.get(RandomUtils.generateRandomInt(0, hitSounds.size())); Object blockPos = FastNMS.INSTANCE.field$BlockHitResult$blockPos(args[2]); - Object sound = FastNMS.INSTANCE.constructor$SoundEvent(KeyUtils.toResourceLocation(hitSound.left().id()), Optional.empty()); - float pitch = hitSound.left().pitch().get() + RandomUtils.generateRandomInt(0, 1) * hitSound.right(); - FastNMS.INSTANCE.method$LevelAccessor$playSound(args[0], null, blockPos, sound, CoreReflections.instance$SoundSource$BLOCKS, hitSound.left().volume().get(), pitch); + Object sound = FastNMS.INSTANCE.constructor$SoundEvent(KeyUtils.toResourceLocation(hitSound.id()), Optional.empty()); + FastNMS.INSTANCE.method$LevelAccessor$playSound(args[0], null, blockPos, sound, CoreReflections.instance$SoundSource$BLOCKS, hitSound.volume().get(), hitSound.pitch().get()); } public static class Factory implements BlockBehaviorFactory { @Override public BlockBehavior create(CustomBlock block, Map arguments) { - List> hitSounds = ResourceConfigUtils.parseConfigAsList(arguments.get("hit-sounds"), map -> { - SoundData hitSound = SoundData.create(ResourceConfigUtils.requireNonNullOrThrow(arguments.get("sound"), "warning.config.block.behavior.chime.missing_hit_sound"), SoundData.SoundValue.FIXED_1, SoundData.SoundValue.ranged(0.9f, 1f)); - float randomMultiplier = ResourceConfigUtils.getAsFloat(arguments.get("random-pitch-multiplier"), "random-pitch-multiplier"); - return Pair.of(hitSound, randomMultiplier); - }); - return new ChimeBlockBehavior(block, hitSounds); + SoundData hitSound = SoundData.create(ResourceConfigUtils.requireNonNullOrThrow(arguments.get("hit-sound"), "warning.config.block.behavior.chime.missing_hit_sound"), SoundData.SoundValue.FIXED_1, SoundData.SoundValue.ranged(0.9f, 1f)); + return new ChimeBlockBehavior(block, hitSound); } } }