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

Как сделать так чтобы над каждым стоящим или поставленным блоком одного типа вечно спавнились частицы?


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

В теме 4 сообщения

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

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

Я вижу один способ: Поместить внутрь блока сущность и спавнить частицы от неё. Для этого нужно задетектить установку блока. Для этого я создаю скорборд который будет прибавлять значение каждый раз когда игрок будет ставить белую шерсть.

  • /scoreboard objectives add UsedWool minecraft.used:minecraft.white_wool (прописать 1 раз в чат)
  • /scoreboard objectives setdisplay sidebar UsedWood (не обязательно, но для наглядности можешь прописать и это)
  • /scoreboard objectives setdisplay sidebar (чтобы отменить предыдущую шнягу)

Дальше я проверяю если ли значение в скорборде игрока и если есть, спавню шалкеров по направлению взгляда игрока. К сожалению я не знаю как определить точный блок куда нужно поставить шалкера, так-что придётся заспавнить одновременно 6 шалкеров в ряд по направлению взгляда игрока. Для этого нужно 6 раз написать в КБ одну и туже команду с одной лишь изменённой координатой.

В самом конце нужно поставить КБ который будет отчищать скорборд от значения которое туда прибавилось после того как игрок поставил блок:

  • execute as @a[scores={UsedWood=1..}] at @s run summon minecraft:shulker ^ ^1.6 ^1 {Invulnerable:1b,NoAI:1b,Tags:["Particle"],active_effects:[{id:invisibility,duration:-1,show_particles:0b},{id:glowing,duration:-1,show_particles:0b}]} (Цикличный, всегда активный, стрелка на следующий КБ)
  • execute as @a[scores={UsedWood=1..}] at @s run summon minecraft:shulker ^ ^1.6 ^2 {Invulnerable:1b,NoAI:1b,Tags:["Particle"],active_effects:[{id:invisibility,duration:-1,show_particles:0b},{id:glowing,duration:-1,show_particles:0b}]} (Цепной, всегда активный, стрелка в сторону от предыдущего КБ)
  • execute as @a[scores={UsedWood=1..}] at @s run summon minecraft:shulker ^ ^1.6 ^3 {Invulnerable:1b,NoAI:1b,Tags:["Particle"],active_effects:[{id:invisibility,duration:-1,show_particles:0b},{id:glowing,duration:-1,show_particles:0b}]} (Цепной, всегда активный, ВСЕ стрелки в одну сторону)
  • execute as @a[scores={UsedWood=1..}] at @s run summon minecraft:shulker ^ ^1.6 ^4 {Invulnerable:1b,NoAI:1b,Tags:["Particle"],active_effects:[{id:invisibility,duration:-1,show_particles:0b},{id:glowing,duration:-1,show_particles:0b}]} (Цепной, всегда активный, стрелки)
  • execute as @a[scores={UsedWood=1..}] at @s run summon minecraft:shulker ^ ^1.6 ^5 {Invulnerable:1b,NoAI:1b,Tags:["Particle"],active_effects:[{id:invisibility,duration:-1,show_particles:0b},{id:glowing,duration:-1,show_particles:0b}]} (Цепной, всегда активный, стрелки)
  • execute as @a[scores={UsedWood=1..}] at @s run summon minecraft:shulker ^ ^1.6 ^6 {Invulnerable:1b,NoAI:1b,Tags:["Particle"],active_effects:[{id:invisibility,duration:-1,show_particles:0b},{id:glowing,duration:-1,show_particles:0b}]} (Цепной, всегда активный, стрелки)
  • execute as @a[scores={UsedWood=1..}] at @s run scoreboard players set @s UsedWood 0 (Цепной, всегда активный, УСЛОВНЫЙ)

после этого нужно поставить КБ который будет проверять находятся ли шалкер в блоке белой шерсти и если находится то он будет спавнить партиклы 

  • execute as @e[tag=Particle] at @s if block ~ ~ ~ minecraft:white_wool run particle minecraft:block white_wool ~ ~ ~ 0.3 0.3 0.3 0.1 20 normal (Цикличный, всегда активный)

дальше делай ещё один блок который будет искать лишних шалкеров (только 1 из шести шалкеров нам нужен) и когда найдёт убьёт их.

  • execute as @e[tag=Particle] at @s unless block ~ ~ ~ minecraft:white_wool run tp @s ~ ~-500 ~ (Цикличный, всегда активный)

таким образом когда игрок ставит блок белой шерсти механизм это видит и спавнит по направлению его взгляда линию из шалкеров, лишние шалкеры тут-же умирают и остаётся только тот который находится внутри нужного блока. Рядом с этим шалкером мы и спавним партиклы. Если не нравится свечение шалкера замени duration:-1 на duration:1. Шалкера я кстати выбрал только потому-что он размером ровно в 1 блок и стоит идеально по центру.

 

И рас уж пошла такая пляска то можно ещё проверять находятся ли игрок рядом с этим чудо-блоком и делать с ним всякие приколы:

  • execute as @e[tag=Particle] at @s run execute as @a[distance=..10] at @s run title @s actionbar "вы в области функционального блока" (если игрок находится рядом с блоком, ему пишет сообщение)
  • execute as @e[tag=Particle] at @s unless entity @a[distance=..10] run fill ~ ~ ~ ~ ~ ~ minecraft:red_wool (Если игрок отошёл на 10 блоков, то блок заменяется на красный, типа дизактивация)
  • execute as @e[tag=Particle] at @s run execute as @a[distance=..10] at @s run effect give @s minecraft:regeneration 1 1 true (Даёт эффект пока игрок рядом с блоком)

Если хочешь сделать окружность из партиклов вокруг функционального блока чтобы разметить границу его области например то делай вот так:

  • execute as @e[tag=Particle] at @s if block ~ ~ ~ minecraft:white_wool run particle block_marker barrier ^ ^0.5 ^10 0 0 0 0.1 1 normal (цикл, активный)
  • execute as @e[tag=Particle] at @s if block ~ ~ ~ minecraft:white_wool run tp @s ~ ~ ~ ~22.5 ~ (цикл, активный)

Я это делал на версии 1.21 но насколько я помню эти команды не менялись. Если будут не работать то не парься, пиши, разберёмся))

Изменено пользователем Sench_mp4
партиклы поменял​ 👌​, эффекты вроде робят
Ссылка на комментарий
Поделиться на другие сайты

20 часов назад, Sench_mp4 сказал:

Я вижу один способ: Поместить внутрь блока сущность и спавнить частицы от неё. Для этого нужно задетектить установку блока. Для этого я создаю скорборд который будет прибавлять значение каждый раз когда игрок будет ставить белую шерсть.

  • /scoreboard objectives add UsedWool minecraft.used:minecraft.white_wool (прописать 1 раз в чат)
  • /scoreboard objectives setdisplay sidebar UsedWood (не обязательно, но для наглядности можешь прописать и это)
  • /scoreboard objectives setdisplay sidebar (чтобы отменить предыдущую шнягу)

Дальше я проверяю если ли значение в скорборде игрока и если есть, спавню шалкеров по направлению взгляда игрока. К сожалению я не знаю как определить точный блок куда нужно поставить шалкера, так-что придётся заспавнить одновременно 6 шалкеров в ряд по направлению взгляда игрока. Для этого нужно 6 раз написать в КБ одну и туже команду с одной лишь изменённой координатой.

В самом конце нужно поставить КБ который будет отчищать скорборд от значения которое туда прибавилось после того как игрок поставил блок:

  • execute as @a[scores={UsedWood=1..}] at @s run summon minecraft:shulker ^ ^1.6 ^1 {Invulnerable:1b,NoAI:1b,Tags:["Particle"],active_effects:[{id:invisibility,duration:-1,show_particles:0b},{id:glowing,duration:-1,show_particles:0b}]} (Цикличный, всегда активный, стрелка на следующий КБ)
  • execute as @a[scores={UsedWood=1..}] at @s run summon minecraft:shulker ^ ^1.6 ^2 {Invulnerable:1b,NoAI:1b,Tags:["Particle"],active_effects:[{id:invisibility,duration:-1,show_particles:0b},{id:glowing,duration:-1,show_particles:0b}]} (Цепной, всегда активный, стрелка в сторону от предыдущего КБ)
  • execute as @a[scores={UsedWood=1..}] at @s run summon minecraft:shulker ^ ^1.6 ^3 {Invulnerable:1b,NoAI:1b,Tags:["Particle"],active_effects:[{id:invisibility,duration:-1,show_particles:0b},{id:glowing,duration:-1,show_particles:0b}]} (Цепной, всегда активный, ВСЕ стрелки в одну сторону)
  • execute as @a[scores={UsedWood=1..}] at @s run summon minecraft:shulker ^ ^1.6 ^4 {Invulnerable:1b,NoAI:1b,Tags:["Particle"],active_effects:[{id:invisibility,duration:-1,show_particles:0b},{id:glowing,duration:-1,show_particles:0b}]} (Цепной, всегда активный, стрелки)
  • execute as @a[scores={UsedWood=1..}] at @s run summon minecraft:shulker ^ ^1.6 ^5 {Invulnerable:1b,NoAI:1b,Tags:["Particle"],active_effects:[{id:invisibility,duration:-1,show_particles:0b},{id:glowing,duration:-1,show_particles:0b}]} (Цепной, всегда активный, стрелки)
  • execute as @a[scores={UsedWood=1..}] at @s run summon minecraft:shulker ^ ^1.6 ^6 {Invulnerable:1b,NoAI:1b,Tags:["Particle"],active_effects:[{id:invisibility,duration:-1,show_particles:0b},{id:glowing,duration:-1,show_particles:0b}]} (Цепной, всегда активный, стрелки)
  • execute as @a[scores={UsedWood=1..}] at @s run scoreboard players set @s UsedWood 0 (Цепной, всегда активный, УСЛОВНЫЙ)

после этого нужно поставить КБ который будет проверять находятся ли шалкер в блоке белой шерсти и если находится то он будет спавнить партиклы 

  • execute as @e[tag=Particle] at @s if block ~ ~ ~ minecraft:white_wool run particle block{block_state:{Name:white_wool}} ~ ~ ~ 0.3 0.3 0.3 0.1 20 normal (Цикличный, всегда активный)

дальше делай ещё один блок который будет искать лишних шалкеров (только 1 из шести шалкеров нам нужен) и когда найдёт убьёт их.

  • execute as @e[tag=Particle] at @s unless block ~ ~ ~ minecraft:white_wool run tp @s ~ ~-500 ~ (Цикличный, всегда активный)

таким образом когда игрок ставит блок белой шерсти механизм это видит и спавнит по направлению его взгляда линию из шалкеров, лишние шалкеры тут-же умирают и остаётся только тот который находится внутри нужного блока. Рядом с этим шалкером мы и спавним партиклы. Если не нравится свечение шалкера замени duration:-1 на duration:1. Шалкера я кстати выбрал только потому-что он размером ровно в 1 блок и стоит идеально по центру.

 

И рас уж пошла такая пляска то можно ещё проверять находятся ли игрок рядом с этим чудо-блоком и делать с ним всякие приколы:

  • execute as @e[tag=Particle] at @s run execute as @a[distance=..10] at @s run title @s actionbar "вы в области функционального блока" (если игрок находится рядом с блоком, ему пишет сообщение)
  • execute as @e[tag=Particle] at @s unless entity @a[distance=..10] run fill ~ ~ ~ ~ ~ ~ minecraft:red_wool (Если игрок отошёл на 10 блоков, то блок заменяется на красный, типа дизактивация)
  • execute as @e[tag=Particle] at @s run execute as @a[distance=..5] at @s run effect give @s minecraft:regeneration 1 1 (Даёт эффект пока игрок рядом с блоком)

Если хочешь сделать окружность из партиклов вокруг функционального блока чтобы разметить границу его области например то делай вот так:

  • execute as @e[tag=Particle] at @s if block ~ ~ ~ minecraft:white_wool run particle block_marker{block_state:{Name:barrier}} ^ ^0.5 ^10 0 0 0 0.1 1 normal (цикл, активный)
  • execute as @e[tag=Particle] at @s if block ~ ~ ~ minecraft:white_wool run tp @s ~ ~ ~ ~22.5 ~ (цикл, активный)

Я это делал на версии 1.21 но насколько я помню эти команды не менялись. Если будут не работать то не парься, пиши, разберёмся))

частицы и эффекты по другому прописываются 1.20.1

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

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

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

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

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

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

Войти

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

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

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