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

Problem Pisanie pluginu na wymiany


Mateox8

Rekomendowane odpowiedzi

Opublikowano

Witam

Mam pytanie nie wiem jak usunąć błąd z tego kodu:

package mychest.trade;

import java.util.ArrayList;
import java.util.List;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.DyeColor;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.material.MaterialData;

public class TradeInventory
{
  private Inventory inventory;
  private Player pLeft;
  private static final int inventorySize = 36;
  
  public TradeInventory(Player p1, Player p2)
  {
    this.inventory = getDefaultInventory();
    p1.openInventory(getInventory());
    p2.openInventory(getInventory());
    this.pLeft = p1;
  }
  
  public List<Integer> getAvailableSlots(Player p)
  {
    List<Integer> openSlots = new ArrayList();
    int[] arrayOfInt;
    int j = (arrayOfInt = getTotalSlots(p)).length;
    for (int i = 0; i < j; i++)
    {
      int i = arrayOfInt[i];
      if ((this.inventory.getItem(i) == null) || (this.inventory.getItem(i).getType() == Material.AIR)) {
        openSlots.add(Integer.valueOf(i));
      }
    }
    return openSlots;
  }
  
  public int[] getTotalSlots(Player p)
  {
    int[] slots = new int[this.inventory.getSize() / 9 * 4 - 1];
    int row = 0;
    for (int y = 0; y < this.inventory.getSize(); y += 9) {
      for (int x = 0; x < 9; x++) {
        if (((x != 3) && (x != 5)) || (y != 0))
        {
          boolean condition = x < 4;
          if (condition)
          {
            slots[row] = (y + x);
            row++;
          }
        }
      }
    }
    return slots;
  }
  
  public Inventory getInventory()
  {
    return this.inventory;
  }
  
  public Player getLeftPlayer()
  {
    return this.pLeft;
  }
  
  public void nextOption(Player p)
  {
    if (!Trade.isTrading(p)) {
      return;
    }
    int slot = p == this.pLeft ? 3 : 5;
    DyeColor c = DyeColor.getByData(this.inventory.getItem(slot).getData().getData());
    this.inventory.setItem(slot, getPane(next(c)));
    p.updateInventory();
  }
  
  private Trade.TradeOption next(DyeColor current)
  {
    if (current == DyeColor.LIME) {
      return Trade.TradeOption.CONFIRM;
    }
    if (current == DyeColor.ORANGE) {
      return Trade.TradeOption.FINISH;
    }
    return Trade.TradeOption.NULL;
  }
  
  private static final Inventory getDefaultInventory()
  {
    Inventory inventory = Bukkit.createInventory(null, 36, getName());
    for (int i = 0; i < inventory.getSize(); i++) {
      if ((i + 1) % 9 == 0) {
        inventory.setItem(i - 4, getPane(Trade.TradeOption.NULL));
      } else if ((i == 3) || (i == 5)) {
        inventory.setItem(i, getPane(Trade.TradeOption.TRADE));
      }
    }
    inventory.setItem(4, getPane(Trade.TradeOption.CANCEL));
    return inventory;
  }
  
  public static final String getName()
  {
    return ChatColor.DARK_RED + "Wymiana";
  }
  
  private static final ItemStack getPane(Trade.TradeOption o)
  {
    ItemStack i = new ItemStack(Material.STAINED_GLASS_PANE, 1, o.getDye().getData());
    ItemMeta im = i.getItemMeta();
    im.setDisplayName(o.getName());i.setItemMeta(im);
    return i;
  }
}

Mianowicie to błąd jest w tym:

      int i = arrayOfInt[i];
      if ((this.inventory.getItem(i) == null) || (this.inventory.getItem(i).getType() == Material.AIR)) {
        openSlots.add(Integer.valueOf(i));

Pozdrawiam

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...