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] Błąd w własnym pluginie.


Rekomendowane odpowiedzi

Opublikowano

Uczę się pisać pluginy i mam taki problem: Piszę bardzo podstawowy plugin na życia. Nie działa mi zapisywanie int zycia. Gdy wpisuję /zycia to pisze że mam 51 żyć, a gdy ginę to się nie zmniejszają.

Jak by ktoś wiedział to proszę o pomoc, i mam jeszcze takie pytanie jak zapisywać życia w folderze data, w pliku tekstowym nazwanym nazwą gracza?

Tu macie kod:

 

 

 

int zycia = '3';
@EventHandler
    public void onDeath(EntityDeathEvent evt){
if (evt.getEntity() instanceof Player){
        zycia --;
           
}
}
@Override
public boolean onCommand(CommandSender sender, Command command, String commandLabel, String[]args) {
 
if(commandLabel.equalsIgnoreCase("zycia")){
if(sender instanceof Player){
sender.sendMessage(ChatColor.GREEN + "Twoje zycia: " + ChatColor.GOLD + zycia);
}
}
 
return false;
}
 
 
 
}
 
 
Nie śmiejcie się ale to mój pierwszy plugin :P

 

Opublikowano

rejestrujesz ten event?

I masz jedną zmienną "zycia" na cały plugin, więc każdy gracz będzie używał tego samego licznika...

Mógłbyś wytłumaczyć jak zarejestrować event, i jak zrobić oddzielną zmienną dla każdego gracza?

Przepraszam ale naprawdę tego nie ogarniam :/

 

Jeśli o rejestrację eventu chodzi Ci o odwołanie się do tego w Main to cały plugin jest w Main.

Opublikowano

najprościej użyć Mapek, gdzie dla kazdego klucza - np nicku gracza, zapisujesz jakąś wartośc - np te zycia.

 

Klasa z eventem musi implementować "Listener" i wtedy w onEnable używasz Bukkit.getPluginManager.registerEvents(listener, plugin) - jeśli jest to w głównej klasie możesz w obu polach dać "this" które odwołuje się do aktualnej instancji klasy w której jestes.

 

Co do mapek...

mapkę tworzymy np tak:

HashMap<String, Integer> zycia = new HashMap<>();

w <> podajemy typy jakie ma przyjmować - ułatwia to pisanie :)

Tutaj mamy String jako klucz, i Integer jako wartość

Dzięki czemu możemy potem używam metod takich jak:

zycia.put(klucz, wartość) np: zycia.put("nick", 3)

albo pobrać wartość za pomocą zycia.get(klucz)

 

Dla kazdego klucza moze być tylko 1 wartość, więc:

zycia.put("nick", 1);
zycia.put("nick", 2);

wsadzi "nick" z wartością 1, a potem zmieni tę wartość na 2

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

najprościej użyć Mapek, gdzie dla kazdego klucza - np nicku gracza, zapisujesz jakąś wartośc - np te zycia.

 

Klasa z eventem musi implementować "Listener" i wtedy w onEnable używasz Bukkit.getPluginManager.registerEvents(listener, plugin) - jeśli jest to w głównej klasie możesz w obu polach dać "this" które odwołuje się do aktualnej instancji klasy w której jestes.

 

Co do mapek...

mapkę tworzymy np tak:

HashMap<String, Integer> zycia = new HashMap<>();

w <> podajemy typy jakie ma przyjmować - ułatwia to pisanie :)

Tutaj mamy String jako klucz, i Integer jako wartość

Dzięki czemu możemy potem używam metod takich jak:

zycia.put(klucz, wartość) np: zycia.put("nick", 3)

albo pobrać wartość za pomocą zycia.get(klucz)

 

Dla kazdego klucza moze być tylko 1 wartość, więc:

zycia.put("nick", 1);
zycia.put("nick", 2);

wsadzi "nick" z wartością 1, a potem zmieni tę wartość na 2

Bardzo dziękuję za szybką i dobrą odpowiedz jeśli będę miał jeszcze jakieś problemy to do Ciebie napisze. ok? :D

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...