Skocz do zawartości
  • 0

Dwie komendy w 1 projekcie czy to możliwe


xTea_199
 Udostępnij

Pytanie

 

czemu jeżeli stworzę 2 komendy i dodam je do plugin.yml działa tylko 1?

 

 

package pl.xx.ox;

import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin{

    @Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
        if(command.getName().equalsIgnoreCase("Vip")){
            sender.sendMessage("§8Vip");
        }
        return false;
    }
}
 

Tutaj druga komenda w folderze

 

package pl.xx.ox.svip;

import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.plugin.java.JavaPlugin;

public class svip extends JavaPlugin{

    @Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
        if(command.getName().equalsIgnoreCase("SVip")){
            sender.sendMessage("§8SVip");
        }
        return false;
    }
}

 

Plik.yml

name: vip
main: pl.xvector.gmail.com.core.Main
author: xVector
version: 1.0

commands:
  pomoc:
  vip:

 

name: vCorex
main: pl.xx.ox.Main
author: xxxxx
version: 1.0

commands:
  vip:
  svip:

Odnośnik do komentarza
Udostępnij na innych stronach

4 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0

W jednym projekcie możesz mieć ponad 2 miliardy komend...

Problem wynika z kilku powodów:

- Masz źle skonfigurowany plugin.yml - oprócz nazwy komendy musisz dopisać jeszcze jej opis, użycie oraz zaleca się także dopisać uprawnienie.

vip:
    description: 'Tutaj jest opis komendy'
    permission: 'nazwapluginu.command.vip'
    usage: '/<command>'

- Komendy domyślnie się rejestrują w głównej klasie pluginu - tutaj akurat Main (chociaż powinna się nazywać NazwaPluginuPlugin, np WorldEditPlugin). Dzięki temu komenda /vip wykonuje się poprawnie.

- Nie następuje jakakolwiek rejestracja tej drugiej komendy, która to swój executor posiada w innej klasie. Dodajmy, że jeżeli dany executor przypisany jest tylko do jednej komendy nie musisz wtedy w nim sprawdzać czy na pewno jest to komenda vip, lub svip.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0

No to tak nie do końca, na razie - dopóki nie zrozumiesz bardziej języka, pisz w jednej klasie Main. A tu poprawiany kod:

Main:

package pl.xx.ox;

import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin{
	
	@Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
        if(command.getName().equalsIgnoreCase("vip")){
            sender.sendMessage("§8Vip");
        }

        if(command.getName().equalsIgnoreCase("svip")){
            sender.sendMessage("§8SVip");
        }
        return false;
    }
	
	
}

Plugin.yml:

name: Komendy
version: 1.0
author: ty
main: pl.xx.ox.Main

commands:
  vip:
  svip:

Kod w Main, trochę się "skrzywił", musisz go sam wytabować.

Edytowane przez KrejzolekPRO
Odnośnik do komentarza
Udostępnij na innych stronach

Nieaktywny
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
 Udostępnij

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...