Fixed NPE in ItemUtils#serializeItemStack

This commit is contained in:
NichtStudioCode 2022-01-07 10:52:59 +01:00
parent c5d7861ac1
commit 873fae0d7b
8 changed files with 16 additions and 80 deletions

@ -12,14 +12,11 @@ import org.bukkit.inventory.meta.ItemMeta;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import java.io.*; import java.io.*;
import java.lang.reflect.Field;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
public class ItemUtilsImpl implements ItemUtils { public class ItemUtilsImpl implements ItemUtils {
private static final Field CRAFT_ITEM_STACK_HANDLE_FIELD = ReflectionUtils.getField(CraftItemStack.class, true, "handle");
@Override @Override
public byte[] serializeItemStack(org.bukkit.inventory.@NotNull ItemStack itemStack, boolean compressed) { public byte[] serializeItemStack(org.bukkit.inventory.@NotNull ItemStack itemStack, boolean compressed) {
ByteArrayOutputStream out = new ByteArrayOutputStream(); ByteArrayOutputStream out = new ByteArrayOutputStream();
@ -30,12 +27,7 @@ public class ItemUtilsImpl implements ItemUtils {
@Override @Override
public void serializeItemStack(org.bukkit.inventory.@NotNull ItemStack itemStack, @NotNull OutputStream out, boolean compressed) { public void serializeItemStack(org.bukkit.inventory.@NotNull ItemStack itemStack, @NotNull OutputStream out, boolean compressed) {
try { try {
ItemStack nmsStack; ItemStack nmsStack = CraftItemStack.asNMSCopy(itemStack);
if (itemStack instanceof CraftItemStack)
nmsStack = (ItemStack) CRAFT_ITEM_STACK_HANDLE_FIELD.get(itemStack);
else nmsStack = CraftItemStack.asNMSCopy(itemStack);
NBTTagCompound nbt = nmsStack.save(new NBTTagCompound()); NBTTagCompound nbt = nmsStack.save(new NBTTagCompound());
if (compressed) { if (compressed) {
@ -46,7 +38,7 @@ public class ItemUtilsImpl implements ItemUtils {
} }
out.flush(); out.flush();
} catch (IllegalAccessException | IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
} }

@ -12,14 +12,11 @@ import org.bukkit.inventory.meta.ItemMeta;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import java.io.*; import java.io.*;
import java.lang.reflect.Field;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
public class ItemUtilsImpl implements ItemUtils { public class ItemUtilsImpl implements ItemUtils {
private static final Field CRAFT_ITEM_STACK_HANDLE_FIELD = ReflectionUtils.getField(CraftItemStack.class, true, "handle");
@Override @Override
public byte[] serializeItemStack(org.bukkit.inventory.@NotNull ItemStack itemStack, boolean compressed) { public byte[] serializeItemStack(org.bukkit.inventory.@NotNull ItemStack itemStack, boolean compressed) {
ByteArrayOutputStream out = new ByteArrayOutputStream(); ByteArrayOutputStream out = new ByteArrayOutputStream();
@ -30,12 +27,7 @@ public class ItemUtilsImpl implements ItemUtils {
@Override @Override
public void serializeItemStack(org.bukkit.inventory.@NotNull ItemStack itemStack, @NotNull OutputStream out, boolean compressed) { public void serializeItemStack(org.bukkit.inventory.@NotNull ItemStack itemStack, @NotNull OutputStream out, boolean compressed) {
try { try {
ItemStack nmsStack; ItemStack nmsStack = CraftItemStack.asNMSCopy(itemStack);
if (itemStack instanceof CraftItemStack)
nmsStack = (ItemStack) CRAFT_ITEM_STACK_HANDLE_FIELD.get(itemStack);
else nmsStack = CraftItemStack.asNMSCopy(itemStack);
NBTTagCompound nbt = nmsStack.save(new NBTTagCompound()); NBTTagCompound nbt = nmsStack.save(new NBTTagCompound());
if (compressed) { if (compressed) {
@ -46,7 +38,7 @@ public class ItemUtilsImpl implements ItemUtils {
} }
out.flush(); out.flush();
} catch (IllegalAccessException | IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
} }

@ -12,14 +12,11 @@ import org.bukkit.inventory.meta.ItemMeta;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import java.io.*; import java.io.*;
import java.lang.reflect.Field;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
public class ItemUtilsImpl implements ItemUtils { public class ItemUtilsImpl implements ItemUtils {
private static final Field CRAFT_ITEM_STACK_HANDLE_FIELD = ReflectionUtils.getField(CraftItemStack.class, true, "handle");
@Override @Override
public byte[] serializeItemStack(org.bukkit.inventory.@NotNull ItemStack itemStack, boolean compressed) { public byte[] serializeItemStack(org.bukkit.inventory.@NotNull ItemStack itemStack, boolean compressed) {
ByteArrayOutputStream out = new ByteArrayOutputStream(); ByteArrayOutputStream out = new ByteArrayOutputStream();
@ -30,12 +27,7 @@ public class ItemUtilsImpl implements ItemUtils {
@Override @Override
public void serializeItemStack(org.bukkit.inventory.@NotNull ItemStack itemStack, @NotNull OutputStream out, boolean compressed) { public void serializeItemStack(org.bukkit.inventory.@NotNull ItemStack itemStack, @NotNull OutputStream out, boolean compressed) {
try { try {
ItemStack nmsStack; ItemStack nmsStack = CraftItemStack.asNMSCopy(itemStack);
if (itemStack instanceof CraftItemStack)
nmsStack = (ItemStack) CRAFT_ITEM_STACK_HANDLE_FIELD.get(itemStack);
else nmsStack = CraftItemStack.asNMSCopy(itemStack);
NBTTagCompound nbt = nmsStack.save(new NBTTagCompound()); NBTTagCompound nbt = nmsStack.save(new NBTTagCompound());
if (compressed) { if (compressed) {
@ -46,7 +38,7 @@ public class ItemUtilsImpl implements ItemUtils {
} }
out.flush(); out.flush();
} catch (IllegalAccessException | IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
} }

@ -12,14 +12,11 @@ import org.bukkit.inventory.meta.ItemMeta;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import java.io.*; import java.io.*;
import java.lang.reflect.Field;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
public class ItemUtilsImpl implements ItemUtils { public class ItemUtilsImpl implements ItemUtils {
private static final Field CRAFT_ITEM_STACK_HANDLE_FIELD = ReflectionUtils.getField(CraftItemStack.class, true, "handle");
@Override @Override
public byte[] serializeItemStack(org.bukkit.inventory.@NotNull ItemStack itemStack, boolean compressed) { public byte[] serializeItemStack(org.bukkit.inventory.@NotNull ItemStack itemStack, boolean compressed) {
ByteArrayOutputStream out = new ByteArrayOutputStream(); ByteArrayOutputStream out = new ByteArrayOutputStream();
@ -30,12 +27,7 @@ public class ItemUtilsImpl implements ItemUtils {
@Override @Override
public void serializeItemStack(org.bukkit.inventory.@NotNull ItemStack itemStack, @NotNull OutputStream out, boolean compressed) { public void serializeItemStack(org.bukkit.inventory.@NotNull ItemStack itemStack, @NotNull OutputStream out, boolean compressed) {
try { try {
ItemStack nmsStack; ItemStack nmsStack = CraftItemStack.asNMSCopy(itemStack);
if (itemStack instanceof CraftItemStack)
nmsStack = (ItemStack) CRAFT_ITEM_STACK_HANDLE_FIELD.get(itemStack);
else nmsStack = CraftItemStack.asNMSCopy(itemStack);
NBTTagCompound nbt = nmsStack.save(new NBTTagCompound()); NBTTagCompound nbt = nmsStack.save(new NBTTagCompound());
if (compressed) { if (compressed) {
@ -46,7 +38,7 @@ public class ItemUtilsImpl implements ItemUtils {
} }
out.flush(); out.flush();
} catch (IllegalAccessException | IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
} }

@ -13,14 +13,11 @@ import org.bukkit.inventory.meta.ItemMeta;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import java.io.*; import java.io.*;
import java.lang.reflect.Field;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
public class ItemUtilsImpl implements ItemUtils { public class ItemUtilsImpl implements ItemUtils {
private static final Field CRAFT_ITEM_STACK_HANDLE_FIELD = ReflectionUtils.getField(CraftItemStack.class, true, "handle");
@Override @Override
public byte[] serializeItemStack(org.bukkit.inventory.@NotNull ItemStack itemStack, boolean compressed) { public byte[] serializeItemStack(org.bukkit.inventory.@NotNull ItemStack itemStack, boolean compressed) {
ByteArrayOutputStream out = new ByteArrayOutputStream(); ByteArrayOutputStream out = new ByteArrayOutputStream();
@ -31,12 +28,7 @@ public class ItemUtilsImpl implements ItemUtils {
@Override @Override
public void serializeItemStack(org.bukkit.inventory.@NotNull ItemStack itemStack, @NotNull OutputStream out, boolean compressed) { public void serializeItemStack(org.bukkit.inventory.@NotNull ItemStack itemStack, @NotNull OutputStream out, boolean compressed) {
try { try {
ItemStack nmsStack; ItemStack nmsStack = CraftItemStack.asNMSCopy(itemStack);
if (itemStack instanceof CraftItemStack)
nmsStack = (ItemStack) CRAFT_ITEM_STACK_HANDLE_FIELD.get(itemStack);
else nmsStack = CraftItemStack.asNMSCopy(itemStack);
NBTTagCompound nbt = nmsStack.save(new NBTTagCompound()); NBTTagCompound nbt = nmsStack.save(new NBTTagCompound());
if (compressed) { if (compressed) {
@ -47,7 +39,7 @@ public class ItemUtilsImpl implements ItemUtils {
} }
out.flush(); out.flush();
} catch (IllegalAccessException | IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
} }

@ -13,14 +13,11 @@ import org.bukkit.inventory.meta.ItemMeta;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import java.io.*; import java.io.*;
import java.lang.reflect.Field;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
public class ItemUtilsImpl implements ItemUtils { public class ItemUtilsImpl implements ItemUtils {
private static final Field CRAFT_ITEM_STACK_HANDLE_FIELD = ReflectionUtils.getField(CraftItemStack.class, true, "handle");
@Override @Override
public byte[] serializeItemStack(org.bukkit.inventory.@NotNull ItemStack itemStack, boolean compressed) { public byte[] serializeItemStack(org.bukkit.inventory.@NotNull ItemStack itemStack, boolean compressed) {
ByteArrayOutputStream out = new ByteArrayOutputStream(); ByteArrayOutputStream out = new ByteArrayOutputStream();
@ -31,12 +28,7 @@ public class ItemUtilsImpl implements ItemUtils {
@Override @Override
public void serializeItemStack(org.bukkit.inventory.@NotNull ItemStack itemStack, @NotNull OutputStream outputStream, boolean compressed) { public void serializeItemStack(org.bukkit.inventory.@NotNull ItemStack itemStack, @NotNull OutputStream outputStream, boolean compressed) {
try { try {
ItemStack nmsStack; ItemStack nmsStack = CraftItemStack.asNMSCopy(itemStack);
if (itemStack instanceof CraftItemStack)
nmsStack = (ItemStack) CRAFT_ITEM_STACK_HANDLE_FIELD.get(itemStack);
else nmsStack = CraftItemStack.asNMSCopy(itemStack);
CompoundTag nbt = nmsStack.save(new CompoundTag()); CompoundTag nbt = nmsStack.save(new CompoundTag());
if (compressed) { if (compressed) {
@ -47,7 +39,7 @@ public class ItemUtilsImpl implements ItemUtils {
} }
outputStream.flush(); outputStream.flush();
} catch (IllegalAccessException | IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
} }

@ -13,14 +13,11 @@ import org.bukkit.inventory.meta.ItemMeta;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import java.io.*; import java.io.*;
import java.lang.reflect.Field;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
public class ItemUtilsImpl implements ItemUtils { public class ItemUtilsImpl implements ItemUtils {
private static final Field CRAFT_ITEM_STACK_HANDLE_FIELD = ReflectionUtils.getField(CraftItemStack.class, true, "handle");
@Override @Override
public byte[] serializeItemStack(org.bukkit.inventory.@NotNull ItemStack itemStack, boolean compressed) { public byte[] serializeItemStack(org.bukkit.inventory.@NotNull ItemStack itemStack, boolean compressed) {
ByteArrayOutputStream out = new ByteArrayOutputStream(); ByteArrayOutputStream out = new ByteArrayOutputStream();
@ -31,12 +28,7 @@ public class ItemUtilsImpl implements ItemUtils {
@Override @Override
public void serializeItemStack(org.bukkit.inventory.@NotNull ItemStack itemStack, @NotNull OutputStream outputStream, boolean compressed) { public void serializeItemStack(org.bukkit.inventory.@NotNull ItemStack itemStack, @NotNull OutputStream outputStream, boolean compressed) {
try { try {
ItemStack nmsStack; ItemStack nmsStack = CraftItemStack.asNMSCopy(itemStack);
if (itemStack instanceof CraftItemStack)
nmsStack = (ItemStack) CRAFT_ITEM_STACK_HANDLE_FIELD.get(itemStack);
else nmsStack = CraftItemStack.asNMSCopy(itemStack);
CompoundTag nbt = nmsStack.save(new CompoundTag()); CompoundTag nbt = nmsStack.save(new CompoundTag());
if (compressed) { if (compressed) {
@ -47,7 +39,7 @@ public class ItemUtilsImpl implements ItemUtils {
} }
outputStream.flush(); outputStream.flush();
} catch (IllegalAccessException | IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
} }

@ -13,14 +13,11 @@ import org.bukkit.inventory.meta.ItemMeta;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import java.io.*; import java.io.*;
import java.lang.reflect.Field;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
public class ItemUtilsImpl implements ItemUtils { public class ItemUtilsImpl implements ItemUtils {
private static final Field CRAFT_ITEM_STACK_HANDLE_FIELD = ReflectionUtils.getField(CraftItemStack.class, true, "handle");
@Override @Override
public byte[] serializeItemStack(org.bukkit.inventory.@NotNull ItemStack itemStack, boolean compressed) { public byte[] serializeItemStack(org.bukkit.inventory.@NotNull ItemStack itemStack, boolean compressed) {
ByteArrayOutputStream out = new ByteArrayOutputStream(); ByteArrayOutputStream out = new ByteArrayOutputStream();
@ -31,12 +28,7 @@ public class ItemUtilsImpl implements ItemUtils {
@Override @Override
public void serializeItemStack(org.bukkit.inventory.@NotNull ItemStack itemStack, @NotNull OutputStream outputStream, boolean compressed) { public void serializeItemStack(org.bukkit.inventory.@NotNull ItemStack itemStack, @NotNull OutputStream outputStream, boolean compressed) {
try { try {
ItemStack nmsStack; ItemStack nmsStack = CraftItemStack.asNMSCopy(itemStack);
if (itemStack instanceof CraftItemStack)
nmsStack = (ItemStack) CRAFT_ITEM_STACK_HANDLE_FIELD.get(itemStack);
else nmsStack = CraftItemStack.asNMSCopy(itemStack);
CompoundTag nbt = nmsStack.save(new CompoundTag()); CompoundTag nbt = nmsStack.save(new CompoundTag());
if (compressed) { if (compressed) {
@ -47,7 +39,7 @@ public class ItemUtilsImpl implements ItemUtils {
} }
outputStream.flush(); outputStream.flush();
} catch (IllegalAccessException | IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
} }