10.3.1 release

This commit is contained in:
mfnalex 2021-06-24 15:53:58 +02:00
parent acbd6b0357
commit 90ed038e4c
8 changed files with 175 additions and 156 deletions

View File

@ -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

View File

@ -9,7 +9,7 @@
<name>ChestSort</name>
<url>https://www.chestsort.de</url>
<description>Allows automatic chest sorting!</description>
<version>10.3.0</version>
<version>10.3.1</version>
<packaging>jar</packaging>
<properties>

View File

@ -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);

View File

@ -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;
}
}

View File

@ -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);
}
}
}

View File

@ -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) {

View File

@ -39,7 +39,7 @@
# chestsort.hotkey.<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
##########################

View File

@ -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