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

[Problem] Java Timer i Scheduler.


Rekomendowane odpowiedzi

Opublikowano

Chce żeby co "x" sekund, robiło reload tabliczki z online graczami,za dobre odpowiedzi plus : )
Kod:
 

package pl.skyblock;

import org.bukkit.Bukkit;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.SignChangeEvent;
import org.bukkit.plugin.java.JavaPlugin;

public class SignOnline implements Listener {

	private JavaPlugin plugin;
	
	public SignOnline(JavaPlugin plugin) {
		this.plugin = plugin;
	}
	
	@EventHandler
	public void onSignChange(final SignChangeEvent e) {
		if (e.getLine(0).equals("Online")){
			int max1 = Bukkit.getMaxPlayers();
			final String max = max1 + "";
			int online1 = Bukkit.getOnlinePlayers().length;
			final String online = online1 + "";
			plugin.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() {
				@Override
				public void run() {
					e.setLine(2, "§a" + online + " / " + max);
					Bukkit.broadcastMessage("Reload sign!");	
				}
				
			}, 0L, 100L);
		}
	}

}

Opublikowano

Wgrałeś jakiś plugin na inna wersje i dlatego tak jest :)

zrób server od początku tylko skopiuj sobie folder world a plugins od początku powgrywaj

67pojo.png

Opublikowano

Wgrałeś jakiś plugin na inna wersje i dlatego tak jest :)

zrób server od początku tylko skopiuj sobie folder world a plugins od początku powgrywaj

Kurna najpierw czytaj później pisz -.- Nabijacz postów 

@topic 

Wykorzystaj schedulery.

Opublikowano

pobierz znak/blok z eventu, i na nim wykonaj schuldera, nie na samym evencie.

 

Po 2... użyj runTaskTimer

 

po 3 i najważniejsze... graczy online też musisz pobierać w tym tasku...

 

po 4... nie rób schuldera w tym samym miejscu co kładzenie znaku, bo jakiś inny plugin lub sam bukkit może potem wywołać ten event ponownie na tym samym znaku... i będziesz miał 2 taski. (możesz też zapisywac lokacje, isprawdzać przed zarejestrowaniem tasku czy może już takiego nie ma :P)

 

po 5... musisz sobie zapisywać lokacje tych bloków po bo wyłączeniu servera wszystko ustanie, więc musisz w onEnable wczytać te zapisane lokacje i od nowa ustawić taski

 

 

I wtedy powinno śmigać

 

 

EDIT:

po 6, musisz pilnować czy ktoś nie rozwali tego znaku i wtedy anulować taska (musisz do tego zapisać jego ID)

 

 

EDIT2:

 

Po 7... idz na bukkit.pl bo tutaj nigdy nie dostaniesz sensownej ODP w pisaniu pluginów, co już udowodniły powyższe nupy :P

To już jest koniec smerfa:


http://www.mpcforum.pl/topic/1323530-info-znikam/


GG: 48522543


PS: Na innych forach i stronach znajdziesz mnie pod nickiem: 


BukkitSmerf

Opublikowano

@Karolina_666

Dziękuję Pani (chyba) :P 

Ale może jakiś przykład ?,jak nie to google nie boli i poszukam Sobie. :)

za dużo pisania :>

Po prostu pomyśl jak to zrobić, nic trudnego.

 

główny problem był z tym pobieraniem graczy online, robiłeś to przed taskiem więc zawsze wynosiło tyle samo

To już jest koniec smerfa:


http://www.mpcforum.pl/topic/1323530-info-znikam/


GG: 48522543


PS: Na innych forach i stronach znajdziesz mnie pod nickiem: 


BukkitSmerf

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...