Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

Posted

Hello there, i have an issue. I want to add custom 3d model to armor(I want to create addon that replace armor with samurai armor in Gobber mod).
Here is the code:

package com.kwpugh.gobber2.items.armor;

import java.util.List;

import javax.annotation.Nullable;

import com.kwpugh.gobber2.config.GobberConfigBuilder;
import com.kwpugh.gobber2.init.ItemInit;
import com.kwpugh.gobber2.items.armor.models.GobberSamurai;
import com.kwpugh.gobber2.util.PlayerSpecialAbilities;

import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EquipmentSlot;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.item.ArmorItem;
import net.minecraft.world.item.ArmorMaterial;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.effect.MobEffects;
import net.minecraft.network.chat.Component;
import net.minecraft.ChatFormatting;
import net.minecraft.client.model.HumanoidModel;
import net.minecraft.network.chat.TranslatableComponent;
import net.minecraft.world.level.Level;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.client.IItemRenderProperties;
import net.minecraft.world.item.Item.Properties;

public class ItemCustomArmorNether extends ArmorItem
{
	public ItemCustomArmorNether(ArmorMaterial materialIn, EquipmentSlot slots, Properties builder)
	{
		super(materialIn, slots, builder);
	}
	
	boolean enablePerks = GobberConfigBuilder.ENABLE_GOBBER_NETHER_ARMOR_HEALTH_PERKS.get();
	int hunger = GobberConfigBuilder.GOBBER_NETHER_ARMOR_HUNGER.get();
	double saturation = GobberConfigBuilder.GOBBER_NETHER_ARMOR_SATURATION.get();
	@Override
	public void onArmorTick(final ItemStack stack, final Level world, final Player player)
	{
		if(!enablePerks) return;
		ItemStack head = player.getItemBySlot(EquipmentSlot.HEAD);
		ItemStack chest = player.getItemBySlot(EquipmentSlot.CHEST);
		ItemStack legs = player.getItemBySlot(EquipmentSlot.LEGS);
	    ItemStack feet = player.getItemBySlot(EquipmentSlot.FEET);	
	 
	    //Full Set
    	if(head.getItem() == ItemInit.GOBBER2_HELMET_NETHER.get() && 
    			chest.getItem() == ItemInit.GOBBER2_CHESTPLATE_NETHER.get() && 
    			legs.getItem() == ItemInit.GOBBER2_LEGGINGS_NETHER.get() && 
    			feet.getItem() == ItemInit.GOBBER2_BOOTS_NETHER.get())
    	{
			if(player.getEffect(MobEffects.POISON) != null)
			{
				player.removeEffect(MobEffects.POISON);
			}
			
			if(player.getEffect(MobEffects.WITHER) != null)
			{
				player.removeEffect(MobEffects.WITHER);
			}
    	}	

    	//Check ArmorUtil for additional perks applied to armor   	
	    //Helmet
	    if(head.getItem() == ItemInit.GOBBER2_HELMET_NETHER.get())
		{
			PlayerSpecialAbilities.giveYellowHearts(world, player, stack, 4, 0.33F);
			PlayerSpecialAbilities.giveRegenEffect(world, player, stack, hunger, (float) saturation);
		}
	    
	    //Chestplate
	    if(chest.getItem() == ItemInit.GOBBER2_CHESTPLATE_NETHER.get())
		{
	 		// TBD
		}		
	    
	    //Leggings
	    if(legs.getItem() == ItemInit.GOBBER2_LEGGINGS_NETHER.get())
		{
			
		}
		else
		{
			
		}		
	    
	    //Boots
	    if(feet.getItem() == ItemInit.GOBBER2_BOOTS_NETHER.get())
		{
			
	    }
		else
	    {
			
	    }		
	}
		
	@Override
	public boolean isBookEnchantable(ItemStack stack, ItemStack book)
	{
		return true;
	}

	@Override
	public boolean isValidRepairItem(ItemStack toRepair, ItemStack repair)
	{
		return repair.getItem() == ItemInit.GOBBER2_INGOT_NETHER.get();
	}
	
	@OnlyIn(Dist.CLIENT)
	public void appendHoverText(ItemStack stack, @Nullable Level worldIn, List<Component> tooltip, TooltipFlag flagIn)
	{
		super.appendHoverText(stack, worldIn, tooltip, flagIn);
		
		if(enablePerks)
		{
			tooltip.add((new TranslatableComponent("item.gobber2.gobber2_armor_nether.line2").withStyle(ChatFormatting.LIGHT_PURPLE)));
			tooltip.add((new TranslatableComponent("item.gobber2.gobber2_armor_nether.line3").withStyle(ChatFormatting.LIGHT_PURPLE)));
			tooltip.add((new TranslatableComponent("item.gobber2.gobber2_armor_nether.line4").withStyle(ChatFormatting.LIGHT_PURPLE)));
			tooltip.add((new TranslatableComponent("item.gobber2.gobber2_armor_nether.line5").withStyle(ChatFormatting.LIGHT_PURPLE)));
			tooltip.add((new TranslatableComponent("item.gobber2.gobber2_armor_nether.line6").withStyle(ChatFormatting.GOLD)));	
		}
	}

	@Override
    public void initializeClient(java.util.function.Consumer<net.minecraftforge.client.IItemRenderProperties> consumer)
    {
        consumer.accept(new IItemRenderProperties()
        {
            @Override
            public <A extends HumanoidModel<?>> A getArmorModel(LivingEntity entityLiving, ItemStack itemStack, EquipmentSlot armorSlot, A _default)
            {
                if(armorSlot == EquipmentSlot.CHEST) {
                    return (A) new GobberSamurai();
                }
                return null;
            }
        });
    }

    @Override
    public String getArmorTexture(ItemStack stack, Entity entity, EquipmentSlot slot, String type) {
        return "gobber2.models.armor.GobberSamurai" + (slot == EquipmentSlot.HEAD ? "2" : "1") + ".png";
    }





}

The problem is in getArmorModel method and in return (A) new GobberSamurai(); It says "The constructor GobberSamurai() is undefined". 
Here is my model class:
 

package com.kwpugh.gobber2.items.armor.models;

import java.util.List;

import javax.annotation.Nullable;

import com.kwpugh.gobber2.config.GobberConfigBuilder;
import com.kwpugh.gobber2.init.ItemInit;
import com.kwpugh.gobber2.util.PlayerSpecialAbilities;
import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer;

import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EquipmentSlot;
import net.minecraft.world.item.ArmorItem;
import net.minecraft.world.item.ArmorMaterial;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.effect.MobEffects;
import net.minecraft.network.chat.Component;
import net.minecraft.ChatFormatting;
import net.minecraft.network.chat.TranslatableComponent;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.Level;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraft.client.model.EntityModel;
import net.minecraft.client.model.geom.ModelLayerLocation;
import net.minecraft.client.model.geom.ModelPart;
import net.minecraft.client.model.geom.PartPose;
import net.minecraft.client.model.geom.builders.CubeDeformation;
import net.minecraft.client.model.geom.builders.CubeListBuilder;
import net.minecraft.client.model.geom.builders.LayerDefinition;
import net.minecraft.client.model.geom.builders.MeshDefinition;
import net.minecraft.client.model.geom.builders.PartDefinition;

import net.minecraft.world.item.Item.Properties;

public class GobberSamurai<T extends Entity> extends EntityModel<T> {
	// This layer location should be baked with EntityRendererProvider.Context in the entity renderer and passed into this model's constructor
	public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation("modid", "gobbersamurai"), "main");
	private final ModelPart Head;
	private final ModelPart Body;
	private final ModelPart RightArm;
	private final ModelPart LeftArm;
	private final ModelPart RightLeg;
	private final ModelPart LeftLeg;

	public GobberSamurai(ModelPart root) {
		this.Head = root.getChild("Head");
		this.Body = root.getChild("Body");
		this.RightArm = root.getChild("RightArm");
		this.LeftArm = root.getChild("LeftArm");
		this.RightLeg = root.getChild("RightLeg");
		this.LeftLeg = root.getChild("LeftLeg");
	}

	public static LayerDefinition createBodyLayer() {
		MeshDefinition meshdefinition = new MeshDefinition();
		PartDefinition partdefinition = meshdefinition.getRoot();

		PartDefinition Head = partdefinition.addOrReplaceChild("Head", CubeListBuilder.create().texOffs(1, 34).addBox(-5.0F, -9.0F, -5.0F, 10.0F, 4.0F, 10.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, 0.0F));

		PartDefinition cube_r1 = Head.addOrReplaceChild("cube_r1", CubeListBuilder.create().texOffs(1, 34).addBox(-3.2F, -0.225F, -5.0F, 5.0F, 1.0F, 10.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(5.8435F, -2.8805F, 0.0F, 0.0F, 0.0F, 1.1345F));

		PartDefinition cube_r2 = Head.addOrReplaceChild("cube_r2", CubeListBuilder.create().texOffs(1, 34).addBox(-3.225F, -6.625F, -5.0F, 5.0F, 1.0F, 10.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, -0.1594F, 0.0523F, -1.5708F, -0.4363F, 1.5708F));

		PartDefinition cube_r3 = Head.addOrReplaceChild("cube_r3", CubeListBuilder.create().texOffs(1, 34).addBox(-6.0F, 5.0F, -5.0F, 1.0F, 2.0F, 10.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -1.5708F, 0.0F, 1.5708F));

		PartDefinition cube_r4 = Head.addOrReplaceChild("cube_r4", CubeListBuilder.create().texOffs(42, 36).addBox(-1.2F, -0.5F, -1.5F, 3.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-6.3F, -4.3F, -5.6F, -2.313F, 0.0322F, 2.0649F));

		PartDefinition cube_r5 = Head.addOrReplaceChild("cube_r5", CubeListBuilder.create().texOffs(1, 34).mirror().addBox(-1.8F, -0.225F, -5.0F, 5.0F, 1.0F, 10.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-5.8435F, -2.8805F, 0.0F, 0.0F, 0.0F, -1.1345F));

		PartDefinition cube_r6 = Head.addOrReplaceChild("cube_r6", CubeListBuilder.create().texOffs(42, 36).mirror().addBox(-1.8F, -0.5F, -1.5F, 3.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(6.3F, -4.3F, -5.6F, -2.313F, -0.0322F, -2.0649F));

		PartDefinition Body = partdefinition.addOrReplaceChild("Body", CubeListBuilder.create().texOffs(11, 35).addBox(4.0F, 3.0F, -3.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F))
		.texOffs(11, 35).addBox(-5.0F, 8.0F, -3.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F))
		.texOffs(11, 35).addBox(4.0F, 8.0F, -3.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F))
		.texOffs(11, 35).addBox(-5.0F, 3.0F, -3.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F))
		.texOffs(11, 35).addBox(-4.0F, 1.0F, -4.0F, 8.0F, 7.0F, 2.0F, new CubeDeformation(0.0F))
		.texOffs(11, 35).addBox(-4.0F, 8.0F, -3.0F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F))
		.texOffs(11, 35).addBox(-4.0F, 11.0F, -2.5F, 8.0F, 1.0F, 1.0F, new CubeDeformation(0.0F))
		.texOffs(0, 32).addBox(-4.0F, 1.0F, 2.0F, 8.0F, 11.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, 0.0F));

		PartDefinition RightArm = partdefinition.addOrReplaceChild("RightArm", CubeListBuilder.create().texOffs(39, 2).addBox(-3.5F, -2.5F, -2.5F, 5.0F, 5.0F, 5.0F, new CubeDeformation(0.0F))
		.texOffs(39, 2).mirror().addBox(-1.5F, 3.5F, -2.5F, 3.0F, 1.0F, 5.0F, new CubeDeformation(0.0F)).mirror(false)
		.texOffs(39, 2).mirror().addBox(-3.5F, 3.5F, -2.5F, 2.0F, 6.0F, 5.0F, new CubeDeformation(0.0F)).mirror(false)
		.texOffs(39, 2).mirror().addBox(-1.5F, 6.5F, -2.5F, 3.0F, 1.0F, 5.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offset(-5.0F, 2.0F, 0.0F));

		PartDefinition cube_r7 = RightArm.addOrReplaceChild("cube_r7", CubeListBuilder.create().texOffs(10, 37).mirror().addBox(1.5F, -1.0F, -3.5F, 1.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).mirror(false)
		.texOffs(10, 37).mirror().addBox(-2.5F, 0.0F, -3.5F, 5.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).mirror(false)
		.texOffs(10, 37).mirror().addBox(-4.5F, 1.0F, -3.5F, 3.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).mirror(false)
		.texOffs(10, 37).mirror().addBox(-6.5F, 1.5F, -3.5F, 3.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-4.0588F, -1.8378F, 0.0F, 0.0F, 0.0F, -1.1345F));

		PartDefinition LeftArm = partdefinition.addOrReplaceChild("LeftArm", CubeListBuilder.create().texOffs(39, 2).addBox(-1.5F, -2.5F, -2.5F, 5.0F, 5.0F, 5.0F, new CubeDeformation(0.0F))
		.texOffs(39, 2).addBox(1.5F, 3.5F, -2.5F, 2.0F, 6.0F, 5.0F, new CubeDeformation(0.0F))
		.texOffs(39, 2).addBox(-1.5F, 3.5F, -2.5F, 3.0F, 1.0F, 5.0F, new CubeDeformation(0.0F))
		.texOffs(39, 2).addBox(-1.5F, 6.5F, -2.5F, 3.0F, 1.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offset(5.0F, 2.0F, 0.0F));

		PartDefinition cube_r8 = LeftArm.addOrReplaceChild("cube_r8", CubeListBuilder.create().texOffs(10, 37).addBox(3.5F, 1.5F, -3.5F, 3.0F, 1.0F, 7.0F, new CubeDeformation(0.0F))
		.texOffs(10, 37).addBox(1.5F, 1.0F, -3.5F, 3.0F, 1.0F, 7.0F, new CubeDeformation(0.0F))
		.texOffs(10, 37).addBox(-2.5F, -1.0F, -3.5F, 1.0F, 1.0F, 7.0F, new CubeDeformation(0.0F))
		.texOffs(10, 37).addBox(-2.5F, 0.0F, -3.5F, 5.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(4.0588F, -1.8378F, 0.0F, 0.0F, 0.0F, 1.1345F));

		PartDefinition RightLeg = partdefinition.addOrReplaceChild("RightLeg", CubeListBuilder.create(), PartPose.offset(-1.9F, 12.0F, 0.0F));

		PartDefinition cube_r9 = RightLeg.addOrReplaceChild("cube_r9", CubeListBuilder.create().texOffs(10, 37).mirror().addBox(-4.9F, 10.65F, 9.5F, 5.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false)
		.texOffs(10, 37).mirror().addBox(-4.9F, 11.65F, 11.5F, 5.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false)
		.texOffs(10, 37).mirror().addBox(-4.9F, 9.65F, 7.5F, 5.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(1.9F, -11.8378F, 9.0588F, -1.1345F, 0.0F, 0.0F));

		PartDefinition cube_r10 = RightLeg.addOrReplaceChild("cube_r10", CubeListBuilder.create().texOffs(10, 37).mirror().addBox(-4.9F, 10.65F, -12.3F, 2.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false)
		.texOffs(10, 37).mirror().addBox(-4.9F, 11.65F, -14.3F, 2.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false)
		.texOffs(10, 37).mirror().addBox(-2.9F, 10.65F, -15.3F, 3.0F, 1.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false)
		.texOffs(10, 37).mirror().addBox(-2.9F, 11.65F, -17.3F, 3.0F, 1.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false)
		.texOffs(10, 37).mirror().addBox(-2.9F, 9.65F, -12.3F, 3.0F, 1.0F, 5.0F, new CubeDeformation(0.0F)).mirror(false)
		.texOffs(10, 37).mirror().addBox(-4.9F, 9.65F, -10.3F, 2.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(1.9F, -11.8378F, -9.0588F, 1.1345F, 0.0F, 0.0F));

		PartDefinition cube_r11 = RightLeg.addOrReplaceChild("cube_r11", CubeListBuilder.create().texOffs(10, 37).mirror().addBox(-16.0F, 11.0F, -2.5F, 3.0F, 1.0F, 5.0F, new CubeDeformation(0.0F)).mirror(false)
		.texOffs(10, 37).mirror().addBox(-14.0F, 10.0F, -2.5F, 3.0F, 1.0F, 5.0F, new CubeDeformation(0.0F)).mirror(false)
		.texOffs(10, 37).mirror().addBox(-12.0F, 9.0F, -2.5F, 4.0F, 1.0F, 5.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-7.1588F, -11.8378F, 0.0F, 0.0F, 0.0F, -1.1345F));

		PartDefinition LeftLeg = partdefinition.addOrReplaceChild("LeftLeg", CubeListBuilder.create(), PartPose.offset(1.9F, 12.0F, 0.0F));

		PartDefinition cube_r12 = LeftLeg.addOrReplaceChild("cube_r12", CubeListBuilder.create().texOffs(10, 37).addBox(13.0F, 11.0F, -2.5F, 3.0F, 1.0F, 5.0F, new CubeDeformation(0.0F))
		.texOffs(10, 37).addBox(11.0F, 10.0F, -2.5F, 3.0F, 1.0F, 5.0F, new CubeDeformation(0.0F))
		.texOffs(10, 37).addBox(8.0F, 9.0F, -2.5F, 4.0F, 1.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(7.1588F, -11.8378F, 0.0F, 0.0F, 0.0F, 1.1345F));

		PartDefinition cube_r13 = LeftLeg.addOrReplaceChild("cube_r13", CubeListBuilder.create().texOffs(10, 37).addBox(-0.1F, 9.65F, -12.3F, 3.0F, 1.0F, 5.0F, new CubeDeformation(0.0F))
		.texOffs(10, 37).addBox(2.9F, 11.65F, -14.3F, 2.0F, 1.0F, 3.0F, new CubeDeformation(0.0F))
		.texOffs(10, 37).addBox(-0.1F, 11.65F, -17.3F, 3.0F, 1.0F, 6.0F, new CubeDeformation(0.0F))
		.texOffs(10, 37).addBox(2.9F, 10.65F, -12.3F, 2.0F, 1.0F, 3.0F, new CubeDeformation(0.0F))
		.texOffs(10, 37).addBox(-0.1F, 10.65F, -15.3F, 3.0F, 1.0F, 6.0F, new CubeDeformation(0.0F))
		.texOffs(10, 37).addBox(2.9F, 9.65F, -10.3F, 2.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-1.9F, -11.8378F, -9.0588F, 1.1345F, 0.0F, 0.0F));

		PartDefinition cube_r14 = LeftLeg.addOrReplaceChild("cube_r14", CubeListBuilder.create().texOffs(10, 37).addBox(-0.1F, 9.65F, 7.5F, 5.0F, 1.0F, 3.0F, new CubeDeformation(0.0F))
		.texOffs(10, 37).addBox(-0.1F, 11.65F, 11.5F, 5.0F, 1.0F, 3.0F, new CubeDeformation(0.0F))
		.texOffs(10, 37).addBox(-0.1F, 10.65F, 9.5F, 5.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-1.9F, -11.8378F, 9.0588F, -1.1345F, 0.0F, 0.0F));

		return LayerDefinition.create(meshdefinition, 64, 64);
	}

	@Override
	public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) {

	}

	@Override
	public void renderToBuffer(PoseStack poseStack, VertexConsumer buffer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) {
		Head.render(poseStack, buffer, packedLight, packedOverlay);
		Body.render(poseStack, buffer, packedLight, packedOverlay);
		RightArm.render(poseStack, buffer, packedLight, packedOverlay);
		LeftArm.render(poseStack, buffer, packedLight, packedOverlay);
		RightLeg.render(poseStack, buffer, packedLight, packedOverlay);
		LeftLeg.render(poseStack, buffer, packedLight, packedOverlay);
	}
}

I just don't know what to do now, I have searched everywhere but I have found nothing for 1.18.1 version.

Edited by ZProfire

Hi!

You don't need an extra Mod to do this, you can just use a resource pack and replace the armor texture and model

Sorry if my Posts are weird sometimes, I just try to help and learn as much as I can :D

Also: PLEASE use SPOILERS for logs!

Ahh ok :D
But also in mods with custom armor you normally use resourcepacks for the model (every mod has a built-in resource pack), so there really is no need.
If you want to do it anyway ... it's your choice :)

Sorry if my Posts are weird sometimes, I just try to help and learn as much as I can :D

Also: PLEASE use SPOILERS for logs!

  • Author

As far as i know you able to replace only helmet, but not rest of the armor pieces) At least it was before 1.12

You can replace the model of every item you want, it doesn't even need to be an armor item 

Sorry if my Posts are weird sometimes, I just try to help and learn as much as I can :D

Also: PLEASE use SPOILERS for logs!

  • ZProfire changed the title to [SOLVED][1.18.1] Custom 3d armor
  • Author

Here is some screenshots) I took Thaumcraft Fortress Armor as reference, I modelled and textured it by my hands

 

IIYUg8I.pnge1MQwEQ.png4izpPED.png

Looks cool :D

Sorry if my Posts are weird sometimes, I just try to help and learn as much as I can :D

Also: PLEASE use SPOILERS for logs!

  • 2 months later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

Important Information

By using this site, you agree to our Terms of Use.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.