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

Błąd z BukkitTaskiem


Rekomendowane odpowiedzi

Opublikowano

Witam, mam problem z BukkitTaskiem. Kiedy próbuję go uruchomić wywala błąd:

 

Kod:

package mc.czaromirus333.pvp;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.scheduler.BukkitTask;

public class Listenery implements Listener {
	
	List<Player> players = new ArrayList<Player>();
	Map<Player, BukkitTask> off = new HashMap<Player, BukkitTask>();
	
	public ItemStack s = new ItemStack(Material.BLAZE_ROD, 1);{
		ItemMeta im = s.getItemMeta();
		im.setDisplayName(ChatColor.RED + "PvP : OFF");
		im.setLore(Arrays.asList(ChatColor.YELLOW + "TYLKO DLA VIP!"));
		s.setItemMeta(im);
	}
	
	public ItemStack s1 = new ItemStack(Material.BLAZE_ROD, 1);{
		ItemMeta im1 = s1.getItemMeta();
		im1.setDisplayName(ChatColor.GREEN + "PvP : ON");
		s1.setItemMeta(im1);
	}
	
	@EventHandler
	public void onJoin(PlayerJoinEvent e){
		Player p = e.getPlayer();
		players.remove(p);
		p.getInventory().setItem(4, s);
	}
	
	@EventHandler
	public void onClick(PlayerInteractEvent e){
		Player p = e.getPlayer();
		if(p.hasPermission("pvp.use")){
			if(p.getInventory().getItemInHand() !=null){
				if(p.getInventory().getItemInHand().equals(s) || p.getInventory().getItemInHand().equals(s1)){
					if(!players.contains(p)){
						players.add(p);
						p.playSound(p.getLocation(), Sound.ITEM_PICKUP, 5, 5);
						p.getInventory().setItem(4, s1);
						p.getInventory().setHelmet(new ItemStack(Material.DIAMOND_HELMET, 1));
						p.getInventory().setHelmet(new ItemStack(Material.DIAMOND_CHESTPLATE, 1));
						p.getInventory().setHelmet(new ItemStack(Material.DIAMOND_LEGGINGS, 1));
						p.getInventory().setHelmet(new ItemStack(Material.DIAMOND_BOOTS, 1));
						p.getInventory().setItem(3, new ItemStack(Material.DIAMOND_SWORD, 1));
						ItemStack bow = new ItemStack(Material.BOW, 1);{
							ItemMeta im = bow.getItemMeta();
							im.addEnchant(Enchantment.ARROW_INFINITE, 10, true);
							bow.setItemMeta(im);
						}
						p.getInventory().setItem(5, bow);
						p.getInventory().setItem(9, new ItemStack(Material.ARROW, 1));
						return;
					}
					if(players.contains(p)){
						final Player p1 = e.getPlayer();
						BukkitTask bt = Bukkit.getScheduler().runTaskLater(Main.getInst(), new Runnable() {
							public void run() {
								players.remove(p1);
								p1.playSound(p1.getLocation(), Sound.ITEM_PICKUP, 5, 5);
								p1.getInventory().setItem(4, s);
								p1.getInventory().setHelmet(new ItemStack(Material.AIR, 1));
								p1.getInventory().setHelmet(new ItemStack(Material.AIR, 1));
								p1.getInventory().setHelmet(new ItemStack(Material.AIR, 1));
								p1.getInventory().setHelmet(new ItemStack(Material.AIR, 1));
								p1.getInventory().setItem(3, new ItemStack(Material.AIR, 1));
								p1.getInventory().setItem(5, new ItemStack(Material.AIR, 1));
								p1.getInventory().setItem(9, new ItemStack(Material.AIR, 1));
								((BukkitTask)off.remove(p1)).cancel();
							}
						}, 10*20);
						off.put(p, bt);
					}
				}
			}
		}
	}
	
}

Błąd:

https://gyazo.com/cce756445c72cc31f38ba8d87127d780

 

Linijka 74 = BukkitTask bt = Bukkit.getScheduler().runTaskLater(Main.getInst(), new Runnable() {

Opublikowano

dodaj konstruktor:

NazwaTwojejGlownejKlasy plugin;
public NazwaTwojejKlasy(NazwaTwojejGlownejKlasy plugin){
     this.plugin = plugin;
}

i w: 

Linijka 74 = BukkitTask bt = Bukkit.getScheduler().runTaskLater(Main.getInst(), new Runnable()

zamiast Main.getInst daj: plugin, new Runnable()............. A jak to nie zatrybi to masz zle napisana metode od zwracania inst.

 

zamiast getSchudeler uzywaj BukkitRunnable :v

Opublikowano

Witam, mam problem z BukkitTaskiem. Kiedy próbuję go uruchomić wywala błąd:

 

Kod:

 

package mc.czaromirus333.pvp;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.scheduler.BukkitTask;

public class Listenery implements Listener {
	
	List<Player> players = new ArrayList<Player>();
	Map<Player, BukkitTask> off = new HashMap<Player, BukkitTask>();
	
	public ItemStack s = new ItemStack(Material.BLAZE_ROD, 1);{
		ItemMeta im = s.getItemMeta();
		im.setDisplayName(ChatColor.RED + "PvP : OFF");
		im.setLore(Arrays.asList(ChatColor.YELLOW + "TYLKO DLA VIP!"));
		s.setItemMeta(im);
	}
	
	public ItemStack s1 = new ItemStack(Material.BLAZE_ROD, 1);{
		ItemMeta im1 = s1.getItemMeta();
		im1.setDisplayName(ChatColor.GREEN + "PvP : ON");
		s1.setItemMeta(im1);
	}
	
	@EventHandler
	public void onJoin(PlayerJoinEvent e){
		Player p = e.getPlayer();
		players.remove(p);
		p.getInventory().setItem(4, s);
	}
	
	@EventHandler
	public void onClick(PlayerInteractEvent e){
		Player p = e.getPlayer();
		if(p.hasPermission("pvp.use")){
			if(p.getInventory().getItemInHand() !=null){
				if(p.getInventory().getItemInHand().equals(s) || p.getInventory().getItemInHand().equals(s1)){
					if(!players.contains(p)){
						players.add(p);
						p.playSound(p.getLocation(), Sound.ITEM_PICKUP, 5, 5);
						p.getInventory().setItem(4, s1);
						p.getInventory().setHelmet(new ItemStack(Material.DIAMOND_HELMET, 1));
						p.getInventory().setHelmet(new ItemStack(Material.DIAMOND_CHESTPLATE, 1));
						p.getInventory().setHelmet(new ItemStack(Material.DIAMOND_LEGGINGS, 1));
						p.getInventory().setHelmet(new ItemStack(Material.DIAMOND_BOOTS, 1));
						p.getInventory().setItem(3, new ItemStack(Material.DIAMOND_SWORD, 1));
						ItemStack bow = new ItemStack(Material.BOW, 1);{
							ItemMeta im = bow.getItemMeta();
							im.addEnchant(Enchantment.ARROW_INFINITE, 10, true);
							bow.setItemMeta(im);
						}
						p.getInventory().setItem(5, bow);
						p.getInventory().setItem(9, new ItemStack(Material.ARROW, 1));
						return;
					}
					if(players.contains(p)){
						final Player p1 = e.getPlayer();
						BukkitTask bt = Bukkit.getScheduler().runTaskLater(Main.getInst(), new Runnable() {
							public void run() {
								players.remove(p1);
								p1.playSound(p1.getLocation(), Sound.ITEM_PICKUP, 5, 5);
								p1.getInventory().setItem(4, s);
								p1.getInventory().setHelmet(new ItemStack(Material.AIR, 1));
								p1.getInventory().setHelmet(new ItemStack(Material.AIR, 1));
								p1.getInventory().setHelmet(new ItemStack(Material.AIR, 1));
								p1.getInventory().setHelmet(new ItemStack(Material.AIR, 1));
								p1.getInventory().setItem(3, new ItemStack(Material.AIR, 1));
								p1.getInventory().setItem(5, new ItemStack(Material.AIR, 1));
								p1.getInventory().setItem(9, new ItemStack(Material.AIR, 1));
								((BukkitTask)off.remove(p1)).cancel();
							}
						}, 10*20);
						off.put(p, bt);
					}
				}
			}
		}
	}
	
}

Błąd:

https://gyazo.com/cce756445c72cc31f38ba8d87127d780

 

Linijka 74 = BukkitTask bt = Bukkit.getScheduler().runTaskLater(Main.getInst(), new Runnable() {

Czego nie rozumiesz w błędzie? Masz tam dokładnie napisane co jest źle, tak normalnie po angielsku, tam przy caused by:

 

Więc jaki masz tu problem? Widoczne masz źle napisana metodę od zwracania instancji

1438614356923701010629.png

 

Opublikowano

@GotoFinal @kelnerdev działa, jednak jak włączę to funkcję odpowiedzialne za dodawanie itemmów dodają te rzeczy jednak są one niewidoczne do chwili kiedy kliknę na slot, w którym ma się to pojawić item.

 

///EDIT:

wystarczyło dodać p.updateInventory;

 

DO ZAMKNIĘCIA!

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...