Archiviert
13
0

Updated CraftInventory to make use of the proper generics in the Inventory interface.

Updated loads of return values to now return actual Craft* objects.
Added a shitton of constructors to CraftItemStack so you can now finally properly make your ItemStacks.
Dieser Commit ist enthalten in:
Erik Broes 2011-01-17 01:55:53 +01:00
Ursprung 0c492912de
Commit 80a59397cb
3 geänderte Dateien mit 56 neuen und 20 gelöschten Zeilen

Datei anzeigen

@ -84,12 +84,12 @@ public class CraftInventory implements org.bukkit.inventory.Inventory {
return false; return false;
} }
public HashMap<Integer, ItemStack> all(int materialId) { public HashMap<Integer, CraftItemStack> all(int materialId) {
HashMap<Integer, ItemStack> slots = new HashMap<Integer, ItemStack>(); HashMap<Integer, CraftItemStack> slots = new HashMap<Integer, CraftItemStack>();
ItemStack[] inventory = getContents(); CraftItemStack[] inventory = getContents();
for (int i = 0; i < inventory.length; i++) { for (int i = 0; i < inventory.length; i++) {
ItemStack item = inventory[i]; CraftItemStack item = inventory[i];
if (item.getTypeId() == materialId) { if (item.getTypeId() == materialId) {
slots.put( i, item ); slots.put( i, item );
} }
@ -97,24 +97,24 @@ public class CraftInventory implements org.bukkit.inventory.Inventory {
return slots; return slots;
} }
public HashMap<Integer, ItemStack> all(Material material) { public HashMap<Integer, CraftItemStack> all(Material material) {
return all(material.getId()); return all(material.getId());
} }
public HashMap<Integer, ItemStack> all(ItemStack item) { public HashMap<Integer, CraftItemStack> all(ItemStack item) {
HashMap<Integer, ItemStack> slots = new HashMap<Integer, ItemStack>(); HashMap<Integer, CraftItemStack> slots = new HashMap<Integer, CraftItemStack>();
ItemStack[] inventory = getContents(); CraftItemStack[] inventory = getContents();
for (int i = 0; i < inventory.length; i++) { for (int i = 0; i < inventory.length; i++) {
if (item.equals(inventory[i])) { if (item.equals(inventory[i])) {
slots.put( i, item ); slots.put( i, inventory[i] );
} }
} }
return slots; return slots;
} }
public int first(int materialId) { public int first(int materialId) {
ItemStack[] inventory = getContents(); CraftItemStack[] inventory = getContents();
for (int i = 0; i < inventory.length; i++) { for (int i = 0; i < inventory.length; i++) {
if (inventory[i].getTypeId() == materialId) { if (inventory[i].getTypeId() == materialId) {
return i; return i;
@ -128,7 +128,7 @@ public class CraftInventory implements org.bukkit.inventory.Inventory {
} }
public int first(ItemStack item) { public int first(ItemStack item) {
ItemStack[] inventory = getContents(); CraftItemStack[] inventory = getContents();
for (int i = 0; i < inventory.length; i++) { for (int i = 0; i < inventory.length; i++) {
if (item.equals(inventory[i])) { if (item.equals(inventory[i])) {
return i; return i;
@ -142,9 +142,9 @@ public class CraftInventory implements org.bukkit.inventory.Inventory {
} }
public int firstPartial(int materialId) { public int firstPartial(int materialId) {
ItemStack[] inventory = getContents(); CraftItemStack[] inventory = getContents();
for (int i = 0; i < inventory.length; i++) { for (int i = 0; i < inventory.length; i++) {
ItemStack item = inventory[i]; CraftItemStack item = inventory[i];
if (item != null && item.getTypeId() == materialId && item.getAmount() < item.getMaxStackSize()) { if (item != null && item.getTypeId() == materialId && item.getAmount() < item.getMaxStackSize()) {
return i; return i;
} }
@ -161,7 +161,7 @@ public class CraftInventory implements org.bukkit.inventory.Inventory {
} }
public HashMap<Integer, ItemStack> addItem(ItemStack... items) { public HashMap<Integer, ItemStack> addItem(ItemStack... items) {
HashMap<Integer,ItemStack> leftover = new HashMap<Integer,ItemStack>(); HashMap<Integer, ItemStack> leftover = new HashMap<Integer, ItemStack>();
/* TODO: some optimization /* TODO: some optimization
* - Create a 'firstPartial' with a 'fromIndex' * - Create a 'firstPartial' with a 'fromIndex'
@ -187,7 +187,7 @@ public class CraftInventory implements org.bukkit.inventory.Inventory {
} else { } else {
// More than a single stack! // More than a single stack!
if (item.getAmount() > getMaxItemStack()) { if (item.getAmount() > getMaxItemStack()) {
setItem( firstFree, new ItemStack(item.getTypeId(), getMaxItemStack())); setItem( firstFree, new CraftItemStack(item.getTypeId(), getMaxItemStack()));
item.setAmount(item.getAmount() - getMaxItemStack()); item.setAmount(item.getAmount() - getMaxItemStack());
} else { } else {
// Just store it // Just store it
@ -197,7 +197,7 @@ public class CraftInventory implements org.bukkit.inventory.Inventory {
} }
} else { } else {
// So, apparently it might only partially fit, well lets do just that // So, apparently it might only partially fit, well lets do just that
ItemStack partialItem = getItem(firstPartial); CraftItemStack partialItem = getItem(firstPartial);
int amount = item.getAmount(); int amount = item.getAmount();
int partialAmount = partialItem.getAmount(); int partialAmount = partialItem.getAmount();

Datei anzeigen

@ -62,9 +62,9 @@ public class CraftInventoryPlayer extends CraftInventory implements PlayerInvent
setItem( getSize() + 3, boots ); setItem( getSize() + 3, boots );
} }
public ItemStack[] getArmorContents() { public CraftItemStack[] getArmorContents() {
net.minecraft.server.ItemStack[] mcItems = getInventory().getArmorContents(); net.minecraft.server.ItemStack[] mcItems = getInventory().getArmorContents();
ItemStack[] ret = new ItemStack[mcItems.length]; CraftItemStack[] ret = new CraftItemStack[mcItems.length];
for (int i = 0; i < mcItems.length; i++ ) { for (int i = 0; i < mcItems.length; i++ ) {
ret[i] = new CraftItemStack(mcItems[i]); ret[i] = new CraftItemStack(mcItems[i]);

Datei anzeigen

@ -7,11 +7,47 @@ public class CraftItemStack extends ItemStack {
protected net.minecraft.server.ItemStack item; protected net.minecraft.server.ItemStack item;
public CraftItemStack(net.minecraft.server.ItemStack item) { public CraftItemStack(net.minecraft.server.ItemStack item) {
super(item != null ? item.c : 0, item != null ? item.a : 0, super(
(byte)(item != null ? item.d : 0)); item != null ? item.c : 0,
item != null ? item.a : 0,
(byte)(item != null ? item.d : 0)
);
this.item = item; this.item = item;
} }
/* 'Overwritten' constructors from ItemStack, yay for Java sucking */
public CraftItemStack(final int type) {
this(type, 0);
}
public CraftItemStack(final Material type) {
this(type, 0);
}
public CraftItemStack(final int type, final int amount) {
this(type, amount, (byte) 0);
}
public CraftItemStack(final Material type, final int amount) {
this(type.getId(), amount);
}
public CraftItemStack(final int type, final int amount, final byte damage) {
this(type, amount, damage, null);
}
public CraftItemStack(final Material type, final int amount, final byte damage) {
this(type.getId(), amount, damage);
}
public CraftItemStack(final Material type, final int amount, final byte damage, final Byte data) {
this(type.getId(), amount, damage, data);
}
public CraftItemStack(int type, int amount, byte damage, Byte data) {
this(new net.minecraft.server.ItemStack(type, amount, data != null ? data : damage));
}
/* /*
* Unsure if we have to sync before each of these calls the values in 'item' * Unsure if we have to sync before each of these calls the values in 'item'
* are all public. * are all public.