Türkçe
ItemsEngine, sunucuda ItemsAdder kuruluymuş gibi görünen ve desteklediği ItemsAdder API çağrılarını CraftEngine verilerine yönlendiren açık kaynak bir Paper/Folia uyumluluk köprüsüdür. Plugin adı ItemsEngine, ana paket adı com.siberanka.itemsengine'dir.
ItemsEngine, ItemsAdder'ın kendisi değildir; resource-pack üreticisi veya tüm özelliklerinin yeniden uygulaması da değildir. Desteklenmeyen bir çağrıda veri uydurmak yerine güvenli biçimde
null,falseveya boş koleksiyon döndürür.
- Paper'ın
provides: [ItemsAdder]mekanizmasıyladepend: [ItemsAdder]kullanan pluginlerin yüklenmesini vegetPlugin("ItemsAdder")çağrısının ItemsEngine'e çözülmesini sağlar. - CraftEngine item, blok, mobilya ve görsel kayıtlarını ItemsAdder'ın güncel API adlarıyla sunar.
- Item üretme/tanıma, blok yerleştirme/kaldırma, mobilya yerleştirme/kaldırma ve font görseli metin/component erişimini köprüler.
- CraftEngine yeniden yüklemesini ItemsAdder yükleme olaylarına; temel blok ve mobilya olaylarını iptal durumu korunarak ItemsAdder olaylarına çevirir.
- CraftEngine'in eski ve güncel kararlı API şekilleri arasındaki dönüş tipi değişikliklerinden etkilenmemek için dar, doğrulanan bir reflection adaptörü kullanır.
- Güncel ItemsAdder API JAR'ındaki tüm sınıf ve public/protected method descriptor'larını build sırasında bytecode düzeyinde doğrular; davranışsal karşılığı olmayan yüzeyler açıkça tarafsız kalır.
- Desteklenen sunucunuza CraftEngine kurun.
- Son sürüm
ItemsEngine-*.jardosyasını Releases sayfasından indiripplugins/klasörüne koyun. - Placeholder kullanacaksanız PlaceholderAPI 2.12.3 veya üstünü kurun. PlaceholderAPI isteğe bağlıdır; 26.2 desteği için en az 2.12.3 gerekir.
- ItemsAdder JAR'ını aynı sunucuya kurmayın; iki sağlayıcının birlikte çalışması desteklenmez.
- Sunucuyu tamamen yeniden başlatın ve
/itemsengine statusçıktısını kontrol edin.
Paper 1.21.x için Java 21; Paper 26.1 ve sonrası için Java 25 gerekir. /reload desteklenmez.
ItemsEngine, belgelenmiş ItemsAdder yazımlarını korur ve değerleri CraftEngine'in gerçek kayıtlarından üretir. PlaceholderAPI eCloud'dan ayrı bir expansion indirmeniz gerekmez.
| Biçim | Sonuç |
|---|---|
%img_<görsel>% |
CraftEngine font görselinin Unicode glifi |
%img_offset_-16%, %img_offset_16% |
CraftEngine'in ham font metriğiyle negatif/pozitif piksel kaydırma |
:<görsel>:, :<namespace>:<görsel>: |
ItemsAdder satır içi görsel sözdizimi |
:offset_-16:, :offset_16: |
ItemsAdder satır içi piksel kaydırma sözdizimi |
%iaplayerstat_<ad>% |
Var olan sayısal oyuncu PDC istatistiği; veri yoksa çözümlenmez |
%itemsadder_newline%, %itemsadder_space% |
Satır sonu ve boşluk |
Bilgi placeholder'ları: %itemsadder_loaded%, %itemsadder_version%, %itemsadder_craftengine_version%, %itemsadder_items_count%, %itemsadder_blocks_count%, %itemsadder_furniture_count%, %itemsadder_images_count%; bunların *_ids listeleri ve item|block|furniture|image_exists_<namespace:id> kontrolleri. Item için item_material_, item_name_, item_max_stack_size_, item_custom_model_data_; görsel için image_unicode_, image_codepoint_, image_height_, image_ascent_, image_rows_, image_columns_, image_font_, image_file_ önekleri kullanılabilir. <namespace:id> kısmı önekin sonuna aynen eklenir. Oyuncu bağlamında %itemsadder_mainhand_id% ve %itemsadder_offhand_id% desteklenir.
Tam ad her zaman önerilir: %img_namespace:görsel%. Kısa ad yalnızca tek bir kayıtla eşleşiyorsa çözümlenir; belirsiz veya bilinmeyen değerler sahte veri üretmez. Kaydırma -8192..8192, liste çıktıları ise güvenli boyutlarla sınırlıdır.
ItemsEngine, ItemsAdder bağlantısı kullanan anti-xray/anti-cheat eklentilerinin yaygın açık API yolunu taklit eder: ItemsAdder sağlayıcı adı, yükleme olayları, CustomBlock.byAlreadyPlaced(Block), ItemsAdder.isCustomBlock(Block), CustomStack.byItemStack(ItemStack) ve özel blok yerleştirme/kırma olayları CraftEngine verisine bağlanır. CustomStack.getInstance, CustomBlock.getInstance ve mobilya yerleştirme girişleri hem namespace:id hem de benzersiz kısa id kabul eder; kısa ad çakışırsa güvenli biçimde başarısız olur.
Bu sözleşme gerçek Paper/Folia sunucusunda bir CraftEngine özel bloğunu yerleştirip ItemsAdder API'siyle aynı kimlikte geri okuyarak ve ardından test bloğunu kaldırıp önceki blok verisini geri yükleyerek doğrulanır. Açık kaynak RayTraceAntiXray sürümleri doğrudan ItemsAdder çağrısı içermediğinden, özel/ücretli bir sürümün yayımlanmamış iç sınıflarına uyumluluk iddia edilmez. Public ItemsAdder API kullanan bağlantılar hedeflenir.
| Platform | Minecraft | Java | CraftEngine | Sonuç |
|---|---|---|---|---|
| Paper stable | 1.21.11 build 132 | 21 | 26.7.4 | Placeholder + özel blok tüketici probu geçti |
| Folia stable | 1.21.11 build 14 | 21 | 26.7.4 | Placeholder + özel blok tüketici probu geçti |
| Paper stable | 26.2 build 92 | 25 | 26.7.4 | Placeholder + özel blok tüketici probu geçti |
| Folia beta | 26.2 build 1 | 25 | 26.7.4 | Placeholder + özel blok tüketici probu geçti |
Kaynak kod Java 21 bytecode üretir. Böylece 1.21.x alt sınırı korunurken Java 25 üzerinde çalışan 26.x sunucularında da aynı JAR kullanılabilir. Ayrıntılı ve dürüst özellik matrisi için Uyumluluk belgesine bakın.
ItemsAdder API bağımlılığınızı değiştirmek zorunda değilsiniz. Plugininiz normal şekilde depend, softdepend veya loadbefore ile ItemsAdder adını kullanabilir. Verilerin hazır olduğunu anlamak için ItemsAdder yükleme olayını dinlemeye devam edin; onEnable sırasında kayıtların hazır olduğunu varsaymayın.
CustomStack stack = CustomStack.getInstance("namespace:item");
if (stack != null) {
player.getInventory().addItem(stack.getItemStack());
}Yerel doğrulama:
./gradlew clean build cyclonedxBom integrationProbeJarMimari, tehdit modeli ve kaynak kayıtları sırasıyla ARCHITECTURE, SECURITY ve RESEARCH belgelerindedir. Hata bildirirken issue formlarını kullanın.
English
ItemsEngine is an open-source Paper/Folia compatibility bridge that presents itself as an ItemsAdder provider and routes supported ItemsAdder API calls to CraftEngine data. Its plugin name is ItemsEngine and its root package is com.siberanka.itemsengine.
ItemsEngine is not ItemsAdder, a resource-pack generator, or a reimplementation of every ItemsAdder feature. Unsupported calls fail closed with
null,false, or an empty collection instead of fabricated data.
- Uses Paper's
provides: [ItemsAdder]mechanism so plugins declaringdepend: [ItemsAdder]load andgetPlugin("ItemsAdder")resolves to ItemsEngine. - Exposes CraftEngine item, block, furniture, and image registries through current ItemsAdder API names.
- Bridges item building/identification, block placement/removal, furniture placement/removal, and font-image text/components.
- Translates CraftEngine reloads into ItemsAdder load events and maps core block/furniture events while propagating cancellation back to CraftEngine.
- Uses a narrow, validated reflection adapter to survive return-type changes between older and current stable CraftEngine API generations.
- Bytecode-checks every class and public/protected method descriptor in the current ItemsAdder API JAR; surfaces without a behavioral equivalent remain explicitly neutral.
- Install CraftEngine on a supported server.
- Download the latest
ItemsEngine-*.jarfrom Releases and place it inplugins/. - If you need placeholders, install PlaceholderAPI 2.12.3 or newer. PlaceholderAPI is optional; 26.2 requires at least 2.12.3.
- Do not install the ItemsAdder JAR on the same server; dual providers are unsupported.
- Fully restart the server and inspect
/itemsengine status.
Paper 1.21.x requires Java 21; Paper 26.1+ requires Java 25. /reload is unsupported.
ItemsEngine preserves the documented ItemsAdder spellings and produces values from the real CraftEngine registries. No separate eCloud expansion is required.
| Syntax | Result |
|---|---|
%img_<image>% |
Unicode glyph of a CraftEngine font image |
%img_offset_-16%, %img_offset_16% |
Negative/positive pixel shift generated by CraftEngine's raw font metrics |
:<image>:, :<namespace>:<image>: |
ItemsAdder inline image syntax |
:offset_-16:, :offset_16: |
ItemsAdder inline pixel-offset syntax |
%iaplayerstat_<name>% |
Existing numeric player PDC statistic; remains unresolved when no data exists |
%itemsadder_newline%, %itemsadder_space% |
Newline and space |
Information placeholders include %itemsadder_loaded%, %itemsadder_version%, %itemsadder_craftengine_version%, registry *_count/*_ids values, and item|block|furniture|image_exists_<namespace:id>. Item metadata uses item_material_, item_name_, item_max_stack_size_, and item_custom_model_data_; image metadata uses image_unicode_, image_codepoint_, image_height_, image_ascent_, image_rows_, image_columns_, image_font_, and image_file_. Append the exact <namespace:id> after the prefix. %itemsadder_mainhand_id% and %itemsadder_offhand_id% are available with a player context.
Prefer fully qualified IDs such as %img_namespace:image%. A short name resolves only when unique; ambiguous and unknown values fail closed. Offsets are bounded to -8192..8192, and registry list output is safely bounded.
ItemsEngine emulates the common public API path used by anti-xray/anti-cheat plugins with an ItemsAdder hook: the ItemsAdder provider identity, load events, CustomBlock.byAlreadyPlaced(Block), ItemsAdder.isCustomBlock(Block), CustomStack.byItemStack(ItemStack), and custom block place/break events are backed by CraftEngine data. CustomStack.getInstance, CustomBlock.getInstance, and furniture placement entry points accept either namespace:id or a unique bare id; an ambiguous bare name fails closed.
The contract is verified on real Paper/Folia servers by placing a CraftEngine custom block, reading back the identical ID through the ItemsAdder API, removing it, and restoring the original test block data. The public RayTraceAntiXray editions contain no direct ItemsAdder calls, so ItemsEngine does not claim compatibility with unpublished internals of a private/paid build. Integrations using the public ItemsAdder API are the supported target.
| Platform | Minecraft | Java | CraftEngine | Result |
|---|---|---|---|---|
| Paper stable | 1.21.11 build 132 | 21 | 26.7.4 | Placeholder + placed-block consumer probe passed |
| Folia stable | 1.21.11 build 14 | 21 | 26.7.4 | Placeholder + placed-block consumer probe passed |
| Paper stable | 26.2 build 92 | 25 | 26.7.4 | Placeholder + placed-block consumer probe passed |
| Folia beta | 26.2 build 1 | 25 | 26.7.4 | Placeholder + placed-block consumer probe passed |
The project emits Java 21 bytecode, preserving the 1.21.x lower bound while allowing the same JAR to run on Java 25-based 26.x servers. See Compatibility for the detailed, conservative feature matrix.
You do not need to change your ItemsAdder API dependency. Continue declaring ItemsAdder in depend, softdepend, or loadbefore. Continue listening for the ItemsAdder load event; do not assume registry data is ready during onEnable.
CustomStack stack = CustomStack.getInstance("namespace:item");
if (stack != null) {
player.getInventory().addItem(stack.getItemStack());
}Local verification:
./gradlew clean build cyclonedxBom integrationProbeJarSee Architecture, Security, and Research. Please use the structured issue forms when reporting a problem.