Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Metoda w autorskim pluginie nie działa


Rekomendowane odpowiedzi

Opublikowano

Kawałek kodu ma kickować gracza gdy ten wejdzie na serwer pierwszy raz. NIE DZIAŁA! W konsoli nie ma żadnych błędów, po prostu nic się nie dzieje.

public boolean kick(String player, String message, UUID UUID, String IP){
if(Bukkit.getPlayer(player) == null){
return false;
}
Bukkit.getPlayer(player).kickPlayer(ChatColor.translateAlternateColorCodes('&', message));
message.split("\n");
return true;
}


public void onJoin(PlayerJoinEvent e){
String name = e.getPlayer().getName();
UUID uid = e.getPlayer().getUniqueId();
String ip = e.getPlayer().getAddress().getAddress().toString().replaceAll("/", "");
String msg = "&2&lTwoje konto zostalo stworzone. Wjedz jeszcze raz!\n\n&c&lTwoje UUID:\n&6&l" + uid + "\n\n&c&lTwoje IP:\n\n&6&l" + ip;
if(!(e.getPlayer().hasPlayedBefore())){
this.kick(name, msg , uid, ip);
}
}

 

Opublikowano

Kawałek kodu ma kickować gracza gdy ten wejdzie na serwer pierwszy raz. NIE DZIAŁA! W konsoli nie ma żadnych błędów, po prostu nic się nie dzieje.

 

public boolean kick(String player, String message, UUID UUID, String IP){
if(Bukkit.getPlayer(player) == null){
return false;
}
Bukkit.getPlayer(player).kickPlayer(ChatColor.translateAlternateColorCodes('&', message));
message.split("\n");
return true;
}


public void onJoin(PlayerJoinEvent e){
String name = e.getPlayer().getName();
UUID uid = e.getPlayer().getUniqueId();
String ip = e.getPlayer().getAddress().getAddress().toString().replaceAll("/", "");
String msg = "&2&lTwoje konto zostalo stworzone. Wjedz jeszcze raz!\n\n&c&lTwoje UUID:\n&6&l" + uid + "\n\n&c&lTwoje IP:\n\n&6&l" + ip;
if(!(e.getPlayer().hasPlayedBefore())){
this.kick(name, msg , uid, ip);
}
}

Takie info, przeczytaj co robi "replaceAll" bo chyba nie wiesz, użyj tutaj zwyklego replace.

 

A co do kodu, klasa w ktorej jest listener eventu musi implementować interface Listener, a metody z eventem posiadać adnotacje @EventHandler

 

I nie wykonuj 

Bukkit.getPlayer(player)

kilka razy, tylko obciążasz serwer, tak samo metoda kick może jako argument brać od razu gracza, i wtedy z eventu przekazywać tam gracza a nie jego nick.

1438614356923701010629.png

 

Opublikowano

@GotoFinal Dalej nie działa. :(

public class Main extends JavaPlugin implements Listener {

	@Override
	public void onEnable(){
		System.out.println("Uruchamianie...");
	}

	@Override
	public void onDisable(){
		System.out.println("Wylaczanie...");
	}
	
	public boolean kick(Player player, String message, UUID UUID, String IP){
		Bukkit.getPlayer(player.getName()).kickPlayer(ChatColor.translateAlternateColorCodes('&', message));
		message.split("\n");
		return true;
	}
	
	@EventHandler
	public void onJoin(PlayerJoinEvent e){
		if(Bukkit.getPlayer(e.getPlayer().getName()) != null){
			UUID uid = e.getPlayer().getUniqueId();
			String ip = e.getPlayer().getAddress().getAddress().toString().replace("/", "");
			String msg = "&2&lTwoje konto zostalo stworzone. Wjedz jeszcze raz!\n\n&c&lTwoje UUID:\n&6&l" + uid + "\n\n&c&lTwoje IP:\n\n&6&l" + ip;
			if(!(e.getPlayer().hasPlayedBefore())){
				this.kick(e.getPlayer(), msg , uid, ip);
			}
		}
	}
Opublikowano

 

@GotoFinal Dalej nie działa. :(

public class Main extends JavaPlugin implements Listener {

	@Override
	public void onEnable(){
		System.out.println("Uruchamianie...");
	}

	@Override
	public void onDisable(){
		System.out.println("Wylaczanie...");
	}
	
	public boolean kick(Player player, String message, UUID UUID, String IP){
		Bukkit.getPlayer(player.getName()).kickPlayer(ChatColor.translateAlternateColorCodes('&', message));
		message.split("\n");
		return true;
	}
	
	@EventHandler
	public void onJoin(PlayerJoinEvent e){
		if(Bukkit.getPlayer(e.getPlayer().getName()) != null){
			UUID uid = e.getPlayer().getUniqueId();
			String ip = e.getPlayer().getAddress().getAddress().toString().replace("/", "");
			String msg = "&2&lTwoje konto zostalo stworzone. Wjedz jeszcze raz!\n\n&c&lTwoje UUID:\n&6&l" + uid + "\n\n&c&lTwoje IP:\n\n&6&l" + ip;
			if(!(e.getPlayer().hasPlayedBefore())){
				this.kick(e.getPlayer(), msg , uid, ip);
			}
		}
	}

możesz mi wyjaśnić jaki sens ma ten kod?

Bukkit.getPlayer(player.getName())

?

Przecież "player" to właśnie instancja gracza której potrzebujesz, więc to jest zbędne, od razu robisz player.kick

	@EventHandler
	public void onJoin(PlayerJoinEvent e){
		if(Bukkit.getPlayer(e.getPlayer().getName()) != null){

tu nie dośc że tak samo, to gracz z eventu Join NIGDY nie będzie nullem, cały ten if jest zbędny.

message.split("\n");

to nic nie robi, w sensie to zwraca String[] z już podzielonym stringiem na części, ale ty nic z tą zwracaną wartością nie robisz, ta metoda (i żadna inna) na wpływa na oryginalnego stringa.

 

 

 

Ok, a co do błędu, musisz też zarejestrować tego listenera,

Bukkit.getPluginManager().registerEvents(listener, plugin);

w onEnable, w twoim przypadku, plugin to ta sama klasa w której jesteś, czyli zastępujesz to słówkiem "this", listener to też ta sama klasa, czyli też "this", czyli argumenty to 2x this

1438614356923701010629.png

 

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...