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 dotyczące zmiennej dla trzech klas do innej klasy.


NexTowsky

Rekomendowane odpowiedzi

Opublikowano

Siemano, mam plugin... 3 klasy

 

Main - wiadomo enable, disable

komendy -

Listenery-

jak zmienna public static boolean onoff;

ktora w komendy ustawiam na true/false

przeniesc do listenerow aby tam sprawdzalo  czy ona jest true/false i cancelowalo event ?

Opublikowano

@up

A jego sposób źle zadziała ?

 

@bartzz

a czemuż ta komenda nie działa ? :D

public boolean onCommand(CommandSender sender, Command cmd, String l, String[] args) {
		if(cmd.getName().equalsIgnoreCase("expl")){
			if(!sender.hasPermission("tnt.tnt")){
				sender.sendMessage(ChatColor.RED + "Nie masz permissions" + ChatColor.GRAY + " tnt.tnt");
				return false;
			}
			if(args.length !=1){
				sender.sendMessage(ChatColor.RED + "Podaj wartosc on/off");
				return false;
	}
			if(args[0].equalsIgnoreCase("on")){
				boolean tnt=(true);
                                reutrn true;
Opublikowano

Najpierw powiedz co nie działa, później daj kod odpowiednich elementów. Choć przypuszczam, że nie działa dlatego, iż zmienna "tnt" nie jest publiczna. :p

Opublikowano

@bartzz

public static boolean onoff;

 

mam to w Komendy.java

 

w main.java mam

getCommand("expl").setExecutor(new Komendy());

 

Ech, co nie działa, komenda?

Dodaj do plugin.yml:

commands:
  expl:
Opublikowano

Ta komenda nie dziala dlatego, ze zwracasz typ bool odwrotnie? Na koncu zawsze false a w wykonywanych czynnosciach komendy true.

Opublikowano

Po pierwsze zmienna o takiej nazwie jest co najmniej dziwna

Po drugie powinno sie unikac statycznych i publicznych zmiennych (lepiej gettery i pobieranie instancji klasy glownej i innych obiektow)

Czemu mi to piszesz?

ps: Jak robisz obiekty, to po to, aby je inicjować i korzystać z getter'ów, a nie tworzyć osobną instancję ich.

Opublikowano

Czemu mi to piszesz?

ps: Jak robisz obiekty, to po to, aby je inicjować i korzystać z getter'ów, a nie tworzyć osobną instancję ich.

Nie zrozumiales o co mi chodzilo chyba

 

W Main

private static Main instalce;

private Cos cos;

public void onLoad(){

instance = this;

}

 

public static Main getInstance(){

return instance;

}

 

public Cos getCos(){

return cos;

}

 

I gdzies z innej klasy

Main.getInstance().getCos().getBool();

Coś w tym stylu.

Poczytaj o hermetyzacji.

Opublikowano

@bartzz

@Etaku

@1361622928-U485574.pngavacador

@matixd3

Klasa komendy

public class Komendy implements CommandExecutor{


	public static boolean onoff;



	@Override
	public boolean onCommand(CommandSender sender, Command cmd, String l, String[] args) {
		if(cmd.getName().equalsIgnoreCase("expl")){
			if(!sender.hasPermission("tnt.tnt")){
				sender.sendMessage(ChatColor.RED + "Nie masz permissions" + ChatColor.GRAY + " tnt.tnt");
				return false;
			}
			if(args.length !=1){
				sender.sendMessage(ChatColor.RED + "Podaj wartosc on/off");
				return false;
	}
			if(args[0].equalsIgnoreCase("on")){
				boolean tnt=(true);
				sender.sendMessage(ChatColor.RED + "Poprawnie wlaczyles TNT");
				return true;
				
				
			}
			if(args[0].equalsIgnoreCase("off")){
				boolean tnt=(false);
				sender.sendMessage(ChatColor.RED + "Poprawnie wylaczyles TNT");
				return true;
			}
			
		
		}
		return false;
	}
}
Opublikowano

Ustawiasz zmienna lokalna tnt na true/false a zmienej nie wykorzystujesz

 

Zwracsnie false w oncommand powoduje wyslanie usage do command sendera wiec nie tu problem

Opublikowano

Ta komenda nie dziala dlatego, ze zwracasz typ bool odwrotnie? Na koncu zawsze false a w wykonywanych czynnosciach komendy true.

 

Nie? Zwracanie false daje sygnał bukkitowi, że komenda została wykonana w zły sposób (np. brak argumentów komendy) i bukkit wyświetli jej usage z plugin.yml a true wiadomo.

@topic

Masz przykład:

 

Klasa główna (np. Main.java):

public static boolean tnt = false;
 
public void onEnable(){
 
    getCommand("tnt").setExecutor(new TntCommand());
 
}
 

TntCommand.java

@Override
public boolean onCommand(CommandSender arg0, Command arg1, String arg2, String[] arg3) {
    if(arg3.length != 1){
        arg0.sendMessage("Poprawne uzycie... blablabla");
        return false;
    }
    String arlw = arg3[0].toLowerCase();
    switch(arlw){
    case "on":
        Main.tnt = true;
        arg0.sendMessage("Wlaczono");
        break;
    case "off":
        Main.tnt = false;
        arg0.sendMessage("Wylaczono.");
        break;
    default:
        Main.tnt = false;
        arg0.sendMessage("Wylaczono.");
        break;
}
}

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...