diff --git a/src/main/java/com/minelittlepony/client/model/AbstractPonyModel.java b/src/main/java/com/minelittlepony/client/model/AbstractPonyModel.java index e4437ff8..81e8fcdc 100644 --- a/src/main/java/com/minelittlepony/client/model/AbstractPonyModel.java +++ b/src/main/java/com/minelittlepony/client/model/AbstractPonyModel.java @@ -12,6 +12,7 @@ import com.minelittlepony.mson.api.model.MsonPart; import net.minecraft.client.model.ModelPart; import net.minecraft.client.render.VertexConsumer; +import net.minecraft.client.render.entity.model.CrossbowPosing; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.client.util.math.Vector3f; import net.minecraft.entity.Entity; @@ -448,7 +449,8 @@ public abstract class AbstractPonyModel extends ClientPo arm.pitch = ROTATE_90 * 2; break; case SPYGLASS: - // TODO: SPYGLASS + arm.pitch = MathHelper.clamp(head.pitch + CrossbowPosing.method_31978(arm), -2.4F, 3.3F); + arm.yaw = MathHelper.clamp(head.yaw + (0.7853982F * reflect), -1.1F, 0.0F); break; default: break; diff --git a/src/main/java/com/minelittlepony/client/render/entity/feature/GlowingItemFeature.java b/src/main/java/com/minelittlepony/client/render/entity/feature/GlowingItemFeature.java index b5e30e2c..a84183b5 100644 --- a/src/main/java/com/minelittlepony/client/render/entity/feature/GlowingItemFeature.java +++ b/src/main/java/com/minelittlepony/client/render/entity/feature/GlowingItemFeature.java @@ -13,6 +13,8 @@ import net.minecraft.client.util.math.MatrixStack; import net.minecraft.entity.LivingEntity; import net.minecraft.item.ItemStack; import net.minecraft.util.Arm; +import net.minecraft.util.Hand; +import net.minecraft.util.UseAction; public class GlowingItemFeature & IPonyModel> extends HeldItemFeature { @@ -26,10 +28,24 @@ public class GlowingItemFeature @Override protected void preItemRender(T entity, ItemStack drop, ModelTransformation.Mode transform, Arm hand, MatrixStack stack) { + + UseAction action = drop.getUseAction(); + + if (isUnicorn() && (action == UseAction.SPYGLASS || action == UseAction.BOW) && entity.getItemUseTimeLeft() > 0) { + Arm main = entity.getMainArm(); + if (entity.getActiveHand() == Hand.OFF_HAND) { + main = main.getOpposite(); + } + if (main == hand) { + stack.translate(0, 1, 0); + } + } + + super.preItemRender(entity, drop, transform, hand, stack); + if (isUnicorn()) { + stack.translate(0, -0.125F, 1); stack.translate(hand == Arm.LEFT ? -0.6F : 0, 0.5F, -0.3F); - } else { - super.preItemRender(entity, drop, transform, hand, stack); } } diff --git a/src/main/java/com/minelittlepony/client/render/entity/feature/HeldItemFeature.java b/src/main/java/com/minelittlepony/client/render/entity/feature/HeldItemFeature.java index 710c94b0..da023ccb 100644 --- a/src/main/java/com/minelittlepony/client/render/entity/feature/HeldItemFeature.java +++ b/src/main/java/com/minelittlepony/client/render/entity/feature/HeldItemFeature.java @@ -62,16 +62,6 @@ public class HeldItemFeature & stack.translate(0, 0.2F, 0); } - float left = arm == Arm.LEFT ? 1 : -1; - - if (entity.hasVehicle()) { - stack.translate(left / 10, -0.2F, -0.5F); - } - - stack.multiply(Vector3f.POSITIVE_X.getDegreesQuaternion(-90)); - stack.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(left * 180)); - stack.translate(left * -0.2F, 0, 0); - preItemRender(entity, drop, transform, arm, stack); MinecraftClient.getInstance().getItemRenderer().renderItem(entity, drop, transform, arm == Arm.LEFT, stack, renderContext, entity.world, lightUv, OverlayTexture.DEFAULT_UV); postItemRender(entity, drop, transform, arm, stack, renderContext); @@ -80,8 +70,16 @@ public class HeldItemFeature & } } - protected void preItemRender(T entity, ItemStack drop, ModelTransformation.Mode transform, Arm hand, MatrixStack stack) { - stack.translate(0, 0.125F, -1); + protected void preItemRender(T entity, ItemStack drop, ModelTransformation.Mode transform, Arm arm, MatrixStack stack) { + float left = arm == Arm.LEFT ? 1 : -1; + + if (entity.hasVehicle()) { + stack.translate(left / 10, -0.2F, -0.5F); + } + + stack.multiply(Vector3f.POSITIVE_X.getDegreesQuaternion(-90)); + stack.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(left * 180)); + stack.translate(left * -0.2F, 0.125F, -1); } protected void postItemRender(T entity, ItemStack drop, ModelTransformation.Mode transform, Arm hand, MatrixStack stack, VertexConsumerProvider renderContext) {