All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.bukkit.craftbukkit.inventory.CraftInventoryCustom Maven / Gradle / Ivy

package org.bukkit.craftbukkit.inventory;

import net.minecraft.server.*;
import org.apache.commons.lang.Validate;
import org.bukkit.craftbukkit.entity.CraftHumanEntity;
import org.bukkit.entity.HumanEntity;
import org.bukkit.event.inventory.InventoryType;
import org.bukkit.inventory.InventoryHolder;

import java.util.ArrayList;
import java.util.List;

public class CraftInventoryCustom extends CraftInventory {
  public CraftInventoryCustom(InventoryHolder owner, InventoryType type) {
    super(new MinecraftInventory(owner, type));
  }

  public CraftInventoryCustom(InventoryHolder owner, InventoryType type, String title) {
    super(new MinecraftInventory(owner, type, title));
  }

  public CraftInventoryCustom(InventoryHolder owner, int size) {
    super(new MinecraftInventory(owner, size));
  }

  public CraftInventoryCustom(InventoryHolder owner, int size, String title) {
    super(new MinecraftInventory(owner, size, title));
  }

  static class MinecraftInventory implements IInventory {
    private final ItemStack[] items;
    private final List viewers;
    private final String title;
    private final InventoryHolder owner;
    private int maxStack = MAX_STACK;
    private InventoryType type;

    public MinecraftInventory(InventoryHolder owner, InventoryType type) {
      this(owner, type.getDefaultSize(), type.getDefaultTitle());
      this.type = type;
    }

    public MinecraftInventory(InventoryHolder owner, InventoryType type, String title) {
      this(owner, type.getDefaultSize(), title);
      this.type = type;
    }

    public MinecraftInventory(InventoryHolder owner, int size) {
      this(owner, size, "Chest");
    }

    public MinecraftInventory(InventoryHolder owner, int size, String title) {
      Validate.notNull(title, "Title cannot be null");
      this.items = new ItemStack[size];
      this.title = title;
      this.viewers = new ArrayList();
      this.owner = owner;
      this.type = InventoryType.CHEST;
    }

    public int getSize() {
      return items.length;
    }

    public ItemStack getItem(int i) {
      return items[i];
    }

    public ItemStack splitStack(int i, int j) {
      ItemStack stack = this.getItem(i);
      ItemStack result;
      if (stack == null) return null;
      if (stack.count <= j) {
        this.setItem(i, null);
        result = stack;
      } else {
        result = CraftItemStack.copyNMSStack(stack, j);
        stack.count -= j;
      }
      this.update();
      return result;
    }

    public ItemStack splitWithoutUpdate(int i) {
      ItemStack stack = this.getItem(i);
      ItemStack result;
      if (stack == null) return null;
      if (stack.count <= 1) {
        this.setItem(i, null);
        result = stack;
      } else {
        result = CraftItemStack.copyNMSStack(stack, 1);
        stack.count -= 1;
      }
      return result;
    }

    public void setItem(int i, ItemStack itemstack) {
      items[i] = itemstack;
      if (itemstack != null && this.getMaxStackSize() > 0 && itemstack.count > this.getMaxStackSize()) {
        itemstack.count = this.getMaxStackSize();
      }
    }

    public int getMaxStackSize() {
      return maxStack;
    }

    public void setMaxStackSize(int size) {
      maxStack = size;
    }

    public void update() {
    }

    public boolean a(EntityHuman entityhuman) {
      return true;
    }

    public ItemStack[] getContents() {
      return items;
    }

    public void onOpen(CraftHumanEntity who) {
      viewers.add(who);
    }

    public void onClose(CraftHumanEntity who) {
      viewers.remove(who);
    }

    public List getViewers() {
      return viewers;
    }

    public InventoryType getType() {
      return type;
    }

    public InventoryHolder getOwner() {
      return owner;
    }

    public boolean b(int i, ItemStack itemstack) {
      return true;
    }

    @Override
    public void startOpen(EntityHuman entityHuman) {

    }

    @Override
    public void closeContainer(EntityHuman entityHuman) {

    }

    @Override
    public int getProperty(int i) {
      return 0;
    }

    @Override
    public void b(int i, int i1) {

    }

    @Override
    public int g() {
      return 0;
    }

    @Override
    public void l() {

    }

    @Override
    public String getName() {
      return title;
    }

    @Override
    public boolean hasCustomName() {
      return title != null;
    }

    @Override
    public IChatBaseComponent getScoreboardDisplayName() {
      return new ChatComponentText(title);
    }
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy