Jump to content

(1.16.1) How to add another texture layer to chestplate


iSyriux

Recommended Posts

Okay, so I have the texture and the model done but when I export it it exports as bbmodel. I want to export it as java. Also, I don't see where I could put it in. I am very new to programming mod. And there is no client directory. I am use intelliJ idea. Here is my file hierarchy

 image.thumb.png.f58853b6367ae29476e1a551bca19e88.png

Here is my model and texture

spacer.pngspacer.pngspacer.png

image.thumb.png.88d7be8254567f08b5e894eeb3892854.png

Edited by iSyriux
Link to comment
Share on other sites

2 minutes ago, iSyriux said:

And there is no client directory

Well make one, it's your project, it's not even important whether you have one.

It's sad how much time mods spend saying "x is no longer supported on this forum. Please update to a modern version of Minecraft to receive support".

Link to comment
Share on other sites

I am stuck on two posts

image.thumb.png.0eace32a019281bc5c1d550f9fc19208.png

So I think I am done with this one but I think there are still some things that are wrong so here is my java code:

// Made with Blockbench 3.6.3
// Exported for Minecraft version 1.15
// Paste this class into your mod and generate all required imports


public class pauldronarmourmodel extends BipedModel<LivingEntity> {

   public pauldronarmourmodel(float modelSize) {
      super(modelSize, 0.0F, 64, 40);

      ModelRenderer body = new ModelRenderer(this);
      body.setRotationPoint(0.0F, 0.0F, 0.0F);
      body.setTextureOffset(16, 16).addBox(-4.0F, 0.0F, -2.0F, 8.0F, 12.0F, 4.0F, 0.0F, false);
      body.setTextureOffset(0, 32).addBox(-9.0F, 0.0F, -2.0F, 18.0F, 4.0F, 4.0F, 0.25F, false);

      ModelRenderer head = new ModelRenderer(this);
      head.setRotationPoint(0.0F, 0.0F, 0.0F);
      body.addChild(head);
      setRotationAngle(head, 0.0524F, 0.0436F, 0.0F);
      head.setTextureOffset(0, 0).addBox(-4.0F, -8.0F, -4.0F, 8.0F, 8.0F, 8.0F, 0.0F, false);
      head.setTextureOffset(32, 0).addBox(-4.0F, -8.0F, -4.0F, 8.0F, 8.0F, 8.0F, 0.5F, false);

      ModelRenderer rightArm = new ModelRenderer(this);
      rightArm.setRotationPoint(-5.0F, 2.0F, 0.0F);
      body.addChild(rightArm);
      rightArm.setTextureOffset(40, 16).addBox(-3.0F, -2.0F, -2.0F, 4.0F, 12.0F, 4.0F, 0.0F, false);

      ModelRenderer rightItem = new ModelRenderer(this);
      rightItem.setRotationPoint(-1.0F, 7.0F, 1.0F);
      rightArm.addChild(rightItem);


      ModelRenderer leftArm = new ModelRenderer(this);
      leftArm.setRotationPoint(5.0F, 2.0F, 0.0F);
      body.addChild(leftArm);
      leftArm.setTextureOffset(40, 16).addBox(-1.0F, -2.0F, -2.0F, 4.0F, 12.0F, 4.0F, 0.0F, true);

      ModelRenderer rightLeg = new ModelRenderer(this);
      rightLeg.setRotationPoint(-1.9F, 12.0F, 0.0F);
      body.addChild(rightLeg);
      rightLeg.setTextureOffset(0, 16).addBox(-2.0F, 0.0F, -2.0F, 4.0F, 12.0F, 4.0F, 0.0F, false);

      ModelRenderer leftLeg = new ModelRenderer(this);
      leftLeg.setRotationPoint(1.9F, 12.0F, 0.0F);
      body.addChild(leftLeg);
      leftLeg.setTextureOffset(0, 16).addBox(-2.0F, 0.0F, -2.0F, 4.0F, 12.0F, 4.0F, 0.0F, true);
   }


   public void setRotationAngle(ModelRenderer modelRenderer, float x, float y, float z) {
      modelRenderer.rotateAngleX = x;
      modelRenderer.rotateAngleY = y;
      modelRenderer.rotateAngleZ = z;
   }
}

Also I am stuck on this one

 image.thumb.png.96b78ddbfb20f657c7561d750607a154.png

I don't know where to put these things and also, I cannot find these classes and none of my things says extends

 

I am really sorry for waste your time but I really n eed help Here is my registhandler

package com.isyriux.divinerod.util;

import com.isyriux.divinerod.DivineRodMod;
import com.isyriux.divinerod.armour.ModArmourMaterial;
import com.isyriux.divinerod.items.Misc;
import com.isyriux.divinerod.tools.ModItemTier;
import net.minecraft.inventory.EquipmentSlotType;
import net.minecraft.item.ArmorItem;
import net.minecraft.item.ItemGroup;
import net.minecraft.item.SwordItem;
import net.minecraft.util.CombatEntry;
import net.minecraftforge.fml.RegistryObject;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraft.item.Item;

public class registhandler {
    public static final DeferredRegister<Item> ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, DivineRodMod.MOD_ID);

    public static void init(){
        ITEMS.register(FMLJavaModLoadingContext.get().getModEventBus());
    }
    // ITEMS
    public static final RegistryObject<Item> IRON_STICK = ITEMS.register("iron_stick", Misc::new);
    public static final RegistryObject<SwordItem> DIVINE_ROD = ITEMS.register("divine_rod", () ->
            new SwordItem(ModItemTier.DIVINE, 2,4.0F,new Item.Properties().group(ItemGroup.COMBAT)));
    public static final RegistryObject<Item> MELTED_POWER_DUST = ITEMS.register("melted_power_dust", Misc::new);
    public static final RegistryObject<Item> POWER_BALL = ITEMS.register("power_ball", Misc::new);
    public static final RegistryObject<Item> POWER_INGOT = ITEMS.register("power_ingot", Misc::new);
    public static final RegistryObject<Item> POWER_DUST = ITEMS.register("power_dust", Misc::new);
    public static final RegistryObject<Item> DIVINE_STICK = ITEMS.register("divine_stick", Misc::new);

    public static final RegistryObject<ArmorItem> POWER_HELMET = ITEMS.register("power_helmet", () ->
            new ArmorItem(ModArmourMaterial.POWER, EquipmentSlotType.HEAD,new Item.Properties().group(ItemGroup.COMBAT)));
    public static final RegistryObject<ArmorItem> POWER_CHESTPLATE = ITEMS.register("power_chestplate", () ->
            new ArmorItem(ModArmourMaterial.POWER, EquipmentSlotType.CHEST,new Item.Properties().group(ItemGroup.COMBAT)));
    public static final RegistryObject<ArmorItem> POWER_LEGGINGS = ITEMS.register("power_leggings", () ->
            new ArmorItem(ModArmourMaterial.POWER, EquipmentSlotType.LEGS,new Item.Properties().group(ItemGroup.COMBAT)));
    public static final RegistryObject<ArmorItem> POWER_SHOES = ITEMS.register("power_shoes", () ->
            new ArmorItem(ModArmourMaterial.POWER, EquipmentSlotType.FEET,new Item.Properties().group(ItemGroup.COMBAT)));

}
Link to comment
Share on other sites

17 minutes ago, iSyriux said:

I don't know where to put these things and also, I cannot find these classes and none of my things says extends

First of all. What I wrote assumes you have some knowledge of java, items, and sided systems. I wrote a proxy to separate physical client and server code. Since this is my text, I will do my best.

 

18 minutes ago, iSyriux said:

So I think I am done with this one but I think there are still some things that are wrong so here is my java code:

Almost but no. You add children to the actual ModelRenderers within BipedModel. rightArm attaches to bipedRightArm and not your body. If some of your ModeRenderers are not attached to a child with a 'biped' in front of it, you're probably doing something wrong and it won't render. Because of the lack of understanding when it came to these things, I attached a Blockbench file in the Github to make it so that you could just remove those renderers afterwards and attach them to the actual ones. It makes the process much easier to handle rather than guessing and creating from scratch.

 

22 minutes ago, iSyriux said:

Also I am stuck on this one

I already explained the issue with the first one. The tutorial assumes you set up a proxy system or somewhere client code can't be accessed by the physical server. As for why none of your things says extends, I made a class that EXTENDS ArmorItem. This should be done to render the armor. I can see that you didn't make a custom item class and opted to use a vanilla one instead.

Link to comment
Share on other sites

What github did you attach the blockbench file to? I can't find it in https://github.com/ChampionAsh5357/1.16.x-Minecraft-Tutorial/tree/1.16.1-32.0.57-web

I'd also like clarification on what I did wrong. I used the zombie model in the webapp of blockbench and set the uv dimensions to 64x40, and inserted a texture. The zombie model had a pose even though I unchecked "pose" so I had to manually make the zombie not have a pose. The only part i added was the pauldrons which was parented under the body directory. I did not change it's name so it is named "cube". Here is my hierarchy

 image.png.a5e39e4b4e9b9e3d73c169f6f01ec8a1.png 

Here is the bbmodel file of my thing

 

zombie.bbmodel

Link to comment
Share on other sites

Here is the link to the default blockbench model. It was within resources. And its the hierarchy that's wrong. Each part is separate from one another. This says that the body's rotation supersedes all which is not true. I mention the zombie entity as a good baseline, but you still need to edit it to get a standard model to work from. I would say reconstruct your model from the default provided. All cubes must be in one of these folders. If you want easier transference, you should put all your custom cubes into their own separate folder within the six default ones. Anything within the default model should not be edited besides from the texture.

Link to comment
Share on other sites

Okay, so I remodeled it with your default thing and I have put everything in registhandler and the json file for the model but now I have run into an issue. Since this is a chestplate that uses another model texture I need to make a new material in my material armour material but I copied it and it didn't work it gives a red

image.thumb.png.d8399a018470c0839f064ab0aded75e6.png

image.thumb.png.696a9d423c435448fee4b187d0b4a22c.png

Link to comment
Share on other sites

22 minutes ago, iSyriux said:

gives a red

Once again, learn basic java. Its not a red, its called an error. Second, ITS AN ENUM. Enum objects are separated by comma and ended with a semicolon.

 

Please don't tell me you're trying to follow the tutorial word for word. It's a baseline to understand what's going on and for you to apply your knowledge to it. It's not a giant cheat sheet.

Link to comment
Share on other sites

Okay, so I put a semicolon and the error is gone, but now it seems like there is no overlay and it does not work at all: Screenshot of game

image.png.f5e8526b826d7e89a40d3aa9b8291f34.png

There are completely no errors, so I am unsure why this is happening. 

This is my powerreenforceditem class

package com.isyriux.divinerod.armour;

import net.minecraft.client.renderer.entity.model.BipedModel;
import net.minecraft.entity.LivingEntity;
import net.minecraft.inventory.EquipmentSlotType;
import net.minecraft.item.ArmorItem;
import net.minecraft.item.IArmorMaterial;
import net.minecraft.item.ItemStack;

public class PowerReenforcedArmourItem extends ArmorItem {

    public PowerReenforcedArmourItem(IArmorMaterial materialIn, EquipmentSlotType slot, Properties properties) {
        super(materialIn, slot, properties);
    }

    @Override
    public <A extends BipedModel<?>> A getArmorModel(LivingEntity entityLiving, ItemStack itemStack, EquipmentSlotType armorSlot, A _default) {
        return null;
    }
}

 

Registhandler

package com.isyriux.divinerod.util;

import com.isyriux.divinerod.DivineRodMod;
import com.isyriux.divinerod.armour.ModArmourMaterial;
import com.isyriux.divinerod.items.Misc;
import com.isyriux.divinerod.tools.ModItemTier;
import net.minecraft.inventory.EquipmentSlotType;
import net.minecraft.item.ArmorItem;
import net.minecraft.item.ItemGroup;
import net.minecraft.item.SwordItem;
import net.minecraft.util.CombatEntry;
import net.minecraftforge.fml.RegistryObject;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraft.item.Item;

public class registhandler {
    public static final DeferredRegister<Item> ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, DivineRodMod.MOD_ID);

    public static void init(){
        ITEMS.register(FMLJavaModLoadingContext.get().getModEventBus());
    }
    // ITEMS
    public static final RegistryObject<Item> IRON_STICK = ITEMS.register("iron_stick", Misc::new);
    public static final RegistryObject<SwordItem> DIVINE_ROD = ITEMS.register("divine_rod", () ->
            new SwordItem(ModItemTier.DIVINE, 2,4.0F,new Item.Properties().group(ItemGroup.COMBAT)));
    public static final RegistryObject<Item> MELTED_POWER_DUST = ITEMS.register("melted_power_dust", Misc::new);
    public static final RegistryObject<Item> POWER_BALL = ITEMS.register("power_ball", Misc::new);
    public static final RegistryObject<Item> POWER_INGOT = ITEMS.register("power_ingot", Misc::new);
    public static final RegistryObject<Item> POWER_DUST = ITEMS.register("power_dust", Misc::new);
    public static final RegistryObject<Item> DIVINE_STICK = ITEMS.register("divine_stick", Misc::new);

    public static final RegistryObject<ArmorItem> POWER_HELMET = ITEMS.register("power_helmet", () ->
            new ArmorItem(ModArmourMaterial.POWER, EquipmentSlotType.HEAD,new Item.Properties().group(ItemGroup.COMBAT)));
    public static final RegistryObject<ArmorItem> POWER_CHESTPLATE = ITEMS.register("power_chestplate", () ->
            new ArmorItem(ModArmourMaterial.POWER, EquipmentSlotType.CHEST,new Item.Properties().group(ItemGroup.COMBAT)));

    public static final RegistryObject<ArmorItem> POWER_REENFORCED_CHESTPLATE = ITEMS.register("power_reenforced_chestplate", () ->
            new ArmorItem(ModArmourMaterial.POWER_REENFORCED, EquipmentSlotType.CHEST,new Item.Properties().group(ItemGroup.COMBAT)));

    public static final RegistryObject<ArmorItem> POWER_LEGGINGS = ITEMS.register("power_leggings", () ->
            new ArmorItem(ModArmourMaterial.POWER, EquipmentSlotType.LEGS,new Item.Properties().group(ItemGroup.COMBAT)));
    public static final RegistryObject<ArmorItem> POWER_SHOES = ITEMS.register("power_shoes", () ->
            new ArmorItem(ModArmourMaterial.POWER, EquipmentSlotType.FEET,new Item.Properties().group(ItemGroup.COMBAT)));

}

 

ModArmourMaterial

package com.isyriux.divinerod.armour;

import com.isyriux.divinerod.DivineRodMod;
import com.isyriux.divinerod.util.registhandler;
import net.minecraft.inventory.EquipmentSlotType;
import net.minecraft.item.IArmorMaterial;
import net.minecraft.item.crafting.Ingredient;
import net.minecraft.util.SoundEvent;
import net.minecraft.util.SoundEvents;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import org.apache.commons.codec.language.Soundex;

import java.util.function.Supplier;

public enum ModArmourMaterial implements IArmorMaterial {

    POWER(DivineRodMod.MOD_ID+":power",45,new int[] {4,8,8,4}, 24, SoundEvents.ITEM_ARMOR_EQUIP_GOLD, 2.0F, () -> {return Ingredient.fromItems(registhandler.POWER_INGOT.get());},1),
    POWER_REENFORCED(DivineRodMod.MOD_ID+":power_reenforced",45,new int[] {4,8,8,4}, 24, SoundEvents.ITEM_ARMOR_EQUIP_GOLD, 2.0F, () -> {return Ingredient.fromItems(registhandler.POWER_INGOT.get());},1);


    private static final int[] MAX_DAMAGE_ARRAY = new int[] {11,16,15,13};
    private final String name;
    private final int maxDamageFactor;
    private final int[] damageReductionAmountArray;
    private final int enchantability;
    private final SoundEvent soundEvent;
    private final float toughness;
    private final Supplier<Ingredient> repairMaterial;
    private final float knockbackResistance;

    ModArmourMaterial(String name, int maxDamageFactor, int[] damageReductionAmountArray, int enchantability,
                      SoundEvent soundEvent, float toughness, Supplier<Ingredient> repairMaterial, float knockbackResistance) {
        this.name=name;
        this.maxDamageFactor=maxDamageFactor;
        this.damageReductionAmountArray=damageReductionAmountArray;
        this.enchantability=enchantability;
        this.soundEvent=soundEvent;
        this.toughness=toughness;
        this.repairMaterial=repairMaterial;
        this.knockbackResistance=knockbackResistance;
    }

    @Override
    public int getDurability(EquipmentSlotType equipmentSlotType) {
        return MAX_DAMAGE_ARRAY[equipmentSlotType.getIndex()]*this.maxDamageFactor;
    }

    @Override
    public int getDamageReductionAmount(EquipmentSlotType equipmentSlotType) {
        return this.damageReductionAmountArray[equipmentSlotType.getIndex()];
    }

    @Override
    public int getEnchantability() {
        return this.enchantability;
    }

    @Override
    public SoundEvent getSoundEvent() {
        return this.soundEvent;
    }

    @Override
    public Ingredient getRepairMaterial() {
        return this.repairMaterial.get();
    }

    @OnlyIn(Dist.CLIENT)
    @Override
    public String getName() {
        return this.name;
    }

    @Override
    public float getToughness() {
        return this.toughness;
    }

    @Override
    public float func_230304_f_() {
        return this.knockbackResistance;
    }
}

 

I don't expect an immediate fix but it is very important since this is not working at all.

Edited by iSyriux
Link to comment
Share on other sites

3 minutes ago, iSyriux said:

@Override public <A extends BipedModel<?>> A getArmorModel(LivingEntity entityLiving, ItemStack itemStack, EquipmentSlotType armorSlot, A _default) { return null; }

First of all, THIS HAS TO RETURN YOUR ARMOR MODEL.

4 minutes ago, iSyriux said:

new ArmorItem

Second of all, THIS HAS TO REFERENCE YOUR CUSTOM CLASS.

 

I have definitely said the second one at some point already.

Link to comment
Share on other sites

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...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements




×
×
  • Create New...

Important Information

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