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]BUKKIT komendy dwu czlonowe


Rekomendowane odpowiedzi

Opublikowano

Witam! Chcialbym napisac wlasny plugin wszystko ok tylko umiem zrobic np komend "/test" a ja chce "/test zrob" i to ma dac cubboid jak to zrobic ?

Czyli nie wiem jak zrobic komende dwu czlonowa pomozcie!

//nie umieszczamy reklam w sygnaturach

Opublikowano

Napisałem Ci autorski plugin na coś takiego, jednakże bez cuboidów.
Są same komunikaty, komendy wraz z argumentami itd. ;-)

Mogę dorobić cuboidy z WorldGuarda, ale to dłuższa praca.

Podpowiem Ci, że musisz użyć API WorldGuarda z ich strony, dosyć banalne. ;)

 

Link do pobrania wtyczki:

http://speedy.sh/zUvkF/mpc-test.jar

SKAN:

https://www.virustotal.com/pl/file/f526bb26d99e628f45743dd9bc700fc4658d5e5580949a4da0ac66313e19b7b1/analysis/1387481784/

Kod pluginu do Twojej dyspozycji, gdybyś chciał coś dopisać:

http://pastebin.com/s1dtX5Jv

Pozdrawiam,

Avaterys. ;)

Opublikowano

Ok dzieki pomogliscie macie po plusie ale mi chodzi o to:

 

Wpisze /gildia

i wyskoczy mi info a

jak wpisze /gildia stworz <tag> <pelnaNazwaGildi> to ma pisac cos innego i zrobic cubboid Cubboid wiem jak zrobic zeby zrobilo tylko nie wiem jak zrbic podwojna komende moj kod

package kaczusnow.guildwar;

import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;

public class guildwar extends JavaPlugin{

    public void onEnable() {
        
    }
    
    public void onDisable() {
        
    }
    
    public boolean onCommand(CommandSender sender, Command command, String cmd, String[] args) {
        if(cmd.equalsIgnoreCase("gildia")) {
            if(sender instanceof Player) {
                    Player p = (Player) sender;
                    p.sendMessage(ChatColor.BLUE + "/gildia stworz <skrot 4 znaki> <pelna nazwa gildi> Tworzy gildie.");
                    p.sendMessage(ChatColor.BLUE + "/gildia sojusz <pelna nazwa gildi> Zakladanie sojuszu miedz gildiami.");
                    p.sendMessage(ChatColor.BLUE + "/gildia usun Usuwa gildie.");
                    p.sendMessage(ChatColor.BLUE + "/gildia dodaj <nick> Dodaje gracza do gildi.");
                    p.sendMessage(ChatColor.BLUE + "/gildia wyrzuc <nick> Wyrzuca gracza z gildi.");
                    p.sendMessage(ChatColor.BLUE + "/gildia ustaw Ustawia dom gildi.");
                    p.sendMessage(ChatColor.BLUE + "/gildia dom Przenosi gracza do gildi.");
            }
    }
        
        return false;
    }
    
}

//nie umieszczamy reklam w sygnaturach

Opublikowano

Po pierwsze rozdziel plugin na kilka paczek klas. Paczkę robi się dla danych czynności, a klasy do podczynności tak jakby tzn. w przypadku gildii:

- Commands - komendy;

- Listeners - eventy;

- pl.costam.guilds - główna paczka, gdzie jest tylko klasa Main.

W klasie Main zarejestruj eventy, zrób odwołania do tych innych klas.

Dlaczego to mówię? Ponieważ gildie, to spory plugin i napisanie tylu linii kodu w jednej klasie, to samobójstwo, zdecydowanie lepiej rozbić to na kilka klas, paczek. Plugin będzie wydajniejszy i bardziej wygodny.

Co do samej komendy najpierw musisz sprawdzić, czy wysyłający jest graczem, następnie sprawdzić liczbę argumentów. Jeżeli argument jest mniejszy od 1, lub większy od 2 wysyłanie do gracza wiadomości z poprawnym użyciem. Jeżeli jednak ilość argumentów się zgadza, to wysyłanie broadcasta o założeniu gildii z podpiętym args[0] i args[1], oraz ustawianie metody z gildią na true, aby gracz nie mógł założyć kolejnej gildii itd.

 

Pozdrawiam i powodzenia,

Avaterys aka. Developer. :D

Opublikowano

Całego kodu Ci nie podam, bo nie ma to sensu.

Liczbę argumentów sprawdzasz tak:

if (args.length < 1 || args.length > 2){
    //Wykonaj cos.

Broadcasta podpinasz tak:

 

Bukkit.broadcastMessage("§6Gracz: " + player.getName() + "zalozyl gildie o tagu:" + args[0]);
Kolejny argument, to będzie np. nazwa lub na odwrót.

 

Pzdr,

Avaterys.

Opublikowano

Podstawą jest język angielski. Jeśli go znasz metodą prób i błędów coś wykminisz. ;)

Polecam poradnik "Bukkit Coding" po angielsku na YouTube, dekompilacja różnych pluginów, próba ich zrozumienia, przepisywanie ze zrozumieniem z tłumaczeniem do siebie tego co się pisze i co to będzie wykonywało, jakbyś to tłumaczył 5-latkowi. ;)

Po polsku dobre poradniki kręci "grzegorz2047", oraz "feaq16" niestety od feaqa wszystko troszkę zagmatwane. :P

Opublikowano

Wiem wiem o feaq i grzgorzu bo od fequ mam ten kod :D tylko napisany przezemnie a angilski Luz :D ok dzieki no i 4 lub 3 + :D

//nie umieszczamy reklam w sygnaturach

Opublikowano

I znowu Avaterys musi się wypowiadać, zostanę Twoim mentorem do spraw Javy. :C

 

Da się.

Tworzysz nowy argument o długości 2, nazywasz go wraz z ignorowaniem wielkości znaków "stworz", następnie podpinasz ten argument pod broadcasta tak jak mówiłem, możesz też ustawić długość pierwszego argumentu z tagiem na max 5, aby nie było tagów "@@@@@@@@@@@@@@@@@@@@@@@@@@" itd... Robisz to tak:

if (args[1].length() != 5) {
          player.sendMessage("TAG jest zbyt dlugi!"));
          return true;

Musisz też ustawić metodę zmienną, która będzie miała za zadanie sprawdzać, czy gracz ma już gildie, jeśli nie ustawianie jej na true.
@EDIT: Zapomniałem, że musisz sprawdzać, czy gracz ma dany item, aby stworzyć gildie. Wygląda to tak:

Tworzysz nowego ItemStacka, czyli jakby grupę itemów, której będziesz mógł użyć, następnie pobierasz inventory gracza i sprawdzasz, czy posiada on tego ItemStacka ustalonego.

Wygląda to tak:

ItemStack item1 = new ItemStack (Material.DIAMOND, 64);
if (player.getInventory().contains(item1)){
    player.sendMessage(ChatColor.GOLD + "Gratulacje, zalozyles gildie!");
    player.getInventory().remove(item1);
}else{
    player.sendMessage(ChatColor.RED + "Nie posiadasz 64 diamentow!");

Pozdrawiam,

Avaterys.

Opublikowano

Troche sie mecze ok 2h i piytanie jak zrobic np komende /gildia twoim sposobem zeby byly args ? MASZ + :D

//nie umieszczamy reklam w sygnaturach

Opublikowano

Powie ktos jak zrobi komende Dwu czlonowa ? np "/gildia zaloz TAG NAZWA" Daje + A mi to jest potrzebne! Najlepiej jakbyscie edytowali moj kod :

package kaczusnow.guildwar;

import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;

public class guildwar extends JavaPlugin{

    public void onEnable() {
        
    }
    
    public void onDisable() {
        
    }
    
    public boolean onCommand(CommandSender sender, Command command, String cmd, String[] args) {
        if(cmd.equalsIgnoreCase("gildia")) {
            if(sender instanceof Player) {
                    Player p = (Player) sender;
                    p.sendMessage(ChatColor.BLUE + "/gildia stworz <skrot 4 znaki> <pelna nazwa gildi> Tworzy gildie.");
                    p.sendMessage(ChatColor.BLUE + "/gildia sojusz <pelna nazwa gildi> Zakladanie sojuszu miedz gildiami.");
                    p.sendMessage(ChatColor.BLUE + "/gildia usun Usuwa gildie.");
                    p.sendMessage(ChatColor.BLUE + "/gildia dodaj <nick> Dodaje gracza do gildi.");
                    p.sendMessage(ChatColor.BLUE + "/gildia wyrzuc <nick> Wyrzuca gracza z gildi.");
                    p.sendMessage(ChatColor.BLUE + "/gildia ustaw Ustawia dom gildi.");
                    p.sendMessage(ChatColor.BLUE + "/gildia dom Przenosi gracza do gildi.");
            }
    }
        
        return false;
    }
    
}

//nie umieszczamy reklam w sygnaturach

Opublikowano

Sorry ale ten kod to masakra...

Nie zabieraj się za pluginy jak nawet nie wiesz jak je pisać...

Jeśli już masz pisać to pisz metodą prób i błedów.

Opublikowano


@Override

public boolean onCommand(CommandSender sender, Command command, String cmd, String[] args)

{

 

if (!(sender instanceof Player))

{

return false;

} // Sprawdza czy Osoba która wpisała komende nie jest konsolą

 

if (cmd.equalsIgnoreCase("gildia"))

{

 

if (args.length == 3)

{ // Sprawdza czy ilosc argumentów jest równa 3

 

if (args[0].equalsIgnoreCase("stworz")) // Sprawdza czy argument 0 (/gildia [ARGUMANT 0] [ARGUMENT 1] ...)

{

 

String nazwa = args[1];

String tag = args[2];

 

}

 

}

}

}

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...