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

Jak dobrze pisać pluginy?


kubaw208

Rekomendowane odpowiedzi

Opublikowano

Witam, próbuję uczyć się javy, mam wykupiony kurs więc na starcie proszę nie pisać żebym uczył się od podstaw javy tak jak to umią niektórzy pisać pod każdym takim tematem. Chciałbym aby ktoś wytłumaczył mi co robi, do czego służą i jak można używać następujących rzeczy:
 

implements Runnable

public enum GameState
IN_LOBBY(true), IN_GAME(false), POST_GAME(false), RESETTING(false);

Ogólnie chciałbym zacząć zagłębiać się w pisanie pluginów na minigry, więc naprawdę nie pogardził bym jakimś poradnikiem jak układać ten cały schemat tworzenia tego. 

Opublikowano

Łatwiej będzie odpowiedzieć na pytanie skąd wziąłeś te wyrywki kodu, najlepiej żebyś dał cały.

"implements Runnable"  jest to interfejs, mówie głównie o tokenie implements, czym jest interfejs - najprościej mówiąc jest to szablon metod bez ich implementacji

 

Schemat tworzenia? tzn? Opisz bardziej o co ci chodzi. Nie potrafisz "złozyć" plugina aby zadziałał, czy jak?

Opublikowano

Nie wiem od czego zacząć, co powinienem umieć w tworzeniu - szedłem z angielskim poradnikiem, chciałem analizować rzeczy co chwila ale potem okazało się że po wpisaniu za nim jednej linijki dostałem tam błąd a on nie. Dlatego też stworzyłem ten temat - od czego zacząć tworzenie takiego plugina? Z tego co zauważyłem to nazwa klasy ma znaczenie, prawda? (Threads, ChatUtilties, itd.)

Opublikowano
class CommandKit implements CommandExecutor{

    @Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args){
      if(label.equalsIgnoreCase("hello")){
          sender.sendMessage("Hello" + sender.getName) 

          return true;
      }
      return false;
    }
}

public final class Hello extends JavaPlugin {
    @Override
    public void onEnable(){
        CommandKit cmd = new CommandKit();

        Objects.requireNonNull(this.getCommand("hello")).setExecutor(cmd);
    }
}

Tutaj jest jak napisać przykładową komende w minecrafcie.

 

Pokaż jaki błąd dostałeś to zobaczymy co się da tam zrobić. Tak nazwy klasy mają swoje znaczenie idziałanie, możesz znalezc to w dokumentacji silnika np tutaj https://hub.spigotmc.org/javadocs/spigot/overview-summary.html

Opublikowano

Jak tworzyć komendę wiem 😛 
 

package Package.listeners;

import org.bukkit.Bukkit;
import org.bukkit.event.EventHandler;
import org.bukkit.event.player.PlayerJoinEvent;

import Package.MainClass;
import Package.handlers.Game;

public class PlayerJoin extends MGListener {

	public PlayerJoin(MainClass pl) {
		super(pl);
	}

	
	@EventHandler
	public void onPlayerJoin(PlayerJoinEvent event)
	{
		Game.setCanStart(Bukkit.getOnlinePlayers().length >= 8);
	}
	
}

Błąd mam dokładnie w "Game.setCanStart(Bukkit.getOnlinePlayers().length >= 8);
(dokładnie podkreśla.length)
Jednak chyba lepszym pomysłem będzie podanie paru podstawowych klas może do robienia takiej minigry 😕 tutaj jak już pisałem przepisywałem kod w raz z angielskim filmem gdzie też wszystkiego nie rozumiałem.

  • Yaboku zmienił(a) tytuł na Jak dobrze pisać pluginy?
Opublikowano

Prawdopodobnie masz błąd ponieważ Bukkit.getOnlinePlayers() jest to liczba całkowita, dlatego length nie ma tutaj sensu, bo int nie posiada takiej metody, Czym jest ta metoda seetCanStart()? jakie parametry ona przyjmuje? Proponuje zamienić na Bukkit.getOnlinePlayers() >= 8, ale domyślam się, że przyjmuje true bądz false,

Opublikowano

Właśnie przyjmuje true/false - może nie opierajmy się na tym pluginie. Jak byś zaczął robić plugin co byś musiał wiedzieć? Myślę że tak będę mógł lepiej to wszystko zrozumieć.

Opublikowano
3 minuty temu, kubaw208 napisał:

Właśnie przyjmuje true/false - może nie opierajmy się na tym pluginie. Jak byś zaczął robić plugin co byś musiał wiedzieć? Myślę że tak będę mógł lepiej to wszystko zrozumieć.

Zamień parametr tej metody na to co tobie napisałem, powinno byc wszystko w porządku wtedy. Najlepiej jak już ogarniesz podstawy tworzenia komend itp, Eventy to możesz zająć się własnymi projektami, posiłkując się dokumentacją silnika gry oraz internetem

Opublikowano

Znam podstawy, kiedyś robiłem już wiele rzeczy polegających na dokumentacji silnika (w eclipse, rozwijałem listę - jeśli dobrze rozumiem o to ci chodzi) i z internetu też brałem to co mogłem znaleść zrozumiałego dla mnie - mówiąc żebym posiłkował się dokumentacją silnika masz na myśli część z "Event" czy wszystko co tylko się tam znajduję? 

Opublikowano

Na początek polecam nie robic wielu static - lepszym rozwiązaniem jest dziedziczenie. Odnośnie klasy Game zrób w niej listę graczy i z niej korzystaj. Wyjdziesz na tym lepiej

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...