Skip to content

Commit

Permalink
Kill Effects - Added sound related configuration options.
Browse files Browse the repository at this point in the history
  • Loading branch information
areanimika committed Mar 1, 2024
1 parent 601728e commit 36d4118
Show file tree
Hide file tree
Showing 3 changed files with 95 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,21 @@
import com.areanimika.areanimikahax.mixinterface.ILightningEntity;
import meteordevelopment.meteorclient.utils.render.color.Color;
import net.minecraft.entity.LightningEntity;
import net.minecraft.sound.SoundCategory;
import net.minecraft.sound.SoundEvent;
import net.minecraft.sound.SoundEvents;
import net.minecraft.world.World;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Redirect;

@Mixin(LightningEntity.class)
public class LightningEntityMixin implements ILightningEntity {
public abstract class LightningEntityMixin implements ILightningEntity {
@Unique private Color color = null;
@Unique private double thunderVolume = 10000;
@Unique private double impactVolume = 2;
@Unique private SoundCategory soundCategory = SoundCategory.WEATHER;

@Override
public Color ama$getColorOverride() {
Expand All @@ -19,4 +28,42 @@ public class LightningEntityMixin implements ILightningEntity {
public void ama$setColor(Color color) {
this.color = color;
}

@Override
public double ama$getThunderVolume() {
return thunderVolume;
}

@Override
public void ama$setThunderVolume(double volume) {
this.thunderVolume = volume;
}

@Override
public double ama$getImpactVolume() {
return impactVolume;
}

@Override
public void ama$setImpactVolume(double volume) {
this.impactVolume = volume;
}

@Override public SoundCategory ama$getSoundCategory() {
return soundCategory;
}

@Override
public void ama$setSoundCategory(SoundCategory soundCategory) {
this.soundCategory = soundCategory;
}

@Redirect(at = @At(value = "INVOKE", target = "Lnet/minecraft/world/World;playSound(DDDLnet/minecraft/sound/SoundEvent;Lnet/minecraft/sound/SoundCategory;FFZ)V"), method = "tick")
public void onPlaySound(World instance, double x, double y, double z, SoundEvent sound, SoundCategory category, float volume, float pitch, boolean useDistance) {
double playVolume = volume;
if(sound == SoundEvents.ENTITY_LIGHTNING_BOLT_THUNDER) playVolume = ama$getThunderVolume();
else if (sound == SoundEvents.ENTITY_LIGHTNING_BOLT_IMPACT) playVolume = ama$getImpactVolume();

instance.playSound(x, y, z, sound, ama$getSoundCategory(), (float) playVolume, pitch, useDistance);
}
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,22 @@
package com.areanimika.areanimikahax.mixinterface;

import meteordevelopment.meteorclient.utils.render.color.Color;
import net.minecraft.sound.SoundCategory;

public interface ILightningEntity {
Color ama$getColorOverride();

void ama$setColor(Color color);

double ama$getThunderVolume();

void ama$setThunderVolume(double volume);

double ama$getImpactVolume();

void ama$setImpactVolume(double volume);

SoundCategory ama$getSoundCategory();

void ama$setSoundCategory(SoundCategory category);
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import meteordevelopment.meteorclient.settings.ColorSetting;
import meteordevelopment.meteorclient.settings.DoubleSetting;
import meteordevelopment.meteorclient.settings.EntityTypeListSetting;
import meteordevelopment.meteorclient.settings.EnumSetting;
import meteordevelopment.meteorclient.settings.IntSetting;
import meteordevelopment.meteorclient.settings.Setting;
import meteordevelopment.meteorclient.settings.SettingGroup;
Expand All @@ -21,6 +22,7 @@
import net.minecraft.entity.EntityType;
import net.minecraft.entity.LightningEntity;
import net.minecraft.entity.LivingEntity;
import net.minecraft.sound.SoundCategory;
import net.minecraft.util.math.Vec3d;

import java.util.Set;
Expand Down Expand Up @@ -125,12 +127,37 @@ public class KillEffects extends Module {
);

private final Setting<SettingColor> lightningColor = sgLightning.add(new ColorSetting.Builder()
.name("lightning-enabled")
.name("lightning-color")
.description("Color of the lightning.")
.defaultValue(new SettingColor(170, 0, 0, 255 * 0.3f))
.visible(lightningEnabled::get)
.build()
);

private final Setting<Double> lightningImpactVolume = sgLightning.add(new DoubleSetting.Builder()
.name("lightning-volume-impact")
.defaultValue(2)
.visible(lightningEnabled::get)
.noSlider()
.build()
);

private final Setting<Double> lightningThunderVolume = sgLightning.add(new DoubleSetting.Builder()
.name("lightning-volume-thunder")
.defaultValue(10000)
.visible(lightningEnabled::get)
.noSlider()
.build()
);

private final Setting<SoundCategory> lightningSoundCategory = sgLightning.add(new EnumSetting.Builder<SoundCategory>()
.name("lightning-sound-category")
.description("Changes what sound settings slider affects the lightning sounds.")
.defaultValue(SoundCategory.MASTER)
.visible(lightningEnabled::get)
.build()
);

/* Other Basic Effects */
private final SettingGroup sgEffects = settings.createGroup("Basic Effects");

Expand Down Expand Up @@ -167,7 +194,12 @@ public void onEntityDied(LivingDeathEvent event) {
if(lightningEnabled.get()) {
LightningEntity lightning = new LightningEntity(EntityType.LIGHTNING_BOLT, mc.world);
lightning.setPosition(entity.getPos());
((ILightningEntity) lightning).ama$setColor(lightningColor.get());

ILightningEntity iLightning = (ILightningEntity) lightning;
iLightning.ama$setColor(lightningColor.get());
iLightning.ama$setImpactVolume(lightningImpactVolume.get());
iLightning.ama$setThunderVolume(lightningThunderVolume.get());
iLightning.ama$setSoundCategory(lightningSoundCategory.get());

mc.world.addEntity(lightning);
}
Expand Down

0 comments on commit 36d4118

Please sign in to comment.