diff --git a/src/main/java/com/minelittlepony/unicopia/InteractionManager.java b/src/main/java/com/minelittlepony/unicopia/InteractionManager.java index 4215524e..aa1bb97d 100644 --- a/src/main/java/com/minelittlepony/unicopia/InteractionManager.java +++ b/src/main/java/com/minelittlepony/unicopia/InteractionManager.java @@ -20,6 +20,7 @@ public class InteractionManager { public static final int SOUND_BEE = 2; public static final int SOUND_MINECART = 3; public static final int SOUND_GLIDING = 4; + public static final int SOUND_MAGIC_BEAM = 5; public static final int SCREEN_DISPELL_ABILITY = 0; diff --git a/src/main/java/com/minelittlepony/unicopia/client/ClientInteractionManager.java b/src/main/java/com/minelittlepony/unicopia/client/ClientInteractionManager.java index 760a4613..d77a892a 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/ClientInteractionManager.java +++ b/src/main/java/com/minelittlepony/unicopia/client/ClientInteractionManager.java @@ -7,6 +7,7 @@ import com.minelittlepony.unicopia.FlightType; import com.minelittlepony.unicopia.InteractionManager; import com.minelittlepony.unicopia.USounds; import com.minelittlepony.unicopia.client.gui.DismissSpellScreen; +import com.minelittlepony.unicopia.client.sound.LoopedEntityTrackingSoundInstance; import com.minelittlepony.unicopia.client.sound.LoopingSoundInstance; import com.minelittlepony.unicopia.client.sound.MotionBasedSoundInstance; import com.minelittlepony.unicopia.entity.effect.UEffects; @@ -54,7 +55,7 @@ public class ClientInteractionManager extends InteractionManager { SoundManager soundManager = client.getSoundManager(); if (type == SOUND_EARS_RINGING && source instanceof LivingEntity) { - soundManager.play(new LoopingSoundInstance<>((LivingEntity)source, e -> e.hasStatusEffect(UEffects.SUN_BLINDNESS), USounds.ENTITY_PLAYER_EARS_RINGING, 1F, 1F)); + soundManager.play(new LoopingSoundInstance<>((LivingEntity)source, e -> e.hasStatusEffect(UEffects.SUN_BLINDNESS), USounds.ENTITY_PLAYER_EARS_RINGING, 1, 1)); } else if (type == SOUND_BEE && source instanceof BeeEntity) { soundManager.playNextTick( ((BeeEntity)source).hasAngerTime() @@ -70,6 +71,8 @@ public class ClientInteractionManager extends InteractionManager { }, USounds.ENTITY_PLAYER_CHANGELING_BUZZ, 1F, 1F)); } else if (type == SOUND_GLIDING && source instanceof PlayerEntity) { soundManager.play(new MotionBasedSoundInstance(SoundEvents.ITEM_ELYTRA_FLYING, (PlayerEntity)source)); + } else if (type == SOUND_MAGIC_BEAM) { + soundManager.play(new LoopedEntityTrackingSoundInstance(USounds.SPELL_CAST_SHOOT, 0.3F, 1F, source)); } }); } diff --git a/src/main/java/com/minelittlepony/unicopia/client/sound/LoopedEntityTrackingSoundInstance.java b/src/main/java/com/minelittlepony/unicopia/client/sound/LoopedEntityTrackingSoundInstance.java new file mode 100644 index 00000000..16aacdff --- /dev/null +++ b/src/main/java/com/minelittlepony/unicopia/client/sound/LoopedEntityTrackingSoundInstance.java @@ -0,0 +1,13 @@ +package com.minelittlepony.unicopia.client.sound; + +import net.minecraft.client.sound.EntityTrackingSoundInstance; +import net.minecraft.entity.Entity; +import net.minecraft.sound.SoundEvent; + +public class LoopedEntityTrackingSoundInstance extends EntityTrackingSoundInstance { + public LoopedEntityTrackingSoundInstance(SoundEvent soundEvent, float volume, float pitch, Entity entity) { + super(soundEvent, entity.getSoundCategory(), volume, pitch, entity); + this.repeat = true; + this.repeatDelay = 0; + } +} diff --git a/src/main/java/com/minelittlepony/unicopia/client/sound/LoopingSoundInstance.java b/src/main/java/com/minelittlepony/unicopia/client/sound/LoopingSoundInstance.java index 7811c3db..603ef019 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/sound/LoopingSoundInstance.java +++ b/src/main/java/com/minelittlepony/unicopia/client/sound/LoopingSoundInstance.java @@ -29,7 +29,6 @@ public class LoopingSoundInstance extends FadeOutSoundInstance x = source.getX(); y = source.getY(); z = source.getZ(); - return true; } } diff --git a/src/main/java/com/minelittlepony/unicopia/network/handler/ClientNetworkHandlerImpl.java b/src/main/java/com/minelittlepony/unicopia/network/handler/ClientNetworkHandlerImpl.java index d33b87c1..abc8c777 100644 --- a/src/main/java/com/minelittlepony/unicopia/network/handler/ClientNetworkHandlerImpl.java +++ b/src/main/java/com/minelittlepony/unicopia/network/handler/ClientNetworkHandlerImpl.java @@ -1,11 +1,13 @@ package com.minelittlepony.unicopia.network.handler; +import com.minelittlepony.unicopia.InteractionManager; import com.minelittlepony.unicopia.Owned; import com.minelittlepony.unicopia.USounds; import com.minelittlepony.unicopia.ability.magic.spell.trait.Trait; import com.minelittlepony.unicopia.client.ClientBlockDestructionManager; import com.minelittlepony.unicopia.client.DiscoveryToast; import com.minelittlepony.unicopia.client.gui.TribeSelectionScreen; +import com.minelittlepony.unicopia.entity.UEntities; import com.minelittlepony.unicopia.entity.player.Pony; import com.minelittlepony.unicopia.network.MsgBlockDestruction; import com.minelittlepony.unicopia.network.MsgCancelPlayerAbility; @@ -44,6 +46,10 @@ public class ClientNetworkHandlerImpl implements ClientNetworkHandler { ((Owned) entity).setMaster(world.getEntityById(packet.getEntityData())); } + if (entity.getType() == UEntities.MAGIC_BEAM) { + InteractionManager.instance().playLoopingSound(entity, InteractionManager.SOUND_MAGIC_BEAM); + } + world.addEntity(packet.getId(), entity); }