2019-03-27 13:22:43 +01:00
|
|
|
package com.minelittlepony.client.mixin;
|
|
|
|
|
|
|
|
import org.spongepowered.asm.mixin.Mixin;
|
|
|
|
import org.spongepowered.asm.mixin.injection.At;
|
|
|
|
import org.spongepowered.asm.mixin.injection.Redirect;
|
|
|
|
|
2019-11-30 12:12:46 +01:00
|
|
|
import com.minelittlepony.client.render.PonyRenderDispatcher;
|
2019-03-27 13:22:43 +01:00
|
|
|
|
2019-11-23 18:28:42 +01:00
|
|
|
import javax.annotation.Nullable;
|
|
|
|
|
2019-05-27 17:59:15 +02:00
|
|
|
import net.minecraft.client.network.AbstractClientPlayerEntity;
|
|
|
|
import net.minecraft.client.render.FirstPersonRenderer;
|
2019-11-23 18:28:42 +01:00
|
|
|
import net.minecraft.client.render.VertexConsumerProvider;
|
2019-11-30 11:14:24 +01:00
|
|
|
import net.minecraft.client.render.model.json.ModelTransformation.Type;
|
2019-11-23 18:28:42 +01:00
|
|
|
import net.minecraft.client.util.math.MatrixStack;
|
2019-05-27 17:59:15 +02:00
|
|
|
import net.minecraft.entity.LivingEntity;
|
2019-03-27 13:22:43 +01:00
|
|
|
import net.minecraft.item.ItemStack;
|
2019-11-23 18:28:42 +01:00
|
|
|
import net.minecraft.world.World;
|
2019-11-30 11:14:24 +01:00
|
|
|
import net.minecraft.client.render.item.ItemRenderer;
|
2019-03-27 13:22:43 +01:00
|
|
|
|
|
|
|
@Mixin(FirstPersonRenderer.class)
|
2019-11-29 10:30:18 +01:00
|
|
|
abstract class MixinFirstPersonRenderer {
|
2019-11-30 11:14:24 +01:00
|
|
|
private static final String LivingEntity = "Lnet/minecraft/entity/LivingEntity;";
|
|
|
|
private static final String MatrixStack = "Lnet/minecraft/client/util/math/MatrixStack;";
|
|
|
|
private static final String ItemStack = "Lnet/minecraft/item/ItemStack;";
|
|
|
|
private static final String Type = "Lnet/minecraft/client/render/model/json/ModelTransformation$Type;";
|
|
|
|
private static final String VertexConsumerProvider = "Lnet/minecraft/client/render/VertexConsumerProvider;";
|
|
|
|
private static final String World = "Lnet/minecraft/world/World;";
|
|
|
|
private static final String ItemRenderer = "Lnet/minecraft/client/render/item/ItemRenderer;";
|
|
|
|
|
|
|
|
private static final String Boolean = "Z";
|
|
|
|
private static final String Int = "I";
|
|
|
|
|
|
|
|
@Redirect(method = "renderItem(" + LivingEntity + ItemStack + Type + Boolean + MatrixStack + VertexConsumerProvider + Int + ")V",
|
2019-03-27 13:22:43 +01:00
|
|
|
at = @At(value = "INVOKE",
|
2019-11-30 11:14:24 +01:00
|
|
|
target = ItemRenderer + "method_23177(" + LivingEntity + ItemStack + Type + Boolean + MatrixStack + VertexConsumerProvider + World + Int + Int + ")V"))
|
|
|
|
private void redirectRenderItem(ItemRenderer target,
|
|
|
|
@Nullable LivingEntity entity,
|
|
|
|
ItemStack item,
|
|
|
|
Type transform,
|
|
|
|
boolean left,
|
|
|
|
MatrixStack stack,
|
|
|
|
VertexConsumerProvider renderContext,
|
|
|
|
@Nullable World world,
|
|
|
|
int lightUv, int overlayUv) {
|
2019-11-30 12:12:46 +01:00
|
|
|
PonyRenderDispatcher.getInstance().getMagicRenderer().renderItemInFirstPerson(target, (AbstractClientPlayerEntity)entity, item, transform, left, stack, renderContext, world, lightUv);
|
2019-03-27 13:22:43 +01:00
|
|
|
}
|
|
|
|
}
|