Кастомный рендер

Версия Minecraft
1.12.2
124
1
8
Всем привет.
Как можно задать свой рендер предмету?
Раньше для этого помогал класс IItemRenderer, но сейчас его нету.
 
7,099
324
1,509

Еще можно использовать TileEntityItemRenderer
 
30
4
12
Если ничего не упустил, то так можно:

Привязка к предмету рендерера
Java:
@EventHandler
public static void preInit(FMLPreInitializationEvent event) {
  ItemInit.CUSTOM.setTileEntityItemStackRenderer(TileEntityCustomRenderer.instance);
}

Рендерер
Java:
@SideOnly(Side.CLIENT)
public class TileEntityCustomRenderer extends TileEntityItemStackRenderer {

  public static TileEntityCustomRenderer instance;
  private final ModelCustom modelCustom = new ModelCustom();

  TileEntityCustomRenderer() {}

  @Override
  public void renderByItem(ItemStack itemStack, float partialTicks) {
    this.modelCustom.render(itemStack, partialTicks);
  }

  static {
    instance = new TileEntityCustomRenderer();
  }
}

Обычная java модель
Java:
public class ModelCustom extends ModelBase {
  ModelRenderer center;

  public ModelCustom() {
    this.textureWidth = 32;
    this.textureHeight = 32;
    this.center = new ModelRenderer(this, 0, 4);
    this.center.addBox(-0.5F, -0.5F, -0.5F, 1, 9, 1);
    this.center.setRotationPoint(0.0F, 1.0F, 0.0F);
    this.center.setTextureSize(32, 32);
  }

  public void render(ItemStack itemStack, float partialTicks) {
    Minecraft.getMinecraft().getTextureManager().bindTexture(new ResourceLocation("sometexture"));
    this.center.render(0.05F);
  }
}

Код такого вида со своей настройкой положения объекта в assets/Мод/model/item/Название предмета.json
JSON:
{
    "parent": "builtin/entity",
    "display": {
        "thirdperson_righthand": {

        },
        "thirdperson_lefthand": {

        },
        "firstperson_righthand": {

        },
        "firstperson_lefthand": {

        },
        "gui": {

        },
        "fixed": {

        },
        "ground": {

        }
    }
}
 
30
4
12
С obj несколько по другому:
Java:
@EventHandler

public static void preInit(FMLPreInitializationEvent event) {

  OBJLoader.INSTANCE.addDomain(Ид мода);

}

Java:
@SubscribeEvent
public static void registerModels(ModelRegistryEvent event) {
  ModelLoader.setCustomModelResourceLocation(ItemInit.CUSTOM, 0, new ModelResourceLocation(ItemInit.CUSTOM.getRegistryName(), "normal"));
}

В "assets\мод\blockstates\название предмета.json"
JSON:
{
    "forge_marker": 1,
    "defaults": {
        "model": "mod:custom.obj",
        "textures": {"#body": "mod:custom/items/models/body","#center": "mod:custom/items/models/center"},
        "custom": { "flip-v": true }
     },
    "variants": {
        "inventory":[],
        "normal": [{
            "transform": {               
                "firstperson": { },
                "firstperson_lefthand": { },
                
                "thirdperson": { },
                "thirdperson_lefthand": { } ] },
                                
                "gui": { },
                "ground": { },
                "fixed": { }
            }
        }]
    }
}
 
30
4
12
тратить сейчас время на изучение не могу к сожалению
я не хочу юзать форджевский загрузчик
Как то не сходится...
Раз такое дело, либо используй что уже есть, либо пиши что то свое, может это поможет:
 
7,099
324
1,509
у меня знания по скале нулевые, а тратить сейчас время на ее изучение не могу к сожалению
Там ничего особенного функционального не юзается, на джаве выглядит почти точно также, хотя более многословно

Если загрузчик свой, то лучше, наверное, через TEISR
Вот в этом сливе есть пример юза, класс TileAssortedEnchantTableItemStackRenderer и его usages
 
Сверху