{"id":46173393,"url":"https://github.com/tickwarden/macroengine-dp","last_synced_at":"2026-03-14T10:08:55.157Z","repository":{"id":341004713,"uuid":"1168664201","full_name":"tickwarden/macroEngine-dp","owner":"tickwarden","description":"Advanced Macro Engine [Minecraft 1.21]","archived":false,"fork":false,"pushed_at":"2026-03-02T15:23:47.000Z","size":318,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-02T18:42:09.405Z","etag":null,"topics":["datapack","minecraft","turkey"],"latest_commit_sha":null,"homepage":"","language":"mcfunction","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tickwarden.png","metadata":{"files":{"readme":"docs/README.md","changelog":null,"contributing":"docs/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"docs/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"docs/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-27T16:50:06.000Z","updated_at":"2026-03-02T15:23:34.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/tickwarden/macroEngine-dp","commit_stats":null,"previous_names":["rttbb556gv6gv667gv/macroengine-dp","tickwarden/macroengine-dp"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/tickwarden/macroEngine-dp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tickwarden%2FmacroEngine-dp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tickwarden%2FmacroEngine-dp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tickwarden%2FmacroEngine-dp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tickwarden%2FmacroEngine-dp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tickwarden","download_url":"https://codeload.github.com/tickwarden/macroEngine-dp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tickwarden%2FmacroEngine-dp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30212485,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-07T09:02:10.694Z","status":"ssl_error","status_checked_at":"2026-03-07T09:02:08.429Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["datapack","minecraft","turkey"],"created_at":"2026-03-02T17:13:04.576Z","updated_at":"2026-03-07T12:01:16.707Z","avatar_url":"https://github.com/tickwarden.png","language":"mcfunction","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🔧 Advanced Macro Engine — v3.2\n**Minecraft Java Edition 1.21.x | Multiplayer-Safe | Pure Datapack**\n\n---\n\n## 🩹 v2.4 Bug Fix Notları\n\n| Bug | Dosya | Düzeltme |\n|-----|-------|---------|\n| **KRİTİK**: Cooldown'lar hiç dolmuyordu | `cooldown/set/check/remaining` | `$tick macro.tmp` (0-20 arası sıfırlanan sayaç) yerine yeni `$epoch macro.time` (mutlak, hiç sıfırlanmaz) kullanılıyor |\n| Tick'te yeni `scoreboard objectives add macro.time` | `load.mcfunction`, `tick.mcfunction` | `macro.time` objective eklendi; `$epoch macro.time` her tick +1, /reload'da sıfırlanmaz |\n| `progress_bar` görsel blok yerine ham sayı gösteriyordu | `string/progress_bar` | 11'li lookup tablosu: `█░` karakterleri gerçek olarak render ediliyor |\n| `fire_next` NBT predicate yanlıştı | `event/internal/fire_next` | `{event_queue:[{}]}` root filter → `event_queue[0]` path kontrolü |\n| `process_queue` + `tick` aynı sorun | `lib/process_queue`, `tick` | `{queue:[{}]}` → `queue[0]` |\n| `distance2d`, `sqrt` için `macro:input.value` yazarak caller input'u bozuyordu | `math/distance2d` | sqrt mantığı inline çalışıyor, `macro:input` artık kirlenmez |\n| `ceil_div`'de `$cd_1` ismi cooldown prefix'iyle çakışıyordu | `math/ceil_div` | `$cd_1` → `$cdv_1`, `$a/$b` → `$cdv_a/$cdv_b` |\n| `load.mcfunction` başlık yorumu \"v2.1\" diyordu | `load.mcfunction` | Güncellendi |\n| `sync_tick` global epoch'u storage'a yazmıyordu | `lib/sync_tick` | `global.epoch` de sync ediliyor |\n\n---\n\n## 🆕 v2.3 Yeni Sistem ve Komutlar\n\n| Modül | Eklenenler |\n|-------|-----------|\n| `cooldown/` | 5 fonksiyon — tick tabanlı cooldown sistemi |\n| `event/` | 5 fonksiyon — dinamik event/hook sistemi |\n| `lib/` | `for_each_player`, `for_each_player_at`, `repeat`, `wait` |\n| `math/` | `sign`, `lerp`, `sqrt`, `ceil_div`, `distance2d` |\n| `cmd/` | `kill`, `damage`, `heal`, `particle`, `clear`, `clear_item`, `tag_add`, `tag_remove`, `scoreboard_set/get/add`, `title_times`, `title_reset`, `title_clear` |\n| `string/` | `chat`, `broadcast_raw`, `player_raw`, `progress_bar`, `header` |\n| `player/` | `reset`, `list_vars`, `add_default`, `increment`, `decrement` |\n\n---\n\n## 🩹 v2.2 Bug Fix Notları\n\n| Bug | Düzeltme |\n|-----|----------|\n| `load`: `data remove storage macro:input {}` geçersiz | `data modify ... set value {}` |\n| `cmd/title_sub`: subtitle rengi hardcoded `\"gray\"` | `\"color\":\"$(color)\"` ile dinamik |\n| `cmd/as_player` vb.: `val` parametresi tutarsızlığı | `val` → `func`, diğer API'larla tutarlı |\n| `debug/show_all`: `nbt:\"\"` boş path geçersiz | Bölümlere ayrıldı |\n\n---\n\n## 📦 Kurulum\n\n```\n1. advanced_macro_engine_v23/ → sunucu/datapacks/ klasörüne koy\n2. /reload\n3. Debug: /function macro:debug/toggle\n```\n\n---\n\n## 🏗️ Storage Mimarisi\n\n```\nmacro:engine  (kalıcı veri)\n├── global\n│   ├── version: \"2.3\"\n│   └── tick: \u003cint\u003e\n├── players\n│   └── Steve { coins:150, level:5, xp:2300, online:1b, ... }\n├── queue\n│   └── [{func:\"mypack:event/end\", delay:100}]\n├── cooldowns\n│   └── Steve { fireball: 2460, dash: 1870 }  ← expiry tick'leri\n└── events\n    └── on_join: [{func:\"mypack:welcome\"}, {func:\"mypack:xp_bonus\"}]\n\nmacro:input   (fonksiyona veri gönderme)\nmacro:output  (fonksiyondan sonuç alma)\n```\n\n---\n\n## 🔍 Predicate Sistemi — `macro:predicate/*`\n\n`execute if predicate \u003cid\u003e` komutuyla kullanılır.  \n`execute as @a if predicate macro:is_sneaking` gibi herhangi bir kontekstte çalışır.\n\n| Predicate ID | Açıklama |\n|---|---|\n| `macro:is_survival` | Oyuncu survival modda mı? |\n| `macro:is_creative` | Oyuncu creative modda mı? |\n| `macro:has_empty_mainhand` | Ana eldeki eşya boş mu? |\n| `macro:is_full_health` | Oyuncu tam canda mı? (20 HP) |\n| `macro:is_sneaking` | Oyuncu sinsi mi? |\n| `macro:is_sprinting` | Oyuncu koşuyor mu? |\n| `macro:is_burning` | Oyuncu yanıyor mu? |\n| `macro:is_on_ground` | Oyuncu yerde mi? |\n| `macro:is_daytime` | Gündüz mü? (0–12000 tick) |\n| `macro:is_raining` | Yağmur yağıyor mu? |\n| `macro:is_thundering` | Gök gürültülü fırtına mı? |\n| `macro:in_overworld` | Üst dünya mı? |\n| `macro:in_nether` | Nether mi? |\n| `macro:in_end` | End mi? |\n\n### Kullanım Örnekleri\n\n```mcfunction\n# Sadece yağmurda ve hayatta kalma modunda çalışır\nexecute as @a if predicate macro:is_survival if predicate macro:is_raining run function mypack:rain_effect\n\n# Yerde değilse (uçuyor/düşüyor) ses çal\nexecute as @a unless predicate macro:is_on_ground run function mypack:air_sound\n\n# Tam canlıyken bonus ver\nexecute as @a if predicate macro:is_full_health run function mypack:full_health_bonus\n\n# Nether'dayken sinsi oyuncuya particles\nexecute as @a if predicate macro:in_nether if predicate macro:is_sneaking run particle minecraft:soul_fire_flame ~ ~1 ~\n```\n\n---\n\n## 📚 API Referansı\n\n### 🕐 Cooldown — `macro:cooldown/*`\n\n| Fonksiyon | Input | Açıklama |\n|-----------|-------|---------|\n| `cooldown/set` | `{player, key, duration}` | Cooldown başlat (duration = tick) |\n| `cooldown/check` | `{player, key}` | `output.result` = 1b (hazır) / 0b (aktif) |\n| `cooldown/remaining` | `{player, key}` | `output.result` = kalan tick (0 = dolmuş) |\n| `cooldown/clear` | `{player, key}` | Belirli cooldown'u sıfırla |\n| `cooldown/clear_all` | `{player}` | Tüm cooldown'ları sıfırla |\n\n**Örnek — Yetenek cooldown:**\n```mcfunction\n# Cooldown kontrolü\ndata modify storage macro:input player set value \"Steve\"\ndata modify storage macro:input key set value \"fireball\"\nfunction macro:cooldown/check with storage macro:input {}\n\nexecute if data storage macro:output {result:1b} run function mypack:ability/fireball_use\nexecute if data storage macro:output {result:0b} run function mypack:ability/fireball_busy\n\n# Yeteneği kullandıktan sonra cooldown başlat (100 tick = 5sn)\ndata modify storage macro:input duration set value 100\nfunction macro:cooldown/set with storage macro:input {}\n```\n\n---\n\n### 📡 Event — `macro:event/*`\n\n| Fonksiyon | Input | Açıklama |\n|-----------|-------|---------|\n| `event/register` | `{event, func}` | Event'e handler ekle |\n| `event/fire` | `{event}` | Tüm handler'ları çalıştır |\n| `event/unregister` | `{event}` | Event'in tüm handler'larını sil |\n| `event/list` | — | Kayıtlı event'leri debug'a göster |\n\n**Handler'lara context geçirme:**\n```mcfunction\n# Önce context'i ayarla (handler'lar okuyabilir)\ndata modify storage macro:engine event_context player set value \"Steve\"\ndata modify storage macro:engine event_context reason set value \"login\"\n\n# Event'i tetikle\ndata modify storage macro:input event set value \"on_join\"\nfunction macro:event/fire with storage macro:input {}\n```\n\n**Handler içinde context okuma:**\n```mcfunction\n# mypack:handlers/on_join.mcfunction\n# macro:engine event_context.player → katılan oyuncu\ntellraw @a {\"storage\":\"macro:engine\",\"nbt\":\"event_context.player\",\"interpret\":false}\n```\n\n---\n\n### 🔁 Lib (Ek) — `macro:lib/*`\n\n| Fonksiyon | Input | Açıklama |\n|-----------|-------|---------|\n| `lib/for_each_player` | `{func}` | Her online oyuncu OLARAK çalıştır |\n| `lib/for_each_player_at` | `{func}` | Her oyuncu olarak ve konumunda |\n| `lib/repeat` | `{func, count}` | Fonksiyonu N kez çalıştır |\n| `lib/wait` | `{func, delay}` | `queue_add` için kısayol alias |\n\n**Örnek — Tüm oyunculara efekt:**\n```mcfunction\n# Her oyuncu için başka fonksiyon çalıştır\ndata modify storage macro:input func set value \"mypack:daily/give_bonus\"\nfunction macro:lib/for_each_player with storage macro:input {}\n\n# Bir döngü 5 kez çalıştır\ndata modify storage macro:input func set value \"mypack:loop/spawn_mob\"\ndata modify storage macro:input count set value 5\nfunction macro:lib/repeat with storage macro:input {}\n```\n\n---\n\n### 🔢 Matematik (Ek) — `macro:math/*`\n\n| Fonksiyon | Input | Output |\n|-----------|-------|--------|\n| `math/sign` | `{value}` | -1, 0 veya 1 |\n| `math/lerp` | `{a, b, t}` | `a + (b-a)*t/100` |\n| `math/sqrt` | `{value}` | `floor(√value)` |\n| `math/ceil_div` | `{a, b}` | `⌈a/b⌉` |\n| `math/distance2d` | `{x1,z1, x2,z2}` | `floor(√(dx²+dz²))` |\n\n---\n\n### 👤 Oyuncu (Ek) — `macro:player/*`\n\n| Fonksiyon | Input | Açıklama |\n|-----------|-------|---------|\n| `player/reset` | `{player}` | Tüm veriyi sil, varsayılanlara dön ⚠️ |\n| `player/list_vars` | `{player}` | Tüm değişken ve cooldown'ları göster |\n| `player/add_default` | `{player, key, value}` | Yoksa varsayılan yaz |\n| `player/increment` | `{player, key}` | Değeri 1 artır |\n| `player/decrement` | `{player, key}` | Değeri 1 azalt |\n\n---\n\n### ⚙️ Komutlar (Ek) — `macro:cmd/*`\n\n| Fonksiyon | Input | Açıklama |\n|-----------|-------|---------|\n| `cmd/kill` | `{player}` | Öldür |\n| `cmd/damage` | `{player, amount, type}` | Hasar ver |\n| `cmd/heal` | `{player, amount}` | İyileştir (instant_health efekti) |\n| `cmd/particle` | `{name,x,y,z,dx,dy,dz,speed,count}` | Parçacık efekti |\n| `cmd/clear` | `{player}` | Envanteri temizle |\n| `cmd/clear_item` | `{player, item, count}` | Belirli eşyayı kaldır |\n| `cmd/tag_add` | `{player, tag}` | Entity tag ekle |\n| `cmd/tag_remove` | `{player, tag}` | Entity tag kaldır |\n| `cmd/scoreboard_set` | `{player, objective, value}` | Scoreboard değeri yaz |\n| `cmd/scoreboard_get` | `{player, objective}` | Scoreboard değeri oku |\n| `cmd/scoreboard_add` | `{player, objective, amount}` | Scoreboard değerine ekle |\n| `cmd/title_times` | `{player, fade_in, stay, fade_out}` | Title animasyon süresi |\n| `cmd/title_reset` | `{player}` | Title süresini sıfırla |\n| `cmd/title_clear` | `{player}` | Aktif title'ı kaldır |\n\n---\n\n### 💬 Mesajlaşma (Ek) — `macro:string/*`\n\n| Fonksiyon | Input | Açıklama |\n|-----------|-------|---------|\n| `string/chat` | `{target, message, color}` | Tek oyuncuya basit mesaj |\n| `string/broadcast_raw` | `{json}` | Tüm oyunculara ham JSON |\n| `string/player_raw` | `{player, json}` | Tek oyuncuya ham JSON |\n| `string/progress_bar` | `{player, current, max, label}` | Action bar ilerleme çubuğu |\n| `string/header` | `{title, color}` | Tüm oyunculara dekoratif başlık |\n\n---\n\n## 🚀 Eksiksiz Örnek — Skill Sistemi\n\n```mcfunction\n# Oyuncu \"Dash\" kullanıyor\ndata modify storage macro:input player set value \"Steve\"\ndata modify storage macro:input key set value \"dash\"\nfunction macro:cooldown/check with storage macro:input {}\n\nexecute if data storage macro:output {result:0b} run function mypack:skill/dash_busy\nexecute if data storage macro:output {result:1b} run function mypack:skill/dash_use\n\n# mypack:skill/dash_use.mcfunction\nexecute as @a[name=Steve,limit=1] at @s run effect give @s minecraft:speed 2 3 true\ndata modify storage macro:input player set value \"Steve\"\ndata modify storage macro:input key set value \"dash\"\ndata modify storage macro:input duration set value 200\nfunction macro:cooldown/set with storage macro:input {}\n\n# mypack:skill/dash_busy.mcfunction\ndata modify storage macro:input player set value \"Steve\"\ndata modify storage macro:input key set value \"dash\"\nfunction macro:cooldown/remaining with storage macro:input {}\n# output.result → kalan tick\n```\n\n---\n\n## 🚀 Eksiksiz Örnek — PvP Etkinlik Sonu\n\n```mcfunction\n# Etkinlik bitince tüm oyunculara ödül ver\ndata modify storage macro:input func set value \"mypack:event/give_reward\"\nfunction macro:lib/for_each_player with storage macro:input {}\n\n# Bitiş duyurusu\ndata modify storage macro:input title set value \"ETKİNLİK BİTTİ\"\ndata modify storage macro:input subtitle set value \"Tebrikler!\"\ndata modify storage macro:input color set value \"gold\"\n# title_times → title → sonra temizle (5sn sonra)\ndata modify storage macro:input player set value \"@a\"\ndata modify storage macro:input fade_in set value 10\ndata modify storage macro:input stay set value 100\ndata modify storage macro:input fade_out set value 20\n# ... (her oyuncu için döngü veya broadcast)\n\n# 5sn sonra lobi'ye gönder\ndata modify storage macro:input func set value \"mypack:event/send_lobby\"\ndata modify storage macro:input delay set value 100\nfunction macro:lib/wait with storage macro:input {}\n```\n\n---\n\n*Advanced Macro Engine v3.0 | MC Java 1.21.x | +2 yeni sistem | +40 yeni fonksiyon*\n\n---\n\n## 🆕 v3.0 Yeni Sistem ve Düzeltmeler\n\n### 🐛 Bug Fix Notları\n\n| Bug | Dosya | Düzeltme |\n|-----|-------|---------|\n| **KRİTİK**: `/reload`'da `$epoch` sıfırlanıyordu, tüm cooldown'lar geçersiz oluyordu | `load.mcfunction` | `unless score $epoch ... matches -2147483648..2147483647` guard'ı ile sadece hiç oluşturulmamışsa sıfırla |\n| `process_queue` özyinelemesi stack overflow riski | `lib/process_queue` | `$pq_depth` sayacı ile tick başına 256 limit; `tick.mcfunction`'da her tick sıfırlanır |\n| Version string \"v2.1\" / \"v2.5\" tutarsızlığı | `load`, `pack.mcmeta` | Tüm referanslar v3.0 olarak güncellendi |\n\n### 📦 Yeni Modüller\n\n| Modül | Fonksiyonlar |\n|-------|-------------|\n| `math/` | `sign`, `abs`, `clamp`, `lerp`, `sqrt`, `ceil_div`, `distance2d` + `internal/sqrt_step` |\n| `team/` | `create`, `delete`, `add`, `remove`, `has`, `set_color`, `set_friendly_fire`, `count`, `list` |\n| `config/` | `set`, `set_int`, `set_default`, `get`, `has`, `delete`, `list`, `reset` |\n| `lib/` | `input_push`, `input_pop` (input state koruması) |\n\n---\n\n## 🔢 Matematik — `macro:math/*`\n\n| Fonksiyon | Input | Output | Açıklama |\n|-----------|-------|--------|---------|\n| `math/sign` | `{value}` | -1 / 0 / 1 | Sayının işareti |\n| `math/abs` | `{value}` | \\|value\\| | Mutlak değer |\n| `math/clamp` | `{value, min, max}` | `[min,max]` içinde | Aralığa sıkıştır |\n| `math/lerp` | `{a, b, t}` | `a+(b-a)*t/100` | Doğrusal interpolasyon (t: 0-100) |\n| `math/sqrt` | `{value}` | `floor(√value)` | Tamsayı karekök (binary search, 16 iter) |\n| `math/ceil_div` | `{a, b}` | `⌈a/b⌉` | Tavan bölme |\n| `math/distance2d` | `{x1,z1, x2,z2}` | `floor(√(dx²+dz²))` | XZ mesafesi |\n\n**Örnek — Spawn noktasına mesafe:**\n```mcfunction\ndata modify storage macro:input x1 set value 0\ndata modify storage macro:input z1 set value 0\ndata modify storage macro:input x2 set value 30\ndata modify storage macro:input z2 set value 40\nfunction macro:math/distance2d with storage macro:input {}\n# output.result → 50\n```\n\n**Örnek — Sağlık çubuğu yüzdesi için lerp:**\n```mcfunction\n# Oyuncunun HP'sine göre bir değeri ölçekle (0 HP=0, 20 HP=100 güç)\ndata modify storage macro:input a set value 0\ndata modify storage macro:input b set value 100\ndata modify storage macro:input t set value 75    # %75 HP\nfunction macro:math/lerp with storage macro:input {}\n# output.result → 75\n```\n\n---\n\n## 👥 Takım — `macro:team/*`\n\n| Fonksiyon | Input | Açıklama |\n|-----------|-------|---------|\n| `team/create` | `{team}` | Takım oluştur |\n| `team/delete` | `{team}` | Takımı sil |\n| `team/add` | `{team, player}` | Oyuncuyu takıma ekle |\n| `team/remove` | `{player}` | Oyuncuyu takımdan çıkar |\n| `team/has` | `{team, player}` | `output.result` = 1b/0b |\n| `team/set_color` | `{team, color}` | Takım rengini ayarla |\n| `team/set_friendly_fire` | `{team, value}` | \"true\" / \"false\" |\n| `team/count` | `{team}` | Online üye sayısı |\n| `team/list` | — | Debug'a takım listesi |\n\n**Örnek — PvP harita takım kurulumu:**\n```mcfunction\n# Takımları kur\ndata modify storage macro:input team set value \"kirmizi\"\nfunction macro:team/create with storage macro:input {}\ndata modify storage macro:input team set value \"mavi\"\nfunction macro:team/create with storage macro:input {}\n\n# Renk ata\ndata modify storage macro:input team set value \"kirmizi\"\ndata modify storage macro:input color set value \"red\"\nfunction macro:team/set_color with storage macro:input {}\n\n# Friendly fire kapat\ndata modify storage macro:input team set value \"kirmizi\"\ndata modify storage macro:input value set value \"false\"\nfunction macro:team/set_friendly_fire with storage macro:input {}\n\n# Oyuncu ekle\ndata modify storage macro:input team set value \"kirmizi\"\ndata modify storage macro:input player set value \"Steve\"\nfunction macro:team/add with storage macro:input {}\n\n# Takımda mı kontrol et\ndata modify storage macro:input team set value \"kirmizi\"\ndata modify storage macro:input player set value \"Steve\"\nfunction macro:team/has with storage macro:input {}\nexecute if data storage macro:output {result:1b} run say Steve kirmizi takımda!\n```\n\n---\n\n## ⚙️ Config — `macro:config/*`\n\n| Fonksiyon | Input | Açıklama |\n|-----------|-------|---------|\n| `config/set` | `{key, value}` | String değer yaz |\n| `config/set_int` | `{key, value}` | Tam sayı değer yaz |\n| `config/set_default` | `{key, value}` | Yoksa yaz (`output.result` = 1b yeni / 0b vardı) |\n| `config/get` | `{key}` | `output.result` = değer (yoksa \"\") |\n| `config/has` | `{key}` | `output.result` = 1b/0b |\n| `config/delete` | `{key}` | Key'i sil |\n| `config/list` | — | Debug'a tüm config |\n| `config/reset` | — | Tüm config'i sil ⚠️ |\n\n**Örnek — Sunucu başlangıcında varsayılan config:**\n```mcfunction\n# mypack:load.mcfunction — varsayılanları yükle\ndata modify storage macro:input key   set value \"server_name\"\ndata modify storage macro:input value set value \"Benim Sunucum\"\nfunction macro:config/set_default with storage macro:input {}\n\ndata modify storage macro:input key   set value \"max_party_size\"\ndata modify storage macro:input value set value 4\nfunction macro:config/set_int with storage macro:input {}   # int versiyonu kullan!\n\n# Çalışma zamanında oku\ndata modify storage macro:input key set value \"max_party_size\"\nfunction macro:config/get with storage macro:input {}\n# output.result → 4 (veya \"Benim Sunucum\" string için)\n```\n\n---\n\n## 🔒 Input Push/Pop — `macro:lib/input_push` / `input_pop`\n\nBir fonksiyon içinden başka bir modülü çağırmadan önce `macro:input` durumunu korur.\n\n```mcfunction\n# Bir fonksiyon içindeyiz, macro:input dolu\n# math/sqrt çağırmamız gerekiyor ama input'u bozmak istemiyoruz\n\nfunction macro:lib/input_push          # mevcut input'u kaydet\n\ndata modify storage macro:input value set value 144\nfunction macro:math/sqrt with storage macro:input {}\n# output.result → 12\n\nfunction macro:lib/input_pop           # input'u geri yükle\n# macro:input artık önceki haliyle\n```\n\n\n*Advanced Macro Engine v3.0 | MC Java 1.21.x | +3 yeni modül | +24 yeni fonksiyon | 3 kritik bug fix | Dil: mcfunction*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftickwarden%2Fmacroengine-dp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftickwarden%2Fmacroengine-dp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftickwarden%2Fmacroengine-dp/lists"}