Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * This mod element is always locked. Enter your code in the methods below.
- * If you don't need some of these methods, you can remove them as they
- * are overrides of the base class ArgonianModelModElements.ModElement.
- *
- * You can register new events in this class too.
- *
- * As this class is loaded into mod element list, it NEEDS to extend
- * ModElement class. If you remove this extend statement or remove the
- * constructor, the compilation will fail.
- *
- * If you want to make a plain independent class, create it in
- * "Workspace" -> "Source" menu.
- *
- * If you change workspace package, modid or prefix, you will need
- * to manually adapt this file to these changes or remake it.
- */
- package net.mcreator.argonianmodel;
- import net.minecraftforge.fml.event.server.FMLServerStartingEvent;
- import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
- import com.google.common.collect.ImmutableList;
- import com.mojang.blaze3d.matrix.MatrixStack;
- import com.mojang.blaze3d.vertex.IVertexBuilder;
- import net.minecraft.client.renderer.entity.model.AgeableModel;
- import net.minecraft.client.renderer.model.ModelRenderer;
- import net.minecraft.entity.LivingEntity;
- import com.mojang.blaze3d.matrix.MatrixStack;
- import com.mojang.blaze3d.vertex.IVertexBuilder;
- import net.minecraft.client.entity.player.AbstractClientPlayerEntity;
- import net.minecraft.client.renderer.IRenderTypeBuffer;
- import net.minecraft.util.math.MathHelper;
- import net.minecraft.client.renderer.ItemRenderer;
- import net.minecraft.client.renderer.entity.IEntityRenderer;
- import net.minecraft.client.renderer.entity.layers.LayerRenderer;
- import net.minecraft.client.renderer.entity.model.EntityModel;
- import net.minecraft.client.renderer.texture.OverlayTexture;
- import net.minecraft.entity.LivingEntity;
- import net.minecraft.entity.player.PlayerEntity;
- import net.minecraft.client.renderer.entity.*;
- import net.minecraftforge.common.MinecraftForge;
- import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
- import net.minecraftforge.eventbus.api.SubscribeEvent;
- import net.minecraft.client.renderer.entity.model.PlayerModel;
- import net.minecraft.client.Minecraft;
- import net.minecraftforge.fml.common.ObfuscationReflectionHelper;
- import java.util.List;
- import java.util.Map;
- import net.minecraft.util.ResourceLocation;
- import net.minecraftforge.fml.common.Mod;
- import net.minecraftforge.api.distmarker.OnlyIn;
- import net.minecraftforge.api.distmarker.Dist;
- @Mod.EventBusSubscriber(modid = "argonian_model", bus = Mod.EventBusSubscriber.Bus.MOD)
- @ArgonianModelModElements.ModElement.Tag
- public class Argonian extends ArgonianModelModElements.ModElement {
- /**
- * Do not remove this constructor
- */
- public Argonian(ArgonianModelModElements instance) {
- super(instance, 1);
- }
- @Override
- public void initElements() {
- }
- @OnlyIn(Dist.CLIENT)
- @Override
- public void clientLoad(FMLClientSetupEvent event)
- {
- Map<String, PlayerRenderer> playerSkinMap = Minecraft.getInstance().getRenderManager().getSkinMap();
- Argonian.addPlayerLayers(playerSkinMap.get("default"));
- Argonian.addPlayerLayers(playerSkinMap.get("slim"));
- }
- @Override
- public void init(FMLCommonSetupEvent event) {
- }
- @Override
- public void serverLoad(FMLServerStartingEvent event) {
- }
- public static void addPlayerLayers(PlayerRenderer renderer)
- {
- List<LayerRenderer<AbstractClientPlayerEntity, PlayerModel<AbstractClientPlayerEntity>>> layers = ObfuscationReflectionHelper.getPrivateValue(LivingRenderer.class, renderer, "field_177097_h");
- if(layers != null)
- {
- layers.add(new playerlayer<>(renderer));
- }
- }
- public static class player<T extends LivingEntity> extends AgeableModel<T> {
- private final ModelRenderer snout;
- private final ModelRenderer tail;
- public player() {
- textureWidth = 64;
- textureHeight = 64;
- snout = new ModelRenderer(this);
- snout.setRotationPoint(0.0F, 0.0F, 0.0F);
- snout.setTextureOffset(24, 2).addBox(-3.0F, -4.0F, -7.0F, 6.0F, 3.0F, 3.0F, 0.0F, false);
- snout.setTextureOffset(0, 5).addBox(-1.0F, -5.0F, -6.0F, 2.0F, 1.0F, 2.0F, 0.0F, false);
- tail = new ModelRenderer(this);
- tail.setRotationPoint(0.0F, 14F, 0.0F);
- setRotationAngle(tail, -45.0F, 0.0F, 0.0F);
- tail.setTextureOffset(56, 21).addBox(-1.0F, 7.0F, -7.0F, 2.0F, 9.0F, 2.0F, 0.0F, false);
- }
- @Override
- public void setRotationAngles(T entityIn, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) {
- this.snout.rotateAngleY = netHeadYaw * ((float) Math.PI / 180F);
- this.tail.rotateAngleX = 0.7854F; //MathHelper.cos(limbSwing * 9.6662F + (float)Math.PI) * 2.0F * limbSwingAmount * 2.5F
- this.tail.rotateAngleY = 0.0F;
- this.snout.rotateAngleX = headPitch * ((float) Math.PI / 180F);
- if (entityIn instanceof PlayerEntity) {
- if (entityIn.isCrouching()) {
- this.snout.rotationPointY = 4.2F;
- this.tail.rotateAngleX = 1.2854F;
- this.tail.rotationPointY = 3.2F;
- } else {
- this.tail.rotationPointY = 0.0F;
- this.tail.rotateAngleX = 0.7854F;
- this.snout.rotationPointY = 0.0F;
- }
- }
- }
- @Override
- protected Iterable<ModelRenderer> getHeadParts() {
- return ImmutableList.of(this.snout);
- }
- @Override
- protected Iterable<ModelRenderer> getBodyParts() {
- return ImmutableList.of(this.tail);
- }
- public void setRotationAngle(ModelRenderer modelRenderer, float x, float y, float z) {
- modelRenderer.rotateAngleX = x;
- modelRenderer.rotateAngleY = y;
- modelRenderer.rotateAngleZ = z;
- }
- }
- public static class playerlayer<T extends LivingEntity, M extends EntityModel<T>> extends LayerRenderer<T, M> {
- private static ResourceLocation resource = new ResourceLocation("argonian_model", "textures/steve.png");
- private player model = new player();
- public playerlayer(IEntityRenderer<T, M> entityRendererIn) {
- super(entityRendererIn);
- }
- @Override
- public void render(MatrixStack matrixStackIn, IRenderTypeBuffer bufferIn, int packedLightIn, T entitylivingbaseIn, float limbSwing, float limbSwingAmount, float partialTicks, float ageInTicks, float netHeadYaw, float headPitch) {
- if (entitylivingbaseIn instanceof AbstractClientPlayerEntity) {
- matrixStackIn.push();
- this.getEntityModel().copyModelAttributesTo(this.model);
- this.model.setRotationAngles(entitylivingbaseIn, limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch);
- IVertexBuilder ivertexbuilder = ItemRenderer.getBuffer(bufferIn, this.model.getRenderType(((AbstractClientPlayerEntity) entitylivingbaseIn).getLocationSkin()), false, false);
- this.model.render(matrixStackIn, ivertexbuilder, packedLightIn, OverlayTexture.NO_OVERLAY, 1.0F, 1.0F, 1.0F, 1.0F);
- matrixStackIn.pop();
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement