diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4ae4060..c22a2ff 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,8 @@
# Changelog
+## 10.3.1
+- Fixed hotkeys not working since 10.3.0
+
## 10.3.0
- Added permissions for each hotkey.
- Given to all players by default
diff --git a/pom.xml b/pom.xml
index d0b190d..1e24c81 100644
--- a/pom.xml
+++ b/pom.xml
@@ -9,7 +9,7 @@
ChestSort
https://www.chestsort.de
Allows automatic chest sorting!
- 10.3.0
+ 10.3.1
jar
diff --git a/src/main/java/de/jeff_media/chestsort/commands/ChestSortCommand.java b/src/main/java/de/jeff_media/chestsort/commands/ChestSortCommand.java
index aab4285..884aff3 100644
--- a/src/main/java/de/jeff_media/chestsort/commands/ChestSortCommand.java
+++ b/src/main/java/de/jeff_media/chestsort/commands/ChestSortCommand.java
@@ -15,9 +15,17 @@ import org.jetbrains.annotations.NotNull;
public class ChestSortCommand implements CommandExecutor {
private final ChestSortPlugin plugin;
+ final String noPermission;
public ChestSortCommand(ChestSortPlugin plugin) {
this.plugin = plugin;
+ noPermission = plugin.getCommand("sort").getPermissionMessage();
+ }
+
+ private void sendNoPermissionMessage(CommandSender sender) {
+ if(noPermission != null && noPermission.length()>0) {
+ sender.sendMessage(noPermission);
+ }
}
@Override
@@ -29,14 +37,14 @@ public class ChestSortCommand implements CommandExecutor {
}
if(!plugin.getConfig().getBoolean("allow-commands") && !sender.isOp()) {
- sender.sendMessage(command.getPermissionMessage());
+ sendNoPermissionMessage(sender);
return true;
}
// Reload command
if(args.length>0 && args[0].equalsIgnoreCase("reload")) {
if(!sender.hasPermission("chestsort.reload")) {
- sender.sendMessage(plugin.getCommand("chestsort").getPermissionMessage());
+ sendNoPermissionMessage(sender);
return true;
}
sender.sendMessage(ChatColor.GRAY + "Reloading ChestSort...");
@@ -48,7 +56,7 @@ public class ChestSortCommand implements CommandExecutor {
// Debug command
if(args.length>0 && args[0].equalsIgnoreCase("debug")) {
if(!sender.hasPermission("chestsort.debug")) {
- sender.sendMessage(plugin.getCommand("chestsort").getPermissionMessage());
+ sendNoPermissionMessage(sender);
}
sender.sendMessage(ChatColor.RED+"ChestSort Debug mode enabled - I hope you know what you are doing!");
plugin.setDebug(true);
diff --git a/src/main/java/de/jeff_media/chestsort/enums/Hotkey.java b/src/main/java/de/jeff_media/chestsort/enums/Hotkey.java
index 991400f..68d7401 100644
--- a/src/main/java/de/jeff_media/chestsort/enums/Hotkey.java
+++ b/src/main/java/de/jeff_media/chestsort/enums/Hotkey.java
@@ -6,9 +6,11 @@ public enum Hotkey {
SHIFT_CLICK,
MIDDLE_CLICK, DOUBLE_CLICK, SHIFT_RIGHT_CLICK,
- LEFT_CLICK_OUTSIDE, RIGHT_CLICK_OUTSIDE;
+ OUTSIDE, LEFT_CLICK, RIGHT_CLICK;
public static String getPermission(Hotkey hotkey) {
- return hotkey.name().toLowerCase(Locale.ROOT).replace("_", "");
+ String permission = "chestsort.hotkey." + hotkey.name().toLowerCase(Locale.ROOT).replace("_", "");
+ //System.out.println("Permission for " + hotkey.name()+ ": " + permission);
+ return permission;
}
}
diff --git a/src/main/java/de/jeff_media/chestsort/gui/SettingsGUI.java b/src/main/java/de/jeff_media/chestsort/gui/SettingsGUI.java
index 9f1e051..ebed39f 100644
--- a/src/main/java/de/jeff_media/chestsort/gui/SettingsGUI.java
+++ b/src/main/java/de/jeff_media/chestsort/gui/SettingsGUI.java
@@ -3,6 +3,7 @@ package de.jeff_media.chestsort.gui;
import de.jeff_media.chestsort.ChestSortPlugin;
import de.jeff_media.chestsort.config.Messages;
import de.jeff_media.chestsort.data.PlayerSetting;
+import de.jeff_media.chestsort.enums.Hotkey;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
@@ -17,158 +18,157 @@ import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
public class SettingsGUI implements Listener {
-
- final ChestSortPlugin plugin;
-
- public static final int slotMiddleClick = 1;
- public static final int slotShiftClick = 3 ;
- public static final int slotDoubleClick = 5 ;
- public static final int slotShiftRightClick = 7 ;
- public static final int slotLeftClickFromOutside = 4 + 9;
- public static final int slotLeftClick = 2+18;
- public static final int slotRightClick = 6+18;
-
- final static Material red = Material.REDSTONE_BLOCK;
- final static Material green = Material.EMERALD_BLOCK;
-
- enum Hotkey {
- MiddleClick, ShiftClick, DoubleClick, ShiftRightClick, LeftClick, RightClick, LeftClickOutside
- }
-
- public SettingsGUI(ChestSortPlugin plugin) {
- this.plugin=plugin;
- }
-
- ItemStack getItem(boolean active, Hotkey hotkey) {
- ItemStack is;
- String suffix;
-
- if(active) {
- is = new ItemStack(green);
- suffix = Messages.MSG_GUI_ENABLED;
- }
- else {
- is = new ItemStack(red);
- suffix = Messages.MSG_GUI_DISABLED;
- }
-
- ItemMeta meta = is.getItemMeta();
-
- switch(hotkey) {
- case MiddleClick:
- meta.setDisplayName(ChatColor.RESET + Messages.MSG_GUI_MIDDLECLICK + ": " + suffix);
- break;
- case ShiftClick:
- meta.setDisplayName(ChatColor.RESET + Messages.MSG_GUI_SHIFTCLICK + ": " + suffix);
- break;
- case DoubleClick:
- meta.setDisplayName(ChatColor.RESET + Messages.MSG_GUI_DOUBLECLICK + ": " + suffix);
- break;
- case ShiftRightClick:
- meta.setDisplayName(ChatColor.RESET + Messages.MSG_GUI_SHIFTRIGHTCLICK + ": " + suffix);
- break;
- case LeftClickOutside:
- meta.setDisplayName(ChatColor.RESET + Messages.MSG_GUI_LEFTCLICKOUTSIDE + ": " + suffix);
- break;
- case LeftClick:
- meta.setDisplayName(ChatColor.RESET + Messages.MSG_GUI_LEFTCLICK + ": "+ suffix);
- break;
- case RightClick:
- meta.setDisplayName(ChatColor.RESET + Messages.MSG_GUI_RIGHTCLICK + ": "+ suffix);
- break;
- default:
- break;
- }
-
- is.setItemMeta(meta);
-
- return is;
- }
-
+
+ public static final int slotMiddleClick = 1;
+ public static final int slotShiftClick = 3;
+ public static final int slotDoubleClick = 5;
+ public static final int slotShiftRightClick = 7;
+ public static final int slotLeftClickFromOutside = 4 + 9;
+ public static final int slotLeftClick = 2 + 18;
+ public static final int slotRightClick = 6 + 18;
+ final static Material red = Material.REDSTONE_BLOCK;
+ final static Material green = Material.EMERALD_BLOCK;
+ final ChestSortPlugin plugin;
+
+ public SettingsGUI(ChestSortPlugin plugin) {
+ this.plugin = plugin;
+ }
+
+ ItemStack getItem(boolean active, Hotkey hotkey, Player player) {
+
+ //System.out.println("Getting Item for hotkey " + hotkey);
+
+ ItemStack is;
+ String suffix;
+
+ if(!player.hasPermission(Hotkey.getPermission(hotkey))) {
+ //System.out.println(" Player does NOT have permission " + hotkey.name());
+ return null;
+ }
+
+ if (active) {
+ is = new ItemStack(green);
+ suffix = Messages.MSG_GUI_ENABLED;
+ } else {
+ is = new ItemStack(red);
+ suffix = Messages.MSG_GUI_DISABLED;
+ }
+
+ ItemMeta meta = is.getItemMeta();
+
+ switch (hotkey) {
+ case MIDDLE_CLICK:
+ meta.setDisplayName(ChatColor.RESET + Messages.MSG_GUI_MIDDLECLICK + ": " + suffix);
+ break;
+ case SHIFT_CLICK:
+ meta.setDisplayName(ChatColor.RESET + Messages.MSG_GUI_SHIFTCLICK + ": " + suffix);
+ break;
+ case DOUBLE_CLICK:
+ meta.setDisplayName(ChatColor.RESET + Messages.MSG_GUI_DOUBLECLICK + ": " + suffix);
+ break;
+ case SHIFT_RIGHT_CLICK:
+ meta.setDisplayName(ChatColor.RESET + Messages.MSG_GUI_SHIFTRIGHTCLICK + ": " + suffix);
+ break;
+ case OUTSIDE:
+ meta.setDisplayName(ChatColor.RESET + Messages.MSG_GUI_LEFTCLICKOUTSIDE + ": " + suffix);
+ break;
+ case LEFT_CLICK:
+ meta.setDisplayName(ChatColor.RESET + Messages.MSG_GUI_LEFTCLICK + ": " + suffix);
+ break;
+ case RIGHT_CLICK:
+ meta.setDisplayName(ChatColor.RESET + Messages.MSG_GUI_RIGHTCLICK + ": " + suffix);
+ break;
+ default:
+ break;
+ }
+
+ is.setItemMeta(meta);
+
+ return is;
+ }
+
public void openGUI(Player player) {
Inventory inventory = createGUI("ChestSort", player);
-
+
PlayerSetting setting = plugin.getPerPlayerSettings().get(player.getUniqueId().toString());
- if(plugin.getConfig().getBoolean("allow-sorting-hotkeys")) {
- inventory.setItem(slotMiddleClick, getItem(setting.middleClick, Hotkey.MiddleClick));
- inventory.setItem(slotShiftClick, getItem(setting.shiftClick, Hotkey.ShiftClick));
- inventory.setItem(slotDoubleClick, getItem(setting.doubleClick, Hotkey.DoubleClick));
- inventory.setItem(slotShiftRightClick, getItem(setting.shiftRightClick, Hotkey.ShiftRightClick));
- }
- if(plugin.getConfig().getBoolean("allow-left-click-to-sort")) {
- inventory.setItem(slotLeftClickFromOutside, getItem(setting.leftClickOutside, Hotkey.LeftClickOutside));
- }
- if(plugin.getConfig().getBoolean("allow-additional-hotkeys")) {
- inventory.setItem(slotLeftClick, getItem(setting.leftClick,Hotkey.LeftClick));
- inventory.setItem(slotRightClick, getItem(setting.rightClick,Hotkey.RightClick));
- }
-
+ if (plugin.getConfig().getBoolean("allow-sorting-hotkeys")) {
+ if(player.hasPermission(Hotkey.getPermission(Hotkey.MIDDLE_CLICK))) inventory.setItem(slotMiddleClick, getItem(setting.middleClick, Hotkey.MIDDLE_CLICK, player));
+ if(player.hasPermission(Hotkey.getPermission(Hotkey.SHIFT_CLICK))) inventory.setItem(slotShiftClick, getItem(setting.shiftClick, Hotkey.SHIFT_CLICK, player));
+ if(player.hasPermission(Hotkey.getPermission(Hotkey.DOUBLE_CLICK))) inventory.setItem(slotDoubleClick, getItem(setting.doubleClick, Hotkey.DOUBLE_CLICK, player));
+ if(player.hasPermission(Hotkey.getPermission(Hotkey.SHIFT_RIGHT_CLICK))) inventory.setItem(slotShiftRightClick, getItem(setting.shiftRightClick, Hotkey.SHIFT_RIGHT_CLICK, player));
+ }
+ if (plugin.getConfig().getBoolean("allow-left-click-to-sort")) {
+ if(player.hasPermission(Hotkey.getPermission(Hotkey.OUTSIDE))) inventory.setItem(slotLeftClickFromOutside, getItem(setting.leftClickOutside, Hotkey.OUTSIDE, player));
+ }
+ if (plugin.getConfig().getBoolean("allow-additional-hotkeys")) {
+ if(player.hasPermission(Hotkey.getPermission(Hotkey.LEFT_CLICK))) inventory.setItem(slotLeftClick, getItem(setting.leftClick, Hotkey.LEFT_CLICK, player));
+ if(player.hasPermission(Hotkey.getPermission(Hotkey.RIGHT_CLICK))) inventory.setItem(slotRightClick, getItem(setting.rightClick, Hotkey.RIGHT_CLICK, player));
+ }
+
setting.guiInventory = inventory;
player.openInventory(inventory);
}
-
+
Inventory createGUI(String name, Player inventoryHolder) {
- return Bukkit.createInventory(inventoryHolder, InventoryType.CHEST, name);
+ return Bukkit.createInventory(inventoryHolder, InventoryType.CHEST, name);
}
-
+
@EventHandler
- void onGUIInteract(InventoryClickEvent event) {
- if(!plugin.isHotkeyGUI()) {
- return;
- }
- if(!(event.getWhoClicked() instanceof Player)) {
- return;
- }
- Player p = (Player) event.getWhoClicked();
- plugin.registerPlayerIfNeeded(p);
- PlayerSetting setting = plugin.getPerPlayerSettings().get(p.getUniqueId().toString());
-
- if(setting.guiInventory==null) {
- return;
- }
-
- if(event.getClickedInventory()==null) {
- return;
- }
- if(!event.getClickedInventory().equals(setting.guiInventory)) {
- return;
- }
-
- // We only get this far if the player has clicked inside his GUI inventory
- event.setCancelled(true);
- if(event.getClick() != ClickType.LEFT) {
- return;
- }
+ void onGUIInteract(InventoryClickEvent event) {
+ if (!plugin.isHotkeyGUI()) {
+ return;
+ }
+ if (!(event.getWhoClicked() instanceof Player)) {
+ return;
+ }
+ Player player = (Player) event.getWhoClicked();
+ plugin.registerPlayerIfNeeded(player);
+ PlayerSetting setting = plugin.getPerPlayerSettings().get(player.getUniqueId().toString());
- if(event.getCurrentItem()==null || event.getCurrentItem().getType()==Material.AIR) {
- return;
- }
+ if (setting.guiInventory == null) {
+ return;
+ }
+ if (event.getClickedInventory() == null) {
+ return;
+ }
+ if (!event.getClickedInventory().equals(setting.guiInventory)) {
+ return;
+ }
- if(event.getSlot() == SettingsGUI.slotMiddleClick) {
- setting.toggleMiddleClick();
- plugin.getSettingsGUI().openGUI(p);
- }
- else if(event.getSlot() == SettingsGUI.slotShiftClick) {
- setting.toggleShiftClick();
- plugin.getSettingsGUI().openGUI(p);
- } else if(event.getSlot() == SettingsGUI.slotDoubleClick) {
- setting.toggleDoubleClick();
- plugin.getSettingsGUI().openGUI(p);
- } else if(event.getSlot() == SettingsGUI.slotLeftClickFromOutside) {
- setting.toggleLeftClickOutside();
- plugin.getSettingsGUI().openGUI(p);
- } else if(event.getSlot() == SettingsGUI.slotShiftRightClick) {
- setting.toggleShiftRightClick();
- plugin.getSettingsGUI().openGUI(p);
- } else if(event.getSlot() == SettingsGUI.slotLeftClick) {
- setting.toggleLeftClick();
- plugin.getSettingsGUI().openGUI(p);
- } else if(event.getSlot() == SettingsGUI.slotRightClick) {
- setting.toggleRightClick();
- plugin.getSettingsGUI().openGUI(p);
- }
-
- }
+ // We only get this far if the player has clicked inside his GUI inventory
+ event.setCancelled(true);
+ if (event.getClick() != ClickType.LEFT) {
+ return;
+ }
+
+ if (event.getCurrentItem() == null || event.getCurrentItem().getType() == Material.AIR) {
+ return;
+ }
+
+ if (event.getSlot() == SettingsGUI.slotMiddleClick) {
+ if(player.hasPermission(Hotkey.getPermission(Hotkey.MIDDLE_CLICK))) setting.toggleMiddleClick();
+ plugin.getSettingsGUI().openGUI(player);
+ } else if (event.getSlot() == SettingsGUI.slotShiftClick) {
+ if(player.hasPermission(Hotkey.getPermission(Hotkey.SHIFT_CLICK))) setting.toggleShiftClick();
+ plugin.getSettingsGUI().openGUI(player);
+ } else if (event.getSlot() == SettingsGUI.slotDoubleClick) {
+ if(player.hasPermission(Hotkey.getPermission(Hotkey.DOUBLE_CLICK))) setting.toggleDoubleClick();
+ plugin.getSettingsGUI().openGUI(player);
+ } else if (event.getSlot() == SettingsGUI.slotLeftClickFromOutside) {
+ if(player.hasPermission(Hotkey.getPermission(Hotkey.OUTSIDE))) setting.toggleLeftClickOutside();
+ plugin.getSettingsGUI().openGUI(player);
+ } else if (event.getSlot() == SettingsGUI.slotShiftRightClick) {
+ if(player.hasPermission(Hotkey.getPermission(Hotkey.SHIFT_RIGHT_CLICK))) setting.toggleShiftRightClick();
+ plugin.getSettingsGUI().openGUI(player);
+ } else if (event.getSlot() == SettingsGUI.slotLeftClick) {
+ if(player.hasPermission(Hotkey.getPermission(Hotkey.LEFT_CLICK))) setting.toggleLeftClick();
+ plugin.getSettingsGUI().openGUI(player);
+ } else if (event.getSlot() == SettingsGUI.slotRightClick) {
+ if(player.hasPermission(Hotkey.getPermission(Hotkey.RIGHT_CLICK))) setting.toggleRightClick();
+ plugin.getSettingsGUI().openGUI(player);
+ }
+
+ }
}
diff --git a/src/main/java/de/jeff_media/chestsort/listeners/Listener.java b/src/main/java/de/jeff_media/chestsort/listeners/Listener.java
index c05161b..e6b9563 100644
--- a/src/main/java/de/jeff_media/chestsort/listeners/Listener.java
+++ b/src/main/java/de/jeff_media/chestsort/listeners/Listener.java
@@ -54,6 +54,7 @@ public class Listener implements org.bukkit.event.Listener {
@EventHandler
public void onLeftClickChest(PlayerInteractEvent event) {
if(!event.getPlayer().hasPermission("chestsort.use")) return;
+ if(!event.getPlayer().hasPermission(Hotkey.getPermission(Hotkey.OUTSIDE))) return;
if(event.getHand() != EquipmentSlot.HAND) return;
if(event.getAction() != Action.LEFT_CLICK_BLOCK) return;
if(!plugin.getConfig().getBoolean("allow-left-click-to-sort")) return;
@@ -649,7 +650,7 @@ public class Listener implements org.bukkit.event.Listener {
return;
}
- if (e.isLeftClick() && setting.leftClick && p.hasPermission(Hotkey.getPermission(Hotkey.LEFT_CLICK_OUTSIDE))) {
+ if (e.isLeftClick() && setting.leftClick && p.hasPermission(Hotkey.getPermission(Hotkey.LEFT_CLICK))) {
plugin.getLgr().logSort(p, Logger.SortCause.H_LEFT);
if (setting.getCurrentDoubleClick(plugin, PlayerSetting.DoubleClickType.LEFT_CLICK)
== PlayerSetting.DoubleClickType.LEFT_CLICK) {
@@ -661,7 +662,7 @@ public class Listener implements org.bukkit.event.Listener {
plugin.getOrganizer().stuffPlayerInventoryIntoAnother(p.getInventory(), e.getInventory(), true, chestSortEvent);
}
- } else if (e.isRightClick() && setting.rightClick && p.hasPermission(Hotkey.getPermission(Hotkey.RIGHT_CLICK_OUTSIDE))) {
+ } else if (e.isRightClick() && setting.rightClick && p.hasPermission(Hotkey.getPermission(Hotkey.RIGHT_CLICK))) {
plugin.getLgr().logSort(p, Logger.SortCause.H_RIGHT);
if (setting.getCurrentDoubleClick(plugin, PlayerSetting.DoubleClickType.RIGHT_CLICK)
== PlayerSetting.DoubleClickType.RIGHT_CLICK) {
diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml
index f9cbfb9..c152424 100644
--- a/src/main/resources/config.yml
+++ b/src/main/resources/config.yml
@@ -39,7 +39,7 @@
# chestsort.hotkey. Allows to use a specific hotkey. Given to all players by default. Players still need
# to have the chestsort.use permission.
# Available hotkeys are: shiftclick, middleclick, doubleclick, shiftrightclick,
-# leftclickoutside, rightclickoutside
+# leftclick, rightlick, outside
###############################
@@ -151,13 +151,13 @@ allow-sorting-hotkeys: true
# /chestsort hotkeys
#
sorting-hotkeys:
- # Use middle click (mousewheel) on ANY inventory slot as hotkey
+ # Use middle click (mousewheel) on ANY inventory slot as hotkey. Permission: chestsort.hotkey.middleclick
middle-click: true
- # Use shift + left-click on any EMPTY inventory slot as hotkey
+ # Use shift + left-click on any EMPTY inventory slot as hotkey. Permission: chestsort.hotkey.shiftclick
shift-click: true
- # Use double left-click on any EMPTY inventory slot as hotkey
+ # Use double left-click on any EMPTY inventory slot as hotkey. Permission: chestsort.hotkey.doubleclick
double-click: true
- # Use shift + right-click on any EMPTY inventory slot as hotkey
+ # Use shift + right-click on any EMPTY inventory slot as hotkey. Permission: chestsort.hotkey.shiftrightclick
shift-right-click: true
# Amount in seconds that players have to wait between using hotkeys to prevent them from spamming the
@@ -166,6 +166,7 @@ hotkey-cooldown: 0.2
# When enabled, players can leftclick on chests, barrels etc.
# to sort them without having to open them.
+# Permission: chestsort.hotkey.outside
allow-left-click-to-sort: true
# When set to true, sorting a chest by left-clicking it is enabled by default
@@ -182,9 +183,11 @@ allow-additional-hotkeys: true
additional-hotkeys:
# Use left-click outside inventory to quickly put matching items from your inventory (except hotbar)
# into the chest. Use left-double-click to put everything except your hotbar into the chest.
+ # Permission: chestsort.hotkey.leftclick
left-click: false
# Use right-click outside inventory to quickly take all matching items from the chest into your
# inventory. Use right-double-click to take all items out of the chest.
+ # Permission: chestsort.hotkey.leftclick
right-click: false
##########################
diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml
index 9ae2024..3d7a9ad 100644
--- a/src/main/resources/plugin.yml
+++ b/src/main/resources/plugin.yml
@@ -55,7 +55,9 @@ permissions:
default: true
chestsort.hotkey.shiftrightclick:
default: true
- chestsort.hotkey.leftclickoutside:
+ chestsort.hotkey.leftclick:
default: true
- chestsort.hotkey.rightclickoutside:
+ chestsort.hotkey.rightclick:
+ default: true
+ chestsort.hotkey.outside:
default: true
\ No newline at end of file