Skocz do zawartości
  • 0

co tu jest źle?


Usunięty#19006
 Udostępnij

Pytanie

Witam a więc mam kod na blokade stawiania bedrocka i beacona przez osobe ktora nie ma jakiejs permisji 

public void onPlace(BlockPlaceEvent e) {
		Block block = e.getBlock();
		Player p = e.getPlayer();
		if(e.getBlock().getType().equals(Material.BEDROCK)) {
			if(!p.hasPermission("bcode.security.place.bedrock")) {
				e.setCancelled(true);
				p.sendMessage("§7Nie mozesz tego zrobic! (§9bcode.security.place.bedrock§7)");
			} else{
				e.setCancelled(false);
			}
		} else if(e.getBlock().getType().equals(Material.BEACON));
			if(!p.hasPermission("bcode.security.place.beacon")) {
				e.setCancelled(true);
				p.sendMessage("§7Nie mozesz tego zrobic! (§9bcode.security.place.beacon§7)");
			}
		}
	}

gdy stawiam bedrocka lub beacona nie majac zadnej permisji ani opa to dalej da się stawiać

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

7 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0

event zarejestrowany?

if(e.getBlock().getType().equals(Material.BEDROCK)) {
			if(!p.hasPermission("bcode.security.place.bedrock")) {
				e.setCancelled(true);
				p.sendMessage("§7Nie mozesz tego zrobic! (§9bcode.security.place.bedrock§7)");
				return;
			}
		} else if(e.getBlock().getType().equals(Material.BEACON));
			if(!p.hasPermission("bcode.security.place.beacon")) {
				e.setCancelled(true);
				p.sendMessage("§7Nie mozesz tego zrobic! (§9bcode.security.place.beacon§7)");
				return;
			}
		}

troszke poprawiony kod

 

Dodatkowo enumy porównujemy poprzez == a nie .equals, tzn if getType() == Material.BEACON

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0

1. Jeżeli już utworzyłeś zmienną 'block', to z niej korzystaj.

2. Do porównywania enumów powinieneś wykorzystywać operator '==', nie metodę equals().

3. Blok 'else' w linijce 8 jest całkowicie zbędny, gdyż wartość od cancela domyślnie to 'false'.

Co do samego kodu nie widzę innych błędów, błąd może być również zawarty w nazwie permisji albo w źle zarejestrowanym evencie.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0

Dalej nie działa obecny kod: 

public class OnPlaceListener implements Listener{
	
	public void onPlace(BlockPlaceEvent e) {
		Player p = e.getPlayer();
		if(e.getBlock().getType() == Material.BEDROCK) {
			if(!p.hasPermission("bcode.security.place.bedrock")) {
				e.setCancelled(true);
				p.sendMessage("§7Nie mozesz tego zrobic! (§9bcode.security.place.bedrock§7)");
				return;
			}
		} else if(e.getBlock().getType() == Material.BEACON);
			if(!p.hasPermission("bcode.security.place.beacon")) {
				e.setCancelled(true);
				p.sendMessage("§7Nie mozesz tego zrobic! (§9bcode.security.place.beacon§7)");
				return;
			}
		}
	}
public class Main extends JavaPlugin{
	
	public void onEnable() {
		Bukkit.getPluginManager().registerEvents(new OnBreakListener(), this);
		Bukkit.getPluginManager().registerEvents(new OnPlaceListener(), this);
	}

}

?

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

  • 0
Godzinę temu, nof napisał:

Brakuje klamry otwierającej w 11 

Dodałem klamre i dalej nie działa.. stawiam bez opa, bez zadnych permisji, eventy zarejestrowałem (u góry kod głównej klasy) ale dalej nie działa, nawet wiadomości nie wysyła 

Edytowane przez jhgggg
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ę...