Well hello there,
i had a mod in 1.7.10 that had custom armor rendering
and i am now trying to do the same with 1.12.2 .. :I
additional info:
this is just for tests... i want to do this with a different model that my friend makes for me right now
I got confused at the new item registering and i bet i did something wrong at that .. (the last version i did mod in was 1.7.10)
I got that working in 1.7.10 .. but i don't even ..know if i did it correctly there
not being sure if i do it correctly .. (i mean like with the proxy sided stuff i obviously don't want to send a model to the server side.. >-<)
here is my problem i am trying to do a armor with a custom Model
and encountered these problems:
the armor is rendered like a "child" mob so the little version of the model
the animation of hitting, pulling a bow, blocking with shield... is NOT shown how do i get them in 1.12.2? ..
getting it "double" rendered (it gets rendered 2 times)
so here is actual code:
Model class:
package maki325.bnha.models;
import net.minecraft.client.model.ModelBase;
import net.minecraft.client.model.ModelBiped;
import net.minecraft.client.model.ModelRenderer;
import net.minecraft.entity.Entity;
public class ClothModel extends ModelBiped {
private ModelRenderer RArm;
private ModelRenderer LLeg;
private ModelRenderer Head;
private ModelRenderer Body;
private ModelRenderer LArm;
private ModelRenderer RLeg;
public ClothModel(float f) {
super(f, 0, 64,32);
this.textureWidth = 64;
this.textureHeight = 32;
this.LArm = new ModelRenderer(this, 40, 16);
this.LArm.addBox(-1.0F, -2.0F, -2.0F, 4, 12, 4, 0.0F);
this.LArm.isHidden = true;
this.Body = new ModelRenderer(this, 16, 16);
this.Body.addBox(-4.0F, 0.0F, -2.0F, 8, 12, 4, 0.0F);
this.RLeg = new ModelRenderer(this, 0, 16);
this.RLeg.addBox(-2.0F, 0.0F, -2.0F, 4, 12, 4, 0.0F);
this.LLeg = new ModelRenderer(this, 0, 16);
this.LLeg.addBox(-2.0F, 0.0F, -2.0F, 4, 12, 4, 0.0F);
this.RArm = new ModelRenderer(this, 40, 16);
this.RArm.addBox(-3.0F, -2.0F, -2.0F, 4, 12, 4, 0.0F);
this.Head = new ModelRenderer(this, 0, 0);
this.Head.addBox(-4.0F, -8.0F, -4.0F, 8, 8, 8, 0.0F);
/*
bipedLeftArm.addChild(LArm);
bipedBody.addChild(Body);
bipedRightLeg.addChild(RLeg);
bipedLeftLeg.addChild(LLeg);
bipedRightArm.addChild(RArm);
bipedHead.addChild(Head);
trying stuff */
}
@Override
public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) {
super.render(entity, f, f1, f2, f3, f4, f5);
setRotationAngles(f, f1, f2, f3, f4, f5, entity);
}
}
Item class:
package maki325.bnha.init.items;
import java.util.HashSet;
import java.util.Set;
import maki325.bnha.util.Reference;
import net.minecraft.init.SoundEvents;
import net.minecraft.inventory.EntityEquipmentSlot;
import net.minecraft.item.Item;
import net.minecraft.item.ItemArmor;
import net.minecraftforge.common.util.EnumHelper;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.registry.GameRegistry.ObjectHolder;
import net.minecraftforge.registries.IForgeRegistry;
@ObjectHolder(Reference.MOD_ID)
public class ModItems {
public static class ArmorMaterials {
public static final ItemArmor.ArmorMaterial UA_SPORTS_MAT =
EnumHelper.addArmorMaterial
(Reference.MOD_ID +":ua_sports",
Reference.MOD_ID +":ua_sports",
15,
new int[]{1, 4, 5, 2},
12,
SoundEvents.ITEM_ARMOR_EQUIP_LEATHER,
(float) 0);
}
/* ITEMS */
/*——————————————————————————————————————————————————*/
/*——————————————————————————————————————————————————*/
/* ARMOR */
/*——————————————————————————————————————————————————*/
public static final ClothArmor UA_SPORTS_CHESTPLATE =
new ClothArmor("ua_sports_chestplate",
ArmorMaterials.UA_SPORTS_MAT,
1,
EntityEquipmentSlot.CHEST);
public static final ClothArmor UA_SPORTS_LEGGINGS =
new ClothArmor("ua_sports_leggings",
ArmorMaterials.UA_SPORTS_MAT,
2,
EntityEquipmentSlot.LEGS);
/*——————————————————————————————————————————————————*/
private static void initialiseItems() {
UA_SPORTS_CHESTPLATE
.setUnlocalizedName(UA_SPORTS_CHESTPLATE.getRegistryName().toString());
UA_SPORTS_LEGGINGS
.setUnlocalizedName(UA_SPORTS_LEGGINGS.getRegistryName().toString());
}
@Mod.EventBusSubscriber(modid = Reference.MOD_ID)
public static class RegistrationHandler {
public static final Set<Item> ITEMS = new HashSet<>();
@SubscribeEvent
public static void registerItems(final RegistryEvent.Register<Item> event) {
final Item[] items = {
UA_SPORTS_CHESTPLATE,
UA_SPORTS_LEGGINGS,
};
final IForgeRegistry<Item> registry = event.getRegistry();
for (final Item item : items) {
registry.register(item);
ITEMS.add(item);
}
initialiseItems();
}
}
}
Armor class:
package maki325.bnha.init.items;
import maki325.bnha.BnHA;
import maki325.bnha.models.ClothModel;
import maki325.bnha.util.IHasModel;
import maki325.bnha.util.Reference;
import net.minecraft.client.model.ModelBiped;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.inventory.EntityEquipmentSlot;
import net.minecraft.item.ItemArmor;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
public class ClothArmor extends ItemArmor implements IHasModel{
public ClothArmor(String name,ArmorMaterial material,int renderindex, EntityEquipmentSlot slot) {
super(material, renderindex, slot);
this.setRegistryName(Reference.MOD_ID, name);
this.setCreativeTab(CreativeTabs.COMBAT);
}
@Override
@SideOnly(Side.CLIENT)
public ModelBiped getArmorModel(EntityLivingBase living, ItemStack stack, EntityEquipmentSlot slot, ModelBiped defaultModel)
{
if(!stack.isEmpty())
{
if(stack.getItem() instanceof ItemArmor)
{
ClothModel armorModel = BnHA.proxy.getClothModel();
armorModel.bipedRightLeg.showModel = slot == EntityEquipmentSlot.FEET;
armorModel.bipedLeftLeg.showModel = slot == EntityEquipmentSlot.FEET;
armorModel.bipedBody.showModel = slot == EntityEquipmentSlot.CHEST;
armorModel.bipedLeftArm.showModel = slot == EntityEquipmentSlot.CHEST;
armorModel.bipedRightArm.showModel = slot == EntityEquipmentSlot.CHEST;
armorModel.bipedHead.showModel = slot == EntityEquipmentSlot.HEAD;
armorModel.isSneak = defaultModel.isSneak;
armorModel.isRiding = defaultModel.isRiding;
armorModel.rightArmPose = defaultModel.rightArmPose.BLOCK;
armorModel.leftArmPose = defaultModel.leftArmPose.BLOCK;
armorModel.rightArmPose = defaultModel.rightArmPose;
armorModel.leftArmPose = defaultModel.leftArmPose;
return armorModel;
}
}
return null;
}
@Override
public void registerModels() {
BnHA.proxy.registerItemRenderer(this, 0, "inventory");
}
}
ClientProxy class:
package maki325.bnha.proxy;
import maki325.bnha.models.ClothModel;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.item.Item;
import net.minecraftforge.client.model.ModelLoader;
public class ClientProxy extends CommonProxy {
private static final ClothModel clothmodel = new ClothModel(1F);
public void registerItemRenderer(Item item, int meta, String id) {
ModelLoader.setCustomModelResourceLocation(item, meta, new ModelResourceLocation(item.getRegistryName(), id));
}
@Override
public ClothModel getClothModel() {
return clothmodel;
}
public static void registerModel() {
}
}
thanks for reading this and helping me