Вопрос Как поставить на локацию ItemStack или ShulkerBox

Версия Minecraft
1.16.X

Limon_MineDel

Разработчик
Пользователь
Сообщения
214
Решения
7
Веб-сайт
limon-minedel.ru
Есть локация(По которой можно получить Block) и ItemStack или ShulkerBox. Как на локацию поставить ItemStack или ShulkerBox?
 
Решение
Java:
ItemStack shulkerStack = //...
BlockStateMeta blockMeta = (BlockStateMeta) shulkerStack.getItemMeta();
ShulkerBox shulker = (ShulkerBox) blockMeta.getBlockState();

Block block = location.getBlock();
block.setType(Material.SHULKER_BOX);
ShulkerBox shulkerBlock = (ShulkerBox) block.getState();
shulkerBlock.getInventory().setContents(shulker.getInventory().getContents());
¯\_(ツ)_/¯
ItemStack описывает предметы, хоть и в него может быть инкапсулирован, например, блок (по очевидной причине).
Либо вопрос некорректно описан и вообще состоит не в этом, либо ответ на него ItemStack#getType() и:
Java:
location.getBlock().setType(itemStack.getType());
location.getBlock().setType(Material.SHULKER_BOX);
 
ItemStack описывает предметы, хоть и в него может быть инкапсулирован, например, блок (по очевидной причине).
Либо вопрос некорректно описан и вообще состоит не в этом, либо ответ на него ItemStack#getType() и:
Java:
location.getBlock().setType(itemStack.getType());
location.getBlock().setType(Material.SHULKER_BOX);
Это только на половину решает проблему. Если у меня ItemStack, то это шалкер с ресами внутри. При таком решении ставится только шалкер, без ресов
 
Java:
ItemStack shulkerStack = //...
BlockStateMeta blockMeta = (BlockStateMeta) shulkerStack.getItemMeta();
ShulkerBox shulker = (ShulkerBox) blockMeta.getBlockState();

Block block = location.getBlock();
block.setType(Material.SHULKER_BOX);
ShulkerBox shulkerBlock = (ShulkerBox) block.getState();
shulkerBlock.getInventory().setContents(shulker.getInventory().getContents());
¯\_(ツ)_/¯
 
Назад
Сверху Снизу