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

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


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

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

 

Когда речь заходит о двойном прыжке, первым делом встают 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 не на сломанные элитры, а на какой-нибудь другой предмет, если игрок не хочет носить сломанное снаряжение в слоте брони.

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

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

  • 3 недели спустя...
7 часов назад, Хeрoбрин сказал:

Это невозможно.

Откуда столько уверенности?

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

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

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

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

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

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

Войти

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

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

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