Wesley Wolfe b00de5f176 Cleaned up CraftBukkit comments in NMS.
Added newlines at the end of files
Fixed improper line endings on some files
Matched start - end comments
Added some missing comments for diffs
Fixed syntax on some spots
Minimized some diff
Removed some no longer used files
Added comment on some required files with no changes
Fixed imports of items used once
Added imports for items used more than once
2012-07-23 23:55:31 -05:00

333 lines
12 KiB
Java

package net.minecraft.server;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
// CraftBukkit start
import org.bukkit.craftbukkit.inventory.CraftInventory;
import org.bukkit.inventory.InventoryView;
// CraftBukkit end
public abstract class Container {
public List d = new ArrayList();
public List e = new ArrayList();
public int windowId = 0;
private short a = 0;
protected List listeners = new ArrayList();
private Set b = new HashSet();
// CraftBukkit start
public boolean checkReachable = true;
public abstract InventoryView getBukkitView();
public void transferTo(Container other, org.bukkit.craftbukkit.entity.CraftHumanEntity player) {
InventoryView source = this.getBukkitView(), destination = other.getBukkitView();
((CraftInventory) source.getTopInventory()).getInventory().onClose(player);
((CraftInventory) source.getBottomInventory()).getInventory().onClose(player);
((CraftInventory) destination.getTopInventory()).getInventory().onOpen(player);
((CraftInventory) destination.getBottomInventory()).getInventory().onOpen(player);
}
// CraftBukkit end
public Container() {}
protected void a(Slot slot) {
slot.c = this.e.size();
this.e.add(slot);
this.d.add(null);
}
public void addSlotListener(ICrafting icrafting) {
if (this.listeners.contains(icrafting)) {
throw new IllegalArgumentException("Listener already listening");
} else {
this.listeners.add(icrafting);
icrafting.a(this, this.b());
this.a();
}
}
public List b() {
ArrayList arraylist = new ArrayList();
for (int i = 0; i < this.e.size(); ++i) {
arraylist.add(((Slot) this.e.get(i)).getItem());
}
return arraylist;
}
public void a() {
for (int i = 0; i < this.e.size(); ++i) {
ItemStack itemstack = ((Slot) this.e.get(i)).getItem();
ItemStack itemstack1 = (ItemStack) this.d.get(i);
if (!ItemStack.matches(itemstack1, itemstack)) {
itemstack1 = itemstack == null ? null : itemstack.cloneItemStack();
this.d.set(i, itemstack1);
for (int j = 0; j < this.listeners.size(); ++j) {
((ICrafting) this.listeners.get(j)).a(this, i, itemstack1);
}
}
}
}
public boolean a(EntityHuman entityhuman, int i) {
return false;
}
public Slot a(IInventory iinventory, int i) {
for (int j = 0; j < this.e.size(); ++j) {
Slot slot = (Slot) this.e.get(j);
if (slot.a(iinventory, i)) {
return slot;
}
}
return null;
}
public Slot getSlot(int i) {
return (Slot) this.e.get(i);
}
public ItemStack a(int i) {
Slot slot = (Slot) this.e.get(i);
return slot != null ? slot.getItem() : null;
}
public ItemStack clickItem(int i, int j, boolean flag, EntityHuman entityhuman) {
ItemStack itemstack = null;
if (j > 1) {
return null;
} else {
if (j == 0 || j == 1) {
PlayerInventory playerinventory = entityhuman.inventory;
if (i == -999) {
if (playerinventory.getCarried() != null && i == -999) {
if (j == 0) {
entityhuman.drop(playerinventory.getCarried());
playerinventory.setCarried((ItemStack) null);
}
if (j == 1) {
// CraftBukkit start - Store a reference
ItemStack itemstack1 = playerinventory.getCarried();
if (itemstack1.count > 0) {
entityhuman.drop(itemstack1.a(1));
}
if (itemstack1.count == 0) {
// CraftBukkit end
playerinventory.setCarried((ItemStack) null);
}
}
}
} else if (flag) {
ItemStack itemstack1 = this.a(i);
if (itemstack1 != null) {
int k = itemstack1.id;
itemstack = itemstack1.cloneItemStack();
Slot slot = (Slot) this.e.get(i);
if (slot != null && slot.getItem() != null && slot.getItem().id == k) {
this.b(i, j, flag, entityhuman);
}
}
} else {
if (i < 0) {
return null;
}
Slot slot1 = (Slot) this.e.get(i);
if (slot1 != null) {
slot1.d();
ItemStack itemstack2 = slot1.getItem();
ItemStack itemstack3 = playerinventory.getCarried();
if (itemstack2 != null) {
itemstack = itemstack2.cloneItemStack();
}
int l;
if (itemstack2 == null) {
if (itemstack3 != null && slot1.isAllowed(itemstack3)) {
l = j == 0 ? itemstack3.count : 1;
if (l > slot1.a()) {
l = slot1.a();
}
// CraftBukkit start
if (itemstack3.count >= l) {
slot1.set(itemstack3.a(l));
}
// CraftBukkit end
if (itemstack3.count == 0) {
playerinventory.setCarried((ItemStack) null);
}
}
} else if (itemstack3 == null) {
l = j == 0 ? itemstack2.count : (itemstack2.count + 1) / 2;
ItemStack itemstack4 = slot1.a(l);
playerinventory.setCarried(itemstack4);
if (itemstack2.count == 0) {
slot1.set((ItemStack) null);
}
slot1.c(playerinventory.getCarried());
} else if (slot1.isAllowed(itemstack3)) {
if (itemstack2.id == itemstack3.id && (!itemstack2.usesData() || itemstack2.getData() == itemstack3.getData()) && ItemStack.equals(itemstack2, itemstack3)) {
l = j == 0 ? itemstack3.count : 1;
if (l > slot1.a() - itemstack2.count) {
l = slot1.a() - itemstack2.count;
}
if (l > itemstack3.getMaxStackSize() - itemstack2.count) {
l = itemstack3.getMaxStackSize() - itemstack2.count;
}
itemstack3.a(l);
if (itemstack3.count == 0) {
playerinventory.setCarried((ItemStack) null);
}
itemstack2.count += l;
} else if (itemstack3.count <= slot1.a()) {
slot1.set(itemstack3);
playerinventory.setCarried(itemstack2);
}
} else if (itemstack2.id == itemstack3.id && itemstack3.getMaxStackSize() > 1 && (!itemstack2.usesData() || itemstack2.getData() == itemstack3.getData()) && ItemStack.equals(itemstack2, itemstack3)) {
l = itemstack2.count;
if (l > 0 && l + itemstack3.count <= itemstack3.getMaxStackSize()) {
itemstack3.count += l;
itemstack2 = slot1.a(l);
if (itemstack2.count == 0) {
slot1.set((ItemStack) null);
}
slot1.c(playerinventory.getCarried());
}
}
}
}
}
return itemstack;
}
}
protected void b(int i, int j, boolean flag, EntityHuman entityhuman) {
this.clickItem(i, j, flag, entityhuman);
}
public void a(EntityHuman entityhuman) {
PlayerInventory playerinventory = entityhuman.inventory;
if (playerinventory.getCarried() != null) {
entityhuman.drop(playerinventory.getCarried());
playerinventory.setCarried((ItemStack) null);
}
}
public void a(IInventory iinventory) {
this.a();
}
public void setItem(int i, ItemStack itemstack) {
this.getSlot(i).set(itemstack);
}
public boolean c(EntityHuman entityhuman) {
return !this.b.contains(entityhuman);
}
public void a(EntityHuman entityhuman, boolean flag) {
if (flag) {
this.b.remove(entityhuman);
} else {
this.b.add(entityhuman);
}
}
public abstract boolean b(EntityHuman entityhuman);
protected boolean a(ItemStack itemstack, int i, int j, boolean flag) {
boolean flag1 = false;
int k = i;
if (flag) {
k = j - 1;
}
Slot slot;
ItemStack itemstack1;
if (itemstack.isStackable()) {
while (itemstack.count > 0 && (!flag && k < j || flag && k >= i)) {
slot = (Slot) this.e.get(k);
itemstack1 = slot.getItem();
if (itemstack1 != null && itemstack1.id == itemstack.id && (!itemstack.usesData() || itemstack.getData() == itemstack1.getData()) && ItemStack.equals(itemstack, itemstack1)) {
int l = itemstack1.count + itemstack.count;
if (l <= itemstack.getMaxStackSize()) {
itemstack.count = 0;
itemstack1.count = l;
slot.d();
flag1 = true;
} else if (itemstack1.count < itemstack.getMaxStackSize()) {
itemstack.count -= itemstack.getMaxStackSize() - itemstack1.count;
itemstack1.count = itemstack.getMaxStackSize();
slot.d();
flag1 = true;
}
}
if (flag) {
--k;
} else {
++k;
}
}
}
if (itemstack.count > 0) {
if (flag) {
k = j - 1;
} else {
k = i;
}
while (!flag && k < j || flag && k >= i) {
slot = (Slot) this.e.get(k);
itemstack1 = slot.getItem();
if (itemstack1 == null) {
slot.set(itemstack.cloneItemStack());
slot.d();
itemstack.count = 0;
flag1 = true;
break;
}
if (flag) {
--k;
} else {
++k;
}
}
}
return flag1;
}
}