From c120b57866b5a563681c08c23ac01f23aa43bafe Mon Sep 17 00:00:00 2001 From: Brianna Date: Wed, 22 Apr 2020 10:32:23 -0400 Subject: [PATCH] Move comparator system to SongodaCore. --- .../listeners/HopperListeners.java | 5 ++- .../songoda/epichoppers/utils/Methods.java | 41 ------------------- .../utils/StorageContainerCache.java | 3 +- 3 files changed, 5 insertions(+), 44 deletions(-) diff --git a/src/main/java/com/songoda/epichoppers/listeners/HopperListeners.java b/src/main/java/com/songoda/epichoppers/listeners/HopperListeners.java index de4bdac..dc1762f 100644 --- a/src/main/java/com/songoda/epichoppers/listeners/HopperListeners.java +++ b/src/main/java/com/songoda/epichoppers/listeners/HopperListeners.java @@ -1,6 +1,7 @@ package com.songoda.epichoppers.listeners; import com.songoda.core.compatibility.ServerVersion; +import com.songoda.core.utils.BlockUtils; import com.songoda.epichoppers.EpicHoppers; import com.songoda.epichoppers.hopper.Hopper; import com.songoda.epichoppers.hopper.levels.modules.Module; @@ -138,10 +139,10 @@ public class HopperListeners implements Listener { //event.setItem(moveInstead); // we need to instead cancel and manually remove the item to move source.removeItem(moveInstead); - Methods.updateAdjacentComparators(sourceLocation); + BlockUtils.updateAdjacentComparators(sourceLocation); // now add it to the hopper destination.addItem(moveInstead); - Methods.updateAdjacentComparators(destinationLocation); + BlockUtils.updateAdjacentComparators(destinationLocation); } return; } diff --git a/src/main/java/com/songoda/epichoppers/utils/Methods.java b/src/main/java/com/songoda/epichoppers/utils/Methods.java index 72242aa..c3a4cf1 100644 --- a/src/main/java/com/songoda/epichoppers/utils/Methods.java +++ b/src/main/java/com/songoda/epichoppers/utils/Methods.java @@ -188,47 +188,6 @@ public class Methods { serializeCache.put(cacheKey, location.clone()); return location; } - - private static Class clazzCraftWorld, clazzCraftBlock, clazzBlockPosition; - private static Method getHandle, updateAdjacentComparators, getNMSBlock; - - public static void updateAdjacentComparators(Location location) { - if(location == null || location.getWorld() == null) { - return; - } - try { - // Cache reflection. - if (clazzCraftWorld == null) { - String serverPackagePath = Bukkit.getServer().getClass().getPackage().getName(); - String ver = serverPackagePath.substring(serverPackagePath.lastIndexOf('.') + 1); - clazzCraftWorld = Class.forName("org.bukkit.craftbukkit." + ver + ".CraftWorld"); - clazzCraftBlock = Class.forName("org.bukkit.craftbukkit." + ver + ".block.CraftBlock"); - clazzBlockPosition = Class.forName("net.minecraft.server." + ver + ".BlockPosition"); - Class clazzWorld = Class.forName("net.minecraft.server." + ver + ".World"); - Class clazzBlock = Class.forName("net.minecraft.server." + ver + ".Block"); - - getHandle = clazzCraftWorld.getMethod("getHandle"); - updateAdjacentComparators = clazzWorld.getMethod("updateAdjacentComparators", clazzBlockPosition, clazzBlock); - getNMSBlock = clazzCraftBlock.getDeclaredMethod("getNMSBlock"); - getNMSBlock.setAccessible(true); - } - - // invoke and cast objects. - Object craftWorld = clazzCraftWorld.cast(location.getWorld()); - Object world = getHandle.invoke(craftWorld); - Object craftBlock = clazzCraftBlock.cast(location.getBlock()); - - // Invoke final method. - updateAdjacentComparators - .invoke(world, clazzBlockPosition.getConstructor(double.class, double.class, double.class) - .newInstance(location.getX(), location.getY(), location.getZ()), - getNMSBlock.invoke(craftBlock)); - - } catch (ReflectiveOperationException e) { - e.printStackTrace(); - } - } - public static String convertToInvisibleString(String s) { if (s == null || s.equals("")) return ""; diff --git a/src/main/java/com/songoda/epichoppers/utils/StorageContainerCache.java b/src/main/java/com/songoda/epichoppers/utils/StorageContainerCache.java index 3f9f673..2a6b619 100644 --- a/src/main/java/com/songoda/epichoppers/utils/StorageContainerCache.java +++ b/src/main/java/com/songoda/epichoppers/utils/StorageContainerCache.java @@ -2,6 +2,7 @@ package com.songoda.epichoppers.utils; import com.songoda.core.compatibility.CompatibleMaterial; import com.songoda.core.compatibility.ServerVersion; +import com.songoda.core.utils.BlockUtils; import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; @@ -108,7 +109,7 @@ public class StorageContainerCache { inventory.setItem(i, cachedInventory[i]); } } - Methods.updateAdjacentComparators(e.getKey().getLocation()); + BlockUtils.updateAdjacentComparators(e.getKey().getLocation()); }); inventoryCache.clear(); }