Что делают эти строчки кода?(Вопрос по учебнику)

Версия Minecraft
1.12.2
Здравствуйте, форумчане. Не могли бы вы мне объяснить строчки кода, которые помечены зелёным.
Поясню, здесь я работал с регистрацией и рендером моделей.

package Alexey_Shepard.Amazing_Land.init;



import Alexey_Shepard.Amazing_Land.items.Azerite;

import Alexey_Shepard.Amazing_Land.items.CupCake;

import net.minecraft.client.Minecraft;

import net.minecraft.client.renderer.block.model.ModelResourceLocation;

import net.minecraft.item.Item;

import net.minecraftforge.fml.common.registry.ForgeRegistries;

import net.minecraftforge.fml.relauncher.Side;

import net.minecraftforge.fml.relauncher.SideOnly;



public class ModItems {



public static Item azeriteItem = new Azerite("azerite");

public static Item cupCakeFood = new CupCake("cupcake", 1, 0.5F, true);



public static void register(){

setRegister(azeriteItem);

setRegister(cupCakeFood);

}



@SideOnly(Side.CLIENT)

public static void registerRender(){

setRender(azeriteItem);

setRender(cupCakeFood);

}



private static void setRegister(Item item){

ForgeRegistries.ITEMS.register(item);

}



@SideOnly(Side.CLIENT)

private static void setRender(Item item){

Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(item, 0, new ModelResourceLocation(item.getRegistryName(), "inventory")); Можете прям подробно расписать по поводу этой строки.

}



}
 
Последнее редактирование модератором:
Решение
И вы мне не ответили по поводу, будет ли работать на сервере, при аннотации @SideOnly(Side.CLIENT)?
Не будет, серверная часть пропустит этот участок кода.
В 1.12 лучше не использовать данный код:
Java:
Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(item, 0, new ModelResourceLocation(item.getRegistryName(), "inventory"));
Потому что он не позволяет делать нормально предметы с мета датой, а так для обычного предмета ещё можно использовать. Первый параметр: item отвечает за то, какому предмету будет зарегистрирована модель. Второй параметр: 0 это та самая мета предмета, т.е. к примеру мета предмета 2, значит указываем 2(пример золотое яблоко). Третий параметр: указывает наименование текстуры и...
5,021
47
784
Указывает ,что данный метод будет вызываться только на клиенте.
Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(item, 0, new ModelResourceLocation(item.getRegistryName(), "inventory"));
Ты регистрируешь item render. Не знаю даже что тут расписывать
 
@Maxik001 Мне прямо, нужно детально разобрать строку. Общую суть я и так понял.
Указывает ,что данный метод будет вызываться только на клиенте.
Значит, то что на сервере работать не будет?
 
5,021
47
784
Я тебе ответил, тут нчего расписывать. Три геттера, и регистрация. Что еще? Про геттеры узнать хочешь? Иди читай учебник по жабе тогда
 

Icosider

Kotliner
Администратор
3,603
99
664
И вы мне не ответили по поводу, будет ли работать на сервере, при аннотации @SideOnly(Side.CLIENT)?
Не будет, серверная часть пропустит этот участок кода.
В 1.12 лучше не использовать данный код:
Java:
Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(item, 0, new ModelResourceLocation(item.getRegistryName(), "inventory"));
Потому что он не позволяет делать нормально предметы с мета датой, а так для обычного предмета ещё можно использовать. Первый параметр: item отвечает за то, какому предмету будет зарегистрирована модель. Второй параметр: 0 это та самая мета предмета, т.е. к примеру мета предмета 2, значит указываем 2(пример золотое яблоко). Третий параметр: указывает наименование текстуры и вроде отображение "inventory"(не помню что точно означает). По поводу пути, item.getRegistryName() можешь указать "myCustomApple" и тогда по пути: models/item/ должна лежать модель(файл json) с названием myCustomApple.json, как то так: models/item/myCustomApple.json. Только учти, то что с 1.12 все файлы должны называться в нижнем регистре, в противном случаи не загрузятся. Чтобы это исправить нужно использовать в свой pack с версией 2
 
1,031
19
87
"inventory"(не помню что точно означает)
Вроде за отображение в инвентаре. Сталкивался при первых попытках добавить блок без модели(ну давно было глуп был, с кем не бывает).
Получается для блока в мире есть "normal" и "inventory", первый для объекта в мире. второй для отображения в инвентаре. Хотя зачем так делать хз. Но для блока обычно модели совпадают и указываются в состоянии блока. Потому в коде что для предметов, что для блоков стоит только "inventory". А может и потому, блоки регистрируются изначально как предметы - блоки, точно хз как оно там.
 
1,111
47
420
Классы, методы, поля и пр отмеченные аннотацией @SideOnly(CLIENT) будут вырезаны в рантайме форжевским трансформером если мод будет запущен на сервере. Ну и соответственно при попытке обратиться к этому методу будет выкинут еррор MethodNotFoundError или MethodNotImplementedError
 
5,021
47
784
Я кстати менял, это ваще не решает ничего. Как не хотел с большими буквами дружить, так и не дружит. Я хз, с чего Ивас решил что это так работает:confused:
 
2,932
44
598
@Maxik001, у меня вот так всё работает:
UPD: @Doc только что проверил, оказывается когда стоит №1 то оно принимает файлы и в верхним и в нижнем регистре, до этого думал, что только в нижнем!
 

Icosider

Kotliner
Администратор
3,603
99
664
Я кстати менял, это ваще не решает ничего. Как не хотел с большими буквами дружить, так и не дружит. Я хз, с чего Ивас решил что это так работает:confused:
На forge форуме уже давно всем ответили как перейти на оба регистра -_-
 
Сверху