Перейти к содержанию
В разделе "Гайды" запрещено задавать вопросы по Майнкрафту.

ГАЙД - двойной прыжок на командных блоках 1.21+


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

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

 

Когда речь заходит о двойном прыжке, первым делом встают 2 вопроса
-- как задетектить два нажатия пробела подряд?
-- как подкинуть игрока?
Ответом на первый вопрос будут элитры. Когда игрок хочет полететь на элитрах, он жмёт пробел 2 раза, мы можем это задетектить при помощи FallFlying:1b
Ответом на второй вопрос являются заряды ветра. Если мы заспавним wind_charge ~ ~-0.5 ~ {Motion:[0,1,0]}, то он стрельнет игроку в жопу, тем самым его подкинет.
Кто-то скажет что это костыли, но работа с mcfunction это костыльство в чистом виде, по этому брезгать подобным глупо, особенно зная что даже создатели плагинов детектят двойной прыжок точно также, но только через креативный полёт.
 

 

:Chain_Unconditional: execute as @a at @s if items entity @s armor.chest *[minecraft:custom_data={Tags:["DoubleJump_off"]}] run particle minecraft:firework ~ ~ ~ 0 0 0 0 0

КБ №7 - Чисто декоративная фигня, спавнит партиклы под ногами игрока совершающего двойной прыжок. Этот блок можно убрать

 

:Chain_Unconditional: execute as @a if items entity @s armor.chest *[minecraft:custom_data={Tags:["DoubleJump_off"]}] if data entity @s {OnGround:1b} if data entity @s {FallFlying:0b} run item replace entity @s armor.chest with minecraft:elytra[custom_name='["",{"text":"Прыгательные элитры","italic":false,"color":"white"}]',lore=['["",{"text":"Когда надето:","italic":false,"color":"gray"}]','["",{"text":"двойной прыжок","italic":false,"color":"blue"}]'],enchantment_glint_override=true,minecraft:custom_data={Tags:["DoubleJump"]}]

КБ №6 - Определяет игрока находящегося на земле и одетого в элитры с тегом "DoubleJump_off". Выполняет замену элитр на те которые у него были изначально
Замена элитр нужна для того чтобы игрок мог повторить двойной прыжок только после приземления.

 

:Chain_Unconditional: execute as @e[tag=DoubleJump] at @s run data modify entity @s Motion[1] set value 0.5

КБ №5 - Даёт заряду ветра дату Motion чтобы он летел вверх (в игрока)

 

:Chain_Unconditional: execute as @e[tag=DoubleJump] at @s run tp @s ^ ^ ^-0.3

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

 

:Chain_Unconditional: execute as @e[tag=DoubleJump] at @s positioned ~ ~0.5 ~ run data modify entity @s Rotation[0] set from entity @p Rotation[0]

КБ №3 - Разворачивает призванный первым блоком заряд ветра в ту сторону, в которую смотрит игрок, это нужно для следующего блока.

 

:Chain_Unconditional: execute as @a if items entity @s armor.chest *[minecraft:custom_data={Tags:["DoubleJump"]}] if data entity @s {FallFlying:1b} run item replace entity @s armor.chest with elytra[minecraft:damage=500,custom_name='["",{"text":"Прыгательные элитры","italic":false,"color":"white"}]',lore=['["",{"text":"Когда надето:","italic":false,"color":"gray"}]','["",{"text":"двойной прыжок","italic":false,"color":"blue"}]'],enchantment_glint_override=true,minecraft:custom_data={Tags:["DoubleJump_off"]}]

КБ №2 - Определяет игрока находящегося в полёте и одетого в элитры с тегом "DoubleJump". Выполняет замену его элитр на такие-же, но неработающие и с тегом "DoubleJump_off".
Если удалить "minecraft:damage=500," то игрок сможет воспользоваться элитрами после подбрасывания.

 

 

:Repeating_Unconditional: execute as @a at @s if items entity @s armor.chest *[minecraft:custom_data={Tags:["DoubleJump"]}] if data entity @s {FallFlying:1b} run summon wind_charge ~ ~-0.5 ~ {Tags:["DoubleJump"]}

КБ №1 - Определяет игрока находящегося в полёте и одетого в элитры с тегом "DoubleJump". Выполняет спавн заряда ветра с таким-же тегом.


Ещё хочу сказать, что мой способ в данном исполнении подходит больше для аркадных режимов, чем для выживания, но его можно переделать под себя.
Если у вас возникнут проблемы с именем и описанием предмета, то попробуйте удалить ' из команды. Например не '["text":"123"]' а просто ["text":"123"]
Механизм сделан под элитры с особым тегом, по этому "обычные" элитры работают нормально и не влияют на работу механизма.
Командные блоки нужно располагать в ряд друг за другом, так как показано на картинках артёма ;)

 

:Impulse_Unconditional: give @p minecraft:elytra[custom_name='["",{"text":"Прыгательные элитры","italic":false,"color":"white"}]',lore=['["",{"text":"Когда надето:","italic":false,"color":"gray"}]','["",{"text":"двойной прыжок","italic":false,"color":"blue"}]'],enchantment_glint_override=true,minecraft:custom_data={Tags:["DoubleJump"]}]

КБ №0 - Выдаёт игроку прыгательные элитры (обычные элитры будут работать как обычные элитры)

 

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

 

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

ДОПОЛНЕНИЕ К ГАЙДУ 1.21.2+ (вы тоже дополняйте, не стесняйтесь)

капееец рибята, я только что вспомнил про то что можно выдавать предметы с функцией глайдера ( iron_boots[glider={}] ) то есть фактически можно сделать какой-нибудь амулет двойного прыжка или ботинки двойного прыжка.

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

 

Командный блок №6 нужно заменить этим блоком

:Chain_Unconditional: execute as @a if items entity @s armor.feet *[minecraft:custom_data={Tags:["JumpBoots_off"]}] if data entity @s {OnGround:1b} run item replace entity @s armor.feet with iron_boots[custom_name=["",{"text":"Ботинки двойного прыжка","italic":false}],glider={},enchantment_glint_override=true,minecraft:custom_data={Tags:["JumpBoots"]}]

 

Командный блок №2 нужно заменить этим блоком

:Chain_Unconditional: execute as @a if items entity @s armor.feet *[minecraft:custom_data={Tags:["JumpBoots"]}] if data entity @s {FallFlying:1b} run item replace entity @s armor.feet with minecraft:iron_boots[custom_name=["",{"text":"Ботинки двойного прыжка","italic":false}],enchantment_glint_override=true,minecraft:custom_data={Tags:["JumpBoots_off"]}]

 

Командный блок №1 нужно заменить этим блоком

:Repeating_Unconditional: execute as @a at @s unless items entity @s armor.chest minecraft:elytra if items entity @s armor.feet *[minecraft:custom_data={Tags:["JumpBoots"]}] if data entity @s {FallFlying:1b} run summon wind_charge ~ ~-0.5 ~ {Tags:["DoubleJump"]}

 

 Командный блок №0 нужно заменить этим блоком

:Impulse_Unconditional: give @a iron_boots[custom_name=["",{"text":"Ботинки двойного прыжка","italic":false}],glider={},enchantment_glint_override=true,minecraft:custom_data={Tags:["JumpBoots"]}]

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

37 минут назад, Sench_mp4 сказал:

ДОПОЛНЕНИЕ К ГАЙДУ 1.21.2+ (вы тоже дополняйте, не стесняйтесь)

капееец рибята, я только что вспомнил про то что можно выдавать предметы с функцией глайдера ( iron_boots[glider={}] ) то есть фактически можно сделать какой-нибудь амулет двойного прыжка или ботинки двойного прыжка.

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

 

Командный блок №6 нужно заменить этим блоком

:Chain_Unconditional: execute as @a if items entity @s armor.feet *[minecraft:custom_data={Tags:["JumpBoots_off"]}] if data entity @s {OnGround:1b} run item replace entity @s armor.feet with iron_boots[custom_name=["",{"text":"Ботинки двойного прыжка","italic":false}],glider={},enchantment_glint_override=true,minecraft:custom_data={Tags:["JumpBoots"]}]

 

Командный блок №2 нужно заменить этим блоком

:Chain_Unconditional: execute as @a if items entity @s armor.feet *[minecraft:custom_data={Tags:["JumpBoots"]}] if data entity @s {FallFlying:1b} run item replace entity @s armor.feet with minecraft:iron_boots[custom_name=["",{"text":"Ботинки двойного прыжка","italic":false}],enchantment_glint_override=true,minecraft:custom_data={Tags:["JumpBoots_off"]}]

 

Командный блок №1 нужно заменить этим блоком

:Repeating_Unconditional: execute as @a at @s unless items entity @s armor.chest minecraft:elytra if items entity @s armor.feet *[minecraft:custom_data={Tags:["JumpBoots"]}] if data entity @s {FallFlying:1b} run summon wind_charge ~ ~-0.5 ~ {Tags:["DoubleJump"]}

 

 Командный блок №0 нужно заменить этим блоком

:Impulse_Unconditional: give @a iron_boots[custom_name=["",{"text":"Ботинки двойного прыжка","italic":false}],glider={},enchantment_glint_override=true,minecraft:custom_data={Tags:["JumpBoots"]}]

сделай гайд на рывок

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

вроде была библиотека, если её можно так назвать, которая позволяла задать импульс для игрока с помощью криперов

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

  • 5 месяцев спустя...

кстати

В 30.12.2025 в 11:36, Щербатый бесстыдник сказал:

 

Когда речь заходит о двойном прыжке, первым делом встают 2 вопроса
-- как задетектить два нажатия пробела подряд?
-- как подкинуть игрока?
Ответом на первый вопрос будут элитры. Когда игрок хочет полететь на элитрах, он жмёт пробел 2 раза, мы можем это задетектить при помощи FallFlying:1b
Ответом на второй вопрос являются заряды ветра. Если мы заспавним wind_charge ~ ~-0.5 ~ {Motion:[0,1,0]}, то он стрельнет игроку в жопу, тем самым его подкинет.
Кто-то скажет что это костыли, но работа с mcfunction это костыльство в чистом виде, по этому брезгать подобным глупо, особенно зная что даже создатели плагинов детектят двойной прыжок точно также, но только через креативный полёт.
 

 

:Chain_Unconditional: execute as @a at @s if items entity @s armor.chest *[minecraft:custom_data={Tags:["DoubleJump_off"]}] run particle minecraft:firework ~ ~ ~ 0 0 0 0 0

КБ №7 - Чисто декоративная фигня, спавнит партиклы под ногами игрока совершающего двойной прыжок. Этот блок можно убрать

 

:Chain_Unconditional: execute as @a if items entity @s armor.chest *[minecraft:custom_data={Tags:["DoubleJump_off"]}] if data entity @s {OnGround:1b} if data entity @s {FallFlying:0b} run item replace entity @s armor.chest with minecraft:elytra[custom_name='["",{"text":"Прыгательные элитры","italic":false,"color":"white"}]',lore=['["",{"text":"Когда надето:","italic":false,"color":"gray"}]','["",{"text":"двойной прыжок","italic":false,"color":"blue"}]'],enchantment_glint_override=true,minecraft:custom_data={Tags:["DoubleJump"]}]

КБ №6 - Определяет игрока находящегося на земле и одетого в элитры с тегом "DoubleJump_off". Выполняет замену элитр на те которые у него были изначально
Замена элитр нужна для того чтобы игрок мог повторить двойной прыжок только после приземления.

 

:Chain_Unconditional: execute as @e[tag=DoubleJump] at @s run data modify entity @s Motion[1] set value 0.5

КБ №5 - Даёт заряду ветра дату Motion чтобы он летел вверх (в игрока)

 

:Chain_Unconditional: execute as @e[tag=DoubleJump] at @s run tp @s ^ ^ ^-0.3

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

 

:Chain_Unconditional: execute as @e[tag=DoubleJump] at @s positioned ~ ~0.5 ~ run data modify entity @s Rotation[0] set from entity @p Rotation[0]

КБ №3 - Разворачивает призванный первым блоком заряд ветра в ту сторону, в которую смотрит игрок, это нужно для следующего блока.

 

:Chain_Unconditional: execute as @a if items entity @s armor.chest *[minecraft:custom_data={Tags:["DoubleJump"]}] if data entity @s {FallFlying:1b} run item replace entity @s armor.chest with elytra[minecraft:damage=500,custom_name='["",{"text":"Прыгательные элитры","italic":false,"color":"white"}]',lore=['["",{"text":"Когда надето:","italic":false,"color":"gray"}]','["",{"text":"двойной прыжок","italic":false,"color":"blue"}]'],enchantment_glint_override=true,minecraft:custom_data={Tags:["DoubleJump_off"]}]

КБ №2 - Определяет игрока находящегося в полёте и одетого в элитры с тегом "DoubleJump". Выполняет замену его элитр на такие-же, но неработающие и с тегом "DoubleJump_off".
Если удалить "minecraft:damage=500," то игрок сможет воспользоваться элитрами после подбрасывания.

 

 

:Repeating_Unconditional: execute as @a at @s if items entity @s armor.chest *[minecraft:custom_data={Tags:["DoubleJump"]}] if data entity @s {FallFlying:1b} run summon wind_charge ~ ~-0.5 ~ {Tags:["DoubleJump"]}

КБ №1 - Определяет игрока находящегося в полёте и одетого в элитры с тегом "DoubleJump". Выполняет спавн заряда ветра с таким-же тегом.


Ещё хочу сказать, что мой способ в данном исполнении подходит больше для аркадных режимов, чем для выживания, но его можно переделать под себя.
Если у вас возникнут проблемы с именем и описанием предмета, то попробуйте удалить ' из команды. Например не '["text":"123"]' а просто ["text":"123"]
Механизм сделан под элитры с особым тегом, по этому "обычные" элитры работают нормально и не влияют на работу механизма.
Командные блоки нужно располагать в ряд друг за другом, так как показано на картинках артёма ;)

 

:Impulse_Unconditional: give @p minecraft:elytra[custom_name='["",{"text":"Прыгательные элитры","italic":false,"color":"white"}]',lore=['["",{"text":"Когда надето:","italic":false,"color":"gray"}]','["",{"text":"двойной прыжок","italic":false,"color":"blue"}]'],enchantment_glint_override=true,minecraft:custom_data={Tags:["DoubleJump"]}]

КБ №0 - Выдаёт игроку прыгательные элитры (обычные элитры будут работать как обычные элитры)

 

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

 

кстати ещё надо прописать /gamerule fall_damage false

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

43 минуты назад, ArtemLog2 сказал:

кстати

кстати ещё надо прописать /gamerule fall_damage false

Ещё если тебе интересно, если перед тем как спавнить винд чардж выдать игроку 0.001 урона из ^ ^1.5 ^-1, то можно скорректировать прыжок и убрать урон от винд чарджа

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

В 30.12.2025 в 11:36, Щербатый бесстыдник сказал:

 

Когда речь заходит о двойном прыжке, первым делом встают 2 вопроса
-- как задетектить два нажатия пробела подряд?
-- как подкинуть игрока?
Ответом на первый вопрос будут элитры. Когда игрок хочет полететь на элитрах, он жмёт пробел 2 раза, мы можем это задетектить при помощи FallFlying:1b
Ответом на второй вопрос являются заряды ветра. Если мы заспавним wind_charge ~ ~-0.5 ~ {Motion:[0,1,0]}, то он стрельнет игроку в жопу, тем самым его подкинет.
Кто-то скажет что это костыли, но работа с mcfunction это костыльство в чистом виде, по этому брезгать подобным глупо, особенно зная что даже создатели плагинов детектят двойной прыжок точно также, но только через креативный полёт.
 

 

:Chain_Unconditional: execute as @a at @s if items entity @s armor.chest *[minecraft:custom_data={Tags:["DoubleJump_off"]}] run particle minecraft:firework ~ ~ ~ 0 0 0 0 0

КБ №7 - Чисто декоративная фигня, спавнит партиклы под ногами игрока совершающего двойной прыжок. Этот блок можно убрать

 

:Chain_Unconditional: execute as @a if items entity @s armor.chest *[minecraft:custom_data={Tags:["DoubleJump_off"]}] if data entity @s {OnGround:1b} if data entity @s {FallFlying:0b} run item replace entity @s armor.chest with minecraft:elytra[custom_name='["",{"text":"Прыгательные элитры","italic":false,"color":"white"}]',lore=['["",{"text":"Когда надето:","italic":false,"color":"gray"}]','["",{"text":"двойной прыжок","italic":false,"color":"blue"}]'],enchantment_glint_override=true,minecraft:custom_data={Tags:["DoubleJump"]}]

КБ №6 - Определяет игрока находящегося на земле и одетого в элитры с тегом "DoubleJump_off". Выполняет замену элитр на те которые у него были изначально
Замена элитр нужна для того чтобы игрок мог повторить двойной прыжок только после приземления.

 

:Chain_Unconditional: execute as @e[tag=DoubleJump] at @s run data modify entity @s Motion[1] set value 0.5

КБ №5 - Даёт заряду ветра дату Motion чтобы он летел вверх (в игрока)

 

:Chain_Unconditional: execute as @e[tag=DoubleJump] at @s run tp @s ^ ^ ^-0.3

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

 

:Chain_Unconditional: execute as @e[tag=DoubleJump] at @s positioned ~ ~0.5 ~ run data modify entity @s Rotation[0] set from entity @p Rotation[0]

КБ №3 - Разворачивает призванный первым блоком заряд ветра в ту сторону, в которую смотрит игрок, это нужно для следующего блока.

 

:Chain_Unconditional: execute as @a if items entity @s armor.chest *[minecraft:custom_data={Tags:["DoubleJump"]}] if data entity @s {FallFlying:1b} run item replace entity @s armor.chest with elytra[minecraft:damage=500,custom_name='["",{"text":"Прыгательные элитры","italic":false,"color":"white"}]',lore=['["",{"text":"Когда надето:","italic":false,"color":"gray"}]','["",{"text":"двойной прыжок","italic":false,"color":"blue"}]'],enchantment_glint_override=true,minecraft:custom_data={Tags:["DoubleJump_off"]}]

КБ №2 - Определяет игрока находящегося в полёте и одетого в элитры с тегом "DoubleJump". Выполняет замену его элитр на такие-же, но неработающие и с тегом "DoubleJump_off".
Если удалить "minecraft:damage=500," то игрок сможет воспользоваться элитрами после подбрасывания.

 

 

:Repeating_Unconditional: execute as @a at @s if items entity @s armor.chest *[minecraft:custom_data={Tags:["DoubleJump"]}] if data entity @s {FallFlying:1b} run summon wind_charge ~ ~-0.5 ~ {Tags:["DoubleJump"]}

КБ №1 - Определяет игрока находящегося в полёте и одетого в элитры с тегом "DoubleJump". Выполняет спавн заряда ветра с таким-же тегом.


Ещё хочу сказать, что мой способ в данном исполнении подходит больше для аркадных режимов, чем для выживания, но его можно переделать под себя.
Если у вас возникнут проблемы с именем и описанием предмета, то попробуйте удалить ' из команды. Например не '["text":"123"]' а просто ["text":"123"]
Механизм сделан под элитры с особым тегом, по этому "обычные" элитры работают нормально и не влияют на работу механизма.
Командные блоки нужно располагать в ряд друг за другом, так как показано на картинках артёма ;)

 

:Impulse_Unconditional: give @p minecraft:elytra[custom_name='["",{"text":"Прыгательные элитры","italic":false,"color":"white"}]',lore=['["",{"text":"Когда надето:","italic":false,"color":"gray"}]','["",{"text":"двойной прыжок","italic":false,"color":"blue"}]'],enchantment_glint_override=true,minecraft:custom_data={Tags:["DoubleJump"]}]

КБ №0 - Выдаёт игроку прыгательные элитры (обычные элитры будут работать как обычные элитры)

 

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

 

Я не пробовал, но уже вижу, что крутая штука.

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

  • 2 недели спустя...
В 30.12.2025 в 10:36, Щербатый бесстыдник сказал:

 

Когда речь заходит о двойном прыжке, первым делом встают 2 вопроса
-- как задетектить два нажатия пробела подряд?
-- как подкинуть игрока?
Ответом на первый вопрос будут элитры. Когда игрок хочет полететь на элитрах, он жмёт пробел 2 раза, мы можем это задетектить при помощи FallFlying:1b
Ответом на второй вопрос являются заряды ветра. Если мы заспавним wind_charge ~ ~-0.5 ~ {Motion:[0,1,0]}, то он стрельнет игроку в жопу, тем самым его подкинет.
Кто-то скажет что это костыли, но работа с mcfunction это костыльство в чистом виде, по этому брезгать подобным глупо, особенно зная что даже создатели плагинов детектят двойной прыжок точно также, но только через креативный полёт.
 

 

:Chain_Unconditional: execute as @a at @s if items entity @s armor.chest *[minecraft:custom_data={Tags:["DoubleJump_off"]}] run particle minecraft:firework ~ ~ ~ 0 0 0 0 0

КБ №7 - Чисто декоративная фигня, спавнит партиклы под ногами игрока совершающего двойной прыжок. Этот блок можно убрать

 

:Chain_Unconditional: execute as @a if items entity @s armor.chest *[minecraft:custom_data={Tags:["DoubleJump_off"]}] if data entity @s {OnGround:1b} if data entity @s {FallFlying:0b} run item replace entity @s armor.chest with minecraft:elytra[custom_name='["",{"text":"Прыгательные элитры","italic":false,"color":"white"}]',lore=['["",{"text":"Когда надето:","italic":false,"color":"gray"}]','["",{"text":"двойной прыжок","italic":false,"color":"blue"}]'],enchantment_glint_override=true,minecraft:custom_data={Tags:["DoubleJump"]}]

КБ №6 - Определяет игрока находящегося на земле и одетого в элитры с тегом "DoubleJump_off". Выполняет замену элитр на те которые у него были изначально
Замена элитр нужна для того чтобы игрок мог повторить двойной прыжок только после приземления.

 

:Chain_Unconditional: execute as @e[tag=DoubleJump] at @s run data modify entity @s Motion[1] set value 0.5

КБ №5 - Даёт заряду ветра дату Motion чтобы он летел вверх (в игрока)

 

:Chain_Unconditional: execute as @e[tag=DoubleJump] at @s run tp @s ^ ^ ^-0.3

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

 

:Chain_Unconditional: execute as @e[tag=DoubleJump] at @s positioned ~ ~0.5 ~ run data modify entity @s Rotation[0] set from entity @p Rotation[0]

КБ №3 - Разворачивает призванный первым блоком заряд ветра в ту сторону, в которую смотрит игрок, это нужно для следующего блока.

 

:Chain_Unconditional: execute as @a if items entity @s armor.chest *[minecraft:custom_data={Tags:["DoubleJump"]}] if data entity @s {FallFlying:1b} run item replace entity @s armor.chest with elytra[minecraft:damage=500,custom_name='["",{"text":"Прыгательные элитры","italic":false,"color":"white"}]',lore=['["",{"text":"Когда надето:","italic":false,"color":"gray"}]','["",{"text":"двойной прыжок","italic":false,"color":"blue"}]'],enchantment_glint_override=true,minecraft:custom_data={Tags:["DoubleJump_off"]}]

КБ №2 - Определяет игрока находящегося в полёте и одетого в элитры с тегом "DoubleJump". Выполняет замену его элитр на такие-же, но неработающие и с тегом "DoubleJump_off".
Если удалить "minecraft:damage=500," то игрок сможет воспользоваться элитрами после подбрасывания.

 

 

:Repeating_Unconditional: execute as @a at @s if items entity @s armor.chest *[minecraft:custom_data={Tags:["DoubleJump"]}] if data entity @s {FallFlying:1b} run summon wind_charge ~ ~-0.5 ~ {Tags:["DoubleJump"]}

КБ №1 - Определяет игрока находящегося в полёте и одетого в элитры с тегом "DoubleJump". Выполняет спавн заряда ветра с таким-же тегом.


Ещё хочу сказать, что мой способ в данном исполнении подходит больше для аркадных режимов, чем для выживания, но его можно переделать под себя.
Если у вас возникнут проблемы с именем и описанием предмета, то попробуйте удалить ' из команды. Например не '["text":"123"]' а просто ["text":"123"]
Механизм сделан под элитры с особым тегом, по этому "обычные" элитры работают нормально и не влияют на работу механизма.
Командные блоки нужно располагать в ряд друг за другом, так как показано на картинках артёма ;)

 

:Impulse_Unconditional: give @p minecraft:elytra[custom_name='["",{"text":"Прыгательные элитры","italic":false,"color":"white"}]',lore=['["",{"text":"Когда надето:","italic":false,"color":"gray"}]','["",{"text":"двойной прыжок","italic":false,"color":"blue"}]'],enchantment_glint_override=true,minecraft:custom_data={Tags:["DoubleJump"]}]

КБ №0 - Выдаёт игроку прыгательные элитры (обычные элитры будут работать как обычные элитры)

 

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

Кстати, пока возишься с командными блоками и отладкой механик, если хочется быстро переключиться на что-то простое и драйвовое, советую заглянуть на https://mostbetkg.net/. У них отличная оптимизация, и это хороший способ расслабиться, не погружаясь в сложные скрипты, когда мозг уже «кипит» от тегов и NBT-данных.

Интересный подход! Использовать FallFlying как триггер для двойного прыжка — решение нестандартное, и для мини-игр или паркур-карт это может стать отличной альтернативой привычным системам на скорбордах, которые часто подлагивают на серверах.

По поводу «костылей» — в майнкрафт-кодинге это вообще норма жизни, так что не переживай. Главное, что система работает без установки сторонних плагинов.

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

Проблема с уроном от wind_charge: Чтобы игрок не получал урон и не терял здоровье, можно попробовать накладывать на него эффект resistance (сопротивление) 5-го уровня на пару тиков в момент спавна заряда. Либо использовать команду /damage, чтобы просто обнулить входящий урон от источника, но это сложнее в реализации через командные блоки.

Альтернатива wind_charge: Если хочется идеального вектора движения без «заносов», можно попробовать через /tp. Вместо спавна энтити, можно записывать направление взгляда игрока (через Rotation) в скорборд-значения и принудительно двигать игрока через tp ~ ~ ~ с расчетом векторов по синусам и косинусам. Это даст «чистый» прыжок, но математики в командах станет в разы больше.

Сброс элитр: Использование элитр с damage=500 — это умный ход, чтобы «выключать» возможность полета. Как вариант, можно еще попробовать делать item replace не на сломанные элитры, а на какой-нибудь другой предмет, если игрок не хочет носить сломанное снаряжение в слоте брони.

Для аркадных режимов выглядит вполне играбельно. Обязательно попробую собрать это на тестовом мире, особенно интересно посмотреть, как это ощущается в динамике с разным пингом. Будешь дорабатывать систему, чтобы можно было использовать с любым нагрудником, а не только с элитрами?

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

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

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

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

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

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

Войти

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

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

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