Przepisanie skryptu na plugin

Pytania i problemy
java, bukkit
szymhal
szymhal
9 lat temu

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
9 lat temu

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
9 lat temu

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
9 lat temu

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
9 lat temu

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

system
system
5 lat temu

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