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

Efekty w gui - nie działa tak jak powinno


Entify

Rekomendowane odpowiedzi

Opublikowano

hejhej

co z tym zle?

Nawet jezeli mam 8 blokow szmaragdow to pisze ze nie mam, ale zabiera mi je i daje efekt.

Nawet jezeli nie mam 8 blokow szmaragdow to pisze ze ich nie mam, ale daje mi efekt.

 

Cos jest zle? Chyba klamerki mam zle, jak ktos widzi to powie gdzie postawilem zle klamerke?

package me.entify.tools.listeners;

import java.util.List;

import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;

import me.entify.tools.utils.ItemBuilder;
import me.entify.tools.utils.Util;

public class EfektyListener
  implements Listener
{
  public static ItemBuilder remove = new ItemBuilder(Material.EMERALD_BLOCK, 8);
  
  @EventHandler(priority=EventPriority.MONITOR)
  public void efekty(InventoryClickEvent e)
  {
    if (!Util.fixColor("&4&lEFEKTY").equalsIgnoreCase(e.getInventory().getName())) {
      return;
    }
    e.setCancelled(true);
    ItemStack item = e.getCurrentItem();
    if (item != null)
    {
      ItemMeta meta = item.getItemMeta();
      if (meta != null)
      {
        Player p = (Player)e.getWhoClicked();
        Inventory inv = p.getInventory();
        if (inv != null) {
          if ((meta.getDisplayName() != null) && (meta.getDisplayName().equals(Util.fixColor("&e&lHASTE II"))))
          {
            if (p.hasPotionEffect(PotionEffectType.FAST_DIGGING))
            {
              p.sendMessage(Util.fixColor("&8>> &cMasz juz efekt HASTE!"));
              p.closeInventory();
            }
            if (!p.getInventory().contains(remove.build()));
            {
            p.sendMessage(Util.fixColor("&8>> &cNie masz &78 blokow szmaragdow&c!"));
            p.closeInventory();
            }
          }
            else
          {
              p.addPotionEffect(new PotionEffect(PotionEffectType.FAST_DIGGING, 6000, 1));
              p.getInventory().removeItem(new ItemStack[] { remove.build() });
              p.closeInventory();
              e.setCancelled(true);
            }
        }
    }
    }
  }
}

//stworzylem itembuilder, przy klikaniu na potionke w gui sprawdzam czy ma itemy (remove.build()) - powinno dzialac ;/

 

 

JAVA <3

 

Opublikowano

wszedzie gdzie masz contains zamien na containsAtLeast

 

                 EASYYT.PL

Opublikowano

teraz musisz ustawic itemstack i ilosc czyli containsAtLeast(itemstack, ilosc);

 

                 EASYYT.PL

Opublikowano
11 minut temu, Pikselke napisał:

teraz musisz ustawic itemstack i ilosc czyli containsAtLeast(itemstack, ilosc);

 

// sprawdze czy dziala i zedytuje :v

nje dziala :cc

http://prntscr.com/ffir41

 

kod;

package me.entify.tools.listeners;

import java.util.List;

import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;

import me.entify.tools.utils.ItemBuilder;
import me.entify.tools.utils.Util;

public class EfektyListener
  implements Listener
{
  public static ItemBuilder remove = new ItemBuilder(Material.EMERALD_BLOCK);
  public static ItemBuilder remove2 = new ItemBuilder(Material.EMERALD_BLOCK, 8);
  
  @EventHandler(priority=EventPriority.MONITOR)
  public void efekty(InventoryClickEvent e)
  {
    if (!Util.fixColor("&4&lEFEKTY").equalsIgnoreCase(e.getInventory().getName())) {
      return;
    }
    e.setCancelled(true);
    ItemStack item = e.getCurrentItem();
    if (item != null)
    {
      ItemMeta meta = item.getItemMeta();
      if (meta != null)
      {
        Player p = (Player)e.getWhoClicked();
        Inventory inv = p.getInventory();
        if (inv != null) {
          if ((meta.getDisplayName() != null) && (meta.getDisplayName().equals(Util.fixColor("&e&lHASTE II"))))
          {
            if (p.hasPotionEffect(PotionEffectType.FAST_DIGGING))
            {
              p.sendMessage(Util.fixColor("&8>> &cMasz juz efekt HASTE!"));
              p.closeInventory();
            }
            if (!p.getInventory().containsAtLeast(remove.build(), 8));
            {
            p.sendMessage(Util.fixColor("&8>> &cNie masz &78 blokow szmaragdow&c!"));
            p.closeInventory();
            }
          }
            else
          {
              p.addPotionEffect(new PotionEffect(PotionEffectType.FAST_DIGGING, 6000, 1));
              p.getInventory().removeItem(new ItemStack[] { remove2.build() });
              p.closeInventory();
              e.setCancelled(true);
            }
        }
    }
    }
  }
}

@Pikselke

 

 

JAVA <3

 

Opublikowano

daj zamiast tego remove.build(),   new ItemStack(Material.EMERALD_BLOCK)  i sprawdz czy działa

 

                 EASYYT.PL

Opublikowano
33 minuty temu, Pikselke napisał:

new ItemStack(Material.EMERALD_BLOCK)

popraw na to i powinno działac

 

                 EASYYT.PL

Opublikowano
15 minut temu, Pikselke napisał:

popraw na to i powinno działac

nie mozna tak?

            if (!p.getInventory().contains(Material.EMERALD_BLOCK, 8));
            {
            p.sendMessage(Util.fixColor("&8>> &cNie masz &78 blokow szmaragdow&c!"));
            p.closeInventory();
            }
          }

zrobilem tak jak tutaj /\ i nie dziala ;v

http://prntscr.com/ffjb26

 

 

JAVA <3

 

Opublikowano

Jak ty mysilisz ze to zadziała, to jak ty zrobiłes te 2 pluginy co masz na kanale?

 

                 EASYYT.PL

Opublikowano
Przed chwilą, Pikselke napisał:

Jak ty mysilisz ze to zadziała, to jak ty zrobiłes te 2 pluginy co masz na kanale?

no tak hopsiup | prosty main - rejestrowanie commandexecutora i eventu

komenda, proste wlaczanie vanisha, sendmessage, eventy - sprawdzanie czy vanish jest wlaczony, cancelowanie lol.

 

no a w swiecie inventory (gui) jestem taki nowy ;/

mozna powiedziec ze "ucze sie" pluginow od 2-3 miesiecy a od 3 dni ucze sie javy (kurs javy), wczesniej malutko sie nauczylem i starczylo

 

@Pikselke

a czemu to ma nie dzialac?

 

 

JAVA <3

 

Opublikowano

O boże..

1. Nie używa się contains tylko containsAtLeast bo inaczej będzie działać tylko gdy będziesz miał 8 bloków emeraldów nie więcej nie mniej

2. Lepiej porównywać slotami a nie nazwami

3. Tabuj to chociaż poprawnie

4. Masz 'przykład' ode mnie

        if (e.getSlot() == id) { //sprawdz id slota
            if (!player.getInventory().containsAtLeast(new ItemStack(Material.EMERALD_BLOCK), cost)) {   //jesli nie ma wystaraczajaco emeraldow to zamyka eq i wysla wiadomosc
                player.sendMessage(ChatUtil.fixColors("&cNie posiadasz wystarczajacej ilosci blokow szmaragdu aby zakupic ten efekt!"));
                player.closeInventory();
            }
            else {
                player.playEffect(player.getLocation(), Effect.BLAZE_SHOOT, 5);
                player.addPotionEffect(new PotionEffect(effect, time * 60 * 20, level), true);
                Bukkit.broadcastMessage(ChatUtil.fixColors("&7» &b" + player.getName() + " &3zakupil efekt " + effect.getName()));
                player.closeInventory();
                player.getInventory().removeItem(new ItemStack(Material.EMERALD_BLOCK, cost));
            }
        }

 

Opublikowano
Przed chwilą, __AHA__ napisał:

O boże..

1. Nie używa się contains tylko containsAtLeast bo inaczej będzie działać tylko gdy będziesz miał 8 bloków emeraldów nie więcej nie mniej

2. Lepiej porównywać slotami a nie nazwami

3. Tabuj to chociaż poprawnie

4. Masz 'przykład' ode mnie


        if (e.getSlot() == id) { //sprawdz id slota
            if (!player.getInventory().containsAtLeast(new ItemStack(Material.EMERALD_BLOCK), cost)) {   //jesli nie ma wystaraczajaco emeraldow to zamyka eq i wysla wiadomosc
                player.sendMessage(ChatUtil.fixColors("&cNie posiadasz wystarczajacej ilosci blokow szmaragdu aby zakupic ten efekt!"));
                player.closeInventory();
            }
            else {
                player.playEffect(player.getLocation(), Effect.BLAZE_SHOOT, 5);
                player.addPotionEffect(new PotionEffect(effect, time * 60 * 20, level), true);
                Bukkit.broadcastMessage(ChatUtil.fixColors("&7» &b" + player.getName() + " &3zakupil efekt " + effect.getName()));
                player.closeInventory();
                player.getInventory().removeItem(new ItemStack(Material.EMERALD_BLOCK, cost));
            }
        }

 

wielkie dzieki :D

chodzi pieknie wszystko :D

 

//wlasnie nie wiem jak tabowac, zawsze daje spacje byle jakos wygladalo, jakies porady? ;/

 

 

JAVA <3

 

Opublikowano

Jak piszesz wszystko od zera, to samo CI sie "tabuje" estetycznie :)

Dlaczego wy robicie

if(costam != null){  
  //reszta kodu  
}

jak można estetyczniej 

if(costam == null) return;

 

tak samo ten kod co Ty masz.

Rób tak, żeby kod też w miarę wyglądał 

      if (e.getSlot() == id) { //sprawdz id slota
            if (!player.getInventory().containsAtLeast(new ItemStack(Material.EMERALD_BLOCK), cost)) {   //jesli nie ma wystaraczajaco emeraldow to zamyka eq i wysla wiadomosc
                player.sendMessage(ChatUtil.fixColors("&cNie posiadasz wystarczajacej ilosci blokow szmaragdu aby zakupic ten efekt!"));
                player.closeInventory();
              return;
            }
            player.playEffect(player.getLocation(), Effect.BLAZE_SHOOT, 5);
            player.addPotionEffect(new PotionEffect(effect, time * 60 * 20, level), true);
            Bukkit.broadcastMessage(ChatUtil.fixColors("&7» &b" + player.getName() + " &3zakupil efekt " + effect.getName()));
            player.closeInventory();
            player.getInventory().removeItem(new ItemStack(Material.EMERALD_BLOCK, cost));
        }

 

  • Biter. zmienił(a) tytuł na Efekty w gui - nie działa tak jak powinno

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...