diff --git a/mcmmo-core/src/main/java/com/gmail/nossr50/listeners/PlayerListener.java b/mcmmo-core/src/main/java/com/gmail/nossr50/listeners/PlayerListener.java index 43fe8a0bd..660c1c450 100644 --- a/mcmmo-core/src/main/java/com/gmail/nossr50/listeners/PlayerListener.java +++ b/mcmmo-core/src/main/java/com/gmail/nossr50/listeners/PlayerListener.java @@ -15,6 +15,7 @@ import com.gmail.nossr50.skills.herbalism.HerbalismManager; import com.gmail.nossr50.skills.mining.MiningManager; import com.gmail.nossr50.skills.taming.TamingManager; import com.gmail.nossr50.util.ChimaeraWing; +import com.gmail.nossr50.util.nbt.NBTManager; import com.gmail.nossr50.util.sounds.SoundType; import org.bukkit.Bukkit; import org.bukkit.ChatColor; @@ -898,4 +899,18 @@ public class PlayerListener implements Listener { } } } + + @EventHandler(priority = EventPriority.LOWEST) + public void onDebugPlayerInteract(PlayerInteractEvent event) { + if(pluginRef.getUserManager().getPlayer(event.getPlayer()) != null) { + McMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getPlayer(event.getPlayer()); + if(mcMMOPlayer.isDebugMode()) { + switch(event.getAction()) { + case LEFT_CLICK_AIR: + case LEFT_CLICK_BLOCK: + NBTManager.debugNBTInMainHandItem(event.getPlayer()); + } + } + } + } } diff --git a/mcmmo-core/src/main/java/com/gmail/nossr50/util/nbt/NBTManager.java b/mcmmo-core/src/main/java/com/gmail/nossr50/util/nbt/NBTManager.java index e620486b2..ab0385e2d 100644 --- a/mcmmo-core/src/main/java/com/gmail/nossr50/util/nbt/NBTManager.java +++ b/mcmmo-core/src/main/java/com/gmail/nossr50/util/nbt/NBTManager.java @@ -4,10 +4,11 @@ package com.gmail.nossr50.util.nbt; import net.minecraft.server.v1_14_R1.NBTBase; import net.minecraft.server.v1_14_R1.NBTList; import net.minecraft.server.v1_14_R1.NBTTagCompound; -import org.bukkit.Bukkit; import org.bukkit.craftbukkit.v1_14_R1.inventory.CraftItemStack; import org.bukkit.craftbukkit.v1_14_R1.util.CraftNBTTagConfigSerializer; +import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; +import org.checkerframework.checker.nullness.qual.Nullable; public class NBTManager { @@ -26,11 +27,26 @@ public class NBTManager { } } + public static void debugNBTInMainHandItem(Player player) { + player.sendMessage("Starting NBT Debug Dump..."); + ItemStack itemStack = player.getInventory().getItemInMainHand(); + player.sendMessage("Checking NBT for "+itemStack.toString()); + NBTTagCompound nbtTagCompound = getNBT(itemStack); + + if(nbtTagCompound == null) { + player.sendMessage("No NBT data found for main hand item."); + return; + } + + player.sendMessage("Total NBT Entries: "+nbtTagCompound.getKeys().size()); + printNBT(nbtTagCompound, player); + player.sendMessage("-- END OF NBT REPORT --"); + } + + @Nullable public static NBTTagCompound getNBT(ItemStack itemStack) { - Bukkit.broadcastMessage("Checking NBT for "+itemStack.toString()); net.minecraft.server.v1_14_R1.ItemStack nmsItemStack = CraftItemStack.asNMSCopy(itemStack); - NBTTagCompound rootTag = nmsItemStack.getTag(); - return rootTag; + return nmsItemStack.getTag(); } public static NBTBase constructNBT(String nbtString) { @@ -43,9 +59,11 @@ public class NBTManager { } } - public static void printNBT(ItemStack itemStack) { - for(String key : getNBT(itemStack).getKeys()) { - Bukkit.broadcastMessage("NBT Key found: "+key); + public static void printNBT(NBTTagCompound nbtTagCompound, Player player) { + for(String key : nbtTagCompound.getKeys()) { + player.sendMessage(""); + player.sendMessage("NBT Key: "+key); + player.sendMessage("NBT Value: " + nbtTagCompound.get(key).asString()); } }