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