From 32406059c40c497c18cb6a0260fa2c7044b80838 Mon Sep 17 00:00:00 2001 From: Gabriel Tofvesson Date: Fri, 23 Apr 2021 16:03:08 +0200 Subject: [PATCH] Initial commit --- .gitignore | 2 + .idea/.gitignore | 8 ++ .idea/artifacts/SpigotInvTweaks_jar.xml | 8 ++ .idea/libraries/spigot_1_15_5_R0_1.xml | 12 ++ .idea/misc.xml | 6 + .idea/modules.xml | 8 ++ .idea/uiDesigner.xml | 124 ++++++++++++++++++ SpigotInvTweaks.iml | 12 ++ src/dev/w1zzrd/invtweaks/InvTweaksPlugin.java | 25 ++++ .../listeners/StackReplaceListener.java | 37 ++++++ src/dev/w1zzrd/logging/LoggerFactory.java | 13 ++ src/plugin.yml | 5 + 12 files changed, 260 insertions(+) create mode 100644 .gitignore create mode 100644 .idea/.gitignore create mode 100644 .idea/artifacts/SpigotInvTweaks_jar.xml create mode 100644 .idea/libraries/spigot_1_15_5_R0_1.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/uiDesigner.xml create mode 100644 SpigotInvTweaks.iml create mode 100644 src/dev/w1zzrd/invtweaks/InvTweaksPlugin.java create mode 100644 src/dev/w1zzrd/invtweaks/listeners/StackReplaceListener.java create mode 100644 src/dev/w1zzrd/logging/LoggerFactory.java create mode 100644 src/plugin.yml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..21b4487 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +# Project exclude paths +/out/ \ No newline at end of file diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..62fb50e --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Datasource local storage ignored files +/../../../../../../:\Users\Lenovo\IdeaProjects\SpigotInvTweaks\.idea/dataSources/ +/dataSources.local.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/.idea/artifacts/SpigotInvTweaks_jar.xml b/.idea/artifacts/SpigotInvTweaks_jar.xml new file mode 100644 index 0000000..d40adf7 --- /dev/null +++ b/.idea/artifacts/SpigotInvTweaks_jar.xml @@ -0,0 +1,8 @@ + + + $PROJECT_DIR$/out/artifacts/SpigotInvTweaks_jar + + + + + \ No newline at end of file diff --git a/.idea/libraries/spigot_1_15_5_R0_1.xml b/.idea/libraries/spigot_1_15_5_R0_1.xml new file mode 100644 index 0000000..9f86299 --- /dev/null +++ b/.idea/libraries/spigot_1_15_5_R0_1.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..40674af --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..95ce0ec --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml new file mode 100644 index 0000000..e96534f --- /dev/null +++ b/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/SpigotInvTweaks.iml b/SpigotInvTweaks.iml new file mode 100644 index 0000000..f3b0b65 --- /dev/null +++ b/SpigotInvTweaks.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/src/dev/w1zzrd/invtweaks/InvTweaksPlugin.java b/src/dev/w1zzrd/invtweaks/InvTweaksPlugin.java new file mode 100644 index 0000000..29cee23 --- /dev/null +++ b/src/dev/w1zzrd/invtweaks/InvTweaksPlugin.java @@ -0,0 +1,25 @@ +package dev.w1zzrd.invtweaks; + +import dev.w1zzrd.invtweaks.listeners.StackReplaceListener; +import dev.w1zzrd.logging.LoggerFactory; +import org.bukkit.plugin.java.JavaPlugin; + +import java.util.logging.Logger; + +public class InvTweaksPlugin extends JavaPlugin { + + private final Logger logger = LoggerFactory.getLogger(InvTweaksPlugin.class); + + + @Override + public void onEnable() { + logger.info("Inventory Tweaks enabled"); + + getServer().getPluginManager().registerEvents(new StackReplaceListener(), this); + } + + @Override + public void onDisable() { + logger.info("Inventory Tweaks disabled"); + } +} diff --git a/src/dev/w1zzrd/invtweaks/listeners/StackReplaceListener.java b/src/dev/w1zzrd/invtweaks/listeners/StackReplaceListener.java new file mode 100644 index 0000000..6a08d57 --- /dev/null +++ b/src/dev/w1zzrd/invtweaks/listeners/StackReplaceListener.java @@ -0,0 +1,37 @@ +package dev.w1zzrd.invtweaks.listeners; + +import dev.w1zzrd.logging.LoggerFactory; +import org.bukkit.Material; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.block.BlockPlaceEvent; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.PlayerInventory; + +import java.util.logging.Logger; + +public class StackReplaceListener implements Listener { + + private static final int MAX_MAIN_INV = 35; + + + private final Logger logger = LoggerFactory.getLogger(StackReplaceListener.class); + + @EventHandler + public void onBlockPlacedEvent(final BlockPlaceEvent event) { + final ItemStack usedItemStack = event.getItemInHand(); + if (usedItemStack.getAmount() == 1) { + final PlayerInventory inv = event.getPlayer().getInventory(); + for (int i = Math.min(inv.getSize() - 1, MAX_MAIN_INV); i >= 0 ; --i) { + final ItemStack checkStack = inv.getItem(i); + if (i != inv.getHeldItemSlot() && usedItemStack.isSimilar(checkStack)) { + // To prevent race-condition dupes, remove item before putting it in players hand + inv.setItem(i, new ItemStack(Material.AIR, 0)); + inv.setItem(event.getHand(), checkStack); + + logger.info("Moved stack into players empty hand"); + } + } + } + } +} diff --git a/src/dev/w1zzrd/logging/LoggerFactory.java b/src/dev/w1zzrd/logging/LoggerFactory.java new file mode 100644 index 0000000..4f34e9e --- /dev/null +++ b/src/dev/w1zzrd/logging/LoggerFactory.java @@ -0,0 +1,13 @@ +package dev.w1zzrd.logging; + +import java.util.logging.Logger; + +public class LoggerFactory { + public static Logger getLogger(Class cls) { + return Logger.getLogger(cls.getName()); + } + + public static Logger getLogger(String name) { + return Logger.getLogger(name); + } +} diff --git a/src/plugin.yml b/src/plugin.yml new file mode 100644 index 0000000..1130a5e --- /dev/null +++ b/src/plugin.yml @@ -0,0 +1,5 @@ +name: InventoryTweaks +version: 1.0 +author: IKEA_Jesus +main: dev.w1zzrd.invtweaks.InvTweaksPlugin +api-version: 1.13 \ No newline at end of file