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

[Pytanie] Java/BukkitApi - Czekanie x sekund/minut/godzin.


Rekomendowane odpowiedzi

Opublikowano

Witam, chcę się spytać jak zrobić taki mini timer.

 

Powiedzmy jest kod:

 

Bukkit.broadcast("Wiadomosc pojawi sie za 5 sekund", "permisja");

#czeka 5 sekund

Bukkit.broadcast("wiadomosc", "permisja");

 

Hmm i jak to zrobić?

Bukkit.broadcast("Wiadomosc pojawi sie za 5 sekund", "permisja");

try {
Thread.sleep(5000);
Bukkit.broadcast("wiadomosc", "permisja");
} catch (InterruptedException e) {
e.printStackTrace();
}

Stopuje niestety to co jest przed i wykonuje po.

Opublikowano

Schedulerem.

 

Jeden ze sposobów: 

new BukkitRunnable(new Runnable() {
    @Override
    public void run() {
        Bukkit.broadcast("wiadomosc", "uprawnienie");
    }
}).runTaskLater();
Opublikowano

Tak jak kolega wyżej.

Jeśli zaczynasz z Pluginami to polecam Ci:

http://wiki.bukkit.org/Portal:Developers

Tu masz wszystko co Ci się na początek przyda. Np. znajdziesz tu dokładniejsze info o Schedulerze w sekcji: Scheduler API.

Jeśli masz jakiś problem z Plugin'em/Skryptem do MineCraft'a to pisz na PW/Skype/GG, lub inny komunikator podany w profilu. Pomagam za darmo.

Pracuję na zlecenia. Do stałej pracy bardzo ciężko mnie namówić. ^^

 

Przepiszę Skrypt na Plugin! W większości przypadków za darmo.

Opublikowano

Mam kolejne pytanie, otóż próbuje pobrać enchant z przedmiotu item, różnymi sposobami. Lecz jakoś nie wychodzi, za każdym razem wychodzi coś podobnego do tego: {Enchantment[18, DAMAGE_ARTHROPODS]=1}

Czyli item.getEnchantments(). Jak to zrobić poprawnie?

 

Tak samo z typem przedmiotu, jeśli mam drewno, to chce aby pisało jakie drewno, anie po prostu LOG. Używam item.getType()

Opublikowano

Mam kolejne pytanie, otóż próbuje pobrać enchant z przedmiotu item, różnymi sposobami. Lecz jakoś nie wychodzi, za każdym razem wychodzi coś podobnego do tego: {Enchantment[18, DAMAGE_ARTHROPODS]=1}

Czyli item.getEnchantments(). Jak to zrobić poprawnie?

 

Tak samo z typem przedmiotu, jeśli mam drewno, to chce aby pisało jakie drewno, anie po prostu LOG. Używam item.getType()

 

 

Co do enczantow to mozesz pobrac nazwe typu wyliczeniowego:

        for (Enchantment en : item.getEnchantments().keySet()) {
            
            Bukkit.getServer().broadcastMessage(en.toString());
            
        }

Jeśli chodzi o to drewno, to mozesz pobrac wartosc short z metody getDurability() która zwróci Ci jakie to drewno jest:

item.getDurability();
784091427630431250239.png


Regulamin sygnatur


Opublikowano

@GetFun A jeśli chodzi o każdy przedmiot? Np. przy diax swordzie pisze DIAMOND_SWORD, a raz zrobiłem tak, że pisało Diamond Sword, tak samo inne przedmioty, lecz nie pamiętam jak to zrobić ;P

Dodatkowo te enchanty wyglądają tak:

40381986176119376709.png

Chcę aby były w jednej linii i było przykładowo Sharpness I, albo Knockback I :P Jak to zrobić oto me pytanie ;d

Opublikowano

@GetFun A jeśli chodzi o każdy przedmiot? Np. przy diax swordzie pisze DIAMOND_SWORD, a raz zrobiłem tak, że pisało Diamond Sword, tak samo inne przedmioty, lecz nie pamiętam jak to zrobić ;P

Dodatkowo te enchanty wyglądają tak:

40381986176119376709.png

Chcę aby były w jednej linii i było przykładowo Sharpness I, albo Knockback I :P Jak to zrobić oto me pytanie ;d

 item.getEnchantments()

zwraca mapkę, gdzie klucz to Enchantment a wartość to jego poziom, możesz sobie dowolnie to pobierać lub wyświetlać, np

Map<Enchantment, Integer> enchs = item.getEnchantments();

i wtedy robisz co chcesz, polecam metodę .entrySet zwracający Set<Entry<K,V>> (K i V to typ klucza i wartości, czyli nasze Enchantment i Integer)

i wtedy można w pętli kolejno robić co się chce z każdym elementem, np :

List<String> data = new ArrayList<>(enchs.size());
for (fianl Entry<Enchantment, Integer> entry:enchs.entrySet())
{
    Enchantment ench = entry.getKey(); // enchant
    int lvl = entry.getValue(); // i jego poziom
    data.add(ench.name() + ": " + lvl);
}
Bukkit.broadcastMessage(StringUtils.join(data, ", "));

1438614356923701010629.png

 

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...