From e0de9817f586ec07a68bcc1e4f87e202ffae213a Mon Sep 17 00:00:00 2001 From: OreCruncher Date: Sat, 6 Feb 2016 16:19:53 -0800 Subject: [PATCH] Weapon swoosh --- build.properties | 2 +- .../mod/DynSurround/ModOptions.java | 9 ++++ .../client/EnvironStateHandler.java | 43 +++++++++++++++- .../client/PlayerSoundEffectHandler.java | 47 +++++++++++++----- src/main/resources/META-INF/dsurround_at.cfg | 1 + .../resources/assets/dsurround/sounds.json | 12 +++++ .../sounds/ambient/steve/swoosh1.ogg | Bin 0 -> 3792 bytes .../sounds/ambient/steve/swoosh2.ogg | Bin 0 -> 3863 bytes .../sounds/ambient/steve/swoosh3.ogg | Bin 0 -> 3880 bytes .../sounds/ambient/steve/swoosh4.ogg | Bin 0 -> 3764 bytes .../sounds/ambient/steve/swoosh5.ogg | Bin 0 -> 3745 bytes .../sounds/ambient/steve/swoosh6.ogg | Bin 0 -> 3784 bytes 12 files changed, 99 insertions(+), 15 deletions(-) create mode 100644 src/main/resources/assets/dsurround/sounds/ambient/steve/swoosh1.ogg create mode 100644 src/main/resources/assets/dsurround/sounds/ambient/steve/swoosh2.ogg create mode 100644 src/main/resources/assets/dsurround/sounds/ambient/steve/swoosh3.ogg create mode 100644 src/main/resources/assets/dsurround/sounds/ambient/steve/swoosh4.ogg create mode 100644 src/main/resources/assets/dsurround/sounds/ambient/steve/swoosh5.ogg create mode 100644 src/main/resources/assets/dsurround/sounds/ambient/steve/swoosh6.ogg diff --git a/build.properties b/build.properties index f8c9c8a..b1a1740 100644 --- a/build.properties +++ b/build.properties @@ -4,7 +4,7 @@ archive = DynamicSurroundings version.mod.major = 2 version.mod.minor = 0 version.mod.revis = 4 -version.mod.patch = .4BETA +version.mod.patch = .5BETA version.minecraft = 1.8.9 version.forge = 11.15.1.1732 diff --git a/src/main/java/org/blockartistry/mod/DynSurround/ModOptions.java b/src/main/java/org/blockartistry/mod/DynSurround/ModOptions.java index 54b8d0a..85f11e2 100644 --- a/src/main/java/org/blockartistry/mod/DynSurround/ModOptions.java +++ b/src/main/java/org/blockartistry/mod/DynSurround/ModOptions.java @@ -112,6 +112,8 @@ private ModOptions() { protected static int streamingSoundChannelCount = 4; protected static final String CONFIG_ENABLE_JUMP_SOUND = "Jump Sound"; protected static boolean enableJumpSound = true; + protected static final String CONFIG_ENABLE_SWING_SOUND = "Swing Sound"; + protected static boolean enableSwingSound = true; protected static final String CATEGORY_PLAYER = "player"; protected static final String CONFIG_SUPPRESS_POTION_PARTICLES = "Suppress Potion Particles"; @@ -255,6 +257,9 @@ public static void load(final Configuration config) { comment = "Enable sound effect when jumping"; enableJumpSound = config.getBoolean(CONFIG_ENABLE_JUMP_SOUND, CATEGORY_SOUND, enableJumpSound, comment); + comment = "Enable weapons swing sound effect when attacking"; + enableSwingSound = config.getBoolean(CONFIG_ENABLE_SWING_SOUND, CATEGORY_SOUND, enableSwingSound, comment); + // CATEGORY: player.potion hud comment = "Enable display of potion icons in display"; potionHudEnabled = config.getBoolean(CONFIG_POTION_HUD_ENABLE, CATEGORY_POTION_HUD, potionHudEnabled, comment); @@ -396,6 +401,10 @@ public static int getNumberStreamingSoundChannels() { public static boolean getEnableJumpSound() { return enableJumpSound; } + + public static boolean getEnableSwingSound() { + return enableSwingSound; + } public static boolean getSuppressPotionParticleEffect() { return suppressPotionParticles; diff --git a/src/main/java/org/blockartistry/mod/DynSurround/client/EnvironStateHandler.java b/src/main/java/org/blockartistry/mod/DynSurround/client/EnvironStateHandler.java index b99a587..2b2d261 100644 --- a/src/main/java/org/blockartistry/mod/DynSurround/client/EnvironStateHandler.java +++ b/src/main/java/org/blockartistry/mod/DynSurround/client/EnvironStateHandler.java @@ -42,12 +42,17 @@ import net.minecraft.entity.passive.EntityHorse; import net.minecraft.entity.passive.EntityPig; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemAxe; +import net.minecraft.item.ItemStack; +import net.minecraft.item.ItemSword; import net.minecraft.potion.Potion; import net.minecraft.util.BlockPos; import net.minecraft.world.World; import net.minecraft.world.biome.BiomeGenBase; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.entity.living.LivingEvent.LivingJumpEvent; +import net.minecraftforge.event.entity.player.AttackEntityEvent; import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.common.eventhandler.EventPriority; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; @@ -56,8 +61,24 @@ @SideOnly(Side.CLIENT) public class EnvironStateHandler implements IClientEffectHandler { - private static final SoundEffect JUMP = ModOptions.getEnableJumpSound() - ? new SoundEffect("dsurround:jump", 0.2F, 1.0F, true) : null; + private static final SoundEffect JUMP; + private static final SoundEffect SWORD; + private static final SoundEffect AXE; + + static { + if (ModOptions.getEnableJumpSound()) + JUMP = new SoundEffect("dsurround:jump", 0.2F, 1.0F, true); + else + JUMP = null; + + if (ModOptions.getEnableSwingSound()) { + SWORD = new SoundEffect("dsurround:swoosh", 1.0F, 1.0F); + AXE = new SoundEffect("dsurround:swoosh", 1.0F, 0.5F); + } else { + SWORD = null; + AXE = null; + } + } // Diagnostic strings to display in the debug HUD private static List diagnostics = new ArrayList(); @@ -320,6 +341,24 @@ public void onJump(final LivingJumpEvent event) { if (JUMP != null && event.entity.worldObj.isRemote && EnvironState.isPlayer(event.entity)) PlayerSoundEffectHandler.playSoundAtPlayer(EnvironState.getPlayer(), JUMP, 0); } + + @SubscribeEvent + public void onItemUse(final AttackEntityEvent event) { + if(SWORD != null && event.entityPlayer.worldObj.isRemote && EnvironState.isPlayer(event.entityPlayer)) { + final ItemStack currentItem = event.entityPlayer.getCurrentEquippedItem(); + if(currentItem != null) { + SoundEffect sound = null; + final Item item = currentItem.getItem(); + if(item instanceof ItemSword) + sound = SWORD; + else if(item instanceof ItemAxe) + sound = AXE; + + if(sound != null) + PlayerSoundEffectHandler.playSoundAtPlayer(EnvironState.getPlayer(), sound, 0); + } + } + } @SubscribeEvent(priority = EventPriority.HIGHEST) public void diagnostics(final DiagnosticEvent.Gather event) { diff --git a/src/main/java/org/blockartistry/mod/DynSurround/client/PlayerSoundEffectHandler.java b/src/main/java/org/blockartistry/mod/DynSurround/client/PlayerSoundEffectHandler.java index ea8bc57..0754714 100644 --- a/src/main/java/org/blockartistry/mod/DynSurround/client/PlayerSoundEffectHandler.java +++ b/src/main/java/org/blockartistry/mod/DynSurround/client/PlayerSoundEffectHandler.java @@ -195,6 +195,18 @@ public float getZPosF() { public String toString() { return this.sound.toString(); } + + @Override + public boolean equals(final Object anObj) { + if (this == anObj) + return true; + if (anObj instanceof PlayerSound) + return this.sameSound(((PlayerSound) anObj).sound); + if (anObj instanceof SoundEffect) + return this.sameSound((SoundEffect) anObj); + return false; + } + } private static boolean didReloadOccur() { @@ -205,15 +217,15 @@ private static boolean didReloadOccur() { } return false; } - + private int currentSoundCount() { return Minecraft.getMinecraft().getSoundHandler().sndManager.playingSounds.size(); } - + private int maxSoundCount() { return SoundSystemConfig.getNumberNormalChannels() + SoundSystemConfig.getNumberStreamingChannels(); } - + private boolean canFitSound() { return currentSoundCount() < (maxSoundCount() - SOUND_QUEUE_SLACK); } @@ -227,17 +239,26 @@ private static void clearSounds() { activeSounds.clear(); } - private static boolean isPlaying(final SoundEffect sound) { + private static boolean isActive(final SoundEffect sound) { for (final PlayerSound s : activeSounds) - if (s.sameSound(sound)) + if (s.equals(sound)) return true; return false; } + private static boolean isSoundQueued(final PlayerSound sound) { + final SoundHandler handler = Minecraft.getMinecraft().getSoundHandler(); + return handler.isSoundPlaying(sound) || handler.sndManager.delayedSounds.containsKey(sound); + } + private static void playSound(final EntityPlayer player, final SoundEffect sound) { - final PlayerSound s = new PlayerSound(player, sound); - activeSounds.add(s); - Minecraft.getMinecraft().getSoundHandler().playSound(s); + try { + final PlayerSound s = new PlayerSound(player, sound); + Minecraft.getMinecraft().getSoundHandler().playSound(s); + activeSounds.add(s); + } catch (final Throwable t) { + ; + } } public static void playSoundAtPlayer(EntityPlayer player, final SoundEffect sound, final int tickDelay) { @@ -272,13 +293,15 @@ private static void processSounds(final EntityPlayer player, final ListPStA|w&2 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/dsurround/sounds/ambient/steve/swoosh2.ogg b/src/main/resources/assets/dsurround/sounds/ambient/steve/swoosh2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..84aff8ae4e610805bb0b59a1756d4a7fedf9743f GIT binary patch literal 3863 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 Tqiu|BUefV;SETd3Va9&}U2ldT literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/dsurround/sounds/ambient/steve/swoosh4.ogg b/src/main/resources/assets/dsurround/sounds/ambient/steve/swoosh4.ogg new file mode 100644 index 0000000000000000000000000000000000000000..e4545ec5725227c267feffce31a2c48a873b7c29 GIT binary patch literal 3764 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/dsurround/sounds/ambient/steve/swoosh6.ogg b/src/main/resources/assets/dsurround/sounds/ambient/steve/swoosh6.ogg new file mode 100644 index 0000000000000000000000000000000000000000..70b8bba9ad1f9e8c84bdce9cdc74a0a9ac3a15d8 GIT binary patch literal 3784 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 literal 0 HcmV?d00001