redacted

  • Автор темы Автор темы MrTerf
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

MrTerf

Активный участник
Баллы
66
redacted
 
Последнее редактирование:
Уточню, для чего мне это надо - мне нужно сделать подобие команды /clone, то есть, получить данные одного блока и передать в другой.
На 1.12 - сохраняй material, data либо MaterialData и BlockState
На 1.13 - сохраняй material, BlockData и BlockState
Кажется этого достаточно для копии блока.
 
Всё просто:
Block b = world.getBlockAt(posX , posY, posZ );

Так в переменной у тебя блок 1 в 1
Только ставь его куда надо и готово
 
Уточню, для чего мне это надо - мне нужно сделать подобие команды /clone, то есть, получить данные одного блока и передать в другой.
Мне кажется это должно сработать (сам не пробовал, альтернатив не вижу).
PHP:
public void copyBlock(Block from, Block to) {
    // Получаем точную копию состояния блока
    BlockState state = from.getState();
    BlockState targetState = to.getState();
    // Применяем данные материала (тип, состояния и т.д.)
    targetState.setData(state.getData());
    // Применяем состояние к блоку
    targetState.update();
}
 
Мне кажется это должно сработать (сам не пробовал, альтернатив не вижу).
PHP:
public void copyBlock(Block from, Block to) {
    // Получаем точную копию состояния блока
    BlockState state = from.getState();
    BlockState targetState = to.getState();
    // Применяем данные материала (тип, состояния и т.д.)
    targetState.setData(state.getData());
    // Применяем состояние к блоку
    targetState.update();
}
Эта штука не будет злиться если материалы в блоков разные?
 
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.13 BlockData кажется нормально бы работал с таким, но MaterialData не очень в этом
Вариант фикса:
PHP:
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();
}
 
Я выше добавил в код строчку смены типа перед передачей данных материала.
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.
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх