forked from Clones/Controlify
rumble source
This commit is contained in:
@ -3,6 +3,7 @@ package dev.isxander.controlify.mixins.feature.rumble.blockbreak;
|
||||
import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
|
||||
import dev.isxander.controlify.api.ControlifyApi;
|
||||
import dev.isxander.controlify.rumble.ContinuousRumbleEffect;
|
||||
import dev.isxander.controlify.rumble.RumbleSource;
|
||||
import dev.isxander.controlify.rumble.RumbleState;
|
||||
import net.minecraft.client.multiplayer.MultiPlayerGameMode;
|
||||
import net.minecraft.core.BlockPos;
|
||||
@ -65,7 +66,7 @@ public class MultiPlayerGameModeMixin {
|
||||
};
|
||||
|
||||
blockBreakRumble = effect;
|
||||
ControlifyApi.get().currentController().rumbleManager().play(effect);
|
||||
ControlifyApi.get().currentController().rumbleManager().play(RumbleSource.BLOCK_DESTROY, effect);
|
||||
}
|
||||
|
||||
private void stopRumble() {
|
||||
|
@ -3,6 +3,7 @@ package dev.isxander.controlify.mixins.feature.rumble.damage;
|
||||
import com.mojang.authlib.GameProfile;
|
||||
import dev.isxander.controlify.api.ControlifyApi;
|
||||
import dev.isxander.controlify.rumble.BasicRumbleEffect;
|
||||
import dev.isxander.controlify.rumble.RumbleSource;
|
||||
import net.minecraft.client.multiplayer.ClientLevel;
|
||||
import net.minecraft.client.player.AbstractClientPlayer;
|
||||
import net.minecraft.client.player.LocalPlayer;
|
||||
@ -35,6 +36,7 @@ public abstract class LocalPlayerMixin extends AbstractClientPlayer {
|
||||
float magnitude = (Mth.clamp(damageTaken, smallestDamage, maxDamage) - smallestDamage) / (maxDamage - smallestDamage) * (1 - minMagnitude) + minMagnitude;
|
||||
System.out.println(magnitude);
|
||||
ControlifyApi.get().currentController().rumbleManager().play(
|
||||
RumbleSource.DAMAGE,
|
||||
BasicRumbleEffect.constant(magnitude, 0f, magnitude >= 0.75f ? 8 : 5)
|
||||
);
|
||||
}
|
||||
|
@ -3,6 +3,7 @@ package dev.isxander.controlify.mixins.feature.rumble.itembreak;
|
||||
import dev.isxander.controlify.api.ControlifyApi;
|
||||
import dev.isxander.controlify.rumble.BasicRumbleEffect;
|
||||
import dev.isxander.controlify.rumble.RumbleEffect;
|
||||
import dev.isxander.controlify.rumble.RumbleSource;
|
||||
import dev.isxander.controlify.rumble.RumbleState;
|
||||
import net.minecraft.client.player.LocalPlayer;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
@ -14,6 +15,7 @@ public class LocalPlayerMixin extends LivingEntityMixin {
|
||||
@Override
|
||||
protected void onBreakItemParticles(ItemStack stack, CallbackInfo ci) {
|
||||
ControlifyApi.get().currentController().rumbleManager().play(
|
||||
RumbleSource.ITEM_BREAK,
|
||||
BasicRumbleEffect.byTick(tick -> new RumbleState(tick <= 4 ? 1f : 0f, 1f), 10)
|
||||
);
|
||||
}
|
||||
|
@ -3,7 +3,9 @@ package dev.isxander.controlify.mixins.feature.rumble.sounds;
|
||||
import dev.isxander.controlify.api.ControlifyApi;
|
||||
import dev.isxander.controlify.rumble.BasicRumbleEffect;
|
||||
import dev.isxander.controlify.rumble.RumbleEffect;
|
||||
import dev.isxander.controlify.rumble.RumbleSource;
|
||||
import dev.isxander.controlify.rumble.RumbleState;
|
||||
import dev.isxander.controlify.utils.Easings;
|
||||
import net.minecraft.client.renderer.LevelRenderer;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.world.level.block.LevelEvent;
|
||||
@ -18,6 +20,7 @@ public class LevelRendererMixin {
|
||||
private void onLevelEvent(int eventId, BlockPos pos, int data, CallbackInfo ci) {
|
||||
switch (eventId) {
|
||||
case LevelEvent.SOUND_ANVIL_USED -> rumble(
|
||||
RumbleSource.GUI,
|
||||
BasicRumbleEffect.join(
|
||||
BasicRumbleEffect.constant(1f, 0.5f, 2),
|
||||
BasicRumbleEffect.empty(5)
|
||||
@ -30,18 +33,30 @@ public class LevelRendererMixin {
|
||||
private void onGlobalLevelEvent(int eventId, BlockPos pos, int data, CallbackInfo ci) {
|
||||
switch (eventId) {
|
||||
case LevelEvent.SOUND_DRAGON_DEATH -> rumble(
|
||||
RumbleSource.GLOBAL_EVENT,
|
||||
BasicRumbleEffect.join(
|
||||
BasicRumbleEffect.constant(1f, 1f, 194),
|
||||
BasicRumbleEffect.byTime(t -> {
|
||||
float easeOutQuad = 1 - (1 - t) * (1 - t);
|
||||
float easeOutQuad = Easings.easeOutQuad(t);
|
||||
return new RumbleState(1 - easeOutQuad, 1 - easeOutQuad);
|
||||
}, 63)
|
||||
)
|
||||
);
|
||||
case LevelEvent.SOUND_WITHER_BOSS_SPAWN -> rumble(
|
||||
RumbleSource.GLOBAL_EVENT,
|
||||
BasicRumbleEffect.join(
|
||||
BasicRumbleEffect.constant(1f, 1f, 9),
|
||||
BasicRumbleEffect.constant(0.1f, 1f, 14),
|
||||
BasicRumbleEffect.byTime(t -> {
|
||||
float easeOutQuad = 1 - (1 - t) * (1 - t);
|
||||
return new RumbleState(0f, 1 - easeOutQuad);
|
||||
}, 56)
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
private void rumble(RumbleEffect effect) {
|
||||
ControlifyApi.get().currentController().rumbleManager().play(effect);
|
||||
private void rumble(RumbleSource source, RumbleEffect effect) {
|
||||
ControlifyApi.get().currentController().rumbleManager().play(source, effect);
|
||||
}
|
||||
}
|
||||
|
@ -3,6 +3,7 @@ package dev.isxander.controlify.mixins.feature.rumble.useitem;
|
||||
import dev.isxander.controlify.api.ControlifyApi;
|
||||
import dev.isxander.controlify.rumble.BasicRumbleEffect;
|
||||
import dev.isxander.controlify.rumble.ContinuousRumbleEffect;
|
||||
import dev.isxander.controlify.rumble.RumbleSource;
|
||||
import dev.isxander.controlify.rumble.RumbleState;
|
||||
import net.minecraft.client.player.LocalPlayer;
|
||||
import net.minecraft.world.InteractionHand;
|
||||
@ -27,7 +28,10 @@ public abstract class LocalPlayerMixin extends LivingEntityMixin {
|
||||
startRumble(new ContinuousRumbleEffect(tick ->
|
||||
new RumbleState(0f, tick % 4 / 4f * 0.12f + 0.05f)
|
||||
));
|
||||
case EAT, DRINK -> startRumble(BasicRumbleEffect.constant(0.05f, 0.1f, 1).continuous());
|
||||
case EAT, DRINK ->
|
||||
startRumble(new ContinuousRumbleEffect(tick ->
|
||||
new RumbleState(0.05f, 0.1f)
|
||||
));
|
||||
case TOOT_HORN ->
|
||||
startRumble(new ContinuousRumbleEffect(tick ->
|
||||
new RumbleState(Math.min(1f, tick / 10f), 0.25f)
|
||||
@ -49,7 +53,7 @@ public abstract class LocalPlayerMixin extends LivingEntityMixin {
|
||||
}
|
||||
|
||||
private void startRumble(ContinuousRumbleEffect effect) {
|
||||
ControlifyApi.get().currentController().rumbleManager().play(effect);
|
||||
ControlifyApi.get().currentController().rumbleManager().play(RumbleSource.USE_ITEM, effect);
|
||||
useItemRumble = effect;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user