Przepisanie skryptu na plugin

szymhal | 2021-02-17 10:26:05 UTC | #1

Siema,
napisałem skrypt, ale chciałbym aby to był plugin, lecz nie wiem paru rzeczy, typu jak pobrać ping z gracza, jak pobrać jego wersje (wiem tyle, że serwer nam zwraca wersje protokołów, a potem trzeba to zamienić na wersję).

Skrypt: https://code.skript.pl/oveN50Mj/

Jak ktoś coś zrobi, to chętnie przytulę :slight_smile:
Z góry dzięki.


Timo | 2017-04-19 10:45:56 UTC | #2

Jeśli chcesz plugin to napisz plugin, jak skrypt to skrypt.
Chyba chodzi ci o to: https://www.spigotmc.org/resources/free-skript-ping.8734/
A co do wersji to w skripcie chyba tego nie dostaniesz. Zainstaluj po prostu plugin z internetu który to pokazuje.
EDIT: Da się, ale po co ci to w pluginie skoro napisałeś w skripcie?


szymhal | 2017-04-19 10:52:27 UTC | #3

Skript to skript, a plugin to plugin.
Plugin jest bardziej zoptymalizowany, mniej laguje, a skript zawsze jest mniej optymalny.

Ten skrypt działał, ale potrzebował dwa dodatki, a jak napisze się plugin, to max. jeden plugin(dodatek) typu ProtocolLib.
Po prostu zależy mi na pluginie.


luxDev | 2017-04-19 14:25:01 UTC | #4

Metoda od sprawdzania pingu:

public int getPing() {
    int ping = 0;
    try {
        Class<?> craftPlayer = ReflectionUtils.getBukkitClass("entity.CraftPlayer");
        Object cp = craftPlayer.cast(Bukkit.getPlayer(this.name));
        Object handle = craftPlayer.getMethod("getHandle", new Class[0]).invoke(cp, new Object[0]);
        ping = ((Integer) handle.getClass().getField("ping").get(handle)).intValue();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return ping;
}

Metoda z ReflctionUtils:

public static Class<?> getBukkitClass(String name){
    String className = "org.bukkit.craftbukkit." + ver() + "." + name;
    Class<?> c = null;
    try{
        c = Class.forName(className);
    }
    catch (Exception e){
        e.printStackTrace();
    }
    return c;
}

Co do wersji:

public int getVersion(){
    Player p = Bukkit.getPlayer(this.name);
    int i = ((CraftPlayer) p).getHandle().playerConnection.networkManager.getVersion();
    return i;
}

Również zapraszam cię tutaj: http://wiki.vg/Protocolversionnumbers każda wersja mc ma swój własny numer protokołu.


anon10657637 | 2017-04-21 22:33:51 UTC | #5

Czemu w jednym rozwiazaniu stosujesz refleksje, a w drugim nie? Toc to przy drugim kodzie musi kompilowac indywidualnie na kazda wersje silnika.


system | 2021-02-17 10:26:24 UTC | #6

Ten temat został automatycznie zamknięty 32 dni po ostatnim wpisie. Tworzenie nowych odpowiedzi nie jest już możliwe.