mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-27 15:00:13 +01:00
Create a concept of a null item stack
By: durron597 <martin.jared@gmail.com>
This commit is contained in:
parent
e0eb9be1ba
commit
dca17e2555
1 changed files with 37 additions and 13 deletions
|
@ -7,7 +7,7 @@ public class CraftItemStack extends ItemStack {
|
|||
protected net.minecraft.server.ItemStack item;
|
||||
|
||||
public CraftItemStack(net.minecraft.server.ItemStack item) {
|
||||
super(item.c, item.a);
|
||||
super(item != null ? item.c : 0, item != null ? item.a : 0);
|
||||
this.item = item;
|
||||
}
|
||||
|
||||
|
@ -18,44 +18,68 @@ public class CraftItemStack extends ItemStack {
|
|||
|
||||
@Override
|
||||
public Material getType() {
|
||||
super.setTypeID(item.c); // sync, needed?
|
||||
super.setTypeID(item != null ? item.c : 0); // sync, needed?
|
||||
return super.getType();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTypeID() {
|
||||
super.setTypeID(item.c); // sync, needed?
|
||||
return item.c;
|
||||
super.setTypeID(item != null ? item.c : 0); // sync, needed?
|
||||
return item != null ? item.c : 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setTypeID(int type) {
|
||||
super.setTypeID(item.c);
|
||||
item.c = type;
|
||||
if (type == 0) {
|
||||
super.setTypeID(0);
|
||||
super.setAmount(0);
|
||||
item = null;
|
||||
} else {
|
||||
if (item == null) {
|
||||
item = new net.minecraft.server.ItemStack(type);
|
||||
super.setAmount(1);
|
||||
} else {
|
||||
item.c = type;
|
||||
super.setTypeID(item.c);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getAmount() {
|
||||
super.setAmount(item.a); // sync, needed?
|
||||
super.setAmount(item != null ? item.a : 0); // sync, needed?
|
||||
return item.a;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setAmount(int amount) {
|
||||
super.setAmount(amount);
|
||||
item.a = amount;
|
||||
if (amount == 0) {
|
||||
super.setTypeID(0);
|
||||
super.setAmount(0);
|
||||
item = null;
|
||||
} else {
|
||||
super.setAmount(amount);
|
||||
item.a = amount;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDamage(final byte damage) {
|
||||
super.setDamage(damage);
|
||||
item.d = damage;
|
||||
// Ignore damage if item is null
|
||||
if (item != null) {
|
||||
super.setDamage(damage);
|
||||
item.d = damage;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public byte getDamage() {
|
||||
super.setDamage((byte) item.d); // sync, needed?
|
||||
return (byte) item.d;
|
||||
if (item != null) {
|
||||
super.setDamage((byte) item.d); // sync, needed?
|
||||
return (byte) item.d;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue