From ffacd9869bd6da012cc36b7dc19f6159164d6da0 Mon Sep 17 00:00:00 2001 From: Brianna Date: Thu, 15 Aug 2019 13:34:09 -0400 Subject: [PATCH 1/8] Fix for world serialization. --- .gitlab-ci.yml | 2 +- src/main/java/com/songoda/epichoppers/utils/Methods.java | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 383f84f..b118c07 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -4,7 +4,7 @@ stages: variables: name: "EpicHoppers" path: "/builds/$CI_PROJECT_PATH" - version: "4.2.3" + version: "4.2.4" build: stage: build diff --git a/src/main/java/com/songoda/epichoppers/utils/Methods.java b/src/main/java/com/songoda/epichoppers/utils/Methods.java index a1df111..736f901 100644 --- a/src/main/java/com/songoda/epichoppers/utils/Methods.java +++ b/src/main/java/com/songoda/epichoppers/utils/Methods.java @@ -260,11 +260,11 @@ public class Methods { if (location == null || location.getWorld() == null) return ""; String w = location.getWorld().getName(); - double x = location.getBlockX(); - double y = location.getBlockY(); - double z = location.getBlockZ(); + double x = location.getX(); + double y = location.getY(); + double z = location.getZ(); String str = w + ":" + x + ":" + y + ":" + z; - str = str.replace(".0", "").replace("/", ""); + str = str.replace(".0", "").replace(".", "/"); return str; } From 30e7b03aeeae0b89e671ac1103cbbb7ed127cd7e Mon Sep 17 00:00:00 2001 From: jascotty2 Date: Fri, 16 Aug 2019 10:05:26 -0500 Subject: [PATCH 2/8] fixes for missing 1.8 inventory function, optimizations for hopper listener. --- .../listeners/HopperListeners.java | 37 ++++++------------- 1 file changed, 11 insertions(+), 26 deletions(-) diff --git a/src/main/java/com/songoda/epichoppers/listeners/HopperListeners.java b/src/main/java/com/songoda/epichoppers/listeners/HopperListeners.java index b2691c6..e15b4ab 100644 --- a/src/main/java/com/songoda/epichoppers/listeners/HopperListeners.java +++ b/src/main/java/com/songoda/epichoppers/listeners/HopperListeners.java @@ -4,12 +4,12 @@ import com.songoda.epichoppers.EpicHoppers; import com.songoda.epichoppers.hopper.Hopper; import com.songoda.epichoppers.hopper.levels.modules.Module; import com.songoda.epichoppers.hopper.levels.modules.ModuleAutoCrafting; -import com.songoda.epichoppers.tasks.HopTask; import com.songoda.epichoppers.utils.HopperDirection; import com.songoda.epichoppers.utils.Methods; import com.songoda.epichoppers.utils.ServerVersion; import org.bukkit.Location; import org.bukkit.Material; +import org.bukkit.block.BlockState; import org.bukkit.block.Chest; import org.bukkit.block.DoubleChest; import org.bukkit.entity.Minecart; @@ -38,6 +38,8 @@ public class HopperListeners implements Listener { public void onHop(InventoryMoveItemEvent event) { Inventory source = event.getSource(); Inventory destination = event.getDestination(); + Location sourceLocation = source.getHolder() instanceof BlockState ? ((BlockState) source.getHolder()).getLocation() : null; + Location destinationLocation = destination.getHolder() instanceof BlockState ? ((BlockState) destination.getHolder()).getLocation() : null; // Hopper minecarts should be able to take care of themselves // Let EpicHoppers take over if the hopper is pointing down though @@ -47,26 +49,27 @@ public class HopperListeners implements Listener { return; // Shulker boxes have a mind of their own and relentlessly steal items from hoppers - if (this.instance.isServerVersionAtLeast(ServerVersion.V1_11) && destination.getHolder() instanceof org.bukkit.block.ShulkerBox && destination.getHolder() instanceof org.bukkit.block.Hopper) { + if (this.instance.isServerVersionAtLeast(ServerVersion.V1_11) + && destination.getHolder() instanceof org.bukkit.block.ShulkerBox + && source.getHolder() instanceof org.bukkit.block.Hopper) { event.setCancelled(true); return; } // Hopper going into minecarts if (destination.getHolder() instanceof Minecart && source.getHolder() instanceof org.bukkit.block.Hopper) { - instance.getHopperManager().getHopper(((org.bukkit.block.Hopper) source.getHolder()).getLocation()); event.setCancelled(true); return; } // Don't touch liquid tank hoppers - if (instance.isLiquidtanks() && net.arcaniax.liquidtanks.object.LiquidTankAPI.isLiquidTank(event.getDestination().getLocation())) + if (instance.isLiquidtanks() && net.arcaniax.liquidtanks.object.LiquidTankAPI.isLiquidTank(destinationLocation)) return; // Special cases when a hopper is picking up items if (destination.getHolder() instanceof org.bukkit.block.Hopper) { // minecraft 1.8 doesn't have a method to get the hopper's location from the inventory, so we use the holder instead - Hopper toHopper = instance.getHopperManager().getHopper(((org.bukkit.block.Hopper) destination.getHolder()).getLocation()); + Hopper toHopper = instance.getHopperManager().getHopper(destinationLocation); final ItemStack toMove = event.getItem(); // Don't fill the last inventory slot on crafting hoppers (fixes crafters getting stuck) @@ -132,10 +135,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(source.getLocation()); + Methods.updateAdjacentComparators(sourceLocation); // now add it to the hopper destination.addItem(moveInstead); - Methods.updateAdjacentComparators(destination.getLocation()); + Methods.updateAdjacentComparators(destinationLocation); } return; } @@ -145,26 +148,8 @@ public class HopperListeners implements Listener { if (!(source.getHolder() instanceof org.bukkit.block.Hopper)) return; - org.bukkit.block.Hopper sourceHopper = (org.bukkit.block.Hopper) source.getHolder(); - - Location destinationLocation; - if (destination.getHolder() instanceof org.bukkit.block.Hopper) { - destinationLocation = ((org.bukkit.block.Hopper) destination.getHolder()).getLocation(); - } else if (destination.getHolder() instanceof Chest) { - destinationLocation = ((Chest) destination.getHolder()).getLocation(); - } else if (destination.getHolder() instanceof DoubleChest) { - destinationLocation = ((DoubleChest) destination.getHolder()).getLocation(); - } else { + if(destinationLocation == null) return; - } - - if (!(destinationLocation.getBlock().getState() instanceof InventoryHolder)) - return; - - Hopper hopper = instance.getHopperManager().getHopper(sourceHopper.getLocation()); - - hopper.clearLinkedBlocks(); - hopper.addLinkedBlock(destinationLocation); // Handle hopper push events elsewhere event.setCancelled(true); From 40ca0bdc7504076dc236d5225a83f05a09227f2c Mon Sep 17 00:00:00 2001 From: jascotty2 Date: Fri, 16 Aug 2019 11:38:54 -0500 Subject: [PATCH 3/8] version 4.2.5 --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b118c07..023db33 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -4,7 +4,7 @@ stages: variables: name: "EpicHoppers" path: "/builds/$CI_PROJECT_PATH" - version: "4.2.4" + version: "4.2.5" build: stage: build From ee0c981f3f56a6c5d4db1cb56d2353f81317793d Mon Sep 17 00:00:00 2001 From: Taylor Rhys Brennan Date: Sat, 24 Aug 2019 20:05:09 +0100 Subject: [PATCH 4/8] Fix for incorrect slot Added case statement to fix coal etc going into wrong furnace slot via hopper. --- src/main/java/com/songoda/epichoppers/utils/Methods.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/com/songoda/epichoppers/utils/Methods.java b/src/main/java/com/songoda/epichoppers/utils/Methods.java index 736f901..ef4c512 100644 --- a/src/main/java/com/songoda/epichoppers/utils/Methods.java +++ b/src/main/java/com/songoda/epichoppers/utils/Methods.java @@ -20,6 +20,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; +import org.bukkit.command.CommandSender; /** * Created by songoda on 2/24/2017. @@ -29,6 +30,7 @@ public class Methods { private static final Map serializeCache = new HashMap<>(); public static boolean isLegacyFuel(Material material) { + if (material == null) return false; switch(material.ordinal() + 1) { case 6: @@ -70,6 +72,7 @@ public class Methods { case 191: case 192: case 193: + case 206: case 260: case 262: case 267: From c25c377f6e0db451b9ae3feeea2998e6e6ea7e48 Mon Sep 17 00:00:00 2001 From: Taylor Rhys Brennan Date: Sat, 24 Aug 2019 21:05:21 +0100 Subject: [PATCH 5/8] Autosell fix Fixed last slot in hopper not autoselling. --- .../epichoppers/hopper/levels/modules/ModuleAutoSell.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/songoda/epichoppers/hopper/levels/modules/ModuleAutoSell.java b/src/main/java/com/songoda/epichoppers/hopper/levels/modules/ModuleAutoSell.java index 7b25aa9..45bc9dc 100644 --- a/src/main/java/com/songoda/epichoppers/hopper/levels/modules/ModuleAutoSell.java +++ b/src/main/java/com/songoda/epichoppers/hopper/levels/modules/ModuleAutoSell.java @@ -56,7 +56,8 @@ public class ModuleAutoSell extends Module { OfflinePlayer player = Bukkit.getOfflinePlayer(hopper.getPlacedBy()); - for (int i = 0; i < hopperCache.cachedInventory.length - 1; i++) { + // -1 + for (int i = 0; i < hopperCache.cachedInventory.length; i++) { final ItemStack itemStack = hopperCache.cachedInventory[i]; if (itemStack == null) continue; From a2781265a4605edff92feb956b2b1f3534bbc096 Mon Sep 17 00:00:00 2001 From: jascotty2 Date: Sun, 25 Aug 2019 16:41:43 -0500 Subject: [PATCH 6/8] update pom --- pom.xml | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index 19aa926..56d22c3 100644 --- a/pom.xml +++ b/pom.xml @@ -54,18 +54,22 @@ private - http://repo.songoda.com/artifactory/private/ + https://repo.songoda.com/artifactory/private/ reserve-repo https://dl.bintray.com/theneweconomy/java/ + + spigot-repo + https://hub.spigotmc.org/nexus/content/repositories/snapshots/ + org.spigotmc - spigot - 1.14.1 + spigot-api + 1.14.4-R0.1-SNAPSHOT com.songoda @@ -75,7 +79,7 @@ com.songoda UltimateStacker - 1.6.9 + 1.9.6 net.arcaniax @@ -103,7 +107,7 @@ com.songoda fabledskyblock - 72 + 78.5 provided From c04b6b261be8156617189ecf8451918fb81b4326 Mon Sep 17 00:00:00 2001 From: jascotty2 Date: Sun, 25 Aug 2019 16:42:06 -0500 Subject: [PATCH 7/8] update US API --- .../com/songoda/epichoppers/EpicHoppers.java | 6 +++- .../hopper/levels/modules/ModuleSuction.java | 31 +++++++++++++++++-- .../songoda/epichoppers/utils/Methods.java | 7 +++-- 3 files changed, 38 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/songoda/epichoppers/EpicHoppers.java b/src/main/java/com/songoda/epichoppers/EpicHoppers.java index 498a481..b72359c 100644 --- a/src/main/java/com/songoda/epichoppers/EpicHoppers.java +++ b/src/main/java/com/songoda/epichoppers/EpicHoppers.java @@ -14,7 +14,11 @@ import com.songoda.epichoppers.hopper.HopperBuilder; import com.songoda.epichoppers.hopper.HopperManager; import com.songoda.epichoppers.hopper.levels.Level; import com.songoda.epichoppers.hopper.levels.LevelManager; -import com.songoda.epichoppers.hopper.levels.modules.*; +import com.songoda.epichoppers.hopper.levels.modules.Module; +import com.songoda.epichoppers.hopper.levels.modules.ModuleAutoCrafting; +import com.songoda.epichoppers.hopper.levels.modules.ModuleAutoSell; +import com.songoda.epichoppers.hopper.levels.modules.ModuleBlockBreak; +import com.songoda.epichoppers.hopper.levels.modules.ModuleSuction; import com.songoda.epichoppers.listeners.*; import com.songoda.epichoppers.player.PlayerDataManager; import com.songoda.epichoppers.storage.Storage; diff --git a/src/main/java/com/songoda/epichoppers/hopper/levels/modules/ModuleSuction.java b/src/main/java/com/songoda/epichoppers/hopper/levels/modules/ModuleSuction.java index dc78426..88b400b 100644 --- a/src/main/java/com/songoda/epichoppers/hopper/levels/modules/ModuleSuction.java +++ b/src/main/java/com/songoda/epichoppers/hopper/levels/modules/ModuleSuction.java @@ -6,6 +6,8 @@ import com.songoda.epichoppers.hopper.Hopper; import com.songoda.epichoppers.utils.Methods; import com.songoda.epichoppers.utils.ServerVersion; import com.songoda.epichoppers.utils.StorageContainerCache; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; import org.apache.commons.lang.StringUtils; import org.bukkit.Bukkit; import org.bukkit.Material; @@ -20,6 +22,8 @@ import java.util.ArrayList; import java.util.List; import java.util.Set; import java.util.UUID; +import java.util.logging.Level; +import java.util.logging.Logger; import java.util.stream.Collectors; public class ModuleSuction extends Module { @@ -30,6 +34,19 @@ public class ModuleSuction extends Module { private final static boolean wildStacker = Bukkit.getPluginManager().isPluginEnabled("WildStacker"); private final static boolean ultimateStacker = Bukkit.getPluginManager().isPluginEnabled("UltimateStacker"); + private static boolean oldUltimateStacker; + private static Method oldUltimateStacker_updateItemAmount; + static { + if (ultimateStacker) { + try { + oldUltimateStacker_updateItemAmount = com.songoda.ultimatestacker.utils.Methods.class.getDeclaredMethod("updateItemAmount", Item.class, int.class); + oldUltimateStacker = true; + } catch (NoSuchMethodException | SecurityException ex) { + } + } else { + oldUltimateStacker = false; + } + } public ModuleSuction(EpicHoppers plugin, int amount) { super(plugin); @@ -134,9 +151,17 @@ public class ModuleSuction extends Module { } private void updateAmount(Item item, int amount) { - if (ultimateStacker) - com.songoda.ultimatestacker.utils.Methods.updateItemAmount(item, amount); - else if (wildStacker) + if (ultimateStacker) { + if (oldUltimateStacker) { + try { + oldUltimateStacker_updateItemAmount.invoke(null, item, amount); + } catch (Exception ex) { + item.remove(); // not the best solution, but they should update, anyway.. + } + } else { + com.songoda.ultimatestacker.utils.Methods.updateItemAmount(item, item.getItemStack(), amount); + } + } else if (wildStacker) WildStackerAPI.getStackedItem(item).setStackAmount(amount, true); else item.getItemStack().setAmount(amount > item.getItemStack().getMaxStackSize() diff --git a/src/main/java/com/songoda/epichoppers/utils/Methods.java b/src/main/java/com/songoda/epichoppers/utils/Methods.java index ef4c512..b7d7ebf 100644 --- a/src/main/java/com/songoda/epichoppers/utils/Methods.java +++ b/src/main/java/com/songoda/epichoppers/utils/Methods.java @@ -20,7 +20,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; -import org.bukkit.command.CommandSender; /** * Created by songoda on 2/24/2017. @@ -298,10 +297,14 @@ public class Methods { 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 ver = Bukkit.getServer().getClass().getPackage().getName().substring(23); + 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"); From b2d5ec18ae6c39e88c6cc9d986226accac0c6691 Mon Sep 17 00:00:00 2001 From: jascotty2 Date: Sun, 25 Aug 2019 16:43:18 -0500 Subject: [PATCH 8/8] version 4.2.6 --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 023db33..a5d9906 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -4,7 +4,7 @@ stages: variables: name: "EpicHoppers" path: "/builds/$CI_PROJECT_PATH" - version: "4.2.5" + version: "4.2.6" build: stage: build