Skocz do zawartości
  • 0

Dawanie itemu graczowi po wykonaniu eventu


deusowy_yt

Pytanie

Witam mógłby mi ktoś dopisać kilka linijek kodu na to aby dawalo itemek do eq po evencie, a gdy gracz ma pelne eq to dropi na ziemie. Prosze tez mniej wiecej o wytlumaczenie kilka linijek

package me.neroos.nerocase.listener;

import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.inventory.meta.ItemMeta;

public class Listeners implements Listener{
	
	@EventHandler(priority=EventPriority.MONITOR)
	public void onPlace(BlockPlaceEvent e) {
		Player p = e.getPlayer();
		Block b = e.getBlock();
		if(e.isCancelled()) {
			return;
		}
		if(b.getType() == Material.CHEST) {
			ItemMeta im = p.getItemInHand().getItemMeta();
			if(im.getDisplayName().equals("1")) {
				b.setType(Material.AIR);
				if(Math.random() * 100 <= 30) {
					
				}
			}
		}
	}
}
package me.neroos.helpop;

import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

public class Komendy implements CommandExecutor{
	
	boolean h = true;

	@Override
	public boolean onCommand(CommandSender sender, Command cmd, String l, String[] args) {
		Player sp = (Player) sender;
		String w = args[0];
		if(cmd.getName().equalsIgnoreCase("helpop")) {
			if(sp instanceof Player) {
				if(args.length <= 0) {
					sender.sendMessage("PODAJ WIADOMOSC");
					return false;
				}
				for(Player player: Bukkit.getServer().getOnlinePlayers()){
					if(player.hasPermission("helpop.w")) {
						if(h == true) {
							Bukkit.broadcastMessage(" §4§o[HELPOP] " + "§b§o" + sp.getName() + " §c§o" + w);
							return true;
						}
						else {
							return false;
						}
					}
				}
			}
		}
		if(cmd.getName().equalsIgnoreCase("helpopoff")) {
			h = false;
			sender.sendMessage( "§a§oWiadomosci z helpopu zostaly wylaczone");
		}
		if(cmd.getName().equalsIgnoreCase("helpopon")) {
			h = true;
			sender.sendMessage(" §a§oWiadomosci z helpopu zostaly wlaczone");
		}
	return false;
	}
}

Tutaj dodaje jeszcze jeden kod ktory napisalem dzisiaj rano, ale niestety Nie wyswietla sie zdanie tylko jedno slowo. Do tego nie dzialaja dwie komendy na helpopoff i on w grze wyswietla sie ta czerwona wiadomosc An internal error...

Edytowane przez deusowy_yt
Dodanie kodu
Nicku

Zmieniam nazwę tematu.

Notatka dodana przez Nicku

Odnośnik do komentarza
Udostępnij na innych stronach

1 odpowiedź na to pytanie

Rekomendowane odpowiedzi

  • 0

eh, dalej popelniasz te same bledy, nic sie nie uczysz..

zacznijmy od tego ze edytujesz event na priorytecie monitor ;/

Cytat

Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!

 Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!

Cytat

				for(Player player: Bukkit.getServer().getOnlinePlayers()){
					if(player.hasPermission("helpop.w")) {
						if(h == true) {
							Bukkit.broadcastMessage(" §4§o[HELPOP] " + "§b§o" + sp.getName() + " §c§o" + w);
							return true;
						}
						else {
							return false;
						}
					}

zamiast raz sobie sprawdzic czy h jest true to sprawdzasz to w petli ;/ czyli zamiast raz sprawdzic bedziesz to sprawdzal 100 razy jak bedzie 100 graczy, do tego zamiast wysylac wiadomosc do gracza robisz broadcast, czyli jak bedzie 100 graczy z permisja helpop.w to wyswietlisz 100 razy wiadomosc do wszystkich graczy, ponadto robisz return czyli konczysz cala petle i komende, a zwracajac false wyswietlasz poprawne uzycie komendy ;/

Cytat

		Player sp = (Player) sender;
		String w = args[0];
		if(cmd.getName().equalsIgnoreCase("helpop")) {
			if(sp instanceof Player) {

sp jest juz playerem, wiec po co sprawdzasz czy jest playerem jeszcze raz, juz na poczatku castujesz playera do sendera w zmiennej sp, wiec zawsze warunek 'sp instanceof Player' bedzie zwracal true, juz inaczej jakbys sprawdzal to poprzez samego commandsendera, a nie playera.

a co do bledu z komendami to po prostu daj komendy do innej klasy i rejestruj je w onenable oddzielnie, bo pewnie rejestrujesz commandexecutora na jedna komende, a masz tam kilka.

Odnośnik do komentarza
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Nieaktywny
Odpowiedz na pytanie...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

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

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