- 205
- 12
- 103
Ahoy! o/
Смоделируем ситуацию:
Есть условный предмет. Пусть это будет.. Мм.. Кирпич. Этот кирпич нужно метой разбить на 16 видов, каждый вид окрасить в свой цвет, имея при этом всего 1 текстурку (по дефолту в таких случаях их делают белыми). Если с разделением я еще могу справиться, то с окрашиванием - уже не очень. Почитал доки форжа, это не помогло, ибо информация довольно сжатая, и примеров толком нет. Решился поискать аналогов в ванили, по памяти вспомнил о наличии зелек, стрел с эффектами и яиц спавна. И там, и там, все представлено достаточно сложно(из-за наличия второстепенного функционала), из-за чего анализ кода дается не очень. Из модов я, внезапно, тоже ничего такого не нашел, кроме FairyLights, но там ситуация еще сложнее.
Собственной, быстро набросал код условного кирпича с метой:
Метод itemTypes используется для дальнейшей регистрации самих предметов, на это можете не обращать внимание.
Итоговый вопрос: Как научить предмет (и себя заодно, ага) окрашивать собственную текстуру в зависимости от меты? В идеале хотелось бы использовать ванильный энум цветов, дабы не регистрировать лишние элементы палитры.
Примеры реализации только приветствуются, почитать непонятные документации форжа я и сам могу.
Смоделируем ситуацию:
Есть условный предмет. Пусть это будет.. Мм.. Кирпич. Этот кирпич нужно метой разбить на 16 видов, каждый вид окрасить в свой цвет, имея при этом всего 1 текстурку (по дефолту в таких случаях их делают белыми). Если с разделением я еще могу справиться, то с окрашиванием - уже не очень. Почитал доки форжа, это не помогло, ибо информация довольно сжатая, и примеров толком нет. Решился поискать аналогов в ванили, по памяти вспомнил о наличии зелек, стрел с эффектами и яиц спавна. И там, и там, все представлено достаточно сложно(из-за наличия второстепенного функционала), из-за чего анализ кода дается не очень. Из модов я, внезапно, тоже ничего такого не нашел, кроме FairyLights, но там ситуация еще сложнее.
Собственной, быстро набросал код условного кирпича с метой:
ItemBrick:
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.ItemStack;
import net.minecraft.util.NonNullList;
import java.util.Arrays;
public class ItemBrick extends ItemBase {
public ItemBrick(String name) {
super(name);
this.setHasSubtypes(true);
}
@Override
public void getSubItems(CreativeTabs tab, NonNullList<ItemStack> items) {
if (tab == CreativeTab.HHTAB) {
for (BrickTypes type : BrickTypes.values()) {
items.add(new ItemStack(this, 1, type.ordinal()));
}
}
}
public enum BrickTypes {
WHITE, RED, BLUE; //Далее идут остальные цвета по ванильной палитре EnumDyeColor
public static BrickTypes getByMeta(int meta) {
for (BrickTypes type : values()) {
if (type.ordinal() == meta)
return type;
}
return null;
}
}
@Override
public String[] itemTypes() {
return Arrays.stream(BrickTypes.values()).map(x -> x.name().toLowerCase()).toArray(String[]::new);
}
}
Метод itemTypes используется для дальнейшей регистрации самих предметов, на это можете не обращать внимание.
Итоговый вопрос: Как научить предмет (и себя заодно, ага) окрашивать собственную текстуру в зависимости от меты? В идеале хотелось бы использовать ванильный энум цветов, дабы не регистрировать лишние элементы палитры.
Примеры реализации только приветствуются, почитать непонятные документации форжа я и сам могу.
Последнее редактирование: