macroEngine v2.2.0-en
✨ 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.2dü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_removeve tüm ilgili internal dosyalar (lore_add_exec,lore_remove_exec,lore_rebuild_step,lore_rebuild_apply) —set_loreitem function'ının NBT source desteği olmadığı için çalışmıyordu. Yeriniwand/give_lorealdı.item_modifier/wand_lore_append.json,item_modifier/wand_lore_clear.json1_21_5/data/macro/function/wand/give.mcfunction,give_custom.mcfunction1_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ızca1_21_6overlay'ine özeldir (pack_format ≥ 80, Minecraft 1.21.6+).