From 01ed2e9f973084d4a919a4ca01da51642a1346d0 Mon Sep 17 00:00:00 2001 From: Intelli Date: Mon, 21 Mar 2022 15:12:58 -0600 Subject: [PATCH] Fixed NullPointerException when logging player projectile data --- .../java/net/coreprotect/config/ConfigHandler.java | 3 +-- .../listener/entity/CreatureSpawnListener.java | 14 +++++--------- .../listener/player/PlayerInteractListener.java | 2 +- .../listener/player/ProjectileLaunchListener.java | 13 ++++--------- 4 files changed, 11 insertions(+), 21 deletions(-) diff --git a/src/main/java/net/coreprotect/config/ConfigHandler.java b/src/main/java/net/coreprotect/config/ConfigHandler.java index 1bd0a75..a718295 100644 --- a/src/main/java/net/coreprotect/config/ConfigHandler.java +++ b/src/main/java/net/coreprotect/config/ConfigHandler.java @@ -11,7 +11,6 @@ import java.util.HashMap; import java.util.List; import java.util.Locale; import java.util.Map; -import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; import org.bukkit.Bukkit; @@ -118,7 +117,7 @@ public class ConfigHandler extends Queue { public static Map playerIdCacheReversed = syncMap(); public static Map> lastRollback = syncMap(); public static Map activeRollbacks = syncMap(); - public static Map entityBlockMapper = syncMap(); + public static Map entityBlockMapper = syncMap(); public static ConcurrentHashMap populatedChunks = new ConcurrentHashMap<>(); public static ConcurrentHashMap language = new ConcurrentHashMap<>(); public static List databaseTables = new ArrayList<>(); diff --git a/src/main/java/net/coreprotect/listener/entity/CreatureSpawnListener.java b/src/main/java/net/coreprotect/listener/entity/CreatureSpawnListener.java index 7b99b92..40184bf 100644 --- a/src/main/java/net/coreprotect/listener/entity/CreatureSpawnListener.java +++ b/src/main/java/net/coreprotect/listener/entity/CreatureSpawnListener.java @@ -3,15 +3,12 @@ package net.coreprotect.listener.entity; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; -import java.util.UUID; -import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.World; import org.bukkit.block.Block; import org.bukkit.entity.EntityType; -import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.entity.CreatureSpawnEvent; @@ -38,15 +35,14 @@ public final class CreatureSpawnListener extends Queue implements Listener { Location location = event.getEntity().getLocation(); String key = world.getName() + "-" + location.getBlockX() + "-" + location.getBlockY() + "-" + location.getBlockZ(); - Iterator> it = ConfigHandler.entityBlockMapper.entrySet().iterator(); + Iterator> it = ConfigHandler.entityBlockMapper.entrySet().iterator(); while (it.hasNext()) { - Map.Entry pair = it.next(); - UUID uuid = pair.getKey(); + Map.Entry pair = it.next(); + String name = pair.getKey(); Object[] data = pair.getValue(); if ((data[0].equals(key) || data[1].equals(key)) && Util.getEntityMaterial(event.getEntityType()) == ((ItemStack) data[2]).getType()) { - Player player = Bukkit.getServer().getPlayer(uuid); - Block gravityLocation = BlockUtil.gravityScan(location, Material.ARMOR_STAND, player.getName()); - Queue.queueBlockPlace(player.getName(), gravityLocation.getState(), location.getBlock().getType(), location.getBlock().getState(), ((ItemStack) data[2]).getType(), (int) event.getEntity().getLocation().getYaw(), 1, null); + Block gravityLocation = BlockUtil.gravityScan(location, Material.ARMOR_STAND, name); + Queue.queueBlockPlace(name, gravityLocation.getState(), location.getBlock().getType(), location.getBlock().getState(), ((ItemStack) data[2]).getType(), (int) event.getEntity().getLocation().getYaw(), 1, null); it.remove(); } } diff --git a/src/main/java/net/coreprotect/listener/player/PlayerInteractListener.java b/src/main/java/net/coreprotect/listener/player/PlayerInteractListener.java index 265654b..70647d6 100755 --- a/src/main/java/net/coreprotect/listener/player/PlayerInteractListener.java +++ b/src/main/java/net/coreprotect/listener/player/PlayerInteractListener.java @@ -734,7 +734,7 @@ public final class PlayerInteractListener extends Queue implements Listener { String relativeBlockKey = world.getName() + "-" + relativeBlockLocation.getBlockX() + "-" + relativeBlockLocation.getBlockY() + "-" + relativeBlockLocation.getBlockZ(); String blockKey = world.getName() + "-" + blockLocation.getBlockX() + "-" + blockLocation.getBlockY() + "-" + blockLocation.getBlockZ(); Object[] keys = new Object[] { relativeBlockKey, blockKey, handItem }; - ConfigHandler.entityBlockMapper.put(player.getUniqueId(), keys); + ConfigHandler.entityBlockMapper.put(player.getName(), keys); } } } diff --git a/src/main/java/net/coreprotect/listener/player/ProjectileLaunchListener.java b/src/main/java/net/coreprotect/listener/player/ProjectileLaunchListener.java index ae5d44e..58974d1 100644 --- a/src/main/java/net/coreprotect/listener/player/ProjectileLaunchListener.java +++ b/src/main/java/net/coreprotect/listener/player/ProjectileLaunchListener.java @@ -9,13 +9,10 @@ import java.util.Locale; import java.util.Map; import java.util.Map.Entry; import java.util.Set; -import java.util.UUID; -import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.entity.AbstractArrow; -import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; @@ -66,17 +63,15 @@ public final class ProjectileLaunchListener extends Queue implements Listener { protected void onProjectileLaunch(ProjectileLaunchEvent event) { Location location = event.getEntity().getLocation(); String key = location.getWorld().getName() + "-" + location.getBlockX() + "-" + location.getBlockY() + "-" + location.getBlockZ(); - Iterator> it = ConfigHandler.entityBlockMapper.entrySet().iterator(); + Iterator> it = ConfigHandler.entityBlockMapper.entrySet().iterator(); while (it.hasNext()) { - Map.Entry pair = it.next(); - UUID uuid = pair.getKey(); + Map.Entry pair = it.next(); + String name = pair.getKey(); Object[] data = pair.getValue(); ItemStack itemStack = (ItemStack) data[2]; Material entityMaterial = Util.getEntityMaterial(event.getEntityType()); boolean isBow = BOWS.contains(itemStack.getType()); if ((data[0].equals(key) || data[1].equals(key)) && (entityMaterial == itemStack.getType() || (itemStack.getType() == Material.LINGERING_POTION && entityMaterial == Material.SPLASH_POTION) || isBow)) { - Player player = Bukkit.getServer().getPlayer(uuid); - boolean thrownItem = (itemStack.getType() != Material.FIREWORK_ROCKET && !isBow); if (isBow) { if (itemStack.getType() == Material.CROSSBOW) { @@ -95,7 +90,7 @@ public final class ProjectileLaunchListener extends Queue implements Listener { } } - playerLaunchProjectile(location, player.getName(), itemStack, 1, 1, 0, (thrownItem ? ItemLogger.ITEM_THROW : ItemLogger.ITEM_SHOOT)); + playerLaunchProjectile(location, name, itemStack, 1, 1, 0, (thrownItem ? ItemLogger.ITEM_THROW : ItemLogger.ITEM_SHOOT)); it.remove(); } }