Przepisanie skryptu na plugin

Pytania i problemy
java, bukkit
szymhal
szymhal

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
Timo Moderator forum.lvlup.pro

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
szymhal

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
luxDev Pionier

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/Protocol_version_numbers każda wersja mc ma swój własny numer protokołu.

anon10657637
anon10657637

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

system
system

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