İçeriğe atla
MezarClient — 18. HUD: Potion Effect kapak görseli

MezarClient — 18. HUD: Potion Effect

MezarMC Ekibi
MezarclientHudGunce

MezarClient — 18. HUD: Potion Effect

Vanilla Minecraft potion efektlerini sağ üst köşede minicik 16×16 ikon stripi olarak gösterir. Üç efekt aldığında üst üste sıralanırlar, üzerine de ufak bir sayaç. Hız II ile Yavaşlık II'yi sadece ikondan ayırt etmek — özellikle hızlı PvP sırasında — gözünü yorar. Daha kötüsü: hangisinin birazdan biteceğini anlamak için her ikona tek tek bakman gerekir. Beacon yanında dururken 6 efekti kontrol etmek? Hayatta olmaz.

PotionEffectHUD bu sıkıntıyı çözmek için yazıldı. 18. HUD bileşeni olarak MezarClient'a eklendi.

Nasıl çalışır

Ekranın sağ ortasında dikey bir kart yığını çizilir. Her aktif efekt için bir satır:

● Hız II             1:24
● Şifa Direnci I       57s
● Yavaşlık III         8s   ← warning halo + kırmızı sayaç
● Gece Görüşü           ∞

Her satırda dört bilgi var:

  • Kategori dot (sol): vanilla'nın StatusEffectCategory'sini renklendirdik. BENEFICIAL altın (ColorUtil.ACCENT), HARMFUL kırmızı (ColorUtil.RED), NEUTRAL soft gri (ColorUtil.TEXT_SECONDARY). Tek bakışta "iyi mi kötü mü" cevabı.
  • Lokalize ad: effect.minecraft.speed değil, Hız. tr_tr lang dosyandan geliyorsa Türkçe, en_us'tan geliyorsa İngilizce.
  • Roman amplifier: Hız II (yani amplifier=1). 10'a kadar Roman, sonrası Arapça (eğer komut bloklarıyla 11+ amplifier yaratıyorsan, ki garip olur).
  • Kalan süre (sağ): 60 saniyenin altındaysa 8s, üstündeyse 1:24. Çıplak göz okuyabilsin diye.

Warning halo — son 10 saniye

Bir efektin kalan süresi ≤10 saniyeye düştüğünde:

  • Sayaç metni kırmızıya döner (#FF6B6B)
  • Satırın etrafında kategori-renkli pulsing halo belirir, ~800 ms periyot, sinüsoidal yumuşaklık

Beacon Hız II'nin bittiğini, ona bakmadan, sağ tarafından yanıp sönen kırmızı ile fark edersin. Yenilemek için /effect çekersin ya da Beacon menüsünü tekrar açarsın. Reduced motion açıksa pulse statikleşir, halo görünür ama nabız atmaz.

Sonsuz efekt gösterimi

Minecraft 1.21'de infinite duration potion efektleri var (Beacon, command block, snapshot kalıntıları). Vanilla bunu metinsiz çiziyor — sayaç yerine boşluk. Biz ≥32 767 tick (INFINITE_THRESHOLD) görürsek glyph'i çiziyoruz. Beacon'ın yanında durduğunda yan yana gelen 6 sonsuz efekt artık net.

Sıralama ve cap

Aktif efektler kalan süreye göre artan sırada listelenir — yani az kalmış olan üstte, infinite olan altta. Mantığı basit: panik halinde göz önce üste gider, "10 saniye sonra ne bitecek?" cevabını sıfır göz hareketiyle alırsın.

Cap 8 satır. Sekizden fazla efekt varsa (theoretical edge case — yine de hazırız) en uzun kalanlar görünmez. Bir kart 16px yüksek, 2px gap, toplam yaklaşık 142px ekran alanı tüketir.

Konum ve kapatma

Default konum MIDDLE_RIGHT anchor, ofset 6/0 — sağ kenardan 6px içeride, dikey ortada. Yer beğenmediysen Ctrl+Y → PotionEffectHUD seç → sürükle. Ölçekle ve ofsetle istediğin yere taşı.

Vanilla'nın icon strip'i de çalışmaya devam ediyor — bu HUD üstüne ek bir katman. Vanilla'yı tercih ediyorsan PotionEffectHUD'u Ctrl+Y üzerinden kapat (ID: potion_effects). HUD config (config/mezarclient/hud.json) bunu hatırlar, her oyun açılışında otomatik uygular.

Performans

Per-frame allocation-free contract: bir adet ArrayList<StatusEffectInstance> ve bir StringBuilder field olarak tutulur, her frame'de clear() + addAll(). GC pressure sıfır. Master HUD off ise (Y tuşu) hiç render olmaz, F1 (vanilla hide-HUD) toggle edildiğinde de sessizleşir.

Sıradaki

  • Aktif efekt iconography — sadece kategori dot yerine vanilla potion ikonunu da sol tarafa basabiliriz (cache'li atlas)
  • Bekleyen efektler için negatif süre uyarısı — örneğin "Zehirlenmek üzere" tahmini
  • Filter UI — sadece HARMFUL'leri göster, BENEFICIAL'i gizle (PvP-focused setup)
  • Per-efekt kapatma — bazı efektleri görmemeyi seç (örneğin Saturation spam'ini gizle)

Lansmana 27 gün. PvP, beacon, brewing — hepsi için hazırız.


Geri bildirim: Discord #yardim kanalı discord.gg/mezarmc