Свой сервер

Предмет со способностью: посох по правому клику

Огненный шар, молния, телепорт, взрыв, прыжок или эффект — по правому клику, с перезарядкой. Выберите способность, вид и имя предмета — и скачайте датапак для Minecraft 1.21.9 — 26.3. Без модов и плагинов.

Способность

Шар гаста летит, куда вы смотрите, и взрывается.

Сила взрыва

1 — как у шара гаста, 4 — как у динамита.

Перезарядка

Имя

Предмет

Датапак · 1.21.9 — 26.3
Огненный стержень

Огненный шар

Правый клик — огненный шар, перезарядка 3 с

Выдать себе — командой или функцией /function wand_fireball:give

/give @s minecraft:carrot_on_a_stick[minecraft:custom_data={wand:"fireball"},minecraft:item_model="minecraft:blaze_rod",minecraft:item_name={"text":"Огненный шар","color":"gold","italic":false},minecraft:unbreakable={},minecraft:enchantment_glint_override=true]
Скачать датапак
Что внутри архива — 10 файлов

data/minecraft/tags/function/load.json

Тег load: игра зовёт эти функции при загрузке мира и после /reload.

{
  "values": [
    "wand_fireball:load"
  ]
}

data/minecraft/tags/function/tick.json

Тег tick: эти функции идут каждый тик — 20 раз в секунду.

{
  "values": [
    "wand_fireball:tick"
  ]
}

data/wand_fireball/function/load.mcfunction

При загрузке мира: счёт кликов удочкой и счёт перезарядки.

scoreboard objectives add wand_fireball dummy
scoreboard objectives add wand_fireball_used minecraft.used:minecraft.carrot_on_a_stick
scoreboard objectives add wand_fireball_cd dummy

data/wand_fireball/function/tick.mcfunction

Каждый тик: перезарядка тает, клик — к способности.

scoreboard players remove @a[scores={wand_fireball_cd=1..}] wand_fireball_cd 1
execute as @a[scores={wand_fireball_used=1..}] at @s run function wand_fireball:use

data/wand_fireball/function/use.mcfunction

Клик удочкой: наш ли это предмет, прошла ли перезарядка.

scoreboard players set @s wand_fireball_used 0
execute unless items entity @s weapon.mainhand minecraft:carrot_on_a_stick[minecraft:custom_data~{wand:"fireball"}] unless items entity @s weapon.offhand minecraft:carrot_on_a_stick[minecraft:custom_data~{wand:"fireball"}] run return 0
execute if score @s wand_fireball_cd matches 1.. run return run title @s actionbar {"text":"Перезарядка…","color":"gray"}
scoreboard players set @s wand_fireball_cd 60
playsound minecraft:entity.blaze.shoot player @a ~ ~ ~
function wand_fireball:cast

data/wand_fireball/function/cast.mcfunction

Способность: огненный шар.

function wand_fireball:aim
execute anchored eyes positioned ^ ^ ^1.5 summon minecraft:fireball run function wand_fireball:launch

data/wand_fireball/function/aim.mcfunction

Взгляд игрока — разница двух точек у глаз, в тысячных блока.

execute anchored eyes positioned ^ ^ ^ summon minecraft:marker run function wand_fireball:mark {n:0}
execute anchored eyes positioned ^ ^ ^1 summon minecraft:marker run function wand_fireball:mark {n:1}
scoreboard players operation #dx wand_fireball = #x1 wand_fireball
scoreboard players operation #dy wand_fireball = #y1 wand_fireball
scoreboard players operation #dz wand_fireball = #z1 wand_fireball
scoreboard players operation #dx wand_fireball -= #x0 wand_fireball
scoreboard players operation #dy wand_fireball -= #y0 wand_fireball
scoreboard players operation #dz wand_fireball -= #z0 wand_fireball

data/wand_fireball/function/mark.mcfunction

Макрос: координаты маркера — в счёт, маркер убрать.

$execute store result score #x$(n) wand_fireball run data get entity @s Pos[0] 1000
$execute store result score #y$(n) wand_fireball run data get entity @s Pos[1] 1000
$execute store result score #z$(n) wand_fireball run data get entity @s Pos[2] 1000
kill @s

data/wand_fireball/function/launch.mcfunction

Снаряд летит по взгляду.

execute store result entity @s Motion[0] double 0.001 run scoreboard players get #dx wand_fireball
execute store result entity @s Motion[1] double 0.001 run scoreboard players get #dy wand_fireball
execute store result entity @s Motion[2] double 0.001 run scoreboard players get #dz wand_fireball
data merge entity @s {ExplosionPower:1b,acceleration_power:0.1d}

data/wand_fireball/function/give.mcfunction

/function wand_fireball:give — выдать себе предмет.

give @s minecraft:carrot_on_a_stick[minecraft:custom_data={wand:"fireball"},minecraft:item_model="minecraft:blaze_rod",minecraft:item_name={"text":"Огненный шар","color":"gold","italic":false},minecraft:unbreakable={},minecraft:enchantment_glint_override=true]

Как применить

  1. Скачайте датапак

    Распаковывать не нужно: игра читает его прямо из zip.

  2. Положите в мир

    В одиночной игре — saves/<мир>/datapacks, на сервере — world/datapacks. Потом /reload.

  3. Возьмите предмет

    Командой /give из результата или /function wand_fireball:give — нужны читы или права оператора.

  4. Кликайте

    Правой кнопкой в любую сторону — в воздух тоже. Предмет может лежать и во второй руке.

Что нужно знать

  • Внутри — удочка с морковкой. Только её правый клик игра считает в воздух, без блока и моба: по этому счёту пак и узнаёт клик. Вид — любой предмет игры, компонент item_model.
  • Посохи не мешают друг другу. У каждой способности своё пространство имён (wand_fireball): соберите огненный посох и посох молний — оба пака встанут рядом.
  • Луч — до 64 блоков. Молния, телепорт и взрыв бьют в первый блок или моба на линии взгляда.
  • Взрыв ломает блоки, если правило mob_griefing включено. Для спавна и чужих построек выключите его или берите силу 1.

Предмет с атрибутами без датапака — генератор атрибутов, своё зачарование — датапак зачарования.

Частые вопросы

Как сделать посох с огненным шаром в Майнкрафте?

Выберите «Огненный шар», вид и имя, скачайте датапак и положите в папку datapacks мира. Предмет выдаёт /give из результата — правый клик пускает шар.

Как сделать предмет с правым кликом без модов?

Датапаком: внутри — удочка с морковкой в облике любого предмета. Её клик игра считает статистикой, и пак по нему запускает способность.

Можно ли поставить несколько посохов сразу?

Да: у каждой способности своё пространство имён, и паки огненного шара, молнии и телепорта работают в одном мире рядом.