Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
На 1.12 - сохраняй material, data либо MaterialData и BlockStateУточню, для чего мне это надо - мне нужно сделать подобие команды /clone, то есть, получить данные одного блока и передать в другой.
Гуглить не пробовал?Можешь написать код? 1.12
Мне самому стало интересно как ты его будешь ставитьВсё просто:
Block b = world.getBlock(posX , posY, posZ ;
Так в переменной у тебя блок 1 в 1
Только ставь его куда надо и готово
Мне кажется это должно сработать (сам не пробовал, альтернатив не вижу).Уточню, для чего мне это надо - мне нужно сделать подобие команды /clone, то есть, получить данные одного блока и передать в другой.
public void copyBlock(Block from, Block to) {
// Получаем точную копию состояния блока
BlockState state = from.getState();
BlockState targetState = to.getState();
// Применяем данные материала (тип, состояния и т.д.)
targetState.setData(state.getData());
// Применяем состояние к блоку
targetState.update();
}
@DeprecatedBlock#setTypeIdAndData()
Эта штука не будет злиться если материалы в блоков разные?Мне кажется это должно сработать (сам не пробовал, альтернатив не вижу).
PHP:public void copyBlock(Block from, Block to) { // Получаем точную копию состояния блока BlockState state = from.getState(); BlockState targetState = to.getState(); // Применяем данные материала (тип, состояния и т.д.) targetState.setData(state.getData()); // Применяем состояние к блоку targetState.update(); }
BlockState захватывает состояние блока полностью. Прям совсем полностью. Больше ничего не нужно.Эта штука не будет злиться если материалы в блоков разные?
Уверен? 🙄BlockState захватывает состояние блока полностью. Прям совсем полностью. Больше ничего не нужно.
Да, это точно. Ошибки выше не по этой причине.Уверен? 🙄
Да, вот тип нужно сначала ставить, мы копируем MaterialData, потому Material должен быть одинаков.Какой-то баг в твоём коде ☹️
public void copyBlock(Block from, Block to) {
// Получаем точную копию состояния блока
BlockState state = from.getState();
BlockState targetState = to.getState();
// Применяем данные материала (тип, состояния и т.д.)
to.setType(from.getType());
targetState.setData(state.getData());
// Применяем состояние к блоку
targetState.update();
}
Оно и бросает ошибки.targetState.setData(state.getData());
public void copyBlock(Block from, Block to) {
to.setType(from.getType()); //Меняем материал блока
// Получаем точную копию состояния блока
BlockState state = from.getState();
BlockState targetState = to.getState();
// Применяем данные материала (тип, состояния и т.д.)
targetState.setData(state.getData());
// Применяем состояние к блоку
targetState.update();
}
Я выше добавил в код строчку смены типа перед передачей данных материала.Оно и бросает ошибки.
Код с CraftBukkit - https://hub.spigotmc.org/stash/projects/SPIGOT/repos/craftbukkit/browse/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java?until=19507baf8b7903427bc3efab7118de6e7c1c931e&untilPath=src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java#85
PHP:public void copyBlock(Block from, Block to) { // Получаем точную копию состояния блока BlockState state = from.getState(); BlockState targetState = to.getState(); // Применяем данные материала (тип, состояния и т.д.) to.setType(from.getType()); targetState.setData(state.getData()); // Применяем состояние к блоку targetState.update(); }
Ты пробовал мой последний вариант кода выше?Ребята, проблема в том, что копируется голова зомби, а вставляется через скелета меня волнует. Есть фикс этого?
В 1.12 и ниже это один предмет. Меняется через data.Ребята, проблема в том, что копируется голова зомби, а вставляется через скелета меня волнует. Есть фикс этого?