Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import com.mojang.blaze3d.systems.RenderSystem;
- import net.minecraft.client.Minecraft;
- import net.minecraft.client.model.PlayerModel;
- import net.minecraft.client.player.AbstractClientPlayer;
- import net.minecraft.client.renderer.MultiBufferSource;
- import net.minecraft.client.renderer.entity.player.PlayerRenderer;
- import net.minecraft.resources.ResourceLocation;
- import net.minecraft.world.entity.EquipmentSlot;
- import net.minecraft.world.item.Items;
- import net.minecraftforge.api.distmarker.Dist;
- import net.minecraftforge.client.event.RenderHandEvent;
- import net.minecraftforge.eventbus.api.SubscribeEvent;
- import net.minecraftforge.fml.common.Mod;
- import com.mojang.blaze3d.vertex.PoseStack;
- import com.mojang.math.Vector3f;
- @Mod.EventBusSubscriber(modid = "displayarmorthingamajin", bus = Mod.EventBusSubscriber.Bus.FORGE, value = Dist.CLIENT)
- public class CustomArmRenderer {
- private static final ResourceLocation CUSTOM_ARM_TEXTURE = new ResourceLocation("displayarmorthingamajin", "textures/entity/custom_arm_texture.png");
- @SubscribeEvent
- public static void onRenderHand(RenderHandEvent event) {
- AbstractClientPlayer player = Minecraft.getInstance().player;
- // Check diamond chestplate
- boolean isWearingDiamondChestplate = player.getItemBySlot(EquipmentSlot.CHEST).getItem() == Items.DIAMOND_CHESTPLATE;
- if (isWearingDiamondChestplate) {
- PoseStack poseStack = event.getPoseStack();
- MultiBufferSource bufferSource = event.getMultiBufferSource();
- RenderSystem.setShaderTexture(0, CUSTOM_ARM_TEXTURE);
- // PlayerRenderer and PlayerModel
- PlayerRenderer playerRenderer = (PlayerRenderer) Minecraft.getInstance().getEntityRenderDispatcher().getRenderer(player);
- PlayerModel<AbstractClientPlayer> playerModel = playerRenderer.getModel();
- playerModel.leftArm.visible = true;
- playerModel.setupAnim(player, 0, 0, 0, 0, 0);
- poseStack.pushPose();
- poseStack.translate(0.0D, -0.5D, -1.0D);
- poseStack.mulPose(Vector3f.XP.rotationDegrees(playerModel.leftArm.xRot));
- poseStack.mulPose(Vector3f.YP.rotationDegrees(playerModel.leftArm.yRot));
- poseStack.mulPose(Vector3f.ZP.rotationDegrees(playerModel.leftArm.zRot));
- // Get swing
- float swingProgress = player.getAttackAnim(0.0F);
- float swingAnimation = swingProgress;
- poseStack.mulPose(com.mojang.math.Vector3f.YP.rotation(swingAnimation));
- poseStack.mulPose(com.mojang.math.Vector3f.ZP.rotation(swingAnimation));
- poseStack.mulPose(com.mojang.math.Vector3f.XP.rotation(playerModel.leftArm.xRot));
- poseStack.mulPose(com.mojang.math.Vector3f.YP.rotation(playerModel.leftArm.yRot));
- poseStack.mulPose(com.mojang.math.Vector3f.ZP.rotation(playerModel.leftArm.zRot));
- // Texture
- playerModel.leftArm.render(poseStack, bufferSource.getBuffer(playerModel.renderType(CUSTOM_ARM_TEXTURE)),
- event.getPackedLight(), 0, 1.0F, 1.0F, 1.0F, 1.0F);
- poseStack.popPose();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment