mirror of
https://github.com/PaperMC/Paper.git
synced 2024-11-28 05:25:42 +01:00
Properly handle null and air items. Fixes BUKKIT-435 and BUKKIT-550
We'll probably want to implement an ItemStack.EMPTY and return that instead of NULL in the near future.
This commit is contained in:
parent
4b0f819af2
commit
76d7a1ce1d
@ -3,6 +3,8 @@ package org.bukkit.craftbukkit;
|
|||||||
import com.google.common.collect.MapMaker;
|
import com.google.common.collect.MapMaker;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
import org.apache.commons.lang.Validate;
|
||||||
|
|
||||||
import org.bukkit.craftbukkit.entity.*;
|
import org.bukkit.craftbukkit.entity.*;
|
||||||
import org.bukkit.entity.*;
|
import org.bukkit.entity.*;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
@ -299,6 +301,8 @@ public class CraftWorld implements World {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public org.bukkit.entity.Item dropItem(Location loc, ItemStack item) {
|
public org.bukkit.entity.Item dropItem(Location loc, ItemStack item) {
|
||||||
|
Validate.notNull(item, "Cannot drop a Null item.");
|
||||||
|
Validate.isTrue(item.getTypeId() != 0, "Cannot drop AIR.");
|
||||||
CraftItemStack clone = new CraftItemStack(item);
|
CraftItemStack clone = new CraftItemStack(item);
|
||||||
EntityItem entity = new EntityItem(world, loc.getX(), loc.getY(), loc.getZ(), clone.getHandle());
|
EntityItem entity = new EntityItem(world, loc.getX(), loc.getY(), loc.getZ(), clone.getHandle());
|
||||||
entity.pickupDelay = 10;
|
entity.pickupDelay = 10;
|
||||||
|
@ -27,7 +27,7 @@ public class CraftInventory implements org.bukkit.inventory.Inventory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public ItemStack getItem(int index) {
|
public ItemStack getItem(int index) {
|
||||||
return new CraftItemStack(getInventory().getItem(index));
|
return getInventory().getItem(index).id == 0 ? null : new CraftItemStack(getInventory().getItem(index));
|
||||||
}
|
}
|
||||||
|
|
||||||
public ItemStack[] getContents() {
|
public ItemStack[] getContents() {
|
||||||
@ -59,7 +59,7 @@ public class CraftInventory implements org.bukkit.inventory.Inventory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void setItem(int index, ItemStack item) {
|
public void setItem(int index, ItemStack item) {
|
||||||
getInventory().setItem(index, (item == null ? null : CraftItemStack.createNMSItemStack(item)));
|
getInventory().setItem(index, ((item == null || item.getTypeId() == 0) ? null : CraftItemStack.createNMSItemStack(item)));
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean contains(int materialId) {
|
public boolean contains(int materialId) {
|
||||||
@ -170,7 +170,7 @@ public class CraftInventory implements org.bukkit.inventory.Inventory {
|
|||||||
ItemStack[] inventory = getContents();
|
ItemStack[] inventory = getContents();
|
||||||
for (int i = 0; i < inventory.length; i++) {
|
for (int i = 0; i < inventory.length; i++) {
|
||||||
if (inventory[i] == null) continue;
|
if (inventory[i] == null) continue;
|
||||||
|
|
||||||
boolean equals = false;
|
boolean equals = false;
|
||||||
|
|
||||||
if (withAmount) {
|
if (withAmount) {
|
||||||
|
Loading…
Reference in New Issue
Block a user