Faz 6'nın (JVM köprüsü) kanıtı. Ender sandığı plugin'i:
/ec,/ec <oyuncu>,/ec yenile. İzinler, bekleme süresi, her mesajın metni ve rengi, ses ve parçacık seçimi, hedefin bilgilendirilmesi — hepsienderchest.raiiçinde.
src/main/resources/enderchest.rai| Plugin'in tüm kuralları |McBaglayici.java|mc.*ilkelleri (14 tane). Kural yok, sadece "şu oyuncuya şu metni yaz" |EnderChestPlugin.java| DLL'i kur, VM'i aç, betiği yükle, komutu ilet |bindings/jvm/rs_jni.cpp| capi.h ↔ JNI. Dil çekirdeğine dokunmaz |bindings/jvm/java/.../RaidenScript.java| Köprünün Java yüzü —rs-host.js'in birebir karşılığı |
make jnisonra:
cd demo/plugin && mvn package
target/RaidenEnderChest.jarsunucununplugins/klasörüne kopyalanır. DLL jar'ın içinde gelir; plugin açılışta veri klasörüne çıkarıp yükler, elle kopyalama yok.
plugins/RaidenEnderChest/enderchest.raidüzenlenir, oyun içinde/ec yenileyazılır. Canlı sunucuda doğrulandı:
[00:13:04] Raiden Ender Sandığı kuralları hazır — bekleme 5 sn ← açılış
... BEKLEME = 5.0 satırı 12.0 yapıldı, /ec yenile ...
[00:13:27] Raiden Ender Sandığı kuralları hazır — bekleme 12 sn ← yeniden derlendi
[00:13:27] enderchest.rai yeniden yüklendi.
Bozuk düzenleme sunucuyu komutsuz bırakmıyor — yeni VM ancak sorunsuz kurulursa eskisinin yerine geçiyor:
[00:13:37] ERROR: enderchest.rai yüklenemedi:
hata: dosya sonunda kapanmamış '('
--> enderchest.rai:167:1
6 hata
…ve eski kurallar çalışmaya devam etti.
Nesne geçmez. Oyuncu kimliği UUID dizesi olarak taşınır.
Betiğe dize argümanı geçilemez (
rs_callyalnızcadoublealır). Komut bağlamını betik ÇEKER:mc.komutOyuncu(),mc.komutArg(0). Banka ve mağaza demolarındaki desenin aynısı.
Host'tan gelen sayılar
double'dır. İndis olarak kullanmadan önceint().
examples/10-minecraft-plugin.raibu köprüyle çalışmaz: içinde nesne
döndüren
mc.yakindakiVarliklar()ve metotluoyuncu.mesaj()var. O dosya hedef taslağı; çalışan desen budur.
Betik özyinelemesi JVM'in yerel yığınını tüketiyor ve taşma sunucuyu sessizce öldürüyor — Java istisnası yok,
hs_errgünlüğü yok, çıkış kodu 127.
Bu plugin'in kuralları özyinelemesiz, ama sunucuyu
-Xss16mile başlatmak tavsiye edilir. Kalıcı çözüm yorumlayıcıda çağrı derinliği sayacı — bkz.faz5-web-tasarim.md(H6).
mc.*ilkellerinin sahtesini kaydedip kuralları JVM'de doğrudan koşturabilirsin; sunucu gerekmez. Sekiz senaryo böyle doğrulandı: izin yok, bekleme aktif, beklemesiz muafiyet, olmayan oyuncu, başkasının sandığı, hedefe haber, kendi adını yazma, temel izin yok.