aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/dulkirmod/mixins/MixinSoundManager.java18
-rw-r--r--src/main/kotlin/dulkirmod/events/Events.kt10
-rw-r--r--src/main/kotlin/dulkirmod/features/ImpactDisplay.kt4
-rw-r--r--src/main/kotlin/dulkirmod/features/ReaperDisplay.kt4
-rw-r--r--src/main/kotlin/dulkirmod/features/chat/AbiphoneDND.kt22
-rw-r--r--src/main/resources/mixins.dulkirmod.json11
6 files changed, 49 insertions, 20 deletions
diff --git a/src/main/java/dulkirmod/mixins/MixinSoundManager.java b/src/main/java/dulkirmod/mixins/MixinSoundManager.java
new file mode 100644
index 0000000..f4e228f
--- /dev/null
+++ b/src/main/java/dulkirmod/mixins/MixinSoundManager.java
@@ -0,0 +1,18 @@
+package dulkirmod.mixins;
+
+import dulkirmod.events.AlwaysPlaySoundEvent;
+import net.minecraft.client.audio.ISound;
+import net.minecraft.client.audio.SoundManager;
+import net.minecraftforge.common.MinecraftForge;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.injection.At;
+import org.spongepowered.asm.mixin.injection.Inject;
+import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
+
+@Mixin(SoundManager.class)
+public class MixinSoundManager {
+ @Inject(at = @At("HEAD"), method = "playSound")
+ public void onSound(ISound p_sound, CallbackInfo ci) {
+ MinecraftForge.EVENT_BUS.post(new AlwaysPlaySoundEvent(p_sound, (SoundManager) (Object) this));
+ }
+}
diff --git a/src/main/kotlin/dulkirmod/events/Events.kt b/src/main/kotlin/dulkirmod/events/Events.kt
index af6c02a..092c07d 100644
--- a/src/main/kotlin/dulkirmod/events/Events.kt
+++ b/src/main/kotlin/dulkirmod/events/Events.kt
@@ -1,9 +1,19 @@
package dulkirmod.events
+import net.minecraft.client.audio.ISound
+import net.minecraft.client.audio.SoundManager
import net.minecraft.entity.Entity
+import net.minecraftforge.client.event.sound.PlaySoundEvent
import net.minecraftforge.fml.common.eventhandler.Event
/**
* Fired when an entity is removed from the world.
*/
class EntityRemovedEvent(val entity: Entity) : Event()
+
+/**
+ * Always fired when a sound is played, as opposed to [PlaySoundEvent], which does not get fired when the master volume is 0.
+ */
+data class AlwaysPlaySoundEvent(val sound: ISound, val soundManager: SoundManager) : Event() {
+ val name = sound.soundLocation.resourcePath
+} \ No newline at end of file
diff --git a/src/main/kotlin/dulkirmod/features/ImpactDisplay.kt b/src/main/kotlin/dulkirmod/features/ImpactDisplay.kt
index e1d3f07..e7ae854 100644
--- a/src/main/kotlin/dulkirmod/features/ImpactDisplay.kt
+++ b/src/main/kotlin/dulkirmod/features/ImpactDisplay.kt
@@ -1,8 +1,8 @@
package dulkirmod.features
+import dulkirmod.events.AlwaysPlaySoundEvent
import net.minecraft.item.ItemStack
import net.minecraft.nbt.NBTTagCompound
-import net.minecraftforge.client.event.sound.PlaySoundEvent
import net.minecraftforge.event.world.WorldEvent
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable
@@ -24,7 +24,7 @@ object ImpactDisplay {
}
@SubscribeEvent
- fun onSound(event: PlaySoundEvent) {
+ fun onSound(event: AlwaysPlaySoundEvent) {
if (event.name != "mob.zombie.remedy") return
if (event.sound.pitch != 0.6984127f) return
if (event.sound.volume != 1.0f) return
diff --git a/src/main/kotlin/dulkirmod/features/ReaperDisplay.kt b/src/main/kotlin/dulkirmod/features/ReaperDisplay.kt
index f398ca2..6d6489e 100644
--- a/src/main/kotlin/dulkirmod/features/ReaperDisplay.kt
+++ b/src/main/kotlin/dulkirmod/features/ReaperDisplay.kt
@@ -1,8 +1,8 @@
package dulkirmod.features
+import dulkirmod.events.AlwaysPlaySoundEvent
import net.minecraft.item.ItemStack
import net.minecraft.nbt.NBTTagCompound
-import net.minecraftforge.client.event.sound.PlaySoundEvent
import net.minecraftforge.event.world.WorldEvent
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable
@@ -24,7 +24,7 @@ object ReaperDisplay {
}
@SubscribeEvent
- fun onSound(event: PlaySoundEvent) {
+ fun onSound(event: AlwaysPlaySoundEvent) {
if (event.name != "mob.zombie.remedy") return
if (event.sound.pitch != 1.0f) return
if (event.sound.volume != .5f) return
diff --git a/src/main/kotlin/dulkirmod/features/chat/AbiphoneDND.kt b/src/main/kotlin/dulkirmod/features/chat/AbiphoneDND.kt
index d91e59e..242e226 100644
--- a/src/main/kotlin/dulkirmod/features/chat/AbiphoneDND.kt
+++ b/src/main/kotlin/dulkirmod/features/chat/AbiphoneDND.kt
@@ -1,9 +1,9 @@
package dulkirmod.features.chat
import dulkirmod.config.DulkirConfig
+import dulkirmod.events.AlwaysPlaySoundEvent
import dulkirmod.utils.TextUtils
import net.minecraftforge.client.event.ClientChatReceivedEvent
-import net.minecraftforge.client.event.sound.PlaySoundEvent
import net.minecraftforge.fml.common.eventhandler.EventPriority
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
@@ -11,16 +11,16 @@ private val abiphoneFormat = "✆ (\\w+) ✆ ".toRegex()
private var lastRing: Long = 0
object AbiphoneDND {
- //BLOCK ABIPHONE SOUNDS
- @SubscribeEvent(receiveCanceled = false, priority = EventPriority.LOW)
- fun onSound(event: PlaySoundEvent) {
- if (!DulkirConfig.abiDND) return
- if (System.currentTimeMillis() - lastRing < 5000) {
- if (event.name == "note.pling" && event.sound.volume == 0.69f && event.sound.pitch == 1.6666666f) {
- event.result = null
- }
- }
- }
+ //BLOCK ABIPHONE SOUNDS
+ @SubscribeEvent(receiveCanceled = false, priority = EventPriority.LOW)
+ fun onSound(event: AlwaysPlaySoundEvent) {
+ if (!DulkirConfig.abiDND) return
+ if (System.currentTimeMillis() - lastRing < 5000) {
+ if (event.name == "note.pling" && event.sound.volume == 0.69f && event.sound.pitch == 1.6666666f) {
+ event.result = null
+ }
+ }
+ }
fun handle(event: ClientChatReceivedEvent, unformatted: String) {
if (!DulkirConfig.abiDND) return
diff --git a/src/main/resources/mixins.dulkirmod.json b/src/main/resources/mixins.dulkirmod.json
index b083e17..a6684b3 100644
--- a/src/main/resources/mixins.dulkirmod.json
+++ b/src/main/resources/mixins.dulkirmod.json
@@ -5,17 +5,18 @@
"refmap": "mixins.dulkirmod.refmap.json",
"client": [
"AccessorRenderManager",
+ "MixinEntity",
+ "MixinEntityLivingBase",
"MixinEntityRenderer",
"MixinGuiContainer",
"MixinGuiScreen",
- "MixinItemRenderer",
- "MixinLayerArmorBase",
- "MixinRenderManager",
- "MixinEntity",
- "MixinEntityLivingBase",
"MixinGuiUtils",
"MixinItem",
+ "MixinItemRenderer",
+ "MixinLayerArmorBase",
"MixinOldAnimations",
+ "MixinRenderManager",
+ "MixinSoundManager",
"MixinWorld"
]
}