mirror of
https://github.com/JEFF-Media-GbR/ChestSort.git
synced 2025-01-07 08:57:44 +01:00
9.6.0 release
This commit is contained in:
parent
04eaebc552
commit
49c70243f8
@ -1,5 +1,12 @@
|
||||
# Changelog
|
||||
|
||||
## 9.6.0
|
||||
- Added hotkey to sort chests/barrels etc. by shiftclicking them
|
||||
- Can be configured per player using "/sort hotkeys"
|
||||
- By default it's allowed but disabled
|
||||
- Added command "/chestsortadmin reset <player>" to reset hotkey settings for specific players
|
||||
- Old YML PlayerData is automatically converted to the new NBT storage
|
||||
|
||||
## 9.5.2
|
||||
- PlayerData is stored as NBT data instead of using separate files in 1.14.4 and later
|
||||
|
||||
|
@ -0,0 +1,80 @@
|
||||
package de.jeff_media.ChestSort;
|
||||
|
||||
import de.jeff_media.jefflib.NBTAPI;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ChestSortAdminCommand implements CommandExecutor {
|
||||
|
||||
private final ChestSortPlugin plugin;
|
||||
|
||||
public ChestSortAdminCommand(ChestSortPlugin plugin) {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, @NotNull String[] args) {
|
||||
|
||||
if(!sender.hasPermission("chestsort.admin")) {
|
||||
sender.sendMessage(command.getPermissionMessage());
|
||||
return true;
|
||||
}
|
||||
|
||||
if(args.length==0) {
|
||||
sender.sendMessage(new String[] {
|
||||
"Available admin commands:",
|
||||
"reset <player> -- Resets a player's hotkey settings"
|
||||
});
|
||||
return true;
|
||||
}
|
||||
|
||||
switch(args[0].toLowerCase()) {
|
||||
case "reset":
|
||||
reset(sender, args);
|
||||
break;
|
||||
default:
|
||||
sender.sendMessage("Unknown command: "+args[0]);
|
||||
break;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private void reset(CommandSender sender, String[] args) {
|
||||
if(args.length!=2) {
|
||||
sender.sendMessage("Usage: /chestsortadmin reset <player>");
|
||||
return;
|
||||
}
|
||||
|
||||
Player player = Bukkit.getPlayer(args[1]);
|
||||
if(player == null) {
|
||||
sender.sendMessage("Could not find player "+args[1]);
|
||||
return;
|
||||
}
|
||||
|
||||
plugin.unregisterPlayer(player);
|
||||
|
||||
String[] tags = new String[] {
|
||||
"sortingEnabled",
|
||||
"invSortingEnabled",
|
||||
"leftClick",
|
||||
"rightClick",
|
||||
"shiftClick",
|
||||
"doubleClick",
|
||||
"middleClick",
|
||||
"shiftRightClick",
|
||||
"leftClickOutside",
|
||||
"hasSeenMessage"
|
||||
};
|
||||
|
||||
for(String nbtTag : tags) {
|
||||
NBTAPI.removeNBT(player,nbtTag);
|
||||
}
|
||||
|
||||
sender.sendMessage("Reset hotkey settings for player "+player.getName());
|
||||
}
|
||||
}
|
@ -2,25 +2,30 @@ package de.jeff_media.ChestSort;
|
||||
|
||||
import de.jeff_media.ChestSort.hooks.*;
|
||||
import de.jeff_media.ChestSort.utils.LlamaUtils;
|
||||
import de.jeff_media.ChestSortAPI.ChestSortAPI;
|
||||
import de.jeff_media.ChestSortAPI.ChestSortEvent;
|
||||
import de.jeff_media.ChestSortAPI.ISortable;
|
||||
import net.md_5.bungee.api.ChatMessageType;
|
||||
import net.md_5.bungee.api.chat.TextComponent;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Chest;
|
||||
import org.bukkit.block.DoubleChest;
|
||||
import org.bukkit.block.*;
|
||||
import org.bukkit.entity.ChestedHorse;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.block.Action;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
import org.bukkit.event.inventory.InventoryCloseEvent;
|
||||
import org.bukkit.event.inventory.InventoryOpenEvent;
|
||||
import org.bukkit.event.inventory.InventoryType;
|
||||
import org.bukkit.event.inventory.InventoryType.SlotType;
|
||||
import org.bukkit.event.player.PlayerInteractEvent;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
import org.bukkit.inventory.EquipmentSlot;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.InventoryHolder;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
@ -44,6 +49,23 @@ public class ChestSortListener implements Listener {
|
||||
this.goldenCratesHook = new GoldenCratesHook(plugin);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onLeftClickChest(PlayerInteractEvent event) {
|
||||
if(!event.getPlayer().hasPermission("chestsort.use")) 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;
|
||||
Block clickedBlock = event.getClickedBlock();
|
||||
if(!(clickedBlock.getState() instanceof Container)) return;
|
||||
plugin.registerPlayerIfNeeded(event.getPlayer());
|
||||
ChestSortPlayerSetting playerSetting = plugin.getPlayerSetting(event.getPlayer());
|
||||
if(!playerSetting.leftClickOutside) return;
|
||||
Container containerState = (Container) clickedBlock.getState();
|
||||
Inventory inventory = containerState.getInventory();
|
||||
plugin.getAPI().sortInventory(inventory);
|
||||
event.getPlayer().spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(plugin.messages.MSG_CONTAINER_SORTED));
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerJoin(PlayerJoinEvent event) {
|
||||
|
||||
@ -403,7 +425,6 @@ public class ChestSortListener implements Listener {
|
||||
if (!isAPICall && (event.getClickedInventory().getHolder() != null
|
||||
&& event.getClickedInventory().getHolder() == p
|
||||
&& event.getClickedInventory() != p.getInventory())) {
|
||||
if(plugin.debug) System.out.println("10");
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -3,8 +3,9 @@ package de.jeff_media.ChestSort;
|
||||
import org.bukkit.ChatColor;
|
||||
|
||||
public class ChestSortMessages {
|
||||
final String MSG_GUI_LEFTCLICKOUTSIDE, MSG_CONTAINER_SORTED;
|
||||
|
||||
// Messages can be customized in the config.yml
|
||||
// Messages can be customized in the config.yml
|
||||
// To avoid problems with missing messages in the config, the default messages
|
||||
// are
|
||||
// hardcoded.
|
||||
@ -25,6 +26,9 @@ public class ChestSortMessages {
|
||||
ChestSortMessages(ChestSortPlugin plugin) {
|
||||
this.plugin = plugin;
|
||||
|
||||
MSG_CONTAINER_SORTED = ChatColor.translateAlternateColorCodes('&', plugin.getConfig()
|
||||
.getString("message-container-sorted","&aContainer sorted!"));
|
||||
|
||||
MSG_ACTIVATED = ChatColor.translateAlternateColorCodes('&', plugin.getConfig()
|
||||
.getString("message-sorting-enabled", "&7Automatic chest sorting has been &aenabled&7.&r"));
|
||||
|
||||
@ -66,6 +70,9 @@ public class ChestSortMessages {
|
||||
|
||||
MSG_GUI_DOUBLECLICK = ChatColor.translateAlternateColorCodes('&', plugin.getConfig()
|
||||
.getString("message-gui-double-click","Double-Click"));
|
||||
|
||||
MSG_GUI_LEFTCLICKOUTSIDE = ChatColor.translateAlternateColorCodes('&', plugin.getConfig()
|
||||
.getString("message-gui-left-click-outside", "Left-Click"));
|
||||
|
||||
MSG_GUI_SHIFTRIGHTCLICK = ChatColor.translateAlternateColorCodes('&', plugin.getConfig()
|
||||
.getString("message-gui-shift-right-click","Shift + Right-Click"));
|
||||
|
@ -17,7 +17,7 @@ public class ChestSortPlayerSetting {
|
||||
public boolean invSortingEnabled;
|
||||
|
||||
// Hotkey settings
|
||||
boolean middleClick, shiftClick, doubleClick, shiftRightClick, leftClick, rightClick;
|
||||
boolean middleClick, shiftClick, doubleClick, shiftRightClick, leftClick, rightClick, leftClickOutside;
|
||||
|
||||
Inventory guiInventory = null;
|
||||
|
||||
@ -33,7 +33,7 @@ public class ChestSortPlayerSetting {
|
||||
NONE, RIGHT_CLICK, LEFT_CLICK
|
||||
}
|
||||
|
||||
ChestSortPlayerSetting(boolean sortingEnabled, boolean invSortingEnabled, boolean middleClick, boolean shiftClick, boolean doubleClick, boolean shiftRightClick, boolean leftClick, boolean rightClick, boolean changed) {
|
||||
ChestSortPlayerSetting(boolean sortingEnabled, boolean invSortingEnabled, boolean middleClick, boolean shiftClick, boolean doubleClick, boolean shiftRightClick, boolean leftClick, boolean rightClick, boolean leftCLickOutside, boolean changed) {
|
||||
this.sortingEnabled = sortingEnabled;
|
||||
this.middleClick = middleClick;
|
||||
this.shiftClick = shiftClick;
|
||||
@ -42,6 +42,7 @@ public class ChestSortPlayerSetting {
|
||||
this.invSortingEnabled = invSortingEnabled;
|
||||
this.leftClick = leftClick;
|
||||
this.rightClick = rightClick;
|
||||
this.leftClickOutside = leftCLickOutside;
|
||||
this.changed = changed;
|
||||
}
|
||||
|
||||
@ -75,6 +76,10 @@ public class ChestSortPlayerSetting {
|
||||
shiftRightClick = !shiftRightClick;
|
||||
changed = true;
|
||||
}
|
||||
void toggleLeftClickOutside() {
|
||||
leftClickOutside = !leftClickOutside;
|
||||
changed = true;
|
||||
}
|
||||
void toggleLeftClick() {
|
||||
leftClick = !leftClick;
|
||||
changed = true;
|
||||
|
@ -285,6 +285,7 @@ public class ChestSortPlugin extends JavaPlugin implements de.jeff_media.ChestSo
|
||||
ChestSortInvSortCommand invsortCommandExecutor = new ChestSortInvSortCommand(this);
|
||||
this.getCommand("invsort").setExecutor(invsortCommandExecutor);
|
||||
this.getCommand("invsort").setTabCompleter(tabCompleter);
|
||||
this.getCommand("chestsortadmin").setExecutor(new ChestSortAdminCommand(this));
|
||||
|
||||
if (verbose) {
|
||||
getLogger().info("Use permissions: " + getConfig().getBoolean("use-permissions"));
|
||||
@ -431,6 +432,7 @@ public class ChestSortPlugin extends JavaPlugin implements de.jeff_media.ChestSo
|
||||
p.getUniqueId().toString() + ".yml");
|
||||
YamlConfiguration playerConfig = YamlConfiguration.loadConfiguration(playerFile);
|
||||
|
||||
playerConfig.addDefault("sortingEnabled", getConfig().getBoolean("sorting-enabled-by-default"));
|
||||
playerConfig.addDefault("invSortingEnabled", getConfig().getBoolean("inv-sorting-enabled-by-default"));
|
||||
playerConfig.addDefault("middleClick", getConfig().getBoolean("sorting-hotkeys.middle-click"));
|
||||
playerConfig.addDefault("shiftClick", getConfig().getBoolean("sorting-hotkeys.shift-click"));
|
||||
@ -438,6 +440,7 @@ public class ChestSortPlugin extends JavaPlugin implements de.jeff_media.ChestSo
|
||||
playerConfig.addDefault("shiftRightClick", getConfig().getBoolean("sorting-hotkeys.shift-right-click"));
|
||||
playerConfig.addDefault("leftClick", getConfig().getBoolean("additional-hotkeys.left-click"));
|
||||
playerConfig.addDefault("rightClick", getConfig().getBoolean("additional-hotkeys.right-click"));
|
||||
playerConfig.addDefault("leftClickOutside", getConfig().getBoolean("left-click-to-sort-enabled-by-default"));
|
||||
|
||||
boolean activeForThisPlayer;
|
||||
boolean invActiveForThisPlayer;
|
||||
@ -447,28 +450,34 @@ public class ChestSortPlugin extends JavaPlugin implements de.jeff_media.ChestSo
|
||||
boolean shiftRightClick;
|
||||
boolean leftClick;
|
||||
boolean rightClick;
|
||||
boolean changed = false;
|
||||
boolean leftClickFromOutside;
|
||||
boolean changed;
|
||||
|
||||
if (!playerFile.exists()) {
|
||||
if (playerFile.exists() || VersionUtil.getServerBukkitVersion().isLowerThan(VersionUtil.v1_14_4_R01)) {
|
||||
// If the player settings file does not exist for this player, set it to the
|
||||
// default value
|
||||
activeForThisPlayer = getConfig().getBoolean("sorting-enabled-by-default");
|
||||
invActiveForThisPlayer = getConfig().getBoolean("inv-sorting-enabled-by-default");
|
||||
middleClick = getConfig().getBoolean("sorting-hotkeys.middle-click");
|
||||
shiftClick = getConfig().getBoolean("sorting-hotkeys.shift-click");
|
||||
doubleClick = getConfig().getBoolean("sorting-hotkeys.double-click");
|
||||
shiftRightClick = getConfig().getBoolean("sorting-hotkeys.shift-right-click");
|
||||
leftClick = getConfig().getBoolean("additional-hotkeys.left-click");
|
||||
rightClick = getConfig().getBoolean("additional-hotkeys.right-click");
|
||||
activeForThisPlayer = playerConfig.getBoolean("sortingEnabled");
|
||||
invActiveForThisPlayer = playerConfig.getBoolean("invSortingEnabled");
|
||||
middleClick = playerConfig.getBoolean("middleClick");
|
||||
shiftClick = playerConfig.getBoolean("shiftClick");
|
||||
doubleClick = playerConfig.getBoolean("doubleClick");
|
||||
shiftRightClick = playerConfig.getBoolean("shiftRightClick");
|
||||
leftClickFromOutside = playerConfig.getBoolean("leftClickOutside");
|
||||
leftClick = playerConfig.getBoolean("leftClick");
|
||||
rightClick = playerConfig.getBoolean("rightClick");
|
||||
|
||||
if (debug) {
|
||||
getLogger().info("Player " + p.getName() + " does not have player settings yet, using default values.");
|
||||
}
|
||||
|
||||
// Because this is new a file, we have to save it on shutdown/disconnect
|
||||
changed = true;
|
||||
|
||||
if(VersionUtil.getServerBukkitVersion().isHigherThanOrEqualTo(VersionUtil.v1_14_4_R01)) {
|
||||
if (playerFile.delete()) {
|
||||
this.getLogger().info("Converted old .yml playerdata file to NBT tags for player " + p.getName());
|
||||
} else {
|
||||
this.getLogger().warning("Could not remove old playerdata .yml file for player " + p.getName());
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// If the file exists, check if the player has sorting enabled
|
||||
// NBT Values
|
||||
activeForThisPlayer = Boolean.parseBoolean(NBTAPI.getNBT(p, "sortingEnabled", String.valueOf(playerConfig.getBoolean("sortingEnabled"))));
|
||||
invActiveForThisPlayer = Boolean.parseBoolean(NBTAPI.getNBT(p, "invSortingEnabled", String.valueOf(playerConfig.getBoolean("invSortingEnabled", getConfig().getBoolean("inv-sorting-enabled-by-default")))));
|
||||
middleClick = Boolean.parseBoolean(NBTAPI.getNBT(p, "middleClick", String.valueOf(playerConfig.getBoolean("middleClick"))));
|
||||
@ -477,10 +486,12 @@ public class ChestSortPlugin extends JavaPlugin implements de.jeff_media.ChestSo
|
||||
shiftRightClick = Boolean.parseBoolean(NBTAPI.getNBT(p, "shiftRightClick", String.valueOf(playerConfig.getBoolean("shiftRightClick"))));
|
||||
leftClick = Boolean.parseBoolean(NBTAPI.getNBT(p, "leftClick", String.valueOf(playerConfig.getBoolean("leftClick", getConfig().getBoolean("additional-hotkeys.left-click")))));
|
||||
rightClick = Boolean.parseBoolean(NBTAPI.getNBT(p, "rightClick", String.valueOf(playerConfig.getBoolean("rightClick", getConfig().getBoolean("additional-hotkeys.right-click")))));
|
||||
playerFile.delete();
|
||||
leftClickFromOutside = Boolean.parseBoolean(NBTAPI.getNBT(p, "leftClickOutside", String.valueOf(playerConfig.getBoolean("leftClickOutside", getConfig().getBoolean("left-click-to-sort-enabled-by-default")))));
|
||||
|
||||
changed = true;
|
||||
}
|
||||
|
||||
ChestSortPlayerSetting newSettings = new ChestSortPlayerSetting(activeForThisPlayer, invActiveForThisPlayer, middleClick, shiftClick, doubleClick, shiftRightClick, leftClick, rightClick, changed);
|
||||
ChestSortPlayerSetting newSettings = new ChestSortPlayerSetting(activeForThisPlayer, invActiveForThisPlayer, middleClick, shiftClick, doubleClick, shiftRightClick, leftClick, rightClick, leftClickFromOutside, changed);
|
||||
|
||||
// when "show-message-again-after-logout" is enabled, we don't care if the
|
||||
// player already saw the message
|
||||
@ -581,6 +592,8 @@ public class ChestSortPlugin extends JavaPlugin implements de.jeff_media.ChestSo
|
||||
getConfig().addDefault("use-permissions", true);
|
||||
getConfig().addDefault("allow-automatic-sorting", true);
|
||||
getConfig().addDefault("allow-automatic-inventory-sorting", true);
|
||||
getConfig().addDefault("allow-left-click-to-sort",true);
|
||||
getConfig().addDefault("left-click-to-sort-enabled-by-default", false);
|
||||
getConfig().addDefault("sorting-enabled-by-default", false);
|
||||
getConfig().addDefault("inv-sorting-enabled-by-default", false);
|
||||
getConfig().addDefault("show-message-when-using-chest", true);
|
||||
@ -683,6 +696,7 @@ public class ChestSortPlugin extends JavaPlugin implements de.jeff_media.ChestSo
|
||||
NBTAPI.addNBT(p, "shiftRightClick", String.valueOf(setting.shiftRightClick));
|
||||
NBTAPI.addNBT(p, "leftClick", String.valueOf(setting.leftClick));
|
||||
NBTAPI.addNBT(p, "rightClick", String.valueOf(setting.rightClick));
|
||||
NBTAPI.addNBT(p, "leftClickOutside", String.valueOf(setting.leftClickOutside));
|
||||
} else {
|
||||
|
||||
File playerFile = new File(getDataFolder() + File.separator + "playerdata",
|
||||
@ -697,6 +711,7 @@ public class ChestSortPlugin extends JavaPlugin implements de.jeff_media.ChestSo
|
||||
playerConfig.set("shiftRightClick", setting.shiftRightClick);
|
||||
playerConfig.set("leftClick", setting.leftClick);
|
||||
playerConfig.set("rightClick", setting.rightClick);
|
||||
playerConfig.set("leftClickOutside", setting.leftClickOutside);
|
||||
try {
|
||||
// Only saved if the config has been changed
|
||||
if (setting.changed) {
|
||||
|
@ -21,6 +21,7 @@ public class ChestSortSettingsGUI implements Listener {
|
||||
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;
|
||||
|
||||
@ -28,7 +29,7 @@ public class ChestSortSettingsGUI implements Listener {
|
||||
final static Material green = Material.EMERALD_BLOCK;
|
||||
|
||||
enum Hotkey {
|
||||
MiddleClick, ShiftClick, DoubleClick, ShiftRightClick, LeftClick, RightClick
|
||||
MiddleClick, ShiftClick, DoubleClick, ShiftRightClick, LeftClick, RightClick, LeftClickOutside
|
||||
}
|
||||
|
||||
ChestSortSettingsGUI(ChestSortPlugin plugin) {
|
||||
@ -63,6 +64,9 @@ public class ChestSortSettingsGUI implements Listener {
|
||||
case ShiftRightClick:
|
||||
meta.setDisplayName(ChatColor.RESET + plugin.messages.MSG_GUI_SHIFTRIGHTCLICK + ": " + suffix);
|
||||
break;
|
||||
case LeftClickOutside:
|
||||
meta.setDisplayName(ChatColor.RESET + plugin.messages.MSG_GUI_LEFTCLICKOUTSIDE + ": " + suffix);
|
||||
break;
|
||||
case LeftClick:
|
||||
meta.setDisplayName(ChatColor.RESET + plugin.messages.MSG_GUI_LEFTCLICK + ": "+ suffix);
|
||||
break;
|
||||
@ -89,6 +93,9 @@ public class ChestSortSettingsGUI implements Listener {
|
||||
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));
|
||||
@ -146,6 +153,9 @@ public class ChestSortSettingsGUI implements Listener {
|
||||
} else if(event.getSlot() == ChestSortSettingsGUI.slotDoubleClick) {
|
||||
setting.toggleDoubleClick();
|
||||
plugin.settingsGUI.openGUI(p);
|
||||
} else if(event.getSlot() == ChestSortSettingsGUI.slotLeftClickFromOutside) {
|
||||
setting.toggleLeftClickOutside();
|
||||
plugin.settingsGUI.openGUI(p);
|
||||
} else if(event.getSlot() == ChestSortSettingsGUI.slotShiftRightClick) {
|
||||
setting.toggleShiftRightClick();
|
||||
plugin.settingsGUI.openGUI(p);
|
||||
|
@ -149,6 +149,13 @@ sorting-hotkeys:
|
||||
# sorting mechanism
|
||||
hotkey-cooldown: 0.2
|
||||
|
||||
# When enabled, players can leftclick on chests, barrels etc.
|
||||
# to sort them without having to open them.
|
||||
allow-left-click-to-sort: true
|
||||
|
||||
# When set to true, sorting a chest by left-clicking it is enabled by default
|
||||
left-click-to-sort-enabled-by-default: false
|
||||
|
||||
# Additionally to sorting hotkeys, you can quickly unload your inventory into a chest and vice versa
|
||||
# using left-click or right-click outside of a chest's inventory.
|
||||
# A single click will only affect matching items (items that are already present in the other inventory)
|
||||
@ -337,6 +344,7 @@ message-inv-sorting-enabled: "&7Automatic inventory sorting has been &aenabled&7
|
||||
message-player-inventory-sorted: "&7Your inventory has been sorted."
|
||||
message-error-players-only: "&cError: This command can only be run by players."
|
||||
message-error-invalid-options: "&cError: Unknown option %s. Valid options are %s."
|
||||
message-hotbar-container-sorted: "&aContainer sorted!"
|
||||
message-gui-enabled: "&aEnabled"
|
||||
message-gui-disabled: "&cDisabled"
|
||||
message-gui-middle-click: "Middle-Click"
|
||||
@ -345,6 +353,7 @@ message-gui-double-click: "Double-Click"
|
||||
message-gui-shift-right-click: "Shift + Right-Click"
|
||||
message-gui-left-click: "Fill Chest (Left-Click/Double-Left-Click)"
|
||||
message-gui-right-click: "Empty Chest (Right-Click/Double-Right-Click)"
|
||||
message-gui-left-click-outside: "Left-Click from outside"
|
||||
|
||||
##### English
|
||||
#message-when-using-chest: "&7Hint: Type &6/chestsort&7 to enable automatic chest sorting."
|
||||
@ -364,6 +373,8 @@ message-gui-right-click: "Empty Chest (Right-Click/Double-Right-Click)"
|
||||
#message-gui-shift-right-click: "Shift + Right-Click"
|
||||
#message-gui-left-click: "Fill Chest (Left-Click/Double-Left-Click)"
|
||||
#message-gui-right-click: "Empty Chest (Right-Click/Double-Right-Click)"
|
||||
#message-gui-left-click-outside: "Left-Click from outside"
|
||||
|
||||
|
||||
##### Chinese - Thanks to qsefthuopq, Aira-Sakuranomiya and BackWheel for translating!
|
||||
#message-when-using-chest: "&7提示: 输入 &6/chestsort&7 来启用自动整理箱子."
|
||||
@ -383,6 +394,7 @@ message-gui-right-click: "Empty Chest (Right-Click/Double-Right-Click)"
|
||||
#message-gui-shift-right-click: "Shift + 右键"
|
||||
#message-gui-left-click: "填充箱子 (左键/双击左键)"
|
||||
#message-gui-right-click: "清空箱子 (右键/双击右键)"
|
||||
#message-gui-left-click-outside: "Left-Click from outside"
|
||||
|
||||
##### Chinese (Traditional) 繁體中文 - Thanks to Command1264 for translating!
|
||||
#message-when-using-chest: "&7小提醒: 輸入 &6/chestsort&7 來開啟自動整理箱子"
|
||||
@ -402,6 +414,7 @@ message-gui-right-click: "Empty Chest (Right-Click/Double-Right-Click)"
|
||||
#message-gui-shift-right-click: "Shift + 右鍵"
|
||||
#message-gui-left-click: "填滿箱子 (左鍵/雙擊左鍵)"
|
||||
#message-gui-right-click: "清空箱子 (右鍵/雙擊右鍵)"
|
||||
#message-gui-left-click-outside: "Left-Click from outside"
|
||||
|
||||
##### Dutch - Thanks to Xeyame for translating!
|
||||
##### Note: Some messages are still untranslated. Please send me your translation at SpigotMC
|
||||
@ -422,6 +435,7 @@ message-gui-right-click: "Empty Chest (Right-Click/Double-Right-Click)"
|
||||
#message-gui-shift-right-click: "Shift + Right-Click"
|
||||
#message-gui-left-click: "Fill Chest (Left-Click/Double-Left-Click)"
|
||||
#message-gui-right-click: "Empty Chest (Right-Click/Double-Right-Click)"
|
||||
#message-gui-left-click-outside: "Left-Click from outside"
|
||||
|
||||
##### French / Français - Thanks to automatizer, demon57730, FichdlMaa and Stalk3r77 for translating!
|
||||
# Note: The following messages have been changed in version 8.11 and need a new translation:
|
||||
@ -444,6 +458,7 @@ message-gui-right-click: "Empty Chest (Right-Click/Double-Right-Click)"
|
||||
#message-gui-shift-right-click: "Shift + Clic droit"
|
||||
#message-gui-left-click: "Remplir le coffre (Clic-gauche)"
|
||||
#message-gui-right-click: "Vider le coffre (Clic-droit)"
|
||||
#message-gui-left-click-outside: "Left-Click from outside"
|
||||
|
||||
##### German
|
||||
#message-when-using-chest: "&7Hinweis: Benutze &6/chestsort&7 um die automatische Kistensortierung zu aktivieren."
|
||||
@ -463,6 +478,7 @@ message-gui-right-click: "Empty Chest (Right-Click/Double-Right-Click)"
|
||||
#message-gui-shift-right-click: "Shift + Rechtsklick"
|
||||
#message-gui-left-click: "Kiste füllen (Linksklick/doppelter Linksklick)"
|
||||
#message-gui-right-click: "Kiste leeren (Rechtsklick/doppelter Rechtsklick)"
|
||||
#message-gui-left-click-outside: "Linksklick von außen"
|
||||
|
||||
##### Hungarian - Thanks to Letter and Polaroli for translating!
|
||||
# Note: The following messages have been changed in version 8.11 and need a new translation:
|
||||
@ -485,6 +501,7 @@ message-gui-right-click: "Empty Chest (Right-Click/Double-Right-Click)"
|
||||
#message-gui-shift-right-click: "Shift + Jobb klikk"
|
||||
#message-gui-left-click: "Láda feltöltés (Bal klikk)"
|
||||
#message-gui-right-click: "Láda ürítés (Jobb klikk)"
|
||||
#message-gui-left-click-outside: "Left-Click from outside"
|
||||
|
||||
##### Italian
|
||||
##### Note: Some messages are still untranslated. Please send me your translation at SpigotMC
|
||||
@ -505,6 +522,7 @@ message-gui-right-click: "Empty Chest (Right-Click/Double-Right-Click)"
|
||||
#message-gui-shift-right-click: "Shift + Right-Click"
|
||||
#message-gui-left-click: "Fill Chest (Left-Click/Double-Left-Click)"
|
||||
#message-gui-right-click: "Empty Chest (Right-Click/Double-Right-Click)"
|
||||
#message-gui-left-click-outside: "Left-Click from outside"
|
||||
|
||||
##### Japanese - Thanks to Sefyy for translating!
|
||||
# Note: The following messages have been changed in version 8.11 and need a new translation:
|
||||
@ -527,6 +545,7 @@ message-gui-right-click: "Empty Chest (Right-Click/Double-Right-Click)"
|
||||
#message-gui-shift-right-click: "シフト+右クリック"
|
||||
#message-gui-left-click: "チェストを埋める(左クリック)"
|
||||
#message-gui-right-click: "チェストを空ける(右クリック)"
|
||||
#message-gui-left-click-outside: "Left-Click from outside"
|
||||
|
||||
##### Korean (한국어) - Thanks to kf12 for translating!
|
||||
##### Note: Some messages are still untranslated. Please send me your translation at SpigotMC
|
||||
@ -547,6 +566,7 @@ message-gui-right-click: "Empty Chest (Right-Click/Double-Right-Click)"
|
||||
#message-gui-shift-right-click: "쉬프트 + 우클릭"
|
||||
#message-gui-left-click: "Fill Chest (Left-Click/Double-Left-Click)"
|
||||
#message-gui-right-click: "Empty Chest (Right-Click/Double-Right-Click)"
|
||||
#message-gui-left-click-outside: "Left-Click from outside"
|
||||
|
||||
##### Polish - Thanks to PLKaratusPL for translating!
|
||||
#message-when-using-chest: "&7Wskazówka: Wpisz &6/chestsort&7 by włączyć automatyczne sortowanie skrzyń."
|
||||
@ -566,6 +586,7 @@ message-gui-right-click: "Empty Chest (Right-Click/Double-Right-Click)"
|
||||
#message-gui-shift-right-click: "Shift + PPM"
|
||||
#message-gui-left-click: "Wypełnienie Skrzyni (LPM/Podwójny LPM)"
|
||||
#message-gui-right-click: "Opróżnienie Skrzyni (PPM/Podwójny PPM)"
|
||||
#message-gui-left-click-outside: "Left-Click from outside"
|
||||
|
||||
##### Portuguese - Thanks to wildastral for translating!
|
||||
##### Note: Some messages are still untranslated. Please send me your translation at SpigotMC
|
||||
@ -586,6 +607,7 @@ message-gui-right-click: "Empty Chest (Right-Click/Double-Right-Click)"
|
||||
#message-gui-shift-right-click: "Shift + Right-Click"
|
||||
#message-gui-left-click: "Fill Chest (Left-Click/Double-Left-Click)"
|
||||
#message-gui-right-click: "Empty Chest (Right-Click/Double-Right-Click)"
|
||||
#message-gui-left-click-outside: "Left-Click from outside"
|
||||
|
||||
##### Russian
|
||||
#message-when-using-chest: "&7Подсказка: введите &6/chestsort&7, чтобы включить автоматическую сортировку вещей в сундуках."
|
||||
@ -605,6 +627,7 @@ message-gui-right-click: "Empty Chest (Right-Click/Double-Right-Click)"
|
||||
#message-gui-shift-right-click: "Shift + Правый клик"
|
||||
#message-gui-left-click: "Заполнить сундук (ЛКМ/Двойной ЛКМ)"
|
||||
#message-gui-right-click: "Освободить сундук (ПКМ/Двойной ПКМ)"
|
||||
#message-gui-left-click-outside: "Left-Click from outside"
|
||||
|
||||
##### Spanish
|
||||
#message-when-using-chest: "&7Sugerencia: Escribe &6/chestsort&7 para activar la clasificación automática de cofres."
|
||||
@ -624,6 +647,7 @@ message-gui-right-click: "Empty Chest (Right-Click/Double-Right-Click)"
|
||||
#message-gui-shift-right-click: "Mayus + Clic Derecho"
|
||||
#message-gui-left-click: "Llenar Cofre (Clic Izquierdo / Doble Clic Izquierdo)"
|
||||
#message-gui-right-click: "Vaciar Cofre (Clic Derecho / Doble Clic Derecho)"
|
||||
#message-gui-left-click-outside: "Left-Click from outside"
|
||||
|
||||
##### Turkish
|
||||
#message-when-using-chest: "&7İpucu: &6/chestsort&7 yazarak otomatik sandık düzenlemesini aktif edebilirsiniz"
|
||||
@ -643,6 +667,7 @@ message-gui-right-click: "Empty Chest (Right-Click/Double-Right-Click)"
|
||||
#message-gui-shift-right-click: "Shift + Sağ tık"
|
||||
#message-gui-left-click: "Sandığı doldur (Sol tık/Çift sol tık)"
|
||||
#message-gui-right-click: "Sandığı boşalt (Sağ tık/Çift sağ tık)"
|
||||
#message-gui-left-click-outside: "Left-Click from outside"
|
||||
|
||||
############################
|
||||
##### Technical stuff! #####
|
||||
|
@ -33,6 +33,11 @@ commands:
|
||||
/<command> help -- Shows help about this command
|
||||
aliases: [invsort,inventorysort]
|
||||
permission: chestsort.use.inventory
|
||||
chestsortadmin:
|
||||
description: Admin command for ChestSort
|
||||
usage: |
|
||||
/<command> reset <player> -- Reset's a player's hotkey settings
|
||||
permission: chestsort.admin
|
||||
permissions:
|
||||
chestsort.use:
|
||||
description: Allows chest sorting
|
||||
|
Loading…
Reference in New Issue
Block a user