Метаданные блока — это 4 бита информации, которые можно записать для блока. В Minecraft метаданные могут содержать информацию о повороте блока, его состоянии или иные данные, которые можно уместить в 4 бита, с целью уменьшения потребления памяти. В противном же случае, используется Tile Entity.
Если у ваших блоков имеются подтипы, то они также будут сохраняться в метаданные блока и следовательно, данные о других состояниях необходимо будет формировать за счёт «маски», основанной на побитовых операциях.
Создадим блок, который имеет подтипы, как например блок шерсти.
В добавок, нам необходимо создать класс предмета, чтобы метаданные правильно закреплялись за блоком при его установке в мире.
package ru.mcmodding.tutorial.common.item.block; import net.minecraft.block.Block; import net.minecraft.item.ItemColored; import net.minecraft.item.ItemDye; public class ColoredStoneBlockItem extends ItemColored public ColoredStoneBlockItem(Block block) // Первый параметр указывает на блок, который будет устанавливаться, а что предмет имеет подтипы «id:damage» super(block, true); // Задаёт массив имён для ItemColored#getUnlocalizedName func_150943_a(ItemDye.field_150921_b); > >
В большинстве случаев вы должны использовать ItemBlock , вместо ItemColored . Мы же используем ItemColored , чтобы не выполнять лишних действий, таких как: указание метаданных, изменение нелокализованного названия с использованием метаданных и т.п.
БЛОКИ В МАЙНКРАФТ: ВИДЫ И МЕХАНИКА
Теперь необходимо зарегистрировать наш блок:
package ru.mcmodding.tutorial.common.handler; import cpw.mods.fml.common.registry.GameRegistry; import ru.mcmodding.tutorial.common.block.ColoredStoneBlock; import ru.mcmodding.tutorial.common.item.block.ColoredStoneBlockItem; public class ModBlocks public static final ColoredStoneBlock COLORED_STONE = new ColoredStoneBlock(); public static void register() GameRegistry.registerBlock(COLORED_STONE, ColoredStoneBlockItem.class, «colored_stone»); > >
Как вы могли заметить, в метод регистрации блока передаётся новый параметр Class , так мы скажем игре, что наш предмет ColoredStoneBlockItem «принадлежит» блоку ColoredStoneBlock .
Если в конструкторе наследника ItemBlock , вы укажете дополнительные к Block параметры, то, чтобы получить объекты в конструкторе, необходимо будет передать их в четвёртый параметр метода GameRegistry#registerBlock(Block, Class, String, Object[]) . При этом, передавать объект блока не нужно!
Запустим игру, возьмём добавленные блоки в руки и разместим их в мире.
Для наглядности, мы установили поверх наших цветных камней, ванильный камень.
Поворачиваемый блок#
Цветные блоки сделать оказалось довольно просто, но как насчёт добавления блока, который будет смотреть на игрока при его установке? Для этого нам понадобится лишь один метод Block#onBlockPlacedBy , который получает параметр связанный с сущностью установившей блок(сущность может быть не только игроком!)
Командный Блок. Что ты такое? — НаучБлок || Квадратный
Текстура лицевой части блока:
Создавать и добавлять класс наследующий ItemBlock нет необходимости, так как в данном случае не используется заготовленные метаданные из ItemStack.
В методе Block#onBlockPlacedBy мы задаём установленному блоку метаданные через метод World#setBlockMetadataWithNotify(Integer, Integer, Integer, Integer, Integer) . Разберём метод подробнее: первые три параметра отвечаю за позицию на которой необходимо произвести установку метаданных, следующим параметром идут метаданные, а затем флаг.
1 | Вызвать обновление соседних блоков |
2 | Вызвать обновление блока(в случае клиента — перерисовать, в случае сервера — отправить блок на клиент) |
3 | Вызвать действия флагов 1 и 2. В случае клиента, действие флага 2 не будет применено(перерисовка блока) |
Почему-то MinecraftForge в JavaDoc отсылает смотреть метод World#setBlock насчёт флагов, но в случае установки метаданных, описание из World#setBlock не будет являться верным. Вы можете самостоятельно в этом убедиться посмотрев код метода.
В дальнейшем вы можете использовать побитовые операции для дальнейшей работы с метаданными блока, чтобы записывать не только поворот блока, но и какое-то дополнительное состояние. Более подробные примеры работы с метаданными блоков вы сможете найти в коде блоков, таких как: забор, тыквы, редстоун механизмы и др.
Источник: mcmodding.ru
Jade 1.19, 1.18.2, 1.16.5, 1.12.2 (подсказки о блоках и мобах)
Jade — это аддон для мода Hwyla, а начиная с версии 1.16 самостоятельный мод, который отображает дополнительные подсказке о блоках, предметах и мобах Майнкрафт. Вы сможете узнать какие предметы хранятся в инвентаре блоков; характеристики блоков и мобов; стадию роста культур, прогресс в плавке руд в печи, количество пчёл в ульях и многое другое.
Управление
- numpad 0 — открыть настройки мода
- numpad 1 — отобразить/скрыть подсказки
- numpad 2 — отобразить/скрыть подсказки о жидкостях
- numpad 3 — показать рецепты (требуется JEI или REI)
- numpad 4 — показать использование (требуется JEI или REI)
- Shift — отобразить подробную информацию у сервера
Скриншоты
Как установить Jade
- Скачать и установить Forge или Fabric
- Скачай мод
- Помести файл в .minecraft/mods
- Можно играть!
Скачать мод Jade
Для 1.19 Forge
jade-1_19-forge-7_3_1.jar (321.37 Kb, 11-июль-2022)
Для 1.19 Fabric
jade-1_19-fabric-7_4_0.jar (317.8 Kb, 11-июль-2022)
jade-1_18_2-forge-5_2_3.jar (291.8 Kb, 11-июль-2022)
Для 1.18.2 Fabric
jade-1_18_2-fabric-5_99_6.jar (318.58 Kb, 11-июль-2022)
jade-1_18_1-4_4_1.jar (282.56 Kb, 08-март-2022)
jade-1_17_1-3_3_1.jar (253.6 Kb, 08-март-2022)
jade-1_16_4-2_8_1.jar (251.38 Kb, 08-март-2022)
jade_1_15_2_1_2_0.jar (52.11 Kb, 08-март-2022)
jade_0_0_1.jar (27 Kb, 08-март-2022)
Понравился материал? Поделись с друзьями!
Источник: mineload.ru
Waila Harvestability [1.16.5] [1.15.2] [1.14.4] [1.12.2]
Это дополнение добавит в подсказки Waila информацию о том, можно ли добыть блок, уровень добычи и какой инструмент будет эффективен при добыче.
Скриншоты
Как установить Waila Harvestability
- Скачай и установи Minecraft Forge
- Скачай и установи WAILA или Hwyla
- Скачай мод
- Не распаковывая, скопируй в .minecraftmods
- Готово
Источник: minecraft-inside.ru