mirror of
https://github.com/MineLittlePony/MineLittlePony.git
synced 2025-03-14 23:50:07 +01:00
Implement arm positioning for the spyglass
This commit is contained in:
parent
baf4b2a754
commit
7620f6090f
3 changed files with 31 additions and 15 deletions
|
@ -12,6 +12,7 @@ import com.minelittlepony.mson.api.model.MsonPart;
|
||||||
|
|
||||||
import net.minecraft.client.model.ModelPart;
|
import net.minecraft.client.model.ModelPart;
|
||||||
import net.minecraft.client.render.VertexConsumer;
|
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.MatrixStack;
|
||||||
import net.minecraft.client.util.math.Vector3f;
|
import net.minecraft.client.util.math.Vector3f;
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
|
@ -448,7 +449,8 @@ public abstract class AbstractPonyModel<T extends LivingEntity> extends ClientPo
|
||||||
arm.pitch = ROTATE_90 * 2;
|
arm.pitch = ROTATE_90 * 2;
|
||||||
break;
|
break;
|
||||||
case SPYGLASS:
|
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;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -13,6 +13,8 @@ import net.minecraft.client.util.math.MatrixStack;
|
||||||
import net.minecraft.entity.LivingEntity;
|
import net.minecraft.entity.LivingEntity;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.util.Arm;
|
import net.minecraft.util.Arm;
|
||||||
|
import net.minecraft.util.Hand;
|
||||||
|
import net.minecraft.util.UseAction;
|
||||||
|
|
||||||
public class GlowingItemFeature<T extends LivingEntity, M extends EntityModel<T> & IPonyModel<T>> extends HeldItemFeature<T, M> {
|
public class GlowingItemFeature<T extends LivingEntity, M extends EntityModel<T> & IPonyModel<T>> extends HeldItemFeature<T, M> {
|
||||||
|
|
||||||
|
@ -26,10 +28,24 @@ public class GlowingItemFeature<T extends LivingEntity, M extends EntityModel<T>
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void preItemRender(T entity, ItemStack drop, ModelTransformation.Mode transform, Arm hand, MatrixStack stack) {
|
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()) {
|
if (isUnicorn()) {
|
||||||
|
stack.translate(0, -0.125F, 1);
|
||||||
stack.translate(hand == Arm.LEFT ? -0.6F : 0, 0.5F, -0.3F);
|
stack.translate(hand == Arm.LEFT ? -0.6F : 0, 0.5F, -0.3F);
|
||||||
} else {
|
|
||||||
super.preItemRender(entity, drop, transform, hand, stack);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -62,16 +62,6 @@ public class HeldItemFeature<T extends LivingEntity, M extends EntityModel<T> &
|
||||||
stack.translate(0, 0.2F, 0);
|
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);
|
preItemRender(entity, drop, transform, arm, stack);
|
||||||
MinecraftClient.getInstance().getItemRenderer().renderItem(entity, drop, transform, arm == Arm.LEFT, stack, renderContext, entity.world, lightUv, OverlayTexture.DEFAULT_UV);
|
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);
|
postItemRender(entity, drop, transform, arm, stack, renderContext);
|
||||||
|
@ -80,8 +70,16 @@ public class HeldItemFeature<T extends LivingEntity, M extends EntityModel<T> &
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void preItemRender(T entity, ItemStack drop, ModelTransformation.Mode transform, Arm hand, MatrixStack stack) {
|
protected void preItemRender(T entity, ItemStack drop, ModelTransformation.Mode transform, Arm arm, MatrixStack stack) {
|
||||||
stack.translate(0, 0.125F, -1);
|
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) {
|
protected void postItemRender(T entity, ItemStack drop, ModelTransformation.Mode transform, Arm hand, MatrixStack stack, VertexConsumerProvider renderContext) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue