From 552f74274a84332081c4728a1d9056e9d23a054e Mon Sep 17 00:00:00 2001 From: Olof Larsson Date: Tue, 18 Dec 2012 09:13:55 +0100 Subject: [PATCH] Legacy custom serializer since removal of getHandle --- plugin.yml | 2 +- .../mcore5/adapter/ItemStackAdapter.java | 40 +++++++++++++++++-- .../massivecraft/mcore5/util/PlayerUtil.java | 3 ++ 3 files changed, 41 insertions(+), 4 deletions(-) diff --git a/plugin.yml b/plugin.yml index 7881a561..25b3e5d7 100644 --- a/plugin.yml +++ b/plugin.yml @@ -1,5 +1,5 @@ name: mcore5 -version: 1.1.0 +version: 1.1.1 main: com.massivecraft.mcore5.MCore load: startup permissions: diff --git a/src/com/massivecraft/mcore5/adapter/ItemStackAdapter.java b/src/com/massivecraft/mcore5/adapter/ItemStackAdapter.java index 8f4839a8..fc0cd77f 100644 --- a/src/com/massivecraft/mcore5/adapter/ItemStackAdapter.java +++ b/src/com/massivecraft/mcore5/adapter/ItemStackAdapter.java @@ -1,5 +1,6 @@ package com.massivecraft.mcore5.adapter; +import java.lang.reflect.Field; import java.lang.reflect.Type; import java.util.Map.Entry; @@ -102,7 +103,7 @@ public class ItemStackAdapter implements JsonDeserializer, JsonSerial if (!(stack instanceof CraftItemStack)) return null; CraftItemStack craftItemStack = (CraftItemStack)stack; - NBTTagCompound nbt = craftItemStack.getHandle().tag; + NBTTagCompound nbt = getHandle(craftItemStack).tag; if (nbt == null) return null; JsonObject gsonbt = (JsonObject) NbtGsonConverter.nbtToGsonVal(nbt); @@ -147,11 +148,12 @@ public class ItemStackAdapter implements JsonDeserializer, JsonSerial { JsonObject jsonbt = jsonItemStack.get(TAG).getAsJsonObject(); - CraftItemStack craftItemStack = new CraftItemStack(stack); + CraftItemStack craftItemStack = CraftItemStack.asCraftCopy(stack); stack = craftItemStack; NBTBase nbt = NbtGsonConverter.gsonValToNbt(jsonbt, null, NBType.COMPOUND, NBType.UNKNOWN); - craftItemStack.getHandle().tag = (NBTTagCompound) nbt; + + getHandle(craftItemStack).tag = (NBTTagCompound) nbt; } // Add enchantments if there are any @@ -168,4 +170,36 @@ public class ItemStackAdapter implements JsonDeserializer, JsonSerial return stack; } + + // -------------------------------------------- // + // GET HANDLE + // -------------------------------------------- // + + public static Field fieldCraftItemStackDotHandle = null; + + static + { + try + { + fieldCraftItemStackDotHandle = CraftItemStack.class.getDeclaredField("handle"); + fieldCraftItemStackDotHandle.setAccessible(true); + } + catch (Exception e) + { + e.printStackTrace(); + } + } + + public static net.minecraft.server.v1_4_5.ItemStack getHandle(CraftItemStack craftItemStack) + { + try + { + return (net.minecraft.server.v1_4_5.ItemStack) fieldCraftItemStackDotHandle.get(craftItemStack); + } + catch (Exception e) + { + e.printStackTrace(); + return null; + } + } } diff --git a/src/com/massivecraft/mcore5/util/PlayerUtil.java b/src/com/massivecraft/mcore5/util/PlayerUtil.java index 55475caf..ea11e4a6 100644 --- a/src/com/massivecraft/mcore5/util/PlayerUtil.java +++ b/src/com/massivecraft/mcore5/util/PlayerUtil.java @@ -224,6 +224,9 @@ public class PlayerUtil implements Listener protected static void populateCaseInsensitiveNameToCaseCorrectName() { + // The player file may not exist yet + if (playerfolder == null) return; + // Populate by removing .dat for (File playerfile : playerfolder.listFiles()) {