Sol Reklam

Rehber Hippo - Skriptteki son nokta (Bölüm 1: Temel Bilgiler)

Durum
Mesaj gönderimine kapalı.

erenkara

Birisi mi Spawnlandı?

Discord:

erenkarakal

Katılım
2 Şubat 2022
Mesajlar
9
Elmaslar
13
Puanlar
895
Yer
Ankara
Minecraft
autist_
Hepinize merhabalar, bugün Hippo eklentisi hakkında konuşacağım. Bu eklentiyi yapan kişi aynı zamanda SkPapi ve Fancy Workbenchi yaptı, büyük ihtimalle oradan tanırsınız.
Hippo eklentisi sayesinde skriptin içinde java classları compile edebiliyoruz.

Gereksinimler
Skript 2.6+
skript-reflect 2.2.3+
Yüksek java bilgisi

Hippo eklentisini indirip plugins dosyamıza koyarak başlayabiliriz.

hippobanner.png


Preimport
Hippo eklentisi hakkında öğrenmeniz gereken ilk şey preimport sistemidir. Hippo ile daha oluşturulmamış classları importlayacağımız için preimport kullanmamız gerekir.
örnek:
Kod:
preimport:
    org.blub.Blub
    org.blub.Bleb as MyBleb

Class Oluşturmak
Javadaki gibi public, private, protected, final, static, abstract, transient, synchronized, volatile, native, strictfp ve default modifierları kullanabilirsiniz. Default modifierı Hippo tarafından eklendi ve package-protected yetki için kullanılabilir.

Class Türleri
class, interface, record, enum ve annotation

örnek:
Kod:
preimport:
    org.blub.Blub
    org.blub.Bleb

public skript class org.blub.Blub:
public skript class org.blub.Bleb:

Static Blok
Static bloğun içindeki kod class başlatıldığında çalışan kodtur. Javadakiyle aynı şekilde çalışır.
örnek:
Kod:
preimport:
    org.blub.Blub

public skript class org.blub.Blub:
    static:
        broadcast "%Blub.class% exists!!"

on load:
    set {_blub} to new Blub()

Türler
Hippoda boolean, char, byte, short, int, float, long, double ve void kullanabilirsiniz. Hepsi javadakiyle aynı şekilde çalışır.
Tek karakterler için Hippo "character" adında yeni bir tür ekler, örneğin 'A' yazarak kullanabilirsiniz.
Array oluşturmak için herhangi bir türün sonuna [] ekleyebilirsiniz. Multi-dimensional array için [][] ekleyebilirsiniz. (int[], Integer[], Integer[][] gibi)

örnek:
Kod:
import:
    java.lang.Integer
    java.lang.String

preimport:
    org.blub.Blub

public skript class org.blub.Blub:
    public String name = "Blub"
    protected char blubSymbol = 'B'
    public and static Integer[] IDs

on load:
    set {_name} to new Blub().name
    broadcast "%{_name}%"

Methodlar
Aynı javadaki gibi methodların modifierları, ismi ve türünü belirtmeniz gerekir. İsterseniz methodlar için argümanlar ekleyebilirsiniz. Bir argümanı kod içinde kullanmak için aynı komutlardaki gibi arg-1 expressionunu kullanabilirsiniz.
Eğer bir methodta şuanki objeyi referans etmek istiyorsanız "this" expressionunu kullanabilirsiniz. Static methodlarda kullanılamaz.
Eğer bir methodun birşey geri döndürmesini istiyorsanız "return" kullanabilirsiniz.

örnek:
Kod:
import:
    java.lang.Integer
    java.lang.String

preimport:
    org.blub.Blub

public skript class org.blub.Blub:
    private String name = "Blub"
    private and static Integer size = 10

    public String getName():
        return this.name

    public and static void setSize(Integer size):
        set Blub.size to arg-1

on load:
    set {_blub} to new Blub()
    broadcast join "Name: " and {_blub}.getName()
    Blub.setSize(20)

Constructor
Temel bilgilerde son olarak constructorler var. Her bir constructorün modifierı olması gerekli ve isteğe bağlı parametreleri olabilir.

örnek:
Kod:
import:
    java.lang.String

preimport:
    org.blub.Blub

public skript class org.blub.Blub:
    private String name
  
    public Blub(String name) super():
        postinit:
            set this.name to arg-1 ? "Blub"
  
    public String getName():
        return this.name

on load:
    set {_blub} to new Blub("Blob")
    broadcast join "Name: " and {_blub}.getName()
 

Admin OUa:

Hâlâ Zümrüt Bulamadım!

Discord:

MrMistry#5436

Katılım
13 Ocak 2021
Mesajlar
669
Elmaslar
208
Puanlar
5.505
Yaş
22
Yer
Şanlı Urfa - Viranşehir
Minecraft
LifeLesS
şimdii normal import vb arasındaki farkı tam anlamadım acıklarmısın?
 

Pocan

¡Ándale! ¡Ándale!

Discord:

Pocan#4406

Katılım
22 Mayıs 2019
Mesajlar
327
Elmaslar
178
Puanlar
7.075
Yer
Ev
Minecraft
Pocan

erenkara

Birisi mi Spawnlandı?

Discord:

erenkarakal

Katılım
2 Şubat 2022
Mesajlar
9
Elmaslar
13
Puanlar
895
Yer
Ankara
Minecraft
autist_
şimdii normal import vb arasındaki farkı tam anlamadım acıklarmısın?
preimport daha oluşturulmamış classlar için kullanılıyor, yukarda örnekte olduğu gibi önce preimport yapıyoruz ondan sonra classı oluşturuyoruz
normal importla mümkün olmazdı
 
Durum
Mesaj gönderimine kapalı.
Neden altınlarını Discord sunucumuzda kazmıyorsun? TIKLA VE KATIL!
Yukarı