diff --git a/src/main/java/dev/cammiescorner/arcanuscontinuum/mixin/common/AbstractArrowMixin.java b/src/main/java/dev/cammiescorner/arcanuscontinuum/mixin/common/AbstractArrowMixin.java index 07d5cfb3..c1d0f4d3 100644 --- a/src/main/java/dev/cammiescorner/arcanuscontinuum/mixin/common/AbstractArrowMixin.java +++ b/src/main/java/dev/cammiescorner/arcanuscontinuum/mixin/common/AbstractArrowMixin.java @@ -1,4 +1,19 @@ package dev.cammiescorner.arcanuscontinuum.mixin.common; +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import net.minecraft.world.entity.projectile.AbstractArrow; +import net.minecraft.world.phys.Vec3; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +@Mixin(AbstractArrow.class) public class AbstractArrowMixin { + @WrapOperation(method = "tick", at = @At( + value = "INVOKE", + target = "Lnet/minecraft/world/entity/projectile/AbstractArrow;getDeltaMovement()Lnet/minecraft/world/phys/Vec3;" + )) + private Vec3 pleaseWork(AbstractArrow instance, Operation original) { + return original.call(instance).scale(0.5); + } } diff --git a/src/main/java/dev/cammiescorner/arcanuscontinuum/mixin/common/EntityMixin.java b/src/main/java/dev/cammiescorner/arcanuscontinuum/mixin/common/EntityMixin.java index baa834d1..ff52bf55 100644 --- a/src/main/java/dev/cammiescorner/arcanuscontinuum/mixin/common/EntityMixin.java +++ b/src/main/java/dev/cammiescorner/arcanuscontinuum/mixin/common/EntityMixin.java @@ -1,4 +1,45 @@ package dev.cammiescorner.arcanuscontinuum.mixin.common; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.phys.Vec3; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.ModifyVariable; + +@Mixin(Entity.class) public class EntityMixin { + @Shadow private Vec3 deltaMovement; + private Entity self = (Entity) (Object) this; + + @ModifyVariable(method = "move", at = @At("HEAD"), argsOnly = true) + private Vec3 modifyMotion(Vec3 value) { + return value.scale(0.5); + } + +// @WrapOperation(method = "saveWithoutId", at = @At( +// value = "INVOKE", +// target = "Lnet/minecraft/world/entity/Entity;getDeltaMovement()Lnet/minecraft/world/phys/Vec3;" +// )) +// private Vec3 saveDeltaMovementField(Entity instance, Operation original) { +// return deltaMovement; +// } +// +// @ModifyReturnValue(method = "isNoGravity", at = @At("RETURN")) +// private boolean noGrav(boolean original) { +// return !(self instanceof Player); +// } +// +// @ModifyReturnValue(method = "getDeltaMovement", at = @At("RETURN")) +// private Vec3 slowMovement(Vec3 original) { +// return self instanceof Player ? original : original.scale(0.5); +// } +// +// @WrapOperation(method = "addDeltaMovement", at = @At( +// value = "INVOKE", +// target = "Lnet/minecraft/world/entity/Entity;getDeltaMovement()Lnet/minecraft/world/phys/Vec3;" +// )) +// private Vec3 painPainPain(Entity instance, Operation original) { +// return deltaMovement; +// } } diff --git a/src/main/resources/arcanuscontinuum.mixins.json b/src/main/resources/arcanuscontinuum.mixins.json index 8573a529..0ffdfc65 100644 --- a/src/main/resources/arcanuscontinuum.mixins.json +++ b/src/main/resources/arcanuscontinuum.mixins.json @@ -5,9 +5,11 @@ "plugin": "dev.cammiescorner.arcanuscontinuum.ArcanusMixinConfig", "compatibilityLevel": "JAVA_${java_version}", "mixins": [ + "common.AbstractArrowMixin", "common.AbstractBlockStateMixin", "common.ArmorStandEntityMixin", "common.EnderDragonPartMixin", + "common.EntityMixin", "common.EntityViewMixin", "common.ExplosionMixin", "common.FallingBlockMixin", @@ -48,5 +50,5 @@ ], "injectors": { "defaultRequire": 1 - } + } }