Перейти к содержанию

Партикл блока находящийся под сущностью


ivyy

Рекомендуемые сообщения

В теме 11 сообщений

У меня есть некая сущность от которой должны идти партиклы блока, находящегося под ней, тоесть если сущность на земляном блоке то minecraft:block grass_block, а если на другом блоке чтобы партиклы соотвественно тоже менялись. Это можно как то сделать?

Ссылка на комментарий
Поделиться на другие сайты

  • 1 месяц спустя...

Одним из способов было бы проверить, например, находится ли прямо рядом или, как в этом примере, ниже игрока дубовая доска.

/execute as @a at @s run execute if block ~ ~-0.1 ~ oak_planks at @s run say Hello, oak!

Поэтому вам придется выполнять отдельные команды для каждого возможного блока, который находится рядом с игроком.

Я не удивлюсь, если есть гораздо более простое решение, но это то, что пришло мне в голову.

Ссылка на комментарий
Поделиться на другие сайты

# В чате
scoreboard objectives add block dummy

# Командный блок
execute as @a at @s store success score oak_planks block run clone ~-7 ~-7 ~-7 ~7 ~7 ~7 ~-7 ~-7 ~-7 filtered oak_planks force
execute if score oak_planks block matches 1 run say Hello, oak!
Ссылка на комментарий
Поделиться на другие сайты

Тебе стоило хотя бы проверить что тебе нейросеть дает..

В 13.03.2025 в 15:01, Вашан сказал:
# В чате
scoreboard objectives add block dummy

# Командный блок
execute as @a at @s store success score oak_planks block run clone ~-7 ~-7 ~-7 ~7 ~7 ~7 ~-7 ~-7 ~-7 filtered oak_planks force
execute if score oak_planks block matches 1 run say Hello, oak!

 

Ссылка на комментарий
Поделиться на другие сайты

В 13.03.2025 в 17:16, Вашан сказал:

Одним из способов было бы проверить, например, находится ли прямо рядом или, как в этом примере, ниже игрока дубовая доска.

/execute as @a at @s run execute if block ~ ~-0.1 ~ oak_planks at @s run say Hello, oak!

Поэтому вам придется выполнять отдельные команды для каждого возможного блока, который находится рядом с игроком.

Я не удивлюсь, если есть гораздо более простое решение, но это то, что пришло мне в голову.

к сожалению проверять КАЖДЫЙ возможный блок не вариант

Ссылка на комментарий
Поделиться на другие сайты

В 27.03.2025 в 23:15, gasihup сказал:

к сожалению проверять КАЖДЫЙ возможный блок не вариант

а другого варианта вроде и нет

Ссылка на комментарий
Поделиться на другие сайты

On 3/27/2025 at 9:15 PM, gasihup said:

к сожалению проверять КАЖДЫЙ возможный блок не вариант

 

1 hour ago, NecRoZ said:

а другого варианта вроде и нет

 

Теги

Ссылка на комментарий
Поделиться на другие сайты

11 минут назад, DasGortyCH сказал:

 

 

Теги

ну в любом случае тебе придётся перебирать эти теги в чтобы определить какой конкретно это блок, это конечно может быть эффективней чем простая последовательная проверка. но всё же не настолько эффективно, хотя тут надо посчитать 

Ссылка на комментарий
Поделиться на другие сайты

Делаю на 1.21.5+
Есть один способ: /loot + макросы

Функция #minecraft:load:
# Делаем чанк невыгружаемым
forceload add 0 0
# Создаём шалкер
setblock 0 -64 0 minecraft:yellow_shulker_box

#minecraft:tick:
# Если игрок на земле и под ним есть блок (потому что может быть на краю блока), то выполняем функцию "p:player/particle"
execute as @a[nbt={OnGround:1b}] at @s positioned over motion_blocking if entity @s[dx=0] run function p:player/particle

p:player/particle:
# Переносим полученный блок в шалкер
execute align y run loot replace block 0 -64 0 container.0 mine ~ ~-0.5 ~ minecraft:netherite_pickaxe[minecraft:enchantments={"minecraft:silk_touch":1}]
# Запускаем макро-функцию, где уже будем спавнить партикл с полученным блоком
function p:player/particle/macro with block 0 -64 0 Items[0]

p:player/particle/macro:
$particle minecraft:block{block_state:"$(id)"}

Ссылка на комментарий
Поделиться на другие сайты

6 часов назад, GhostoFBU сказал:

Делаю на 1.21.5+
Есть один способ: /loot + макросы

Функция #minecraft:load:
# Делаем чанк невыгружаемым
forceload add 0 0
# Создаём шалкер
setblock 0 -64 0 minecraft:yellow_shulker_box

#minecraft:tick:
# Если игрок на земле и под ним есть блок (потому что может быть на краю блока), то выполняем функцию "p:player/particle"
execute as @a[nbt={OnGround:1b}] at @s positioned over motion_blocking if entity @s[dx=0] run function p:player/particle

p:player/particle:
# Переносим полученный блок в шалкер
execute align y run loot replace block 0 -64 0 container.0 mine ~ ~-0.5 ~ minecraft:netherite_pickaxe[minecraft:enchantments={"minecraft:silk_touch":1}]
# Запускаем макро-функцию, где уже будем спавнить партикл с полученным блоком
function p:player/particle/macro with block 0 -64 0 Items[0]

p:player/particle/macro:
$particle minecraft:block{block_state:"$(id)"}

пипяо, это гениально
а вот такой момент, что будет эффективней, подобие двоичного поиска с помощью тега блоков или вот этот способ?

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...