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

Rekomendowane odpowiedzi

Opublikowano

Witam, ostatnio zacząłem się bawić pisaniem pluginów używając config.yml. Chciałem zrobić w tym configu zapisywanie zgłoszeń graczy (kolejno numerowane aby dało się do nich odnieść numerowo - 1,2,3). Mniej więcej miało by to wyglądać tak:
 

1:
	Gracz:1
		Zgłoszenie: "Text"
2:
	Gracz2:
		Zgłoszenie: "Text"
3:
	Gracz3:
		Zgłoszenie: "Text"

Jednak nie wiem jak zrobić argument który pozwoli mi osiągnąć pusty numer z listy (1,2,3) - w sensie jeśli nie było by 2 (zgłoszenie te byłoby rozpatrzone i usunięte) to właśnie tam jako brak pola miałoby wpisać się kolejne zgłoszenie. Prosiłbym o pomoc, jeśli chodzi o cel to jest to wymyślona przeze mnie droga - jeśli ktoś zrobiłby to inaczej to prosiłbym o poprowadzenie😛 Od niedawna piszę w config.yml i chciałbym jak najlepiej zrozumieć możliwości 😛 Idąc moim tokiem myślenia oczywiście wiem że argument powinien być w pętli.

  • AlexsanderARG zmienił(a) tytuł na Potrzebuje pomocy z własnym pluginem
Opublikowano

Zacząłbym od napisania klasy Zgłoszenie, potem zapisywanie zgłoszeń do Listy, a jeżeli nie zostaną odczytane ( odczytanie domyślnie usuwałoby zgłoszenie z listy ) zostaną zapisane do pliku przy restarcie/wyłączeniu serwera, ewentualnie funkcja zapisująca wszystkie zgłoszenia do pliku za każdym wystawieniem nowego. Najprostsze rozwiązanie. Wtenczas do pliku by się zapisywało i od razu zmieniało samo ID, w stylu:

REPORTS:
	1:
		from: 'Ja'
		accused: 'On'
		date: '01.01.2020'
		reason: 'Bad words'
	2:
		from: 'Ja3'
		accused: 'On1'
		date: '01.02.2020'
		reason: 'Cheats'

 

Opublikowano

Dalej jednak nie wiem co mam zrobić - ja się uczę na przykładach więc łatwiej byłoby mi wzorować się na jakimś kodzie - mógłbyś coś takiego tutaj napisać na szybko?

 

Opublikowano
Dnia 13.07.2020 o 10:35, Trovst_eu napisał:

Znasz jave?

Tak znam, tyle ile potrzebuję aby pisać w bukkit - jednak jak bym miał z czymś problem mam pobrane poradniki chyba do wszystkiego więc takie pytania proszę nie zadawać bo mnie osobiście strasznie denerwuje jak ktoś potrzebuję pomocy i zaraz ktoś wyjdzie z pytaniem "znasz jave" 
 

 

Dnia 13.07.2020 o 10:53, Lumenowaty napisał:

Kod klasy Report:

https://hastebin.com/ixibanawuh.java

 

Umiałbyś utworzyć klasę trzymającą w Liście nowe ( nieotworzone ) zgłoszenia?

Nie do końca, twój styl pisania jest już zapewne zaawansowany - ja jednak piszę trochę bardziej na logikę typowo swoją - chociaż nie pogardzę jeśli masz jakieś TIP'y do tworzenia właśnie w takiej zaawansowanej formie pluginów. Głównie używam do tworzenia czegoś "void" oraz komend (ponieważ często po prostu to wystarczy żeby dojść do efektu który bym chciał). 
Jednak w skrócie - nie, nie potrafię 

Opublikowano
55 minut temu, kubaw208 napisał:

Tak znam, tyle ile potrzebuję aby pisać w bukkit - jednak jak bym miał z czymś problem mam pobrane poradniki chyba do wszystkiego więc takie pytania proszę nie zadawać bo mnie osobiście strasznie denerwuje jak ktoś potrzebuję pomocy i zaraz ktoś wyjdzie z pytaniem "znasz jave" 
 

 

Nie do końca, twój styl pisania jest już zapewne zaawansowany - ja jednak piszę trochę bardziej na logikę typowo swoją - chociaż nie pogardzę jeśli masz jakieś TIP'y do tworzenia właśnie w takiej zaawansowanej formie pluginów. Głównie używam do tworzenia czegoś "void" oraz komend (ponieważ często po prostu to wystarczy żeby dojść do efektu który bym chciał). 
Jednak w skrócie - nie, nie potrafię 

Język java jest językiem obiektowym i tak też powinno się w niej pisać, Najprościej mówiąc odwzorowujesz 'obiekt' z życia realnego i wszystkie jego cechy i właściwości w kodzie.

Na przykładzie klasy Report napisanej przez @Lumenowaty
 

Zgłoszenie przyjmuje takie właściwości jak data, powód, osoba oskarżona oraz osoba, która wysłała zgłoszenie
i odpowiednie do tego metody, jak ustawienie powodu, pobranie poszczególnych danych etc.
 

Mam nadzieję, że teraz będzie to dla ciebie zrozumiałe.

A co do kodu @Lumenowaty to zamiast string'a z senderem lepiej przechować sam obiekt sender'a i date też lepiej nie trzymać w stringu, są do tego typy odpowiednie, ale rozumiem że to tylko przykład.

Opublikowano

Dzięki za rozjaśnienie na jakiej zasadzie to działa - jednak umiejąc to napisać nie za bardzo wiem jak miałbym się od tego odwoływać - mógłbyś/kto kolwiek inny jeszcze wprowadzić mnie trochę bardziej praktycznie do tego? Jakiś byle jaki kod, choćby na te zgłoszenia w szybkim  użyciu. Myślę też że się lekko jeszcze gubię w tym z tego powodu że nie znam dokładnie kolejności działania - trochę mnie to przerasta - mógłby ktoś jeszcze parę słów powiedzieć o tym? Przykład:

     public String getReason() {
         return reason;
     }

Nie wiem dlaczego piszemy return reason;   - wiem że reason to zapewne ten private String reason; jednak nie rozumiem działania tego

Opublikowano
Dnia 15.07.2020 o 16:51, kubaw208 napisał:

Dzięki za rozjaśnienie na jakiej zasadzie to działa - jednak umiejąc to napisać nie za bardzo wiem jak miałbym się od tego odwoływać - mógłbyś/kto kolwiek inny jeszcze wprowadzić mnie trochę bardziej praktycznie do tego? Jakiś byle jaki kod, choćby na te zgłoszenia w szybkim  użyciu. Myślę też że się lekko jeszcze gubię w tym z tego powodu że nie znam dokładnie kolejności działania - trochę mnie to przerasta - mógłby ktoś jeszcze parę słów powiedzieć o tym? Przykład:


     public String getReason() {
         return reason;
     }

Nie wiem dlaczego piszemy return reason;   - wiem że reason to zapewne ten private String reason; jednak nie rozumiem działania tego

Modyfikator private ogarnicza ci dostęp do tego pola klasy tylko dla niej samej, inne klasy nie mogą się do tego odwołać, a potrzebujesz czasem pobrać jakieś dane ze zgłoszeń np jak tutaj getReason() zwraca powód zgłoszenia.

Myśl o tym jak o np samochodzie, zastanów się co na pierwszy rzut oka widać i jakie taki samochód zrobić.
Po prostu odwzorowujesz obiekty z życia realnego wraz z jego cechami i właściwościami.

 

I w przykładzie powinno być tak:

     public String getReason() {
         return this.reason;
     }

Ponieważ odwołujesz się do pola tej konkretnej klasy, a nie do zmiennej lokalnej, czy parametru, stąd słówko this.
 

Opublikowano

Dzięki, dalej jednak mam pewne pytania - nie wszystko mi się układa. Tak jak rozumiem, mam odwoływać się po przez te rzeczy jeśli chciałbym otrzymać wynik (np. pisząc do gracza już pełny "reason" musiałbym zrobić komendę, ..., sendMessage(""+reason) - tak?):

private final 

String sender;

private String reason; 

private String accused; 

private String date;

Jeśli tak to powiedz mi, co tak właściwie daje mi ta linijka - nie umiem ją pojąć - dla mnie ona nie ma celu jakiegokolwiek. W jaki sposób będzie mi przydatny ten kod? (ten poniżej oczywiście):

     public String getReason() {
         return this.reason;
     }

Tutaj przychodzi moje stare myślenie - zrobił bym String reason;   następnie zrobił bym komendę i tak naprawdę w niej tylko ustawił reason = "XXX"; i napisał graczowi. Niema tutaj ani grama tego drugiego kodu, dlatego nie jestem w stanie zrozumieć co on tak właściwie robi.

Opublikowano
8 minut temu, kubaw208 napisał:

Dzięki, dalej jednak mam pewne pytania - nie wszystko mi się układa. Tak jak rozumiem, mam odwoływać się po przez te rzeczy jeśli chciałbym otrzymać wynik (np. pisząc do gracza już pełny "reason" musiałbym zrobić komendę, ..., sendMessage(""+reason) - tak?):


private final 

String sender;

private String reason; 

private String accused; 

private String date;

Jeśli tak to powiedz mi, co tak właściwie daje mi ta linijka - nie umiem ją pojąć - dla mnie ona nie ma celu jakiegokolwiek. W jaki sposób będzie mi przydatny ten kod? (ten poniżej oczywiście):


     public String getReason() {
         return this.reason;
     }

Tutaj przychodzi moje stare myślenie - zrobił bym String reason;   następnie zrobił bym komendę i tak naprawdę w niej tylko ustawił reason = "XXX"; i napisał graczowi. Dlatego pewnie też nie potrafię do końca pojąć tego... obiektu, tak?

Ta linijka będzie tobie potrzebna jakbyś potrzebował gdzieś w kodzie dostać się do powodu konkretnego zgłoszenia itp.
No ale po co ci ta komenda jak komende potrzebujesz tylko do utworzenia zgłoszenia,

Zapoznaj się z tym: https://javastart.pl/baza-wiedzy/programowanie-obiektowe
Może po tym ci się bardziej to rozjaśni.

Opublikowano

Dzięki, rzeczywiście mi się o wiele bardziej wszystko rozjaśniło 😄 Tematu jak na razie nie zamykam ponieważ chciałbym ewentualne pytania 

Nie sądziłem że pierwsze pytanie tak szybko przyjdzie, jednak od dłuższego czasu nie mogę swojego "Package" nazwać "package".

image.png

Zna ktoś rozwiązanie tego problemu?

 

Drugie pytanie dotyczy porad o bardziej obiektowym pisaniu - otóż w Eclipse wszystko mi działa jednak nie mogłem tam używać przycisku "run" kodu - postanowiłem więc zainstalować Apache NetBeans jednak tu pojawia się problem następujący: wpisując ten sam kod jak w Eclipse wywala mi błąd.spacer.pngjavapytanie.png

Edit: Znalazłem rozwiązanie na drugie pytanie, jednak zostawiam je tutaj aby poznać dokładniejszą odpowiedź dlaczego nie działa to w tej klasie statycznej.

Opublikowano

Hej, nie brakuje mi klamry ponieważ dałem ją linijkę niżej - co do Intellij IDEA - zainstalowałem i chętnie zobaczę jak się sprawdzi

Opublikowano
22 godziny temu, kubaw208 napisał:

Dzięki, rzeczywiście mi się o wiele bardziej wszystko rozjaśniło 😄 Tematu jak na razie nie zamykam ponieważ chciałbym ewentualne pytania 

Nie sądziłem że pierwsze pytanie tak szybko przyjdzie, jednak od dłuższego czasu nie mogę swojego "Package" nazwać "package".

image.png

Zna ktoś rozwiązanie tego problemu?

 

Drugie pytanie dotyczy porad o bardziej obiektowym pisaniu - otóż w Eclipse wszystko mi działa jednak nie mogłem tam używać przycisku "run" kodu - postanowiłem więc zainstalować Apache NetBeans jednak tu pojawia się problem następujący: wpisując ten sam kod jak w Eclipse wywala mi błąd.spacer.pngjavapytanie.png

Edit: Znalazłem rozwiązanie na drugie pytanie, jednak zostawiam je tutaj aby poznać dokładniejszą odpowiedź dlaczego nie działa to w tej klasie statycznej.

Wyrzuć metode 'test" poza main'a. "illegal start of expression". To jest przyczyną twojego błędu.

Opublikowano

Ja wiem co jest przyczyną ale miałem nadzieję że ktoś mi wyjaśni dlaczego to jest przyczyną błędu gdy to robię.

Opublikowano

Mam kolejne pytanie - czy tworząc... nie znam nazewnictwa - po prostu dam kod:

        Objects obj1 = new Objects("powód 1", "Gracz 1", "Data 1");
        Objects obj2 = new Objects("powód 2", "Gracz 2", "Data 2");

Czy da się w jakiś sposób zliczać ile takich objektów tworzę? Przykład ten to jest np. zliczanie ilość zgłoszeń.

Sobie na tym przykładzie jak na razie się bawię i chciałbym się dowiedzieć jak to zliczyć.

Opublikowano
Przed chwilą, wiv napisał:

Możesz dodać wszystkie obiekty do ArrayListy i użyć metody size()

 

Przykład:


// tworzenie pustej ArrayListy o typie Objects
ArrayList<Objects> objects = new ArrayList<Objects>();
 
// tworzenie nowych obiektów
Objects obj1 = new Objects("powód 1", "Gracz 1", "Data 1");
Objects obj2 = new Objects("powód 2", "Gracz 2", "Data 2");
  
// dodawanie obiektów do listy
objects.add(obj1);
objects.add(obj2);
  
// sprawdzanie wielkości listy
objects.size(); // zwróci 2

 

Dzięki, jednak ja miałem na myśli raczej jakieś rozwiązanie które pozwoliłoby pominąć dopisywanie kodu w przypadku kolejnych zgłoszeń. Coś co działałoby automatycznie przy kolejnym zgłoszeniu

Opublikowano

W drugiej klasie aktualnie zrobiłem takie coś:

Spoiler


package Package;

public class Objects {
    
    private String reason;
    private String data;
    private String Zgloszony;
    private int liczbaZgloszen;
    
    
    public Objects(String reason, String data, String Zgloszony)
    {
        this.reason = reason;
        this.data = data;
        this.Zgloszony = Zgloszony;
    }
    
    
    public int LiczbaZglozen()
    {
        return liczbaZgloszen;
    }

    
    public String getReason()
    {
        return reason;
    }
    
    public void setReason(String reason)
    {
        this.reason = reason;
    }
    
    public String getData()
    {
        return data;
    }
    
    public void setData(String data)
    {
        this.data = data;
    }
        
    public String getZgloszony()
    {
        return Zgloszony;
    }
    
    public void setZgloszony(String Zgloszony)
    {
        this.Zgloszony = Zgloszony; 
    }
            
    
}

 

Jednak nie za bardzo wiem dalej jak mam to dodać - jakieś sugestie? Mam pustkę w głowię 

Opublikowano

Aktualnie pisze w zwykłej javie, nie w bukkicie - co do rady, dzięki - jednak czy w zwyklej javie jest ArrayList?

Opublikowano

BukkitAPI którego używasz, jak sama nazwa wskazuje jest tylko API ( ang. application programming interface ). Programujesz używając języka Java, możesz używać wszystkiego ( prawie ) co ona oferuje.

Dlatego nie programujesz w Bukkit, a jedynie programujesz w Javie używając API Bukkita.

 

Jeżeli chcesz dowiedzieć się więcej o projektowaniu obiektowym, polecam książkę: "Myślenie obiektowe w programowaniu" autorstwa Matta Weisfelda

Opublikowano

Teraz pytanie z innej beczki (nie chcę tworzyć nowego tematu ponieważ umieszczając temat w odpowiednim temacie nikt tam nie zagląda i nie chcę pomagać).
image.png

Dodałem do Intellij IDEA projekt libGDX - zrobiłem wszystko jak w tym poradniku:

https://kursjava.com/tworzenie-gier/tworzenie-szkieletu-aplikacji-libgdx/#startTresci
aż do momentu odpalenia projektu - tak jak na screenie - wywala mi błąd. Wie ktoś co mam na to poradzić? (Nazwa generowania projektu itp. domyślnie napisane jak w libGDX).

Opublikowano
1 godzinę temu, wiv napisał:

Dodaj JDK do projktu i spróbuj. Masz nawet o tym komunikat na niebiesko.

W jaki sposób mam dodać JDK do projektu? Pobrałem Intellij IDEA dzisiaj, i tylko dlatego że na netbeans oraz na eclipse nie działało mi libGTX.

Opublikowano
22 minuty temu, wiv napisał:

Na niebieskim komunikacie po prawej stronie powinieneś mieć odnośnik do tego.

Mógłbyś wytumaczyć o jaki komunikat ci chodzi? Nic nie rozumiem, chodzi ci o komunikat w programie czy na podanej stronie - już się pogubiłem. Tak jak pisałem - dzisiaj pobrałem ten program, nie znam jego możliwe że dodatkowych albo gdzie indziej pokazywanych możliwości

Opublikowano

A jak uzyskać z powrotem te niebieskie okno z przyciskiem? Teraz już tego niemam, a błąd mam taki sam (w sumie dwa, zależnie jak próbuję odpalić program):
"Run":    Could not initialize class org.codehaus.groovy.classgen.Verifier

"Debug":   Could not initialize class org.codehaus.groovy.vmplugin.v7.Java7

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...