Nasıl yapılır
Bir Fabric modunu Minecraft 26.3'e taşımak
Bir Fabric modunu Minecraft 26.1.2'den 26.3'e taşırken ne bozuldu: on API değişikliği, Loom 1.18 ve Gradle 9.7.1 zorunluluğu ve nasıl düzelttiğim.
Kısaca Bir Fabric modunu Minecraft 26.1.2'den 26.3'e taşımak çoğunlukla mekanik yeniden adlandırma işi. Araz modunda derleyici 56 hata verdi ve hepsi on kalıptan çıktı: entity tipi sabitleri EntityTypes altına taşındı, blocksMotion isSolid oldu, SignText listelerden kuruluyor, renkli bloklar bir renk koleksiyonundan geliyor ve ganimet sayı sağlayıcıları artık Holder istiyor.
Fabric korku modum Araz'ı 2026 Eylül'ünde tek bir öğleden sonrada Minecraft 26.1.2'den 26.3'e taşıdım. Derleyici 56 hata verdi. Hepsi tekrar eden on API kalıbından çıktı ve hiçbiri tasarımda bir değişiklik gerektirmedi.
Bu yazı, işe başlarken elimde olmasını istediğim liste. Ne yeniden adlandırıldı, ne paket değiştirdi, yeni Loom hangi derleme araçlarını şart koşuyor. Modun kendisi değişmedi: Araz 1.0.0-beta.2'nin 26.3 derlemesi 26.1.2 derlemesiyle birebir aynı oynanıyor.
Aşağıdakilerin hepsi o tek gerçek porttan çıktı. Her satırı bir değişiklik günlüğüne değil, derlenen kaynak koda bakarak doğruladım. Senin modun API'nin başka bir bölümüne dokunuyor, o yüzden güvenmeden önce her satırı kendi derlemende sına.
Minecraft 26.1.2 ile 26.3 arasında Fabric modları için ne değişti?
Kırılmaların çoğu dört yerde toplanıyor: entity tipi sabitleri, tabela metni, renkli bloklar ve ganimet tabloları. Bunların bir kısmı aslında 26.2'de geldi ve ben 26.2'yi tamamen atlamıştım, yani 26.1.2'den doğrudan 26.3'e atlayınca iki sürümlük değişikliği aynı anda topluyorsun.
| Minecraft 26.1.2 | Minecraft 26.3 | Ne yapman gerekiyor |
|---|---|---|
EntityType.VILLAGER | EntityTypes.VILLAGER | Bütün vanilla entity tipi sabitleri net.minecraft.world.entity.EntityTypes sınıfına taşındı. EntityType içinde artık yalnız codec'ler kaldı. Villager sınıfı da entity.npc.villager.Villager altına geçti. |
state.blocksMotion() | state.isSolid() | BlockState üzerinde düz bir ad değişikliği. Mekanik bir iş ama benim derlememde en çok tekrar eden hata buydu. |
entity.hurtMarked = true | ClientboundSetEntityMotionPacket | Alan kaldırıldı. Oyuncuda hızı değiştirdikten sonra new ClientboundSetEntityMotionPacket(player) gönder. Mob'larda satırı silmen yeterli, entity tracker zaten yolluyor. |
entity.invulnerableTime = 0 | entity.setInvulnerableTime(0) | Alan private oldu. Getter ve setter'ı var. |
player.swing(hand, true) | player.swing(hand, SwingAnimation.DEFAULT, true) | net.minecraft.world.item.component.SwingAnimation içinden yeni bir orta argüman geldi. |
new SignText().setMessage(i, line) | new SignText(ön, filtreli, DyeColor, boolean) | Zincirlenen setter kalktı. SignText.LINES ile uyumlu, dörder bileşenlik iki listeden kuruyorsun. |
sign.setText(text, true) | sign.setText(text, SignTextSlot.FRONT) | Ön/arka yüzü belirten boolean, SignTextSlot enum'una dönüştü. |
Blocks.WHITE_CARPET | Blocks.CARPET.white() | Renkli bloklara artık bir renk koleksiyonu üzerinden ulaşılıyor: white(), lightGray() ve pick(DyeColor). Yün ve yün merdiveni de aynı şekilde. |
inventory.placeItemBackInInventory(stack) | placeItemBackInInventory(stack, Prediction.SERVER_ONLY) | net.minecraft.util.Prediction içinden gelen yeni bir tahmin argümanı. |
providers.number.ConstantValue | providers.number.ints.ConstantValue, Holder.direct(...) içinde | Ganimet sayı sağlayıcıları paket değiştirdi ve artık holder olarak veriliyor: setRolls(Holder.direct(new ConstantValue(1))). |
gameRenderer.displayItemActivation(stack) | player.displayItemActivation(stack) | Yalnız istemci tarafı. Çağrı oyuncunun üstüne, client.player.ItemActivation içine taşındı. |
İki satır ayrıca dikkat istiyor. hurtMarked kaldırılması mob'larda sessizce geçiyor, çünkü entity tracker hızı nasılsa yolluyor; ama oyuncuda paketi kendin göndermezsen oyuncu hiç kıpırdamıyor. Renk koleksiyonu ise ad değişikliğini geçtikten sonra küçük bir kazanç: rastgele bir halı seçmek artık blok sabitleri arasında switch yazmak yerine Blocks.CARPET.white() veya Blocks.CARPET.lightGray() demek.
Minecraft 26.3 hangi Gradle ve Loom sürümlerini istiyor?
Minecraft 26.3 için eklenti sürümü Fabric Loom 1.18-SNAPSHOT ve bu da Gradle 9.7 ya da üstünü istiyor. Burada herhangi bir API ad değişikliğinden daha çok vakit kaybettim, çünkü hata mesajı wrapper'ı değil eklenti varyantlarını gösteriyor.
| Minecraft | Loom eklentisi | Gradle wrapper | JDK | Fabric API |
|---|---|---|---|---|
| 26.3 | fabric-loom 1.18-SNAPSHOT | 9.7.1 | 25 | 0.161.0+26.3 |
| 26.1.2 | fabric-loom 1.17-SNAPSHOT | 9.5.1 | 25 | 0.154.0+26.1.2 |
| 1.21.10 | fabric-loom-remap 1.17-SNAPSHOT | 9.5.1 | 21 | 0.138.4+1.21.10 |
| 1.20.1 | fabric-loom 1.7.4 | 8.8 | 21 | 0.92.12+1.20.1 |
1.21.10 backport'u ise bambaşka bir derleme. net.fabricmc.fabric-loom-remap eklentisini loom.officialMojangMappings() ile kullanıyor, bütün mod bağımlılıkları modImplementation olarak tanımlanıyor ve Gradle JDK 21 ile çalışıyor. Birden fazla dal tutuyorsan derleme dosyalarını ayrı tut, hepsini tek bir betikle idare etmeye çalışma.
Portu bir öğleden sonrada nasıl yaptım
Projeyi kopyala, sonra derlemeyi güncelle
26.1.2 klasörünü yeni bir klasöre kopyaladım ve eskisine hiç dokunmadım, çalışan bir geri dönüş noktası olarak duruyor. Sonra
gradle.propertiesiçindeminecraft_version,loader_version,loom_versionvefabric_api_versiondeğerlerini yazdım, Gradle wrapper'ı 9.7.1'e çevirdim.Bir kez derle ve hata listesinin tamamını oku
İlk hatayı düzeltme. Derlemeyi çalıştır, patlamasına izin ver ve 56 satırın hepsini oku. Hataların neredeyse tamamı tekrar ediyor, yani liste daha hiçbir şeye dokunmadan kaç farklı kalıpla uğraştığını söylüyor.
Dosya dosya değil, kategori kategori düzelt
Tüm kaynak ağacında tek seferde tek bir kalıbı hallettim: önce bütün
EntityType.sabitleri, sonra bütünblocksMotion()çağrıları, sonra tabela metni, sonra halılar. Kalıp başına tek bir bul ve değiştir, dosya listesini tek tek gezmekten hem daha hızlı hem daha az hataya açık.Derleyicinin göremediklerini kontrol et
Derleyicinin kabul ettiği bir değişiklik çalışma zamanında hâlâ yanlış olabilir. Ganimet tablosu kurulumunu, mixin hedeflerini ve GeckoLib varlık yollarını elle kontrol ettim; bozuk bir kaynak yolu oyun onu gerçekten yükleyene kadar sessiz kalıyor.
İstemciyi aç, sonra veriyi karşılaştır
Geliştirme istemcisini açtım, yeniden kurulan terk edilmiş kampa yürüdüm ve tabela metninin dört satırda da çizildiğini doğruladım, sonra üretilen ganimeti 26.1.2 derlemesiyle karşılaştırdım. Ganimet sayı sağlayıcılarındaki yanlış bir
Holder'ı yakalayan tek adım bu.
26.3'te neler aynı kaldı
Hayatta kalanların listesi kırılanlardan çok daha uzun, bu iş zaten o yüzden bir hafta sonu değil bir öğleden sonra sürdü. Modun bunların üstünde duruyorsa büyük ölçüde rahatsın.
- NBT okuma ve yazma için
ValueInputveValueOutput - Özel ağ payload'ları ve
StreamCodec IdentifieralanSavedDataType, yani dünyaya yazılan kalıcı veri hiç dokunulmadan çalışmaya devam etti- Entity render state mimarisi,
GuiGraphicsExtractorveHudElementRegistry - Yaratıcı mod sekmelerine eşya eklemek için
CreativeModeTabEvents - Java 25 hedefleyen mixin'ler
Bir portun sessizce bir şeyi bozmadığını nasıl anlarsın?
Temiz bir derleme, kaynaklar ve çalışma zamanı davranışı hakkında hiçbir şey kanıtlamıyor. Araz'da üç şey derleyiciden geçip oyun içinde bozuk kalabiliyor, o yüzden her portta bunları elle kontrol ediyorum.
- Tabelalar.
SignTextartık dörder satırlık iki liste istiyor. Yanlış liste uzunluğu derleme hatası olarak değil, yaratığın yatağının yanına diktiği kayıt tabelalarında boş satır olarak görünüyor. - Ganimet. Sayı sağlayıcıları paket değiştirdi ve
Holderalıyor, o yüzden derlendi diye güvenmek yerine gerçekten ne düştüğünü 26.1.2 derlemesiyle karşılaştırıyorum. - Yalnız istemci kodu. Eşya aktivasyonu game renderer'dan oyuncunun üstüne taşındı ve bölünmüş source set'lerde bir istemci mixin'i
fabric.mod.jsoniçinde{"config": ..., "environment": "client"}biçiminde tanımlanmazsa geliştirme sunucusu açılışta çöküyor.
Araz hangi Minecraft sürümlerini destekliyor?
2026 Eylül'ü itibarıyla Araz 1.0.0-beta.2 Minecraft 26.3, 26.1.2, 1.21.10 ve 1.20.1 için çıkıyor. Dördü de yalnız Fabric. Forge ya da NeoForge derlemesi yok ve planlanmıyor. Fabric API ve GeckoLib zorunlu; Simple Voice Chat, Mod Menu ve Cloth Config isteğe bağlı. Mod sayfası spicesfire.com/araz adresinde.
Dört dalı birden ayakta tutmak ucuz, çünkü oynanış kodu hepsinde aynı. Araz'ın 26.3 sürüm notlarında kullanıcıyı ilgilendiren tek bir düzeltme var, mod dosyasından eksik kalan yumurta dokusu; gerisi tamamen iç yapı. Derlemeler Modrinth ve CurseForge üzerinde, port sorularını da Discord üzerinden yanıtlıyorum.
Bu portun sana anlatmadıkları
Bu notlar 2026 Eylül'ünde tek bir modun tek bir portundan çıktı. Araz özel bir yaratık, blok entity'leri, eşyalar, ganimet, mixin'ler ve bir GeckoLib renderer kullanıyor, yani API'nin geniş bir bölümüne dokunuyor. Dünya üretimine ise hiç dokunmuyor: terk edilmiş kamp ve portal kalıntısı, yığın üretimi sırasında değil oyuncu yaklaşınca inşa ediliyor. Modun arazi, biyom ya da yapı üretiyorsa bu yazı seni kapsamıyor.
Sık sorulan sorular
Minecraft 26.1.2 modları 26.3'te çalışıyor mu?
Hayır. Bir 26.1.2 Fabric modu yeniden derlenmeden Minecraft 26.3'te yüklenmiyor. Araz'ı taşımak on API değişikliği gerektirdi; bunlara bütün entity tipi sabitlerinin EntityTypes altına geçmesi ve BlockState.blocksMotion() yerine isSolid() gelmesi dahil.
Fabric Loom 1.18 hangi Gradle sürümünü istiyor?
Gradle 9.7 ya da üstünü. gradle-9.7-bin.zip diye bir dağıtım yok, o yüzden wrapper'ı gradle-9.7.1-bin.zip dosyasına yönlendir. Gradle 9.5.1'de derleme plugin.api-version 9.7.0 geçen bir No matching variant hatasıyla patlıyor.
Minecraft 26.3'te EntityType.VILLAGER nereye gitti?
net.minecraft.world.entity.EntityTypes içine taşındı. Bütün vanilla entity tipi sabitleri artık orada ve EntityType yalnızca codec'leri tutuyor. Villager sınıfı da entity.npc.villager.Villager altına geçti.
hurtMarked kalktığına göre oyuncunun hızını nasıl ayarlıyorum?
Paketi kendin gönderiyorsun. Delta hareketi değiştirdikten sonra player.connection.send(new ClientboundSetEntityMotionPacket(player)) çağır. Mob'larda eski hurtMarked = true satırını silmen yeterli, çünkü entity tracker hızı zaten yolluyor.
Bir Fabric modunu 26.3'e taşımak ne kadar sürer?
Araz 2026 Eylül'ünde bir öğleden sonra sürdü: on tekrar eden kalıptan çıkan 56 derleme hatası, tüm kaynak ağacında kalıp kalıp düzeltildi. Dünya üretimine ya da render iç yapısına dokunan bir mod daha uzun sürer.
Araz'ın Forge ya da NeoForge sürümü var mı?
Yok. 2026 Eylül'ü itibarıyla Araz desteklenen dört sürümde de yalnız Fabric: Minecraft 26.3, 26.1.2, 1.21.10 ve 1.20.1. Hepsinde Fabric API ve GeckoLib zorunlu.