diff --git a/src/main/java/com/simibubi/create/foundation/mixin/PlayerEntityRendererMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/PlayerEntityRendererMixin.java new file mode 100644 index 000000000..f3ceebfca --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/mixin/PlayerEntityRendererMixin.java @@ -0,0 +1,31 @@ +package com.simibubi.create.foundation.mixin; + +import com.simibubi.create.content.curiosities.zapper.ZapperItem; + +import net.minecraft.world.item.Item; + +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.CallbackInfoReturnable; + +import com.simibubi.create.content.curiosities.weapons.PotatoCannonItem; +import net.minecraft.client.model.HumanoidModel; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.client.renderer.entity.player.PlayerRenderer; +import net.minecraft.world.InteractionHand; + +@Mixin(PlayerRenderer.class) +public class PlayerEntityRendererMixin { + @Inject( + method = "getArmPose", + at = @At("HEAD"), + cancellable = true + ) + private static void getArmPose(AbstractClientPlayer player, InteractionHand hand, CallbackInfoReturnable ci) { + Item handItem = player.getItemInHand(hand).getItem(); + if (!player.swinging && (handItem instanceof PotatoCannonItem || handItem instanceof ZapperItem)) + ci.setReturnValue(HumanoidModel.ArmPose.CROSSBOW_HOLD); + } +} + diff --git a/src/main/resources/assets/create/models/item/potato_cannon/item.json b/src/main/resources/assets/create/models/item/potato_cannon/item.json index 282afdd16..a7388ac31 100644 --- a/src/main/resources/assets/create/models/item/potato_cannon/item.json +++ b/src/main/resources/assets/create/models/item/potato_cannon/item.json @@ -96,18 +96,20 @@ ], "display": { "thirdperson_righthand": { - "translation": [0, 2, 0] + "rotation": [0, -15, 0], + "translation": [0, 0, -4] }, "thirdperson_lefthand": { - "translation": [0, 2, 0] + "rotation": [0, -15, 0], + "translation": [0, 0, -4] }, "firstperson_righthand": { - "rotation": [5, 4, 5], - "translation": [0.25, 4, 0.75] + "rotation": [5, 5, 5], + "translation": [0.25, 5, 0.75] }, "firstperson_lefthand": { - "rotation": [5, 4, 5], - "translation": [0.25, 4, 0.75] + "rotation": [5, 5, 5], + "translation": [0.25, 5, 0.75] }, "ground": { "rotation": [0, 0, 90], @@ -129,4 +131,4 @@ "scale": [0.72, 0.72, 0.72] } } -} \ No newline at end of file +} diff --git a/src/main/resources/create.mixins.json b/src/main/resources/create.mixins.json index eca8d3b1a..89ebb960b 100644 --- a/src/main/resources/create.mixins.json +++ b/src/main/resources/create.mixins.json @@ -24,6 +24,7 @@ "HeavyBootsOnPlayerMixin", "LevelRendererMixin", "MapRendererMapInstanceMixin", + "PlayerEntityRendererMixin", "ModelDataRefreshMixin", "WindowResizeMixin", "accessor.AgeableListModelAccessor",