Skip to content
This repository was archived by the owner on Apr 9, 2026. It is now read-only.

macroEngine v2.2.0-en

Choose a tag to compare

@github-actions github-actions released this 22 Mar 16:59
· 143 commits to main since this release
7aa432f

✨ Yeni Modüller

Modül Açıklama
lib/fiber/ Kooperatif eş zamanlılık — spawn, yield, resume, kill, is_alive
math/vec/ 3B vektör aritmetiği — add, sub, dot, cross, normalize, angle_between
geo/region_watch/ Kalıcı bölge tetikleyicileri — register, unregister, list, on_enter, on_leave
lib/batch/ Tick'e yayılmış toplu işlem — begin, add, flush, cancel

✨ hook/ Genişletme

Yeni olay desteği: dimension_change, trade, advancement:<id> (özel advancement'lar için on_advancement_fire API'si).

🐛 Bug Fixes

Bug Düzeltme
advancement/hook/trade.json — traded_with_villager 1.21.x'te kaldırılmış villager_trade yapıldı
math/vec/internal/arccos_lookup — trailing space after .. Tüm satırlar yeniden yazıldı
math/vec/internal/angle_exec — trailing space after 1001.. Kaldırıldı
geo/region_watch/internal/check_region — space-separated NBT subpath Dot notation (_rw_cur.on_enter) yapıldı
lib/batch/internal/flush_loop — space-separated NBT subpath Dot notation yapıldı
lib/batch/internal/add_exec — space-separated NBT subpath Dot notation yapıldı

v2.1.2 — 2026-03-19

✨ Yeni Modül: wand/

carrot_on_a_stick tabanlı sağ-tık wand sistemi. minecraft:custom_data ile tag'lenen item'lara fonksiyon veya komut bind edilebilir; birden fazla bind aynı tag'e eklenebilir.

Public Fonksiyonlar

Fonksiyon Girdi Açıklama
wand/register {tag, func} Tag'e fonksiyon bind eder
wand/register_cmd {tag, cmd} Tag'e komut bind eder
wand/unregister macro:input {tag} Tag'e ait tüm bind'ları kaldırır
wand/unregister_all — Tüm wand bind'larını temizler
wand/give {player, tag, name} Oyuncunun mainhand'ine wand verir
wand/give_custom {player, item, tag, name, count} Özel item türüyle wand verir
wand/give_lore macro:input {player, tag, name, lore, color} Lore ile birlikte mainhand'e wand yazar (item replace)
wand/has {player, tag} Oyuncunun mainhand'inde belirli wand var mı → macro:output result
wand/list — Kayıtlı bind'ları macro.debug oyuncularına gösterir
wand/cooldown_set {player, tag, duration} Wand'a cooldown uygular
wand/cooldown_check {player, tag} Cooldown aktif mi → macro:output result

İç Fonksiyonlar

Fonksiyon Açıklama
wand/internal/tick_scan Her tick mainhand item'ı tarar, sağ-tık tespitinde dispatch çalıştırır
wand/internal/dispatch Bind listesini iterate eder
wand/internal/check_next Tek bind kaydını kontrol edip çalıştırır
wand/internal/fire Bind func/cmd'yi çalıştırır
wand/internal/check_item Mainhand'deki item'ın wand tag'ini doğrular
wand/internal/unbind_check Unregister işlemi için eşleşen kaydı bulur
wand/internal/unbind_filter Eşleşmeyen bind'ları yeni listeye kopyalar
wand/internal/call_func Bind fonksiyonunu çalıştırır
wand/internal/call_cmd Bind komutunu çalıştırır
wand/internal/unregister_exec wand/unregister macro impl ($(tag))
wand/internal/give_lore_exec wand/give_lore macro impl

Storage: macro:engine wand_binds [{tag:"...", func/cmd:"..."}]
Tick: macro:tick/player_systems → wand/internal/tick_scan
Scoreboard: macro.rightClick (minecraft.used:minecraft.carrot_on_a_stick)

⚠️ wand/unregister — Tab-Complete Notu

unregister macro variable içerdiğinden Minecraft'ın /function tab-complete'i bu fonksiyonu gizliyordu. Macro impl internal/unregister_exec'e taşındı; public wrapper $( içermiyor — listede görünür.

give / give_custom — Overlay Temizliği

1.21.5+ artık item_name için JSON object formatı kullandığından 1_21_5 ve 1_21_6 overlay'lerindeki give/give_custom dosyaları kaldırıldı. Base fonksiyonlar doğrudan 1.21.5+ formatına yükseltildi. compat_1_21_4 overlay'ine eski ' string syntax ile give/give_custom eklendi.


🐛 Bug Fixes

ame_load:load/internal/validate — storage'daki eski versiyon mismatch

İlk satır {version:"v2.1.2-pre1"} yazıyordu. Önceki dünyadan kalan storage değeri silinmediği için her /reload'da mismatch tetiklenip yükleme iptal ediliyordu. İki ayrı düzeltme yapıldı:

  • İlk satır: v2.1.2-pre1 → v2.1.2 düzeltildi
  • data modify storage macro:engine global.version set value "v2.2.0-en" satırı eklendi — storage zaten varsa bile her load'da version üzerine yazılır

cmd/save-all, cmd/save-off, cmd/save-on, cmd/stop — tek oyunculu mod parse hatası

Bu komutlar tek oyunculu modda Minecraft'ın command dispatcher'ı tarafından tanınmıyor; load sırasında Bilinmeyen veya eksik komut hatası üretiyordu. cmd/other/run_self macro wrapper'ı üzerinden çalıştırılacak şekilde yeniden yazıldı — macro fonksiyonlar load sırasında parse edilmediği için hata kalktı.

wand/internal/unregister_exec — $ prefix $(var) içermeyen satırda

Satır 11'de $data modify storage macro:engine _wand_unbinds set from storage macro:engine wand_binds yazıyordu. $(var) olmayan satırda $ prefix Minecraft'ın No variables in macro hatasına yol açıyordu. $ kaldırıldı.


🗑️ Kaldırılan

  • wand/lore_add, wand/lore_remove ve tüm ilgili internal dosyalar (lore_add_exec, lore_remove_exec, lore_rebuild_step, lore_rebuild_apply) — set_lore item function'ının NBT source desteği olmadığı için çalışmıyordu. Yerini wand/give_lore aldı.
  • item_modifier/wand_lore_append.json, item_modifier/wand_lore_clear.json
  • 1_21_5/data/macro/function/wand/give.mcfunction, give_custom.mcfunction
  • 1_21_6/data/macro/function/wand/give.mcfunction, give_custom.mcfunction

🐛 Bug Fixes

ame_load:load/internal/version_set — çift boşluk parse hatası

scoreboard players set #ame.pre ame.pre_version satırındaki çift boşluk Minecraft komut ayrıştırıcısında Tam sayı bekleniyor hatasına yol açıyordu. Tek boşluğa indirildi.

cmd/data_remove_block, cmd/data_remove_entity, cmd/data_remove_storage — geçersiz macro satırı

Son $tellraw satırlarında $(...) değişkeni bulunmuyordu; Minecraft $ ile başlayan her satırın en az bir $(var) içermesini zorunlu kılıyor, No variables in macro hatası üretiyordu. $ kaldırıldı ve debug çıktısı ilgili argümanları ($(x) $(y) $(z) → $(path) vb.) gösterecek şekilde iyileştirildi.


✨ Yeni: engine/call/execute_validated

macro:tools/utils/input_check güvenlik doğrulamasından başarıyla geçen fonksiyonu yürüten iki dosyalı modül.

Dosya Görev
engine/call/execute_validated.mcfunction macro:output.inputs storage'ından macro sub-function'ı çağırır
engine/call/execute_validated/run.mcfunction $function $(func) with storage macro:input {} — macro wrapper

input_check.mcfunction satır 140'daki yorum (#function macro:engine/call/execute_validated) kaldırılarak çağrı aktif edildi. Bu düzeltme GitHub CI'da raporlanan FAILED: One or more function references point to non-existent files hatasını çözer.


✨ Yeni: Zamanlayıcı Sistemi cmd Desteği

lib/schedule, lib/queue_add ve ilgili tüm iç fonksiyonlar daha önce yalnızca func (fonksiyon adı) kabul ediyordu. Bu güncelleyle aynı API üzerinden ham Minecraft komutu (cmd) da zamanlayıcıya verilebiliyor.

Yeni Public Fonksiyonlar

Fonksiyon Girdi Açıklama
lib/schedule_cmd {key, cmd, interval} Tekrarlayan komut zamanlayıcısı — lib/schedule ile aynı semantik
lib/queue_add_cmd {cmd, delay} Kuyruğa tek seferlik gecikmeli komut ekler
lib/wait_cmd {cmd, delay} queue_add_cmd alias'ı
lib/once_cmd {key, cmd} key başına yalnızca bir kez komut çalıştırır
lib/debounce_cmd {key, cmd, interval} Aktif zamanlayıcı varken yeni zamanlayıcı başlatmaz
lib/schedule_if_cmd {cmd, delay} queue_add_cmd alias'ı

Değiştirilen İç Fonksiyonlar

Dosya Değişiklik
lib/internal/queue_fire func ve cmd dispatch desteği — her ikisi de aynı kuyruktan çalışır
lib/internal/queue_run_cmd YENİ — $$(cmd) ham komut çalıştırıcı
lib/internal/schedule_requeue_cmd YENİ — cmd'li entry'yi yeniden kuyruğa koyar
lib/internal/schedule_reset_do_cmd YENİ — cmd'li zamanlayıcıyı sıfırlar ve yeniden kuyruğa koyar
lib/schedule_renew func veya cmd içeren schedule'ı doğru requeue fonksiyonuna yönlendirir
lib/schedule_reset func veya cmd içeren schedule'ı doğru reset_do fonksiyonuna yönlendirir

Kullanım örnekleri:

# Tek seferlik gecikmeli komut (100t sonra)
/function macro:lib/wait_cmd {cmd:"say Merhaba!", delay:100}

# 20t'de bir tekrar eden komut zamanlayıcısı
/function macro:lib/schedule_cmd {key:"my_timer", cmd:"effect give @a minecraft:speed 2 1", interval:20}

# Aynı key tekrar çağrılırsa zamanlayıcı sıfırlanır
/function macro:lib/schedule_cmd {key:"my_timer", cmd:"effect give @a minecraft:speed 2 1", interval:40}

🗑️ Kaldırılan

  • 1_21_5/data/macro/function/dialog/ — önceki sürümde hatalı oluşturulmuştu. Dialog sistemi yalnızca 1_21_6 overlay'ine özeldir (pack_format ≥ 80, Minecraft 1.21.6+).