From 6b0f37de2c045a0eb93ed23fb71f0f78a4c8f43c Mon Sep 17 00:00:00 2001 From: jameslfc19 Date: Sat, 1 Aug 2020 22:04:30 +0100 Subject: [PATCH] Huge Code Cleanup! --- .../minecraft/chests/{API.java => Api.java} | 16 +- .../chests/v1_16_R1/ChestOpener_1_16.java | 9 +- .../minecraft/chests/ChestsPlusPlus.java | 24 +- .../minecraft/chests/api/ApiSpecific.java | 15 +- .../chests/api/NMSProviderDefault.java | 2 +- .../chests/commands/AutoCraftCommand.java | 75 ++--- .../chests/commands/ChestLinkCommand.java | 66 ++-- .../commands/ChestsPlusPlusCommand.java | 35 ++- .../chests/commands/ServerCommand.java | 4 +- .../minecraft/chests/crafting/Crafting.java | 29 +- .../chests/crafting/ToolRepairRecipe.java | 1 - .../chests/crafting/UserShapedRecipe.java | 70 ++--- .../minecraft/chests/filters/Filter.java | 33 +- .../chests/filters/HopperFilter.java | 26 +- .../interfaces/VirtualCraftingHolder.java | 126 ++++---- .../interfaces/VirtualInventoryHolder.java | 26 +- .../chests/inventories/ChestLinkMenu.java | 26 +- .../chests/lang/LangFileProperties.java | 26 +- .../minecraft/chests/lang/LanguageFile.java | 60 ++-- .../minecraft/chests/lang/Message.java | 21 +- .../chests/listeners/HopperListener.java | 47 +-- .../chests/listeners/InventoryListener.java | 67 +++-- .../chests/listeners/StorageListener.java | 132 ++++---- .../chests/listeners/TempListener.java | 8 +- .../chests/listeners/WorldListener.java | 16 +- .../minecraft/chests/misc/Messages.java | 34 +-- .../minecraft/chests/misc/Stats.java | 8 +- .../minecraft/chests/misc/Utils.java | 139 ++++----- .../minecraft/chests/misc/Values.java | 11 +- .../chests/runnables/ChestLinkVerifier.java | 34 ++- .../runnables/VirtualChestToHopper.java | 23 +- .../minecraft/chests/serialize/Config.java | 28 +- .../chests/serialize/ConfigStorage.java | 17 +- .../chests/serialize/LocationInfo.java | 17 +- .../chests/serialize/MaterialSerializer.java | 12 +- .../chests/serialize/PluginConfig.java | 75 ++--- .../chests/serialize/RecipeSerializable.java | 19 +- .../chests/serialize/SpigotConfig.java | 20 +- .../chests/serialize/WorldSettings.java | 16 +- .../chests/sort/InventorySorter.java | 51 ++-- .../chests/storage/StorageUtils.java | 40 +-- .../storage/abstracts/AbstractStorage.java | 282 ++++++++++-------- .../chests/storage/abstracts/StorageInfo.java | 27 +- .../storage/abstracts/StorageMessages.java | 63 ++-- .../chests/storage/abstracts/StorageType.java | 68 +++-- .../autocraft/AutoCraftingStorage.java | 21 +- .../autocraft/AutoCraftingStorageType.java | 36 +-- .../storage/chestlink/ChestLinkStorage.java | 64 ++-- .../chestlink/ChestLinkStorageType.java | 36 +-- .../chests/versionchecker/UpdateChecker.java | 27 +- .../src/main/resources/lang/de_DE.properties | 92 +++--- .../src/main/resources/lang/es_ES.properties | 92 +++--- .../src/main/resources/lang/hu_HU.properties | 92 +++--- .../src/main/resources/lang/nl_NL.properties | 92 +++--- 54 files changed, 1296 insertions(+), 1200 deletions(-) rename ChestsPlusPlusAPI/src/main/java/com/jamesdpeters/minecraft/chests/{API.java => Api.java} (67%) diff --git a/ChestsPlusPlusAPI/src/main/java/com/jamesdpeters/minecraft/chests/API.java b/ChestsPlusPlusAPI/src/main/java/com/jamesdpeters/minecraft/chests/Api.java similarity index 67% rename from ChestsPlusPlusAPI/src/main/java/com/jamesdpeters/minecraft/chests/API.java rename to ChestsPlusPlusAPI/src/main/java/com/jamesdpeters/minecraft/chests/Api.java index 63e190b..68fbc99 100644 --- a/ChestsPlusPlusAPI/src/main/java/com/jamesdpeters/minecraft/chests/API.java +++ b/ChestsPlusPlusAPI/src/main/java/com/jamesdpeters/minecraft/chests/Api.java @@ -3,27 +3,27 @@ package com.jamesdpeters.minecraft.chests; import org.bukkit.Bukkit; import org.bukkit.plugin.Plugin; -public class API { +public class Api { private static Plugin plugin; - public static void register(Plugin plugin){ - API.plugin = plugin; + public static void register(Plugin plugin) { + Api.plugin = plugin; } - public static Plugin getPlugin(){ + public static Plugin getPlugin() { return plugin; } - public static NMSProvider getNMSProvider(){ + public static NMSProvider getNMSProvider() { String packageName = NMSProvider.class.getPackage().getName(); String nmsVersion = Bukkit.getServer().getClass().getPackage().getName().split("\\.")[3]; - String nmsProvider = packageName+"."+nmsVersion+".NMSProviderImpl"; - plugin.getLogger().info("Found API version: "+nmsVersion); + String nmsProvider = packageName + "." + nmsVersion + ".NMSProviderImpl"; + plugin.getLogger().info("Found API version: " + nmsVersion); try { return (NMSProvider) Class.forName(nmsProvider).newInstance(); } catch (ClassNotFoundException | IllegalAccessException | InstantiationException e) { - plugin.getLogger().warning("A valid server implementation wasn't found for: "+nmsVersion); + plugin.getLogger().warning("A valid server implementation wasn't found for: " + nmsVersion); plugin.getLogger().warning("You may be running an outdated version of the plugin or it needs to be updated to the latest version!"); return null; } diff --git a/ChestsPlusPlus_1_16/src/main/java/com/jamesdpeters/minecraft/chests/v1_16_R1/ChestOpener_1_16.java b/ChestsPlusPlus_1_16/src/main/java/com/jamesdpeters/minecraft/chests/v1_16_R1/ChestOpener_1_16.java index 485f0a2..3270e34 100644 --- a/ChestsPlusPlus_1_16/src/main/java/com/jamesdpeters/minecraft/chests/v1_16_R1/ChestOpener_1_16.java +++ b/ChestsPlusPlus_1_16/src/main/java/com/jamesdpeters/minecraft/chests/v1_16_R1/ChestOpener_1_16.java @@ -1,6 +1,6 @@ package com.jamesdpeters.minecraft.chests.v1_16_R1; -import com.jamesdpeters.minecraft.chests.API; +import com.jamesdpeters.minecraft.chests.Api; import com.jamesdpeters.minecraft.chests.ChestOpener; import com.jamesdpeters.minecraft.chests.TileEntityOpener; import com.jamesdpeters.minecraft.chests.v1_16_R1.tileentities.CustomTileEntityBarrel; @@ -13,7 +13,6 @@ import net.minecraft.server.v1_16_R1.TileEntityChestTrapped; import net.minecraft.server.v1_16_R1.TileEntityTypes; import net.minecraft.server.v1_16_R1.World; import org.bukkit.Bukkit; -import org.bukkit.block.Chest; import org.bukkit.block.Container; import org.bukkit.block.Lidded; import org.bukkit.craftbukkit.v1_16_R1.CraftWorld; @@ -42,7 +41,7 @@ public class ChestOpener_1_16 implements ChestOpener { if(tileEntityOpener != null) { TileEntityOpener opener = tileEntityOpener; - Bukkit.getScheduler().scheduleSyncDelayedTask(API.getPlugin(), ()-> opener.setViewers(inventory.getViewers()),1); + Bukkit.getScheduler().scheduleSyncDelayedTask(Api.getPlugin(), ()-> opener.setViewers(inventory.getViewers()),1); return tileEntityOpener; } else { CraftContainer craftContainer = (CraftContainer) container; @@ -55,7 +54,7 @@ public class ChestOpener_1_16 implements ChestOpener { if (tileEntity instanceof TileEntityOpener) { tileEntityOpener = (TileEntityOpener) tileEntity; TileEntityOpener opener = tileEntityOpener; - Bukkit.getScheduler().scheduleSyncDelayedTask(API.getPlugin(), ()-> opener.setViewers(inventory.getViewers()),1); + Bukkit.getScheduler().scheduleSyncDelayedTask(Api.getPlugin(), ()-> opener.setViewers(inventory.getViewers()),1); return tileEntityOpener; } else { //If not set the new tile entity and set the viewers. @@ -76,7 +75,7 @@ public class ChestOpener_1_16 implements ChestOpener { private void setTileEnt(World world, BlockPosition position, T tileEntOpener, List viewers){ world.removeTileEntity(position); world.setTileEntity(position, tileEntOpener); - Bukkit.getScheduler().scheduleSyncDelayedTask(API.getPlugin(), ()-> tileEntOpener.setViewers(viewers),1); + Bukkit.getScheduler().scheduleSyncDelayedTask(Api.getPlugin(), ()-> tileEntOpener.setViewers(viewers),1); } private boolean hasLiddedAPI(){ diff --git a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/ChestsPlusPlus.java b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/ChestsPlusPlus.java index de44386..1014c75 100644 --- a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/ChestsPlusPlus.java +++ b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/ChestsPlusPlus.java @@ -88,7 +88,7 @@ public class ChestsPlusPlus extends JavaPlugin { Stats.addCharts(metrics); //API initialisation - API.register(this); + Api.register(this); ApiSpecific.init(); //Register commands @@ -104,10 +104,12 @@ public class ChestsPlusPlus extends JavaPlugin { boolean isDev = BuildConstants.VERSION.contains("DEV"); boolean isBeta = BuildConstants.VERSION.contains("BETA"); - if(isDev) getLogger().warning("You are currently running a Dev build - update checker disabled! Build: "+BuildConstants.VERSION); - if(isBeta) getLogger().warning("You are currently running a Beta build - update checker disabled! Build: "+BuildConstants.VERSION); + if (isDev) + getLogger().warning("You are currently running a Dev build - update checker disabled! Build: " + BuildConstants.VERSION); + if (isBeta) + getLogger().warning("You are currently running a Beta build - update checker disabled! Build: " + BuildConstants.VERSION); - if(PluginConfig.IS_UPDATE_CHECKER_ENABLED.get() && !isDev && !isBeta) { + if (PluginConfig.IS_UPDATE_CHECKER_ENABLED.get() && !isDev && !isBeta) { String BUKKIT_URL = "https://dev.bukkit.org/projects/chests-plus-plus/files"; UpdateChecker.init(this, 71355, UpdateChecker.VERSION_SCHEME_DECIMAL); Bukkit.getScheduler().runTaskTimerAsynchronously(this, () -> { @@ -123,22 +125,22 @@ public class ChestsPlusPlus extends JavaPlugin { } boot = true; }); - }, 0, PluginConfig.UPDATE_CHECKER_PERIOD.get()*20); + }, 0, PluginConfig.UPDATE_CHECKER_PERIOD.get() * 20); } //Load storages after load. - Bukkit.getScheduler().scheduleSyncDelayedTask(this, () ->{ + Bukkit.getScheduler().scheduleSyncDelayedTask(this, () -> { Crafting.load(); new Config(); getLogger().info("Chests++ Successfully Loaded Config and Recipes"); //Register event listeners - getServer().getPluginManager().registerEvents(new StorageListener(),this); - getServer().getPluginManager().registerEvents(new InventoryListener(),this); - getServer().getPluginManager().registerEvents(new HopperListener(),this); - getServer().getPluginManager().registerEvents(new WorldListener(),this); + getServer().getPluginManager().registerEvents(new StorageListener(), this); + getServer().getPluginManager().registerEvents(new InventoryListener(), this); + getServer().getPluginManager().registerEvents(new HopperListener(), this); + getServer().getPluginManager().registerEvents(new WorldListener(), this); getLogger().info("Chests++ enabled!"); - },1); + }, 1); } @Override diff --git a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/api/ApiSpecific.java b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/api/ApiSpecific.java index c8f6167..208c4ac 100644 --- a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/api/ApiSpecific.java +++ b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/api/ApiSpecific.java @@ -1,6 +1,6 @@ package com.jamesdpeters.minecraft.chests.api; -import com.jamesdpeters.minecraft.chests.API; +import com.jamesdpeters.minecraft.chests.Api; import com.jamesdpeters.minecraft.chests.ChestOpener; import com.jamesdpeters.minecraft.chests.MaterialChecker; import com.jamesdpeters.minecraft.chests.NMSProvider; @@ -13,9 +13,9 @@ public class ApiSpecific { private static ChestOpener chestOpener; private static NMSProvider nmsProvider; - public static void init(){ - nmsProvider = API.getNMSProvider(); - if(nmsProvider == null) nmsProvider = new NMSProviderDefault(); + public static void init() { + nmsProvider = Api.getNMSProvider(); + if (nmsProvider == null) nmsProvider = new NMSProviderDefault(); materialChecker = nmsProvider.getMaterialChecker(); chestOpener = nmsProvider.getChestOpener(); } @@ -23,11 +23,16 @@ public class ApiSpecific { public static MaterialChecker getMaterialChecker() { return materialChecker; } + public static ChestOpener getChestOpener() { return chestOpener; } + public static NMSProvider getNmsProvider() { return nmsProvider; } - public static String getApiVersion(){ return Bukkit.getServer().getClass().getPackage().getName().split("\\.")[3]; } + + public static String getApiVersion() { + return Bukkit.getServer().getClass().getPackage().getName().split("\\.")[3]; + } } diff --git a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/api/NMSProviderDefault.java b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/api/NMSProviderDefault.java index 1378119..8f44e6c 100644 --- a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/api/NMSProviderDefault.java +++ b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/api/NMSProviderDefault.java @@ -11,7 +11,7 @@ public class NMSProviderDefault implements NMSProvider { //Latest version at time of build is 1.16 NMSProviderImpl provider1_16; - public NMSProviderDefault(){ + public NMSProviderDefault() { provider1_16 = new NMSProviderImpl(); } diff --git a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/commands/AutoCraftCommand.java b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/commands/AutoCraftCommand.java index f0bc040..859796d 100644 --- a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/commands/AutoCraftCommand.java +++ b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/commands/AutoCraftCommand.java @@ -20,17 +20,16 @@ import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; -public class AutoCraftCommand extends ServerCommand { +public class AutoCraftCommand extends ServerCommand { private enum OPTIONS { ADD("/autocraft add ", Message.COMMAND_AUTOCRAFT_ADD.getString()), - HELP("/autocraft help",Message.COMMAND_HELP.getString()), - LIST("/autocraft list",Message.COMMAND_AUTOCRAFT_LIST.getString()), - MEMBER("/autocraft member [add/remove ] or [list ]",Message.COMMAND_MEMBER.getString()), -// MENU("/autocraft menu","Open the AutoCraft menu to display all groups!"), - OPEN("/autocraft open ",Message.COMMAND_AUTOCRAFT_OPEN.getString()), + HELP("/autocraft help", Message.COMMAND_HELP.getString()), + LIST("/autocraft list", Message.COMMAND_AUTOCRAFT_LIST.getString()), + MEMBER("/autocraft member [add/remove ] or [list ]", Message.COMMAND_MEMBER.getString()), + OPEN("/autocraft open ", Message.COMMAND_AUTOCRAFT_OPEN.getString()), REMOVE("/autocraft remove ", Message.COMMAND_AUTOCRAFT_REMOVE.getString()), - RENAME("/autocraft rename ",Message.COMMAND_AUTOCRAFT_RENAME.getString()), + RENAME("/autocraft rename ", Message.COMMAND_AUTOCRAFT_RENAME.getString()), SETPUBLIC("/autocraft setpublic ", Message.COMMAND_AUTOCRAFT_SETPUBLIC.getString()); String description, commandHelp; @@ -40,7 +39,7 @@ public class AutoCraftCommand extends ServerCommand { valuesList = Stream.of(OPTIONS.values()).map(OPTIONS::toString).collect(Collectors.toList()); } - OPTIONS( String commandHelp, String description){ + OPTIONS(String commandHelp, String description) { this.commandHelp = commandHelp; this.description = description; } @@ -59,13 +58,13 @@ public class AutoCraftCommand extends ServerCommand { @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - if(!(sender instanceof Player)){ + if (!(sender instanceof Player)) { sender.sendMessage("Only a player can use this command"); return false; } Player player = (Player) sender; - if(args != null && args.length > 0) { + if (args != null && args.length > 0) { try { switch (OPTIONS.valueOf(args[0].toUpperCase())) { case HELP: @@ -170,7 +169,7 @@ public class AutoCraftCommand extends ServerCommand { } } } - } catch (IllegalArgumentException exception){ + } catch (IllegalArgumentException exception) { return false; } } @@ -180,13 +179,13 @@ public class AutoCraftCommand extends ServerCommand { @Override public List onTabComplete(CommandSender sender, Command command, String alias, String[] args) { - if((sender instanceof Player)) { + if ((sender instanceof Player)) { Player player = (Player) sender; if (args.length == 1) { return OPTIONS.valuesList; } - if(args.length == 2) { + if (args.length == 2) { try { switch (OPTIONS.valueOf(args[0].toUpperCase())) { case ADD: @@ -196,38 +195,42 @@ public class AutoCraftCommand extends ServerCommand { case RENAME: return Config.getAutoCraft().getStorageList(player, args[1]); case MEMBER: - return Stream.of("add","remove","list","add-to-all","remove-from-all").filter(s -> s.contains(args[1])).collect(Collectors.toList()); + return Stream.of("add", "remove", "list", "add-to-all", "remove-from-all").filter(s -> s.contains(args[1])).collect(Collectors.toList()); } - } catch (IllegalArgumentException ignored) { } + } catch (IllegalArgumentException ignored) { + } } - if(args.length == 3) { + if (args.length == 3) { try { switch (OPTIONS.valueOf(args[0].toUpperCase())) { case MEMBER: - if(args[1].equals("add-to-all")) return Utils.filterList(Utils.getAllPlayers(), args[2]); - if(args[1].equals("remove-from-all")) return Utils.filterList(Utils.getAllPlayers(), args[2]); + if (args[1].equals("add-to-all")) return Utils.filterList(Utils.getAllPlayers(), args[2]); + if (args[1].equals("remove-from-all")) + return Utils.filterList(Utils.getAllPlayers(), args[2]); return Config.getAutoCraft().getStorageList(player, args[2]); } - } catch (IllegalArgumentException ignored) { } + } catch (IllegalArgumentException ignored) { + } } - if(args.length == 4) { + if (args.length == 4) { try { switch (OPTIONS.valueOf(args[0].toUpperCase())) { case MEMBER: return Utils.filterList(Utils.getAllPlayers(), args[3]); } - } catch (IllegalArgumentException ignored) { } + } catch (IllegalArgumentException ignored) { + } } return Collections.singletonList(""); } return null; } - private static boolean memberCommand(String[] args, CommandSender sender){ + private static boolean memberCommand(String[] args, CommandSender sender) { Player player = (Player) sender; - if(args.length > 3){ - if(sender.hasPermission(Permissions.MEMBER)){ - if(args[1].equals("add")) { + if (args.length > 3) { + if (sender.hasPermission(Permissions.MEMBER)) { + if (args[1].equals("add")) { Bukkit.getScheduler().runTaskAsynchronously(ChestsPlusPlus.PLUGIN, () -> { OfflinePlayer toAdd = Bukkit.getOfflinePlayer(args[3]); AutoCraftingStorage storage = Config.getAutoCraft().getStorage(player.getUniqueId(), args[2]); @@ -235,7 +238,7 @@ public class AutoCraftCommand extends ServerCommand { storage.getStorageType().getMessages().addedMember(player, storage, args[3]); else Config.getAutoCraft().getMessages().unableToAddMember(player, args[3]); }); - } else if(args[1].equals("remove")){ + } else if (args[1].equals("remove")) { Bukkit.getScheduler().runTaskAsynchronously(ChestsPlusPlus.PLUGIN, () -> { OfflinePlayer toAdd = Bukkit.getOfflinePlayer(args[3]); AutoCraftingStorage storage = Config.getAutoCraft().getStorage(player.getUniqueId(), args[2]); @@ -244,29 +247,29 @@ public class AutoCraftCommand extends ServerCommand { else Config.getAutoCraft().getMessages().unableToRemoveMember(player, args[3]); }); } else { - player.sendMessage(ChatColor.RED+ OPTIONS.MEMBER.commandHelp); - player.sendMessage(ChatColor.RED+ OPTIONS.MEMBER.description); + player.sendMessage(ChatColor.RED + OPTIONS.MEMBER.commandHelp); + player.sendMessage(ChatColor.RED + OPTIONS.MEMBER.description); } } else { Messages.NO_PERMISSION(player); } return true; - } else if(args.length > 2){ - if(sender.hasPermission(Permissions.MEMBER)){ - if(args[1].equals("list")) { + } else if (args.length > 2) { + if (sender.hasPermission(Permissions.MEMBER)) { + if (args[1].equals("list")) { AutoCraftingStorage storage = Config.getAutoCraft().getStorage(player.getUniqueId(), args[2]); - if(storage != null){ + if (storage != null) { storage.getStorageType().getMessages().listMembers(player, storage); return true; } - } else if(args[1].equals("add-to-all")){ + } else if (args[1].equals("add-to-all")) { Bukkit.getScheduler().runTaskAsynchronously(ChestsPlusPlus.PLUGIN, () -> { OfflinePlayer toAdd = Bukkit.getOfflinePlayer(args[2]); Config.getAutoCraft().getStorageMap(player.getUniqueId()).forEach((s, storage) -> storage.addMember(toAdd)); Config.getAutoCraft().getMessages().addMemberToAll(player, toAdd); }); return true; - } else if(args[1].equals("remove-from-all")) { + } else if (args[1].equals("remove-from-all")) { Bukkit.getScheduler().runTaskAsynchronously(ChestsPlusPlus.PLUGIN, () -> { OfflinePlayer toAdd = Bukkit.getOfflinePlayer(args[2]); Config.getAutoCraft().getStorageMap(player.getUniqueId()).forEach((s, storage) -> storage.removeMember(toAdd)); @@ -276,8 +279,8 @@ public class AutoCraftCommand extends ServerCommand { } } } else { - player.sendMessage(ChatColor.RED+ OPTIONS.MEMBER.commandHelp); - player.sendMessage(ChatColor.RED+ OPTIONS.MEMBER.description); + player.sendMessage(ChatColor.RED + OPTIONS.MEMBER.commandHelp); + player.sendMessage(ChatColor.RED + OPTIONS.MEMBER.description); return true; } return false; diff --git a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/commands/ChestLinkCommand.java b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/commands/ChestLinkCommand.java index c4f49c0..24afb91 100644 --- a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/commands/ChestLinkCommand.java +++ b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/commands/ChestLinkCommand.java @@ -22,7 +22,7 @@ import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; -public class ChestLinkCommand extends ServerCommand { +public class ChestLinkCommand extends ServerCommand { private enum OPTIONS { ADD("/chestlink add ", Message.COMMAND_CHESTLINK_ADD.getString()), @@ -43,7 +43,7 @@ public class ChestLinkCommand extends ServerCommand { valuesList = Stream.of(OPTIONS.values()).map(OPTIONS::toString).collect(Collectors.toList()); } - OPTIONS( String commandHelp, String description){ + OPTIONS(String commandHelp, String description) { this.commandHelp = commandHelp; this.description = description; } @@ -62,13 +62,13 @@ public class ChestLinkCommand extends ServerCommand { @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - if(!(sender instanceof Player)){ + if (!(sender instanceof Player)) { sender.sendMessage("Only a player can use this command"); return false; } Player player = (Player) sender; - if(args != null && args.length > 0) { + if (args != null && args.length > 0) { try { switch (OPTIONS.valueOf(args[0].toUpperCase())) { case HELP: @@ -191,7 +191,7 @@ public class ChestLinkCommand extends ServerCommand { } } } - } catch (IllegalArgumentException exception){ + } catch (IllegalArgumentException exception) { return false; } } @@ -201,13 +201,13 @@ public class ChestLinkCommand extends ServerCommand { @Override public List onTabComplete(CommandSender sender, Command command, String alias, String[] args) { - if((sender instanceof Player)) { + if ((sender instanceof Player)) { Player player = (Player) sender; if (args.length == 1) { return OPTIONS.valuesList; } - if(args.length == 2) { + if (args.length == 2) { try { switch (OPTIONS.valueOf(args[0].toUpperCase())) { case ADD: @@ -218,49 +218,53 @@ public class ChestLinkCommand extends ServerCommand { case RENAME: return Config.getChestLink().getStorageList(player, args[1]); case MEMBER: - return Stream.of("add","remove","list","add-to-all","remove-from-all").filter(s -> s.contains(args[1])).collect(Collectors.toList()); + return Stream.of("add", "remove", "list", "add-to-all", "remove-from-all").filter(s -> s.contains(args[1])).collect(Collectors.toList()); } - } catch (IllegalArgumentException ignored) { } + } catch (IllegalArgumentException ignored) { + } } - if(args.length == 3) { + if (args.length == 3) { try { switch (OPTIONS.valueOf(args[0].toUpperCase())) { case MEMBER: - if(args[1].equals("add-to-all")) return Utils.filterList(Utils.getAllPlayers(), args[2]); - if(args[1].equals("remove-from-all")) return Utils.filterList(Utils.getAllPlayers(), args[2]); + if (args[1].equals("add-to-all")) return Utils.filterList(Utils.getAllPlayers(), args[2]); + if (args[1].equals("remove-from-all")) + return Utils.filterList(Utils.getAllPlayers(), args[2]); return Config.getChestLink().getStorageList(player, args[2]); case SORT: return SortMethod.valuesList; } - } catch (IllegalArgumentException ignored) { } + } catch (IllegalArgumentException ignored) { + } } - if(args.length == 4) { + if (args.length == 4) { try { switch (OPTIONS.valueOf(args[0].toUpperCase())) { case MEMBER: return Utils.filterList(Utils.getAllPlayers(), args[3]); } - } catch (IllegalArgumentException ignored) { } + } catch (IllegalArgumentException ignored) { + } } return Collections.singletonList(""); } return null; } - private static boolean memberCommand(String[] args, CommandSender sender){ + private static boolean memberCommand(String[] args, CommandSender sender) { Player player = (Player) sender; - if(args.length > 3){ - if(sender.hasPermission(Permissions.MEMBER)){ - if(args[1].equals("add")) { + if (args.length > 3) { + if (sender.hasPermission(Permissions.MEMBER)) { + if (args[1].equals("add")) { Bukkit.getScheduler().runTaskAsynchronously(ChestsPlusPlus.PLUGIN, () -> { OfflinePlayer toAdd = Bukkit.getOfflinePlayer(args[3]); ChestLinkStorage storage = Config.getChestLink().getStorage(player.getUniqueId(), args[2]); if (storage != null && storage.addMember(toAdd)) storage.getStorageType().getMessages().addedMember(player, storage, args[3]); - else Config.getChestLink().getMessages().unableToAddMember(player,args[3]); + else Config.getChestLink().getMessages().unableToAddMember(player, args[3]); }); return true; - } else if(args[1].equals("remove")){ + } else if (args[1].equals("remove")) { Bukkit.getScheduler().runTaskAsynchronously(ChestsPlusPlus.PLUGIN, () -> { OfflinePlayer toAdd = Bukkit.getOfflinePlayer(args[3]); ChestLinkStorage storage = Config.getChestLink().getStorage(player.getUniqueId(), args[2]); @@ -270,29 +274,29 @@ public class ChestLinkCommand extends ServerCommand { }); return true; } else { - player.sendMessage(ChatColor.RED+OPTIONS.MEMBER.commandHelp); - player.sendMessage(ChatColor.RED+OPTIONS.MEMBER.description); + player.sendMessage(ChatColor.RED + OPTIONS.MEMBER.commandHelp); + player.sendMessage(ChatColor.RED + OPTIONS.MEMBER.description); } } else { Messages.NO_PERMISSION(player); } return true; - } else if(args.length > 2){ - if(sender.hasPermission(Permissions.MEMBER)){ - if(args[1].equals("list")) { + } else if (args.length > 2) { + if (sender.hasPermission(Permissions.MEMBER)) { + if (args[1].equals("list")) { ChestLinkStorage storage = Config.getChestLink().getStorage(player.getUniqueId(), args[2]); - if(storage != null){ + if (storage != null) { storage.getStorageType().getMessages().listMembers(player, storage); return true; } - } else if(args[1].equals("add-to-all")){ + } else if (args[1].equals("add-to-all")) { Bukkit.getScheduler().runTaskAsynchronously(ChestsPlusPlus.PLUGIN, () -> { OfflinePlayer toAdd = Bukkit.getOfflinePlayer(args[2]); Config.getChestLink().getStorageMap(player.getUniqueId()).forEach((s, storage) -> storage.addMember(toAdd)); Config.getChestLink().getMessages().addMemberToAll(player, toAdd); }); return true; - } else if(args[1].equals("remove-from-all")){ + } else if (args[1].equals("remove-from-all")) { Bukkit.getScheduler().runTaskAsynchronously(ChestsPlusPlus.PLUGIN, () -> { OfflinePlayer toAdd = Bukkit.getOfflinePlayer(args[2]); Config.getChestLink().getStorageMap(player.getUniqueId()).forEach((s, storage) -> storage.removeMember(toAdd)); @@ -302,8 +306,8 @@ public class ChestLinkCommand extends ServerCommand { } } } else { - player.sendMessage(ChatColor.RED+OPTIONS.MEMBER.commandHelp); - player.sendMessage(ChatColor.RED+OPTIONS.MEMBER.description); + player.sendMessage(ChatColor.RED + OPTIONS.MEMBER.commandHelp); + player.sendMessage(ChatColor.RED + OPTIONS.MEMBER.description); return true; } return false; diff --git a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/commands/ChestsPlusPlusCommand.java b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/commands/ChestsPlusPlusCommand.java index cf7ce45..764265d 100644 --- a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/commands/ChestsPlusPlusCommand.java +++ b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/commands/ChestsPlusPlusCommand.java @@ -13,7 +13,7 @@ import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; -public class ChestsPlusPlusCommand extends ServerCommand { +public class ChestsPlusPlusCommand extends ServerCommand { private enum OPTIONS { VERSION("/chestsplusplus version", "Display the current version of the plugin."), @@ -26,7 +26,7 @@ public class ChestsPlusPlusCommand extends ServerCommand { valuesList = Stream.of(OPTIONS.values()).map(OPTIONS::toString).collect(Collectors.toList()); } - OPTIONS( String commandHelp, String description){ + OPTIONS(String commandHelp, String description) { this.commandHelp = commandHelp; this.description = description; } @@ -45,13 +45,13 @@ public class ChestsPlusPlusCommand extends ServerCommand { @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - if(args != null && args.length > 0) { - switch (OPTIONS.valueOf(args[0].toUpperCase())){ + if (args != null && args.length > 0) { + switch (OPTIONS.valueOf(args[0].toUpperCase())) { case VERSION: - sender.sendMessage("ChestsPlusPlus Version: "+ BuildConstants.VERSION); - sender.sendMessage("Server Version: "+ Bukkit.getVersion()); - sender.sendMessage("CraftBukkit Version: "+ Bukkit.getBukkitVersion()); - sender.sendMessage("Detected API Version: "+ ApiSpecific.getApiVersion()); + sender.sendMessage("ChestsPlusPlus Version: " + BuildConstants.VERSION); + sender.sendMessage("Server Version: " + Bukkit.getVersion()); + sender.sendMessage("CraftBukkit Version: " + Bukkit.getBukkitVersion()); + sender.sendMessage("Detected API Version: " + ApiSpecific.getApiVersion()); return true; case RELOAD: @@ -59,7 +59,7 @@ public class ChestsPlusPlusCommand extends ServerCommand { return true; default: - for(ChestsPlusPlusCommand.OPTIONS option : ChestsPlusPlusCommand.OPTIONS.values()){ + for (ChestsPlusPlusCommand.OPTIONS option : ChestsPlusPlusCommand.OPTIONS.values()) { sender.sendMessage(ChatColor.RED + option.commandHelp); sender.sendMessage(ChatColor.WHITE + option.description); } @@ -71,26 +71,29 @@ public class ChestsPlusPlusCommand extends ServerCommand { @Override public List onTabComplete(CommandSender sender, Command command, String alias, String[] args) { - if((sender instanceof Player)) { + if ((sender instanceof Player)) { if (args.length == 1) { return OPTIONS.valuesList; } - if(args.length == 2) { + if (args.length == 2) { try { switch (OPTIONS.valueOf(args[0].toUpperCase())) { } - } catch (IllegalArgumentException ignored) { } + } catch (IllegalArgumentException ignored) { + } } - if(args.length == 3) { + if (args.length == 3) { try { - } catch (IllegalArgumentException ignored) { } + } catch (IllegalArgumentException ignored) { + } } - if(args.length == 4) { + if (args.length == 4) { try { - } catch (IllegalArgumentException ignored) { } + } catch (IllegalArgumentException ignored) { + } } } return null; diff --git a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/commands/ServerCommand.java b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/commands/ServerCommand.java index 04152f1..d750a36 100644 --- a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/commands/ServerCommand.java +++ b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/commands/ServerCommand.java @@ -10,9 +10,9 @@ public abstract class ServerCommand implements CommandExecutor, TabCompleter { /** * @param plugin Registers command to given plugin. */ - public void register(JavaPlugin plugin){ + public void register(JavaPlugin plugin) { PluginCommand command = plugin.getCommand(getCommandName()); - if(command != null) { + if (command != null) { command.setExecutor(this); command.setTabCompleter(this); } diff --git a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/crafting/Crafting.java b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/crafting/Crafting.java index bee4f28..f6e41a6 100644 --- a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/crafting/Crafting.java +++ b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/crafting/Crafting.java @@ -21,30 +21,33 @@ public class Crafting { private static List shapedRecipes; private static List shapelessRecipes; - public static void load(){ + public static void load() { shapedRecipes = new ArrayList<>(); shapelessRecipes = new ArrayList<>(); Bukkit.recipeIterator().forEachRemaining(recipe -> { - if(recipe instanceof ShapedRecipe){ shapedRecipes.add((ShapedRecipe) recipe); } - if(recipe instanceof ShapelessRecipe){ shapelessRecipes.add((ShapelessRecipe) recipe); } + if (recipe instanceof ShapedRecipe) { + shapedRecipes.add((ShapedRecipe) recipe); + } + if (recipe instanceof ShapelessRecipe) { + shapelessRecipes.add((ShapelessRecipe) recipe); + } }); } - public static Recipe getResult(List craftingTable){ + public static Recipe getResult(List craftingTable) { Recipe returnRecipe = null; Iterator iterator = Bukkit.recipeIterator(); - while (iterator.hasNext()){ + while (iterator.hasNext()) { Recipe recipe = iterator.next(); - if(recipe instanceof ShapedRecipe){ + if (recipe instanceof ShapedRecipe) { ShapedRecipe shapedRecipe = (ShapedRecipe) recipe; - if (matchesShaped(shapedRecipe, craftingTable)){ + if (matchesShaped(shapedRecipe, craftingTable)) { returnRecipe = shapedRecipe; break; } - } - else if(recipe instanceof ShapelessRecipe){ + } else if (recipe instanceof ShapelessRecipe) { ShapelessRecipe shapelessRecipe = (ShapelessRecipe) recipe; - if (matchesShapeless(shapelessRecipe.getChoiceList(), craftingTable)){ + if (matchesShapeless(shapelessRecipe.getChoiceList(), craftingTable)) { returnRecipe = shapelessRecipe; break; } @@ -71,7 +74,7 @@ public class Crafting { return false; } Set remainingItems = new HashSet<>(items); - return (remainingItems.size() == 1 && (items.contains(new ItemStack(Material.AIR))||items.contains(null))); + return (remainingItems.size() == 1 && (items.contains(new ItemStack(Material.AIR)) || items.contains(null))); } private static boolean matchesShaped(ShapedRecipe shape, List items) { @@ -79,9 +82,9 @@ public class Crafting { return userShapedRecipe.matchesRecipe(shape); } - public static Recipe getRecipeByKey(NamespacedKey key){ + public static Recipe getRecipeByKey(NamespacedKey key) { Optional recipe = shapelessRecipes.stream().filter(s -> s.getKey().equals(key)).findFirst(); - if(recipe.isPresent()) return recipe.get(); + if (recipe.isPresent()) return recipe.get(); Optional shapedRecipe = shapedRecipes.stream().filter(s -> s.getKey().equals(key)).findFirst(); return shapedRecipe.orElse(null); diff --git a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/crafting/ToolRepairRecipe.java b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/crafting/ToolRepairRecipe.java index 33d0098..eae2d89 100644 --- a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/crafting/ToolRepairRecipe.java +++ b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/crafting/ToolRepairRecipe.java @@ -6,7 +6,6 @@ import org.bukkit.inventory.Recipe; public class ToolRepairRecipe implements Recipe { - @Override public ItemStack getResult() { return null; diff --git a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/crafting/UserShapedRecipe.java b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/crafting/UserShapedRecipe.java index 614e9c1..e77a9ee 100644 --- a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/crafting/UserShapedRecipe.java +++ b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/crafting/UserShapedRecipe.java @@ -13,13 +13,15 @@ public class UserShapedRecipe { private String[] shape; private Map ingredientMap; - private Character[] chars = new Character[]{'a','b','c','d','e','f','g','h','i'}; + private final Character[] chars = new Character[]{'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i'}; - public UserShapedRecipe(List itemStacks){ - if(itemStacks.size() < 9) throw new IllegalArgumentException("ItemStack List must contain 9 items"); - if(itemStacks.size() == 10) itemStacks.remove(0); - int firstRow=-1; int lastRow=0; - int firstCol=-1; int lastCol=0; + public UserShapedRecipe(List itemStacks) { + if (itemStacks.size() < 9) throw new IllegalArgumentException("ItemStack List must contain 9 items"); + if (itemStacks.size() == 10) itemStacks.remove(0); + int firstRow = -1; + int lastRow = 0; + int firstCol = -1; + int lastCol = 0; for (int row = 0; row < 3; row++) { boolean removeRow = true; @@ -30,8 +32,8 @@ public class UserShapedRecipe { } } if (!removeRow) { - if(firstRow == -1) firstRow = row; - if(row > lastRow) lastRow = row; + if (firstRow == -1) firstRow = row; + if (row > lastRow) lastRow = row; } } @@ -44,24 +46,24 @@ public class UserShapedRecipe { } } if (!removeCol) { - if(firstCol == -1) firstCol = col; - if(col > lastCol) lastCol = col; + if (firstCol == -1) firstCol = col; + if (col > lastCol) lastCol = col; } } - if(firstRow == -1) firstRow = 0; - if(firstCol == -1) firstCol = 0; + if (firstRow == -1) firstRow = 0; + if (firstCol == -1) firstCol = 0; int index = 0; int rowIndex = 0; - String[] shape = new String[(lastRow-firstRow+1)]; - Map itemMap = new HashMap<>(); - for(int row=firstRow; row <= lastRow; row++){ + String[] shape = new String[(lastRow - firstRow + 1)]; + Map itemMap = new HashMap<>(); + for (int row = firstRow; row <= lastRow; row++) { StringBuilder shapeRow = new StringBuilder(); - for(int col=firstCol; col <= lastCol; col++){ - shapeRow.append(chars[index]); - itemMap.put(chars[index], itemStacks.get((row * 3) + col)); - index++; + for (int col = firstCol; col <= lastCol; col++) { + shapeRow.append(chars[index]); + itemMap.put(chars[index], itemStacks.get((row * 3) + col)); + index++; } shape[rowIndex] = shapeRow.toString(); rowIndex++; @@ -86,47 +88,47 @@ public class UserShapedRecipe { this.ingredientMap = ingredientMap; } - public boolean matchesRecipe(ShapedRecipe recipe){ - if(!Arrays.equals(getShape(), recipe.getShape())) return false; - if(!matchesChoiceMap(recipe.getChoiceMap(),recipe.getShape(),false)) { + public boolean matchesRecipe(ShapedRecipe recipe) { + if (!Arrays.equals(getShape(), recipe.getShape())) return false; + if (!matchesChoiceMap(recipe.getChoiceMap(), recipe.getShape(), false)) { return matchesChoiceMap(recipe.getChoiceMap(), recipe.getShape(), true); } return true; // ingredients match } - private Map flipShape(String[] shape){ - Map map = new HashMap<>(); - for(int i=0; i < shape.length; i++){ + private Map flipShape(String[] shape) { + Map map = new HashMap<>(); + for (int i = 0; i < shape.length; i++) { StringBuilder input = new StringBuilder(); String row = shape[i]; String reverse = input.append(row).reverse().toString(); char[] originalChars = row.toCharArray(); char[] reverseChars = reverse.toCharArray(); - for(int c=0; c < row.length(); c++){ - map.put(originalChars[c],reverseChars[c]); + for (int c = 0; c < row.length(); c++) { + map.put(originalChars[c], reverseChars[c]); } } return map; } - private boolean matchesChoiceMap(Map choiceMap, String[] shape, boolean mirror){ + private boolean matchesChoiceMap(Map choiceMap, String[] shape, boolean mirror) { boolean matches = true; - Map charMap = null; - if(mirror) charMap = flipShape(shape); - for(Map.Entry entry : choiceMap.entrySet()){ + Map charMap = null; + if (mirror) charMap = flipShape(shape); + for (Map.Entry entry : choiceMap.entrySet()) { RecipeChoice choice = entry.getValue(); //Flip characters if mirrored. Character character; - if(mirror) character = charMap.get(entry.getKey()); + if (mirror) character = charMap.get(entry.getKey()); else character = entry.getKey(); ItemStack item = getIngredientMap().get(character); - if(choice != null && item != null) { + if (choice != null && item != null) { if (!choice.test(item)) { matches = false; break; } - } else if(choice == null ^ item == null) { + } else if (choice == null ^ item == null) { matches = false; break; } diff --git a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/filters/Filter.java b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/filters/Filter.java index cede6be..081fc08 100644 --- a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/filters/Filter.java +++ b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/filters/Filter.java @@ -12,28 +12,27 @@ public class Filter { NONE } - private ItemStack filter; - private boolean filterByItemMeta; - private boolean dontAllowThisItem; - private Type filteringMethod; + private final ItemStack filter; + private final boolean filterByItemMeta; + private final boolean dontAllowThisItem; + private final Type filteringMethod; - public Filter(ItemStack filter, ItemFrame itemFrame){ + public Filter(ItemStack filter, ItemFrame itemFrame) { this.filter = filter; this.filterByItemMeta = itemFrame.getRotation().equals(Rotation.FLIPPED) || itemFrame.getRotation().equals(Rotation.COUNTER_CLOCKWISE); this.dontAllowThisItem = itemFrame.getRotation().equals(Rotation.CLOCKWISE) || itemFrame.getRotation().equals(Rotation.COUNTER_CLOCKWISE); filteringMethod = dontAllowThisItem ? Type.REJECT : Type.ACCEPT; } - public Type getFilterType(ItemStack itemStack){ - if(dontAllowThisItem && !filterByItemMeta){ - if(filter.isSimilar(itemStack)) return Type.REJECT; + public Type getFilterType(ItemStack itemStack) { + if (dontAllowThisItem && !filterByItemMeta) { + if (filter.isSimilar(itemStack)) return Type.REJECT; + else return Type.ACCEPT; + } else if (dontAllowThisItem) { + if (isFilteredByMeta(itemStack)) return Type.REJECT; else return Type.ACCEPT; } - else if (dontAllowThisItem){ - if(isFilteredByMeta(itemStack)) return Type.REJECT; - else return Type.ACCEPT; - } - if(filterByItemMeta) { + if (filterByItemMeta) { if (isFilteredByMeta(itemStack)) return Type.ACCEPT; } else { if (filter.isSimilar(itemStack)) return Type.ACCEPT; @@ -41,15 +40,15 @@ public class Filter { return Type.NONE; } - private boolean isFilteredByMeta(ItemStack itemStack){ - if(filter.isSimilar(itemStack)) return true; - if(filterByItemMeta){ + private boolean isFilteredByMeta(ItemStack itemStack) { + if (filter.isSimilar(itemStack)) return true; + if (filterByItemMeta) { return filter.getType().equals(itemStack.getType()); } return false; } - public Type getFilteringMethod(){ + public Type getFilteringMethod() { return filteringMethod; } } diff --git a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/filters/HopperFilter.java b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/filters/HopperFilter.java index 1bc67a2..f14f49a 100644 --- a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/filters/HopperFilter.java +++ b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/filters/HopperFilter.java @@ -13,33 +13,33 @@ import java.util.stream.Collectors; public class HopperFilter { - public static boolean isInFilter(List filters, ItemStack item){ - if(filters == null) return true; - if(filters.size() == 0) return true; + public static boolean isInFilter(List filters, ItemStack item) { + if (filters == null) return true; + if (filters.size() == 0) return true; List acceptFilters = filters.stream().filter(filter -> filter.getFilteringMethod() == Filter.Type.ACCEPT).collect(Collectors.toList()); boolean hasAcceptFilter = acceptFilters.stream().anyMatch(filter -> filter.getFilterType(item).equals(Filter.Type.ACCEPT)); boolean isRejected = filters.stream().filter(filter -> filter.getFilteringMethod() == Filter.Type.REJECT).anyMatch(filter -> filter.getFilterType(item).equals(Filter.Type.REJECT)); - if(acceptFilters.size() > 0) return hasAcceptFilter && !isRejected; + if (acceptFilters.size() > 0) return hasAcceptFilter && !isRejected; else return !isRejected; } - public static List getHopperFilters(Block block){ - Collection ent = block.getWorld().getNearbyEntities(block.getLocation(),1.01,1.01,1.01); + public static List getHopperFilters(Block block) { + Collection ent = block.getWorld().getNearbyEntities(block.getLocation(), 1.01, 1.01, 1.01); List filters = new ArrayList<>(ent.size()); - for(Entity entity : ent){ - if(entity instanceof ItemFrame){ + for (Entity entity : ent) { + if (entity instanceof ItemFrame) { ItemFrame frame = (ItemFrame) entity; - if(frame.getItem().getType().equals(Material.AIR)) continue; + if (frame.getItem().getType().equals(Material.AIR)) continue; Block attachedBlock = frame.getLocation().getBlock().getRelative(frame.getAttachedFace()); - if(block.equals(attachedBlock)){ - filters.add(new Filter(frame.getItem(),frame)); + if (block.equals(attachedBlock)) { + filters.add(new Filter(frame.getItem(), frame)); } } } return filters; } - public static boolean isInFilter(Block block, ItemStack itemStack){ - return isInFilter(getHopperFilters(block),itemStack); + public static boolean isInFilter(Block block, ItemStack itemStack) { + return isInFilter(getHopperFilters(block), itemStack); } } diff --git a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/interfaces/VirtualCraftingHolder.java b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/interfaces/VirtualCraftingHolder.java index ebb2aa6..1ba92f7 100644 --- a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/interfaces/VirtualCraftingHolder.java +++ b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/interfaces/VirtualCraftingHolder.java @@ -33,22 +33,22 @@ import java.util.List; public class VirtualCraftingHolder implements InventoryHolder { - private Inventory inventory; - private AutoCraftingStorage storage; + private final Inventory inventory; + private final AutoCraftingStorage storage; private BukkitRunnable guiTask; private BukkitRunnable craftItemTask; private ItemStack[][] recipeChoices = new ItemStack[9][]; private ItemStack result; - private int[] recipeChoiceIndex = new int[9]; + private final int[] recipeChoiceIndex = new int[9]; private boolean hasCompleteRecipe = false; /** - * This gets set to true when updateCrafting() gets called on a 1 tick delay. + * This gets set to true when updateCrafting() gets called on a 1 tick delay. */ private boolean isUpdatingRecipe = false; - private static ItemStack AIR = new ItemStack(Material.AIR); + private static final ItemStack AIR = new ItemStack(Material.AIR); public VirtualCraftingHolder(AutoCraftingStorage storage) { this.storage = storage; @@ -65,12 +65,12 @@ public class VirtualCraftingHolder implements InventoryHolder { return storage; } - public void setCrafting(ShapelessRecipe shapelessRecipe){ + public void setCrafting(ShapelessRecipe shapelessRecipe) { result = shapelessRecipe.getResult(); List choiceList = shapelessRecipe.getChoiceList(); - for(int i=0; i craftingMatrix = new ArrayList<>(Arrays.asList(inventory.getContents())); if (craftingMatrix.get(0) != null) craftingMatrix.remove(0); Recipe recipe = Crafting.getResult(craftingMatrix); getStorage().setRecipe(recipe); resetChoices(); - if(recipe != null){ + if (recipe != null) { setCrafting(recipe); - playSound(Sound.BLOCK_NOTE_BLOCK_CHIME,0.5f,1f); + playSound(Sound.BLOCK_NOTE_BLOCK_CHIME, 0.5f, 1f); } else { stopCraftingItems(); } @@ -133,7 +133,7 @@ public class VirtualCraftingHolder implements InventoryHolder { storage.onItemDisplayUpdate(result); } - private void playSound(Sound sound, float volume, float pitch){ + private void playSound(Sound sound, float volume, float pitch) { storage.getInventory().getViewers().forEach(humanEntity -> { humanEntity.getWorld().playSound(humanEntity.getLocation(), sound, volume, pitch); }); @@ -145,27 +145,30 @@ public class VirtualCraftingHolder implements InventoryHolder { } //Start and stop animation based on if the inventory is open. - public void startAnimation(){ + public void startAnimation() { guiTask = new UpdateTask(); } - public void stopAnimation(){ - if(guiTask != null) guiTask.cancel(); + + public void stopAnimation() { + if (guiTask != null) guiTask.cancel(); } private class UpdateTask extends BukkitRunnable { BukkitTask task; - public UpdateTask(){ - task = runTaskTimer(ChestsPlusPlus.PLUGIN,1,15); + + public UpdateTask() { + task = runTaskTimer(ChestsPlusPlus.PLUGIN, 1, 15); } + @Override public void run() { updateGUI(); } } - public void updateGUI(){ + public void updateGUI() { inventory.setItem(0, result); - if(hasCompleteRecipe && !isUpdatingRecipe) { + if (hasCompleteRecipe && !isUpdatingRecipe) { for (int i = 0; i < 9; i++) { ItemStack[] choices = recipeChoices[i]; if (choices != null) { @@ -186,18 +189,21 @@ public class VirtualCraftingHolder implements InventoryHolder { } } - public void startCraftingItems(){ - if(craftItemTask == null || craftItemTask.isCancelled()) craftItemTask = new CraftItems(); + public void startCraftingItems() { + if (craftItemTask == null || craftItemTask.isCancelled()) craftItemTask = new CraftItems(); } - public void stopCraftingItems(){ - if(craftItemTask != null) craftItemTask.cancel(); + + public void stopCraftingItems() { + if (craftItemTask != null) craftItemTask.cancel(); } private class CraftItems extends BukkitRunnable { BukkitTask task; - CraftItems(){ + + CraftItems() { task = runTaskTimer(ChestsPlusPlus.PLUGIN, 1, 20); } + @Override public void run() { craftItem(); @@ -208,27 +214,27 @@ public class VirtualCraftingHolder implements InventoryHolder { * This method will craft an item if a chest above contains the correct amount of materials * And there is a hopper below. */ - public void craftItem(){ - for(LocationInfo location : storage.getLocations()){ - if(!Utils.isLocationChunkLoaded(location.getLocation())) continue; + public void craftItem() { + for (LocationInfo location : storage.getLocations()) { + if (!Utils.isLocationChunkLoaded(location.getLocation())) continue; Block block = location.getLocation().getBlock(); Block blockBelow = block.getRelative(BlockFace.DOWN); Block blockAbove = block.getRelative(BlockFace.UP); Inventory output; - if(blockBelow.getState() instanceof Hopper){ + if (blockBelow.getState() instanceof Hopper) { Hopper hopper = (Hopper) blockBelow.getState(); - if(blockBelow.isBlockPowered() || blockBelow.isBlockIndirectlyPowered()){ + if (blockBelow.isBlockPowered() || blockBelow.isBlockIndirectlyPowered()) { continue; //If hopper is powered no crafting should happen. } output = hopper.getInventory(); } else { output = getInventory(blockBelow); //If there is no output crafting isn't possible, so skip this location. - if(output == null) continue; + if (output == null) continue; //If crafting table is powered output into container is possible. - if(!block.isBlockPowered()) continue; + if (!block.isBlockPowered()) continue; } List inventories = new ArrayList<>(); @@ -238,10 +244,10 @@ public class VirtualCraftingHolder implements InventoryHolder { Utils.addIfNotNull(inventories, getInventory(block.getRelative(BlockFace.SOUTH))); Utils.addIfNotNull(inventories, getInventory(block.getRelative(BlockFace.WEST))); - boolean didCraft = craftItem(inventories,output); + boolean didCraft = craftItem(inventories, output); //Play sound if crafting occured. - if(didCraft) { + if (didCraft) { if (location.getLocation().getWorld() != null) { location.getLocation().getWorld().playSound(location.getLocation(), Sound.BLOCK_DISPENSER_DISPENSE, 0.25f, 1f); if (output.getHolder() instanceof VirtualInventoryHolder) { @@ -252,13 +258,13 @@ public class VirtualCraftingHolder implements InventoryHolder { } } - private Inventory getInventory(Block block){ + private Inventory getInventory(Block block) { Inventory inventory = null; - if(block.getState() instanceof Container){ + if (block.getState() instanceof Container) { ChestLinkStorage storage = Config.getChestLink().getStorage(block.getLocation()); //Check if a ChestLink exists above the CraftingTable and if the owner of the CraftingTable has permission to access that Chest. - if(storage != null){ - if(storage.hasPermission(this.storage.getOwner())) { + if (storage != null) { + if (storage.hasPermission(this.storage.getOwner())) { inventory = storage.getInventory(); } else { return null; @@ -270,7 +276,7 @@ public class VirtualCraftingHolder implements InventoryHolder { return inventory; } - private boolean craftItem(List inputs, Inventory output){ + private boolean craftItem(List inputs, Inventory output) { boolean sameInv = false; Inventory sameInventory = null; List tempInvs = new ArrayList<>(); @@ -278,17 +284,17 @@ public class VirtualCraftingHolder implements InventoryHolder { for (Inventory inv : inputs) { Inventory tempInv = Utils.copyInventory(inv); tempInvs.add(tempInv); - if(inv.equals(output)){ + if (inv.equals(output)) { sameInv = true; sameInventory = tempInv; } } - for(ItemStack[] choices : recipeChoices){ - if(choices == null) continue; + for (ItemStack[] choices : recipeChoices) { + if (choices == null) continue; boolean foundMatch = false; - for(ItemStack choice : choices){ - for(Inventory tempInv : tempInvs) { + for (ItemStack choice : choices) { + for (Inventory tempInv : tempInvs) { int index = tempInv.first(choice.getType()); if (index != -1) { ItemStack item = tempInv.getItem(index); @@ -302,7 +308,7 @@ public class VirtualCraftingHolder implements InventoryHolder { } } //If no match - if(!foundMatch) return false; + if (!foundMatch) return false; } //If we reach here there are enough materials so check for space in the Hopper and update inventory. @@ -311,25 +317,25 @@ public class VirtualCraftingHolder implements InventoryHolder { HashMap map = tempOutput.addItem(result.clone()); //If result fits into output copy over the temporary inventories. - if(map.isEmpty()){ - for(int i=0; i { - if(humanEntity instanceof Player){ + if (humanEntity instanceof Player) { ((Player) humanEntity).updateInventory(); } }); diff --git a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/interfaces/VirtualInventoryHolder.java b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/interfaces/VirtualInventoryHolder.java index 2ea4a90..332d4f1 100644 --- a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/interfaces/VirtualInventoryHolder.java +++ b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/interfaces/VirtualInventoryHolder.java @@ -13,9 +13,9 @@ public class VirtualInventoryHolder implements InventoryHolder { private Runnable openPreviousInventory; private boolean isPrevInvRunning = false; - private HashMap remoteOpened; + private final HashMap remoteOpened; - public VirtualInventoryHolder(ChestLinkStorage storage){ + public VirtualInventoryHolder(ChestLinkStorage storage) { this.storage = storage; remoteOpened = new HashMap<>(); } @@ -25,11 +25,11 @@ public class VirtualInventoryHolder implements InventoryHolder { return storage.getInventory(); } - public ChestLinkStorage getStorage(){ + public ChestLinkStorage getStorage() { return storage; } - public void setPreviousInventory(Runnable runnable){ + public void setPreviousInventory(Runnable runnable) { openPreviousInventory = runnable; isPrevInvRunning = false; } @@ -37,12 +37,12 @@ public class VirtualInventoryHolder implements InventoryHolder { /** * @return true if previous inventory existed. */ - public boolean openPreviousInventory(){ - if(isPrevInvRunning){ + public boolean openPreviousInventory() { + if (isPrevInvRunning) { isPrevInvRunning = false; return false; } - if(openPreviousInventory != null){ + if (openPreviousInventory != null) { isPrevInvRunning = true; openPreviousInventory.run(); openPreviousInventory = null; @@ -53,20 +53,22 @@ public class VirtualInventoryHolder implements InventoryHolder { /** * Called when a player remotely opens this inventory. + * * @param uuid - the players uuid. */ - public void onPlayerRemoteOpened(UUID uuid){ - remoteOpened.put(uuid,true); + public void onPlayerRemoteOpened(UUID uuid) { + remoteOpened.put(uuid, true); } /** * Checks if the player remotely opened this inventory, if so returns true and sets their remoteOpen to false. + * * @param uuid * @return */ - public boolean didPlayerRemoteOpen(UUID uuid){ - if(remoteOpened.getOrDefault(uuid,false)){ - remoteOpened.put(uuid,false); + public boolean didPlayerRemoteOpen(UUID uuid) { + if (remoteOpened.getOrDefault(uuid, false)) { + remoteOpened.put(uuid, false); return true; } return false; diff --git a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/inventories/ChestLinkMenu.java b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/inventories/ChestLinkMenu.java index 7d76499..3a84a1e 100644 --- a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/inventories/ChestLinkMenu.java +++ b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/inventories/ChestLinkMenu.java @@ -22,25 +22,25 @@ public class ChestLinkMenu implements InventoryProvider { public static HashMap menus; - private Collection storages; - private SmartInventory menu; + private final Collection storages; + private final SmartInventory menu; - private ChestLinkMenu(Player player){ + private ChestLinkMenu(Player player) { this.storages = Config.getChestLink().getStorageMap(player.getUniqueId()).values(); menu = SmartInventory.builder() .id("chestLinkMenu") .title("Inventory Storage") .provider(this) .manager(ChestsPlusPlus.INVENTORY_MANAGER) - .size(6,9) + .size(6, 9) .build(); //menu.setInsertable(true); } - public static SmartInventory getMenu(Player player){ - if(menus == null) menus = new HashMap<>(); + public static SmartInventory getMenu(Player player) { + if (menus == null) menus = new HashMap<>(); - if(menus.containsKey(player)){ + if (menus.containsKey(player)) { return menus.get(player); } else { menus.put(player, new ChestLinkMenu(player).getMenu()); @@ -53,12 +53,12 @@ public class ChestLinkMenu implements InventoryProvider { Pagination pagination = contents.pagination(); List itemList = new ArrayList<>(); - for(ChestLinkStorage storage : storages){ + for (ChestLinkStorage storage : storages) { ClickableItem item = storage.getClickableItem(player); itemList.add(item); } List memberOfStorage = Config.getChestLink().getStorageMemberOf(player); - for(ChestLinkStorage storage : memberOfStorage){ + for (ChestLinkStorage storage : memberOfStorage) { ClickableItem item = storage.getClickableItem(player); itemList.add(item); } @@ -66,14 +66,14 @@ public class ChestLinkMenu implements InventoryProvider { pagination.setItems(itemList.toArray(new ClickableItem[0])); pagination.setItemsPerPage(28); - contents.fillBorders(ClickableItem.empty(Utils.getNamedItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE)," "))); - for(ClickableItem item : pagination.getPageItems()){ + contents.fillBorders(ClickableItem.empty(Utils.getNamedItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "))); + for (ClickableItem item : pagination.getPageItems()) { contents.add(item); } - contents.set(5, 2, ClickableItem.from(Utils.getNamedItem(new ItemStack(Material.ARROW),"Previous"), + contents.set(5, 2, ClickableItem.from(Utils.getNamedItem(new ItemStack(Material.ARROW), "Previous"), e -> menu.open(player, pagination.previous().getPage()))); - contents.set(5, 6, ClickableItem.from(Utils.getNamedItem(new ItemStack(Material.ARROW),"Next"), + contents.set(5, 6, ClickableItem.from(Utils.getNamedItem(new ItemStack(Material.ARROW), "Next"), e -> menu.open(player, pagination.next().getPage()))); } diff --git a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/lang/LangFileProperties.java b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/lang/LangFileProperties.java index b22473a..7c36d79 100644 --- a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/lang/LangFileProperties.java +++ b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/lang/LangFileProperties.java @@ -20,11 +20,11 @@ public class LangFileProperties { public static void serialize(LanguageFile properties) { for (Message value : Message.values()) { - properties.setProperty(value.toString(),value.getTaggedMessage()); + properties.setProperty(value.toString(), value.getTaggedMessage()); } } - public static void deserialize(Properties properties){ + public static void deserialize(Properties properties) { properties.forEach((key, value) -> { try { String val = new String(((String) value).getBytes()); @@ -37,24 +37,24 @@ public class LangFileProperties { //Save the language file after reading to insert any missing values. LanguageFile savedProperties = new LanguageFile(); serialize(savedProperties); - if(currentFile != null) savedProperties.store(currentFile); + if (currentFile != null) savedProperties.store(currentFile); } catch (IOException e) { e.printStackTrace(); } } - public static void loadLangFile(String fileName){ - if(fileName.equals("default")){ + public static void loadLangFile(String fileName) { + if (fileName.equals("default")) { ChestsPlusPlus.PLUGIN.getLogger().info("Loaded default language file"); return; } try { - currentFile = getLangFile(fileName,false); + currentFile = getLangFile(fileName, false); LanguageFile properties = loadProperties(currentFile); deserialize(properties); - ChestsPlusPlus.PLUGIN.getLogger().info("Loaded '"+fileName+"' language file"); + ChestsPlusPlus.PLUGIN.getLogger().info("Loaded '" + fileName + "' language file"); } catch (IOException e) { - ChestsPlusPlus.PLUGIN.getLogger().warning("Failed to load language file: "+fileName+". It should be located in "+ChestsPlusPlus.PLUGIN.getDataFolder().getPath()+"/lang/"); + ChestsPlusPlus.PLUGIN.getLogger().warning("Failed to load language file: " + fileName + ". It should be located in " + ChestsPlusPlus.PLUGIN.getDataFolder().getPath() + "/lang/"); } } @@ -67,9 +67,9 @@ public class LangFileProperties { private static File getLangFile(String fileName, boolean create) throws IOException { File pluginDataFolder = ChestsPlusPlus.PLUGIN.getDataFolder(); - File file = new File(pluginDataFolder, "lang/"+fileName+".properties"); + File file = new File(pluginDataFolder, "lang/" + fileName + ".properties"); file.getParentFile().mkdirs(); - if(create && !file.exists()) file.createNewFile(); + if (create && !file.exists()) file.createNewFile(); return file; } @@ -85,7 +85,7 @@ public class LangFileProperties { fileProperties.generateEnglishLanguageFile(); } - private LangFileProperties(){ + private LangFileProperties() { } @@ -100,8 +100,8 @@ public class LangFileProperties { serialize(properties); properties.storeGenerated(langSrcFile); properties.storeGenerated(langTargetFile); - LOGGER.info("Saved language file to: "+langSrcFile.getPath()); - LOGGER.info("Saved language file to: "+langTargetFile.getPath()); + LOGGER.info("Saved language file to: " + langSrcFile.getPath()); + LOGGER.info("Saved language file to: " + langTargetFile.getPath()); } catch (Exception e) { LOGGER.log(Level.SEVERE, "Failed to generate language file!"); e.printStackTrace(); diff --git a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/lang/LanguageFile.java b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/lang/LanguageFile.java index d808b72..b137974 100644 --- a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/lang/LanguageFile.java +++ b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/lang/LanguageFile.java @@ -22,9 +22,8 @@ public class LanguageFile extends Properties { } private void store0(BufferedWriter bw, boolean generated) - throws IOException - { - if(generated) { + throws IOException { + if (generated) { writeComments(bw, " Chests++ Language File (Version " + BuildConstants.VERSION + "))"); writeComments(bw, " NOTE: This file gets replaced when the plugin launches! If you want to make modifications create a copy first!\n" + @@ -35,9 +34,9 @@ public class LanguageFile extends Properties { } synchronized (this) { - for (Enumeration e = keys(); e.hasMoreElements();) { - String key = (String)e.nextElement(); - String val = (String)get(key); + for (Enumeration e = keys(); e.hasMoreElements(); ) { + String key = (String) e.nextElement(); + String val = (String) get(key); key = saveConvert(key, true, false); /* No need to escape embedded and trailing spaces for value, hence * pass false to flag. @@ -66,9 +65,9 @@ public class LanguageFile extends Properties { bw.write(comments.substring(last, current)); if (c > '\u00ff') { uu[2] = toHex((c >> 12) & 0xf); - uu[3] = toHex((c >> 8) & 0xf); - uu[4] = toHex((c >> 4) & 0xf); - uu[5] = toHex( c & 0xf); + uu[3] = toHex((c >> 8) & 0xf); + uu[4] = toHex((c >> 4) & 0xf); + uu[5] = toHex(c & 0xf); bw.write(new String(uu)); } else { bw.newLine(); @@ -105,46 +104,56 @@ public class LanguageFile extends Properties { } StringBuffer outBuffer = new StringBuffer(bufLen); - for(int x=0; x 61) && (aChar < 127)) { if (aChar == '\\') { - outBuffer.append('\\'); outBuffer.append('\\'); + outBuffer.append('\\'); + outBuffer.append('\\'); continue; } outBuffer.append(aChar); continue; } - switch(aChar) { + switch (aChar) { case ' ': if (x == 0 || escapeSpace) outBuffer.append('\\'); outBuffer.append(' '); break; - case '\t':outBuffer.append('\\'); outBuffer.append('t'); + case '\t': + outBuffer.append('\\'); + outBuffer.append('t'); break; - case '\n':outBuffer.append('\\'); outBuffer.append('n'); + case '\n': + outBuffer.append('\\'); + outBuffer.append('n'); break; - case '\r':outBuffer.append('\\'); outBuffer.append('r'); + case '\r': + outBuffer.append('\\'); + outBuffer.append('r'); break; - case '\f':outBuffer.append('\\'); outBuffer.append('f'); + case '\f': + outBuffer.append('\\'); + outBuffer.append('f'); break; case '=': // Fall through case ':': // Fall through case '#': // Fall through case '!': - outBuffer.append('\\'); outBuffer.append(aChar); + outBuffer.append('\\'); + outBuffer.append(aChar); break; default: - if (((aChar < 0x0020) || (aChar > 0x007e)) & escapeUnicode ) { + if (((aChar < 0x0020) || (aChar > 0x007e)) & escapeUnicode) { outBuffer.append('\\'); outBuffer.append('u'); outBuffer.append(toHex((aChar >> 12) & 0xF)); - outBuffer.append(toHex((aChar >> 8) & 0xF)); - outBuffer.append(toHex((aChar >> 4) & 0xF)); - outBuffer.append(toHex( aChar & 0xF)); + outBuffer.append(toHex((aChar >> 8) & 0xF)); + outBuffer.append(toHex((aChar >> 4) & 0xF)); + outBuffer.append(toHex(aChar & 0xF)); } else { outBuffer.append(aChar); } @@ -155,14 +164,17 @@ public class LanguageFile extends Properties { /** * Convert a nibble to a hex character - * @param nibble the nibble to convert. + * + * @param nibble the nibble to convert. */ private static char toHex(int nibble) { return hexDigit[(nibble & 0xF)]; } - /** A table of hex digits */ + /** + * A table of hex digits + */ private static final char[] hexDigit = { - '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; } diff --git a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/lang/Message.java b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/lang/Message.java index 2dd9013..bc93147 100644 --- a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/lang/Message.java +++ b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/lang/Message.java @@ -64,44 +64,47 @@ public enum Message { COMMAND_CHESTLINK_SETPUBLIC("Set a ChestLink to be accessible by anyone."); String message; - Message(String defaultMessage){ + + Message(String defaultMessage) { this(defaultMessage, new Tag[]{}); } Tag[] tags; - Message(String defaultMessage, Tag... tags){ + + Message(String defaultMessage, Tag... tags) { message = defaultMessage; this.tags = tags; } /** * This can be used to set different messages for different languages. + * * @param message - the template string for the message. */ public void setMessage(String message) { this.message = detagMessage(message, tags); } - public String getTaggedMessage(){ + public String getTaggedMessage() { return tagMessage(message, tags); } - private static String detagMessage(String string, Tag[] tags){ + private static String detagMessage(String string, Tag[] tags) { for (int i = 0; i < tags.length; i++) { - string = string.replaceAll("\\{"+tags[i]+"}", "{"+i+"}"); + string = string.replaceAll("\\{" + tags[i] + "}", "{" + i + "}"); } return string; } - private static String tagMessage(String string, Tag[] tags){ + private static String tagMessage(String string, Tag[] tags) { for (int i = 0; i < tags.length; i++) { - String replace = "\\{"+i+"}"; - string = string.replaceAll(replace, "{"+tags[i]+"}"); + String replace = "\\{" + i + "}"; + string = string.replaceAll(replace, "{" + tags[i] + "}"); } return string; } - public String getString(Object... args){ + public String getString(Object... args) { return MessageFormat.format(message, args); } diff --git a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/listeners/HopperListener.java b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/listeners/HopperListener.java index 31cdff4..58a29c1 100644 --- a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/listeners/HopperListener.java +++ b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/listeners/HopperListener.java @@ -31,11 +31,11 @@ public class HopperListener implements Listener { @EventHandler(priority = EventPriority.HIGHEST) public void onHopperMoveEvent(InventoryMoveItemEvent event) { //TO HOPPER - if(event.getDestination().getHolder() instanceof Hopper){ - if(event.getDestination().getLocation() != null){ - if(event.getDestination().getLocation().getBlock().isBlockPowered()) return; + if (event.getDestination().getHolder() instanceof Hopper) { + if (event.getDestination().getLocation() != null) { + if (event.getDestination().getLocation().getBlock().isBlockPowered()) return; } - if(!event.isCancelled()) Bukkit.getScheduler().scheduleSyncDelayedTask(ChestsPlusPlus.PLUGIN, ()-> { + if (!event.isCancelled()) Bukkit.getScheduler().scheduleSyncDelayedTask(ChestsPlusPlus.PLUGIN, () -> { VirtualChestToHopper.move(event.getDestination().getLocation(), event.getSource(), event.getDestination()); }, 1); event.setCancelled(true); @@ -43,23 +43,24 @@ public class HopperListener implements Listener { } @EventHandler(priority = EventPriority.HIGH) - public void fromHopper(InventoryMoveItemEvent event){ + public void fromHopper(InventoryMoveItemEvent event) { //FROM HOPPER if (event.getInitiator().getHolder() instanceof Hopper) { Location location = event.getDestination().getLocation(); ChestLinkStorage storage = Config.getChestLink().getStorage(location); if (storage != null) { - if(!event.isCancelled()) { + if (!event.isCancelled()) { event.setCancelled(true); new BukkitRunnable() { @Override public void run() { - if(location != null) { + if (location != null) { int hopperAmount = SpigotConfig.getWorldSettings(location.getWorld()).getHopperAmount(); if (Utils.hopperMove(event.getSource(), hopperAmount, storage.getInventory())) { storage.updateDisplayItem(); } - if (event.getDestination().getHolder() != null) event.getDestination().getHolder().getInventory().clear(); + if (event.getDestination().getHolder() != null) + event.getDestination().getHolder().getInventory().clear(); if (storage.getInventory().getViewers().size() > 0) storage.sort(); } } @@ -70,35 +71,35 @@ public class HopperListener implements Listener { } @EventHandler - public void onHopperPickup(InventoryPickupItemEvent event){ - if(event.getInventory().getHolder() instanceof Hopper){ + public void onHopperPickup(InventoryPickupItemEvent event) { + if (event.getInventory().getHolder() instanceof Hopper) { event.setCancelled(!HopperFilter.isInFilter(event.getInventory().getLocation().getBlock(), event.getItem().getItemStack())); } } @EventHandler - public void itemFrameInteract(PlayerInteractEntityEvent event){ - if(event.isCancelled()) return; - if(event.getRightClicked().getType().equals(EntityType.ITEM_FRAME)){ + public void itemFrameInteract(PlayerInteractEntityEvent event) { + if (event.isCancelled()) return; + if (event.getRightClicked().getType().equals(EntityType.ITEM_FRAME)) { ItemFrame itemFrame = (ItemFrame) event.getRightClicked(); Block attachedBlock = itemFrame.getLocation().getBlock().getRelative(itemFrame.getAttachedFace()); - if(!(attachedBlock.getState() instanceof Hopper)) return; + if (!(attachedBlock.getState() instanceof Hopper)) return; Rotation rotation = itemFrame.getRotation(); //Set ItemFrame invisible based on config. ApiSpecific.getNmsProvider().setItemFrameVisible(itemFrame, !PluginConfig.INVISIBLE_FILTER_ITEM_FRAMES.get()); //ItemFrame event acts weird, it returns the values of the itemframe *before* the event. So we have to calculate what the next state will be. - if(!itemFrame.getItem().getType().equals(Material.AIR)) rotation = rotation.rotateClockwise(); + if (!itemFrame.getItem().getType().equals(Material.AIR)) rotation = rotation.rotateClockwise(); - if(rotation.equals(Rotation.FLIPPED)){ - event.getPlayer().sendMessage(ChatColor.AQUA+"ItemFrame now filters all types of this item! e.g Enchanted Books."); - } else if(rotation.equals(Rotation.NONE)) { - event.getPlayer().sendMessage(ChatColor.GREEN+"ItemFrame is in default filtering mode. Rotate Item Frame to change mode!"); - } else if(rotation.equals(Rotation.CLOCKWISE)) { - event.getPlayer().sendMessage(ChatColor.DARK_RED+"ItemFrame now prevents this item from being accepted in the hopper!"); - } else if(rotation.equals(Rotation.COUNTER_CLOCKWISE)) { - event.getPlayer().sendMessage(ChatColor.GOLD+"ItemFrame now prevents all types of this item from being accepted in the hopper! e.g Enchanted Books."); + if (rotation.equals(Rotation.FLIPPED)) { + event.getPlayer().sendMessage(ChatColor.AQUA + "ItemFrame now filters all types of this item! e.g Enchanted Books."); + } else if (rotation.equals(Rotation.NONE)) { + event.getPlayer().sendMessage(ChatColor.GREEN + "ItemFrame is in default filtering mode. Rotate Item Frame to change mode!"); + } else if (rotation.equals(Rotation.CLOCKWISE)) { + event.getPlayer().sendMessage(ChatColor.DARK_RED + "ItemFrame now prevents this item from being accepted in the hopper!"); + } else if (rotation.equals(Rotation.COUNTER_CLOCKWISE)) { + event.getPlayer().sendMessage(ChatColor.GOLD + "ItemFrame now prevents all types of this item from being accepted in the hopper! e.g Enchanted Books."); } } } diff --git a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/listeners/InventoryListener.java b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/listeners/InventoryListener.java index 515cb10..81d97e7 100644 --- a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/listeners/InventoryListener.java +++ b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/listeners/InventoryListener.java @@ -28,12 +28,12 @@ import org.bukkit.inventory.ItemStack; public class InventoryListener implements Listener { @EventHandler(priority = EventPriority.LOWEST) - public void onInventoryPlayerUpdate(InventoryClickEvent event){ + public void onInventoryPlayerUpdate(InventoryClickEvent event) { inventoryUpdate(event); } - @EventHandler (priority = EventPriority.LOWEST) - public void onInventoryOpen(InventoryOpenEvent event){ + @EventHandler(priority = EventPriority.LOWEST) + public void onInventoryOpen(InventoryOpenEvent event) { try { if (event.getPlayer() instanceof Player) { if (event.getInventory().getLocation() != null) { @@ -50,9 +50,9 @@ public class InventoryListener implements Listener { //If no Inventory Storage here check for AutoCraft AutoCraftingStorage craftingStorage = Config.getAutoCraft().getStorage(event.getInventory().getLocation()); - if(craftingStorage != null){ + if (craftingStorage != null) { event.setCancelled(true); - if(event.getPlayer().hasPermission(Permissions.AUTOCRAFT_OPEN) && craftingStorage.hasPermission((Player) event.getPlayer())) { + if (event.getPlayer().hasPermission(Permissions.AUTOCRAFT_OPEN) && craftingStorage.hasPermission((Player) event.getPlayer())) { event.getPlayer().openInventory(craftingStorage.getInventory()); craftingStorage.getVirtualCraftingHolder().startAnimation(); } @@ -60,11 +60,12 @@ public class InventoryListener implements Listener { } } } - } catch (NullPointerException ignore){} //Essentials does something weird with enderchests - shit fix but works :) + } catch (NullPointerException ignore) { + } //Essentials does something weird with enderchests - shit fix but works :) } @EventHandler - public void onInventoryClose(InventoryCloseEvent event){ + public void onInventoryClose(InventoryCloseEvent event) { try { InventoryHolder holder = event.getInventory().getHolder(); if (holder instanceof VirtualInventoryHolder) { @@ -77,26 +78,27 @@ public class InventoryListener implements Listener { Utils.closeStorageInventory(vHolder.getStorage()); vHolder.getStorage().onItemDisplayUpdate(InventorySorter.getMostCommonItem(event.getInventory())); } - if(holder instanceof VirtualCraftingHolder){ + if (holder instanceof VirtualCraftingHolder) { ((VirtualCraftingHolder) holder).stopAnimation(); } - } catch (NullPointerException ignore){} //Essentials does something weird with enderchests - shit fix but works :) + } catch (NullPointerException ignore) { + } //Essentials does something weird with enderchests - shit fix but works :) } - public void inventoryUpdate(InventoryInteractEvent event){ + public void inventoryUpdate(InventoryInteractEvent event) { InventoryHolder holder = event.getInventory().getHolder(); - if(holder instanceof VirtualInventoryHolder){ + if (holder instanceof VirtualInventoryHolder) { VirtualInventoryHolder vHolder = (VirtualInventoryHolder) holder; Bukkit.getScheduler().scheduleSyncDelayedTask(ChestsPlusPlus.PLUGIN, () -> { vHolder.getStorage().sort(); vHolder.getStorage().onItemDisplayUpdate(InventorySorter.getMostCommonItem(event.getInventory())); - },1); + }, 1); } } @EventHandler(priority = EventPriority.LOWEST) - public void onInventoryPlayerUpdate(InventoryDragEvent event){ + public void onInventoryPlayerUpdate(InventoryDragEvent event) { inventoryUpdate(event); craftingUpdate(event); } @@ -104,26 +106,26 @@ public class InventoryListener implements Listener { //CRAFTING @EventHandler(priority = EventPriority.HIGHEST) - public void inventoryDragEvent(InventoryDragEvent event){ + public void inventoryDragEvent(InventoryDragEvent event) { Inventory inventory = event.getInventory(); - if(inventory.getHolder() instanceof VirtualCraftingHolder){ + if (inventory.getHolder() instanceof VirtualCraftingHolder) { Player p = (Player) event.getWhoClicked(); - for(int slot : event.getRawSlots()) { - if(slot >= p.getOpenInventory().getTopInventory().getSize()) + for (int slot : event.getRawSlots()) { + if (slot >= p.getOpenInventory().getTopInventory().getSize()) continue; - setCraftingItem(event.getInventory(),slot,event.getOldCursor()); + setCraftingItem(event.getInventory(), slot, event.getOldCursor()); event.setCancelled(true); } } } @EventHandler(priority = EventPriority.HIGHEST) - public void onCraftingPlayerUpdate(InventoryClickEvent event){ + public void onCraftingPlayerUpdate(InventoryClickEvent event) { Player player = (Player) event.getWhoClicked(); - if(event.getView().getTopInventory().getHolder() instanceof VirtualCraftingHolder){ - if(event.getAction() == InventoryAction.COLLECT_TO_CURSOR || + if (event.getView().getTopInventory().getHolder() instanceof VirtualCraftingHolder) { + if (event.getAction() == InventoryAction.COLLECT_TO_CURSOR || event.getAction() == InventoryAction.MOVE_TO_OTHER_INVENTORY || event.getAction() == InventoryAction.NOTHING) { event.setCancelled(true); @@ -131,10 +133,10 @@ public class InventoryListener implements Listener { return; } - if(event.getClickedInventory() == player.getOpenInventory().getTopInventory()){ - if(event.getSlot() == 0) event.setCancelled(true); - if(event.getSlot() >= 1 && event.getSlot() <= 9){ - setCraftingItem(event.getInventory(),event.getSlot(),event.getCursor()); + if (event.getClickedInventory() == player.getOpenInventory().getTopInventory()) { + if (event.getSlot() == 0) event.setCancelled(true); + if (event.getSlot() >= 1 && event.getSlot() <= 9) { + setCraftingItem(event.getInventory(), event.getSlot(), event.getCursor()); event.setCancelled(true); craftingUpdate(event); } @@ -142,23 +144,22 @@ public class InventoryListener implements Listener { } } - private void setCraftingItem(Inventory inventory, int slot, ItemStack cursor){ + private void setCraftingItem(Inventory inventory, int slot, ItemStack cursor) { ItemStack clone = null; - if(cursor != null){ + if (cursor != null) { clone = cursor.clone(); clone.setAmount(1); } - inventory.setItem(slot,clone); + inventory.setItem(slot, clone); } - private void craftingUpdate(InventoryInteractEvent event){ + private void craftingUpdate(InventoryInteractEvent event) { InventoryHolder holder = event.getInventory().getHolder(); - if(holder instanceof VirtualCraftingHolder){ - Bukkit.getScheduler().scheduleSyncDelayedTask(ChestsPlusPlus.PLUGIN, (((VirtualCraftingHolder) holder).setUpdatingRecipe(true))::updateCrafting,1); - Bukkit.getScheduler().scheduleSyncDelayedTask(ChestsPlusPlus.PLUGIN, (((VirtualCraftingHolder) holder))::forceUpdateInventory,1); + if (holder instanceof VirtualCraftingHolder) { + Bukkit.getScheduler().scheduleSyncDelayedTask(ChestsPlusPlus.PLUGIN, (((VirtualCraftingHolder) holder).setUpdatingRecipe(true))::updateCrafting, 1); + Bukkit.getScheduler().scheduleSyncDelayedTask(ChestsPlusPlus.PLUGIN, (((VirtualCraftingHolder) holder))::forceUpdateInventory, 1); } } - } diff --git a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/listeners/StorageListener.java b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/listeners/StorageListener.java index be7299f..e4afe35 100644 --- a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/listeners/StorageListener.java +++ b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/listeners/StorageListener.java @@ -38,46 +38,46 @@ import java.util.stream.Collectors; public class StorageListener implements Listener { @EventHandler - public void playerInteract(BlockPlaceEvent event){ - if(event.getBlockPlaced().getState() instanceof Sign){ - if(Config.getStorageTypes().stream().anyMatch(storageType -> storageType.isValidBlockType(event.getBlockAgainst()))) { - new TempListener() { - @EventHandler - public void onSignChange(SignChangeEvent signChangeEvent) { - if (event.getBlockPlaced().getLocation().equals(signChangeEvent.getBlock().getLocation())) { - Sign sign = (Sign) signChangeEvent.getBlock().getState(); + public void playerInteract(BlockPlaceEvent event) { + if (event.getBlockPlaced().getState() instanceof Sign) { + if (Config.getStorageTypes().stream().anyMatch(storageType -> storageType.isValidBlockType(event.getBlockAgainst()))) { + new TempListener() { + @EventHandler + public void onSignChange(SignChangeEvent signChangeEvent) { + if (event.getBlockPlaced().getLocation().equals(signChangeEvent.getBlock().getLocation())) { + Sign sign = (Sign) signChangeEvent.getBlock().getState(); - for (StorageType storageType : Config.getStorageTypes().stream().filter(storageType -> storageType.isValidBlockType(event.getBlockAgainst())).collect(Collectors.toList())) { - if(storageType.hasPermissionToAdd(event.getPlayer())) { - Location signLocation = event.getBlockPlaced().getLocation(); - if (storageType.getStorageUtils().isValidSignPosition(signLocation)) { - StorageInfo info = storageType.getStorageUtils().getStorageInfo(sign, signChangeEvent.getLines(), event.getPlayer().getUniqueId()); - if (info != null) { - if (!storageType.add(event.getPlayer(), info.getGroup(), event.getBlockAgainst().getLocation(), event.getBlockPlaced().getLocation(), info.getPlayer())) { - sign.getBlock().breakNaturally(); - done(); - return; - } - storageType.validate(event.getBlockAgainst()); - storageType.getMessages().storageAdded(event.getPlayer(), signChangeEvent.getLine(1), info.getPlayer().getName()); - signChange(sign, signChangeEvent, info.getPlayer(), event.getPlayer()); - } - } else { - storageType.getMessages().invalidSignPlacement(event.getPlayer()); - } - } else { - Messages.NO_PERMISSION(event.getPlayer()); + for (StorageType storageType : Config.getStorageTypes().stream().filter(storageType -> storageType.isValidBlockType(event.getBlockAgainst())).collect(Collectors.toList())) { + if (storageType.hasPermissionToAdd(event.getPlayer())) { + Location signLocation = event.getBlockPlaced().getLocation(); + if (storageType.getStorageUtils().isValidSignPosition(signLocation)) { + StorageInfo info = storageType.getStorageUtils().getStorageInfo(sign, signChangeEvent.getLines(), event.getPlayer().getUniqueId()); + if (info != null) { + if (!storageType.add(event.getPlayer(), info.getGroup(), event.getBlockAgainst().getLocation(), event.getBlockPlaced().getLocation(), info.getPlayer())) { + sign.getBlock().breakNaturally(); + done(); + return; + } + storageType.validate(event.getBlockAgainst()); + storageType.getMessages().storageAdded(event.getPlayer(), signChangeEvent.getLine(1), info.getPlayer().getName()); + signChange(sign, signChangeEvent, info.getPlayer(), event.getPlayer()); } + } else { + storageType.getMessages().invalidSignPlacement(event.getPlayer()); } + } else { + Messages.NO_PERMISSION(event.getPlayer()); } - done(); } - }; - } + } + done(); + } + }; } + } } - private void signChange(Sign sign, SignChangeEvent signChangeEvent, OfflinePlayer addedPlayer, Player player){ + private void signChange(Sign sign, SignChangeEvent signChangeEvent, OfflinePlayer addedPlayer, Player player) { setLine(sign, signChangeEvent, 0, ChatColor.RED + ChatColor.stripColor(signChangeEvent.getLine(0))); setLine(sign, signChangeEvent, 1, ChatColor.GREEN + ChatColor.stripColor(signChangeEvent.getLine(1))); setLine(sign, signChangeEvent, 2, ChatColor.BOLD + ChatColor.stripColor(addedPlayer.getName())); @@ -86,19 +86,19 @@ public class StorageListener implements Listener { } @EventHandler - public void onSignBreak(BlockBreakEvent event){ - if(event.getBlock().getState() instanceof Sign) { + public void onSignBreak(BlockBreakEvent event) { + if (event.getBlock().getState() instanceof Sign) { Sign sign = (Sign) event.getBlock().getState(); //Get blockface of sign. - if(sign.getBlockData() instanceof Directional) { + if (sign.getBlockData() instanceof Directional) { BlockFace chestFace = ((Directional) sign.getBlockData()).getFacing().getOppositeFace(); Block block = sign.getBlock().getRelative(chestFace); Config.getStorageTypes().forEach(storageType -> { - if(storageType.isValidBlockType(block)){ - StorageInfo info = storageType.getStorageUtils().getStorageInfo(sign,sign.getLines()); - if(info != null){ + if (storageType.isValidBlockType(block)) { + StorageInfo info = storageType.getStorageUtils().getStorageInfo(sign, sign.getLines()); + if (info != null) { storageType.removeBlock(info.getPlayer(), info.getGroup(), block.getLocation()); storageType.onSignRemoval(block); storageType.getMessages().storageRemoved(event.getPlayer(), info.getGroup(), info.getPlayer().getName()); @@ -110,15 +110,15 @@ public class StorageListener implements Listener { } @EventHandler - public void onChestPlace(BlockPlaceEvent event){ - for(StorageType storageType : Config.getStorageTypes()){ - if(storageType.isValidBlockType(event.getBlockPlaced())){ + public void onChestPlace(BlockPlaceEvent event) { + for (StorageType storageType : Config.getStorageTypes()) { + if (storageType.isValidBlockType(event.getBlockPlaced())) { ItemMeta itemMeta = event.getItemInHand().getItemMeta(); - if(itemMeta != null){ + if (itemMeta != null) { String playerUUID = itemMeta.getPersistentDataContainer().get(Values.playerUUID, PersistentDataType.STRING); String storageID = itemMeta.getPersistentDataContainer().get(Values.storageID, PersistentDataType.STRING); - if(playerUUID != null && storageID != null) { + if (playerUUID != null && storageID != null) { OfflinePlayer owner = Bukkit.getOfflinePlayer(UUID.fromString(playerUUID)); BlockFace blockFace = storageType.onStoragePlacedBlockFace(event.getPlayer(), event.getBlockPlaced()); @@ -138,41 +138,41 @@ public class StorageListener implements Listener { } } } - if(event.getBlockPlaced().getState() instanceof Chest){ + if (event.getBlockPlaced().getState() instanceof Chest) { new ChestLinkVerifier(event.getBlock()).check(); } } @EventHandler(priority = EventPriority.HIGHEST) - public void onChestBreak(BlockBreakEvent event){ - if(event.isCancelled()) return; + public void onChestBreak(BlockBreakEvent event) { + if (event.isCancelled()) return; for (StorageType storageType : Config.getStorageTypes()) { - if(storageType.isValidBlockType(event.getBlock())) { + if (storageType.isValidBlockType(event.getBlock())) { boolean hasPickedUp = false; ItemStack mainHand = event.getPlayer().getInventory().getItemInMainHand(); - if(mainHand.containsEnchantment(Enchantment.SILK_TOUCH)){ + if (mainHand.containsEnchantment(Enchantment.SILK_TOUCH)) { hasPickedUp = true; } - AbstractStorage storage = storageType.removeBlock(event.getBlock().getLocation(),hasPickedUp); + AbstractStorage storage = storageType.removeBlock(event.getBlock().getLocation(), hasPickedUp); if (storage != null) { - if(hasPickedUp){ + if (hasPickedUp) { event.setCancelled(true); Block storageBlock = event.getBlock(); Location signLoc = storage.getSignLocation(storageBlock.getLocation()); //Custom dropped Chest - ItemStack customChest = new ItemStack(storageBlock.getType(),1); + ItemStack customChest = new ItemStack(storageBlock.getType(), 1); ItemMeta itemMeta = customChest.getItemMeta(); - if(itemMeta != null){ - itemMeta.setDisplayName(ChatColor.AQUA+""+storageType.getSignTag()+" "+storage.getIdentifier()); + if (itemMeta != null) { + itemMeta.setDisplayName(ChatColor.AQUA + "" + storageType.getSignTag() + " " + storage.getIdentifier()); itemMeta.getPersistentDataContainer().set(Values.playerUUID, PersistentDataType.STRING, storage.getOwner().getUniqueId().toString()); itemMeta.getPersistentDataContainer().set(Values.storageID, PersistentDataType.STRING, storage.getIdentifier()); } customChest.setItemMeta(itemMeta); - storageBlock.getWorld().dropItemNaturally(storageBlock.getLocation(),customChest); + storageBlock.getWorld().dropItemNaturally(storageBlock.getLocation(), customChest); - if(signLoc != null) signLoc.getBlock().setType(Material.AIR); + if (signLoc != null) signLoc.getBlock().setType(Material.AIR); storageBlock.setType(Material.AIR); } else { @@ -184,34 +184,34 @@ public class StorageListener implements Listener { } @EventHandler - public void onPistonMove(BlockPistonExtendEvent event){ + public void onPistonMove(BlockPistonExtendEvent event) { event.getBlocks().forEach(block -> { - for(StorageType storageType : Config.getStorageTypes()){ - if(storageType.isValidBlockType(block)){ + for (StorageType storageType : Config.getStorageTypes()) { + if (storageType.isValidBlockType(block)) { Location blockLoc = block.getLocation(); AbstractStorage storage = storageType.getStorage(blockLoc); - if(storage != null) event.setCancelled(true); + if (storage != null) event.setCancelled(true); } } }); } @EventHandler - public void onPistonRetract(BlockPistonRetractEvent event){ + public void onPistonRetract(BlockPistonRetractEvent event) { event.getBlocks().forEach(block -> { - for(StorageType storageType : Config.getStorageTypes()){ - if(storageType.isValidBlockType(block)){ + for (StorageType storageType : Config.getStorageTypes()) { + if (storageType.isValidBlockType(block)) { Location blockLoc = block.getLocation(); AbstractStorage storage = storageType.getStorage(blockLoc); - if(storage != null) event.setCancelled(true); + if (storage != null) event.setCancelled(true); } } }); } - private void setLine(Sign sign, SignChangeEvent signChangeEvent, int i, String s){ - sign.setLine(i,s); - signChangeEvent.setLine(i,s); + private void setLine(Sign sign, SignChangeEvent signChangeEvent, int i, String s) { + sign.setLine(i, s); + signChangeEvent.setLine(i, s); } } diff --git a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/listeners/TempListener.java b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/listeners/TempListener.java index ea63b10..4f76af9 100644 --- a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/listeners/TempListener.java +++ b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/listeners/TempListener.java @@ -7,15 +7,15 @@ import org.bukkit.plugin.Plugin; public class TempListener implements Listener { - public TempListener(){ + public TempListener() { this(ChestsPlusPlus.PLUGIN); } - public TempListener(Plugin plugin){ - plugin.getServer().getPluginManager().registerEvents(this,plugin); + public TempListener(Plugin plugin) { + plugin.getServer().getPluginManager().registerEvents(this, plugin); } - public void done(){ + public void done() { HandlerList.unregisterAll(this); } diff --git a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/listeners/WorldListener.java b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/listeners/WorldListener.java index b11725d..dc3ca29 100644 --- a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/listeners/WorldListener.java +++ b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/listeners/WorldListener.java @@ -15,33 +15,33 @@ public class WorldListener implements Listener { private static boolean justSaved = false; @EventHandler - public void onWorldSave(WorldSaveEvent event){ - if(!justSaved){ + public void onWorldSave(WorldSaveEvent event) { + if (!justSaved) { Config.saveASync(); justSaved = true; - new BukkitRunnable(){ + new BukkitRunnable() { @Override public void run() { justSaved = false; } - }.runTaskLater(ChestsPlusPlus.PLUGIN,20); + }.runTaskLater(ChestsPlusPlus.PLUGIN, 20); } } @EventHandler - public void onWorldLoad(WorldLoadEvent event){ + public void onWorldLoad(WorldLoadEvent event) { Utils.removeEntities(event.getWorld()); } @EventHandler - public void onChunkLoad(ChunkLoadEvent event){ - if(!event.isNewChunk()){ + public void onChunkLoad(ChunkLoadEvent event) { + if (!event.isNewChunk()) { Utils.fixEntities(event.getChunk()); Config.getStorageTypes().forEach(storageType -> { storageType.getStorageMap().values().forEach(stringHashMap -> { stringHashMap.values().forEach(o -> { o.getLocations().forEach(locationInfo -> { - if(locationInfo != null && locationInfo.getSignLocation() != null && Utils.isLocationInChunk(locationInfo.getSignLocation(),event.getChunk())) { + if (locationInfo != null && locationInfo.getSignLocation() != null && Utils.isLocationInChunk(locationInfo.getSignLocation(), event.getChunk())) { o.updateClient(locationInfo); } }); diff --git a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/misc/Messages.java b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/misc/Messages.java index fba1014..73ea1c5 100644 --- a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/misc/Messages.java +++ b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/misc/Messages.java @@ -8,37 +8,37 @@ import org.bukkit.entity.Player; public class Messages { - private static String TAG = "[Chests++]"; + private static final String TAG = "[Chests++]"; - public static void CHEST_HAD_OVERFLOW(Player target){ - target.sendMessage(ChatColor.GOLD+TAG+" "+ Message.CHEST_HAD_OVERFLOW.getString()); + public static void CHEST_HAD_OVERFLOW(Player target) { + target.sendMessage(ChatColor.GOLD + TAG + " " + Message.CHEST_HAD_OVERFLOW.getString()); } - public static void MUST_HOLD_SIGN(Player target){ - target.sendMessage(ChatColor.RED+TAG+" "+Message.MUST_HOLD_SIGN.getString()); + public static void MUST_HOLD_SIGN(Player target) { + target.sendMessage(ChatColor.RED + TAG + " " + Message.MUST_HOLD_SIGN.getString()); } - public static void NO_PERMISSION(Player target){ - target.sendMessage(ChatColor.RED+""+ChatColor.BOLD+TAG+" "+Message.NO_PERMISSION.getString()); + public static void NO_PERMISSION(Player target) { + target.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + TAG + " " + Message.NO_PERMISSION.getString()); } - public static void SORT(Player target, ChestLinkStorage storage){ - target.sendMessage(ChatColor.GREEN+Message.SORT.getString(ChatColor.WHITE+storage.getIdentifier()+ChatColor.GREEN, ChatColor.WHITE+storage.getSortMethod().toString())); + public static void SORT(Player target, ChestLinkStorage storage) { + target.sendMessage(ChatColor.GREEN + Message.SORT.getString(ChatColor.WHITE + storage.getIdentifier() + ChatColor.GREEN, ChatColor.WHITE + storage.getSortMethod().toString())); } - public static void CANNOT_RENAME_GROUP_ALREADY_EXISTS(Player target, String newidentifier){ - target.sendMessage(ChatColor.RED+Message.CANNOT_RENAME_GROUP_ALREADY_EXISTS.getString(ChatColor.WHITE+newidentifier+ChatColor.RED)); + public static void CANNOT_RENAME_GROUP_ALREADY_EXISTS(Player target, String newidentifier) { + target.sendMessage(ChatColor.RED + Message.CANNOT_RENAME_GROUP_ALREADY_EXISTS.getString(ChatColor.WHITE + newidentifier + ChatColor.RED)); } - public static void CANNOT_RENAME_GROUP_DOESNT_EXIST(Player target, String oldidentifier){ - target.sendMessage(ChatColor.RED+Message.CANNOT_RENAME_GROUP_DOESNT_EXIST.getString(ChatColor.WHITE+oldidentifier+ChatColor.RED)); + public static void CANNOT_RENAME_GROUP_DOESNT_EXIST(Player target, String oldidentifier) { + target.sendMessage(ChatColor.RED + Message.CANNOT_RENAME_GROUP_DOESNT_EXIST.getString(ChatColor.WHITE + oldidentifier + ChatColor.RED)); } - public static void OWNER_HAS_TOO_MANY_CHESTS(Player target, OfflinePlayer owner){ - target.sendMessage(ChatColor.RED+Message.OWNER_HAS_TOO_MANY_CHESTS.getString(ChatColor.WHITE+owner.getName()+ChatColor.RED)); + public static void OWNER_HAS_TOO_MANY_CHESTS(Player target, OfflinePlayer owner) { + target.sendMessage(ChatColor.RED + Message.OWNER_HAS_TOO_MANY_CHESTS.getString(ChatColor.WHITE + owner.getName() + ChatColor.RED)); } - public static void ALREADY_PART_OF_GROUP(Player target, String type){ - target.sendMessage(ChatColor.RED+""+ChatColor.BOLD+TAG+" "+Message.ALREADY_PART_OF_GROUP); + public static void ALREADY_PART_OF_GROUP(Player target, String type) { + target.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + TAG + " " + Message.ALREADY_PART_OF_GROUP); } } diff --git a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/misc/Stats.java b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/misc/Stats.java index e81f80c..f3f68b9 100644 --- a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/misc/Stats.java +++ b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/misc/Stats.java @@ -6,19 +6,19 @@ import org.bstats.bukkit.Metrics; public class Stats { - public static void addCharts(Metrics metrics){ + public static void addCharts(Metrics metrics) { metrics.addCustomChart(new Metrics.SimplePie("chestlink-amount", () -> { int chestlinks = Config.getChestLink().getTotalLocations(); - return chestlinks+""; + return chestlinks + ""; })); metrics.addCustomChart(new Metrics.SimplePie("autocraft-amount", () -> { int locations = Config.getAutoCraft().getTotalLocations(); - return locations+""; + return locations + ""; })); metrics.addCustomChart(new Metrics.SimplePie("update_checker_setting", () -> { - if(PluginConfig.IS_UPDATE_CHECKER_ENABLED.get()) return "enabled"; + if (PluginConfig.IS_UPDATE_CHECKER_ENABLED.get()) return "enabled"; else return "disabled"; })); diff --git a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/misc/Utils.java b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/misc/Utils.java index 6bf8f0d..d168ab8 100644 --- a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/misc/Utils.java +++ b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/misc/Utils.java @@ -45,10 +45,10 @@ import java.util.stream.Stream; public class Utils { - public static void openChestInventory(Player player, ChestLinkStorage storage, LocationInfo openedChestLocation){ + public static void openChestInventory(Player player, ChestLinkStorage storage, LocationInfo openedChestLocation) { player.openInventory(storage.getInventory()); //Check if all chests should perform open animation. - if(PluginConfig.SHOULD_ANIMATE_ALL_CHESTS.get()) { + if (PluginConfig.SHOULD_ANIMATE_ALL_CHESTS.get()) { storage.getLocations().forEach(locationInfo -> { Location location = locationInfo.getLocation(); if (location != null) { @@ -60,23 +60,23 @@ public class Utils { } } - private static void containerAnimation(Inventory inventory, LocationInfo location, boolean open){ + private static void containerAnimation(Inventory inventory, LocationInfo location, boolean open) { if (location != null && Utils.isLocationChunkLoaded(location.getLocation())) { Block block = location.getLocation().getBlock(); if (block.getState() instanceof Container) { Container chest = (Container) block.getState(); - if(open){ + if (open) { location.setTileEntityOpener(ApiSpecific.getChestOpener().updateState(inventory, chest, location.getTileEntityOpener())); } else { - Bukkit.getScheduler().scheduleSyncDelayedTask(ChestsPlusPlus.PLUGIN,() -> { - location.setTileEntityOpener(ApiSpecific.getChestOpener().updateState(inventory, chest, location.getTileEntityOpener())); - },1); + Bukkit.getScheduler().scheduleSyncDelayedTask(ChestsPlusPlus.PLUGIN, () -> { + location.setTileEntityOpener(ApiSpecific.getChestOpener().updateState(inventory, chest, location.getTileEntityOpener())); + }, 1); } } } } - public static void closeStorageInventory(ChestLinkStorage storage){ + public static void closeStorageInventory(ChestLinkStorage storage) { storage.getLocations().forEach(locationInfo -> { Location location = locationInfo.getLocation(); if (location != null) { @@ -86,40 +86,41 @@ public class Utils { } - public static void openChestInventory(Player player, Inventory inventory){ + public static void openChestInventory(Player player, Inventory inventory) { VirtualInventoryHolder holder = (VirtualInventoryHolder) inventory.getHolder(); if (holder != null) holder.onPlayerRemoteOpened(player.getUniqueId()); - player.getWorld().playSound(player.getLocation(), Sound.BLOCK_CHEST_OPEN,0.5f,1f); + player.getWorld().playSound(player.getLocation(), Sound.BLOCK_CHEST_OPEN, 0.5f, 1f); player.openInventory(inventory); } - public static void closeInventorySound(Player player, Inventory inventory){ - if(inventory.getLocation() != null) player.getWorld().playSound(inventory.getLocation(), Sound.BLOCK_CHEST_CLOSE,0.5f,1f); - else player.getWorld().playSound(player.getLocation(), Sound.BLOCK_CHEST_CLOSE,0.5f,1f); + public static void closeInventorySound(Player player, Inventory inventory) { + if (inventory.getLocation() != null) + player.getWorld().playSound(inventory.getLocation(), Sound.BLOCK_CHEST_CLOSE, 0.5f, 1f); + else player.getWorld().playSound(player.getLocation(), Sound.BLOCK_CHEST_CLOSE, 0.5f, 1f); //player.closeInventory(); } - public static ItemStack removeStackFromInventory(Inventory inventory, int amount, List filters){ + public static ItemStack removeStackFromInventory(Inventory inventory, int amount, List filters) { ItemStack toRemove; - for(int i=0; i filters){ - ItemStack removed = removeStackFromInventory(from,amount,filters); - if(removed != null) { + public static boolean hopperMove(Inventory from, int amount, Inventory to, List filters) { + ItemStack removed = removeStackFromInventory(from, amount, filters); + if (removed != null) { HashMap leftOvers = to.addItem(removed); for (ItemStack leftOver : leftOvers.values()) { from.addItem(leftOver); - if(removed.equals(leftOver)) return false; + if (removed.equals(leftOver)) return false; } return true; } @@ -127,37 +128,37 @@ public class Utils { } public static boolean hopperMove(Inventory from, int amount, Inventory to) { - return hopperMove(from,amount,to,null); + return hopperMove(from, amount, to, null); } - public static ItemStack getNamedItem(ItemStack item, String name){ + public static ItemStack getNamedItem(ItemStack item, String name) { ItemMeta meta = item.getItemMeta(); - if(meta != null) { + if (meta != null) { meta.setDisplayName(name); item.setItemMeta(meta); } return item; } - public static List getOnlinePlayers(){ + public static List getOnlinePlayers() { return getPlayersAsNameList(Bukkit.getOnlinePlayers()); } - public static List getAllPlayers(){ + public static List getAllPlayers() { return getPlayersAsNameList(Arrays.asList(Bukkit.getOfflinePlayers())); } - public static List getPlayersAsNameList(Collection players){ + public static List getPlayersAsNameList(Collection players) { List arr = new ArrayList<>(); - for(OfflinePlayer player : players){ + for (OfflinePlayer player : players) { arr.add(ChatColor.stripColor(player.getName())); } return arr; } - public static String prettyPrintPlayers(ChatColor highlight, List players){ + public static String prettyPrintPlayers(ChatColor highlight, List players) { String playerString = players.stream().map(OfflinePlayer::getName).collect(Collectors.joining(",")); - return highlight+"["+ChatColor.WHITE+playerString+highlight+"]"; + return highlight + "[" + ChatColor.WHITE + playerString + highlight + "]"; } /** @@ -174,32 +175,32 @@ public class Utils { return targetBlock.getFace(adjacentBlock); } - public static BlockFace getNearestBlockFace(Player player, Location blockPlaced){ + public static BlockFace getNearestBlockFace(Player player, Location blockPlaced) { Vector blockCentre = blockPlaced.add(0.5, 0, 0.5).toVector().setY(0); Vector directionLoc = player.getEyeLocation().toVector().setY(0); - double angle = Math.toDegrees(calculateXZAngle(blockCentre,directionLoc)); - if(angle <= 45 && angle > -45) return BlockFace.EAST; - if(angle <= 135 && angle > 45) return BlockFace.SOUTH; - if(angle <= -45 && angle > -135) return BlockFace.NORTH; - if(angle <= -135 || angle > 135) return BlockFace.WEST; + double angle = Math.toDegrees(calculateXZAngle(blockCentre, directionLoc)); + if (angle <= 45 && angle > -45) return BlockFace.EAST; + if (angle <= 135 && angle > 45) return BlockFace.SOUTH; + if (angle <= -45 && angle > -135) return BlockFace.NORTH; + if (angle <= -135 || angle > 135) return BlockFace.WEST; return null; } - private static double calculateXZAngle(Vector origin, Vector to){ + private static double calculateXZAngle(Vector origin, Vector to) { Vector vec = to.subtract(origin); return Math.atan2(vec.getZ(), vec.getX()); } - public static boolean isSideFace(BlockFace face){ - if(face == BlockFace.NORTH) return true; - if(face == BlockFace.EAST) return true; - if(face == BlockFace.SOUTH) return true; + public static boolean isSideFace(BlockFace face) { + if (face == BlockFace.NORTH) return true; + if (face == BlockFace.EAST) return true; + if (face == BlockFace.SOUTH) return true; return face == BlockFace.WEST; } - public static Inventory copyInventory(Inventory inventory){ + public static Inventory copyInventory(Inventory inventory) { Inventory tempInv; - if(inventory.getType() != InventoryType.CHEST) { + if (inventory.getType() != InventoryType.CHEST) { tempInv = Bukkit.createInventory(null, inventory.getType()); } else { tempInv = Bukkit.createInventory(null, inventory.getSize()); @@ -212,89 +213,89 @@ public class Utils { * Removes all entities that contain a value of 1 under the Values.PluginKey key. * Updates all Item Frames with invisibility status. */ - public static void fixEntities(){ + public static void fixEntities() { Bukkit.getServer().getWorlds().forEach(world -> { removeEntities(world); setItemFrames(world); }); } - public static void fixEntities(Chunk chunk){ + public static void fixEntities(Chunk chunk) { removeEntities(chunk); setItemFrames(chunk); } - public static void removeEntities(World world){ + public static void removeEntities(World world) { world.getEntities().forEach(Utils::removeEntity); } - - public static void removeEntities(Chunk chunk){ + + public static void removeEntities(Chunk chunk) { for (Entity entity : chunk.getEntities()) { removeEntity(entity); } } - private static void removeEntity(Entity entity){ + private static void removeEntity(Entity entity) { Integer val = entity.getPersistentDataContainer().get(Values.PluginKey, PersistentDataType.INTEGER); - if(val != null && val == 1) entity.remove(); + if (val != null && val == 1) entity.remove(); } - public static void setItemFrames(World world){ + public static void setItemFrames(World world) { setItemFrames(world.getEntities().stream()); } - public static void setItemFrames(Chunk chunk){ + public static void setItemFrames(Chunk chunk) { setItemFrames(Arrays.stream(chunk.getEntities())); } - private static void setItemFrames(Stream entityStream){ + private static void setItemFrames(Stream entityStream) { entityStream.filter(entity -> (entity instanceof ItemFrame && entity.getLocation().getBlock().getRelative(((ItemFrame) entity).getAttachedFace()).getState() instanceof Hopper)) .forEach(entity -> ApiSpecific.getNmsProvider().setItemFrameVisible((ItemFrame) entity, !PluginConfig.INVISIBLE_FILTER_ITEM_FRAMES.get())); } - public static List filterList(List list, String phrase){ + public static List filterList(List list, String phrase) { return list.stream().filter(s -> s.contains(phrase)).collect(Collectors.toList()); } - public static void addIfNotNull(List list, T value){ - if(value != null) list.add(value); + public static void addIfNotNull(List list, T value) { + if (value != null) list.add(value); } - public static boolean isAir(Block block){ + public static boolean isAir(Block block) { return (block.getType() == Material.AIR) || (block.getType() == Material.CAVE_AIR); } - public static boolean isLocationChunkLoaded(Location location){ + public static boolean isLocationChunkLoaded(Location location) { int chunkX = location.getBlockX() >> 4; int chunkZ = location.getBlockZ() >> 4; return location.getWorld() != null && location.getWorld().isChunkLoaded(chunkX, chunkZ); } - public static boolean isLocationInChunk(Location location, Chunk chunk){ + public static boolean isLocationInChunk(Location location, Chunk chunk) { int chunkX = location.getBlockX() >> 4; int chunkZ = location.getBlockZ() >> 4; return (chunkX == chunk.getX()) && (chunkZ == chunk.getZ()); } - public static Collection getPlayersInViewDistance(Location location){ - if(location.getWorld() == null) return null; - return location.getWorld().getNearbyEntities(location, Bukkit.getViewDistance()*16, 256, Bukkit.getViewDistance()*16, entity -> entity instanceof Player); + public static Collection getPlayersInViewDistance(Location location) { + if (location.getWorld() == null) return null; + return location.getWorld().getNearbyEntities(location, Bukkit.getViewDistance() * 16, 256, Bukkit.getViewDistance() * 16, entity -> entity instanceof Player); } - public static boolean isLocationInViewDistance(Player player, Location location){ - if(location == null) return false; - if(!player.getWorld().equals(location.getWorld())) return false; + public static boolean isLocationInViewDistance(Player player, Location location) { + if (location == null) return false; + if (!player.getWorld().equals(location.getWorld())) return false; Location delta = player.getLocation().subtract(location); - return (delta.getX() <= Bukkit.getViewDistance()*16) && (delta.getZ() <= Bukkit.getViewDistance()*16); + return (delta.getX() <= Bukkit.getViewDistance() * 16) && (delta.getZ() <= Bukkit.getViewDistance() * 16); } - public static boolean isBlacklistedWorld(World world){ + public static boolean isBlacklistedWorld(World world) { return PluginConfig.WORLD_BLACKLIST.get().contains(world.getName()); } - public static void copyFromResources(File jarFile, String directory){ + public static void copyFromResources(File jarFile, String directory) { try (JarFile jar = new JarFile(jarFile)) { Enumeration entries = jar.entries(); diff --git a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/misc/Values.java b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/misc/Values.java index 219c68b..e116563 100644 --- a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/misc/Values.java +++ b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/misc/Values.java @@ -6,11 +6,12 @@ import org.bukkit.NamespacedKey; public class Values { public final static String ChestLinkTag = "[ChestLink]"; public final static String AutoCraftTag = "[AutoCraft]"; - public static String identifier(String identifier){ - return "["+identifier+"]"; + + public static String identifier(String identifier) { + return "[" + identifier + "]"; } - public final static NamespacedKey playerUUID = new NamespacedKey(ChestsPlusPlus.PLUGIN,"playerUUID"); - public final static NamespacedKey PluginKey = new NamespacedKey(ChestsPlusPlus.PLUGIN,"ChestsPlusPlus"); - public final static NamespacedKey storageID = new NamespacedKey(ChestsPlusPlus.PLUGIN,"storageID"); + public final static NamespacedKey playerUUID = new NamespacedKey(ChestsPlusPlus.PLUGIN, "playerUUID"); + public final static NamespacedKey PluginKey = new NamespacedKey(ChestsPlusPlus.PLUGIN, "ChestsPlusPlus"); + public final static NamespacedKey storageID = new NamespacedKey(ChestsPlusPlus.PLUGIN, "storageID"); } diff --git a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/runnables/ChestLinkVerifier.java b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/runnables/ChestLinkVerifier.java index a79a892..7efad3b 100644 --- a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/runnables/ChestLinkVerifier.java +++ b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/runnables/ChestLinkVerifier.java @@ -15,18 +15,18 @@ import org.bukkit.scheduler.BukkitRunnable; public class ChestLinkVerifier extends BukkitRunnable { - private Block block; + private final Block block; private int delay = 1; - public ChestLinkVerifier(Block block){ + public ChestLinkVerifier(Block block) { this.block = block; } - public void check(){ - runTaskLater(ChestsPlusPlus.PLUGIN,delay); + public void check() { + runTaskLater(ChestsPlusPlus.PLUGIN, delay); } - public ChestLinkVerifier withDelay(int delay){ + public ChestLinkVerifier withDelay(int delay) { this.delay = delay; return this; } @@ -35,11 +35,11 @@ public class ChestLinkVerifier extends BukkitRunnable { public void run() { Chest chest = (Chest) block.getState(); - if(chest.getInventory().getHolder() instanceof DoubleChest) { + if (chest.getInventory().getHolder() instanceof DoubleChest) { DoubleChest doubleChest = (DoubleChest) chest.getInventory().getHolder(); InventoryHolder right = doubleChest.getRightSide(); InventoryHolder left = doubleChest.getLeftSide(); - if(isChestLinked(doubleChest) && left != null && right != null) { + if (isChestLinked(doubleChest) && left != null && right != null) { convertToSingleChest(right.getInventory()); convertToSingleChest(left.getInventory()); convertToSingleChest(right.getInventory()); @@ -51,10 +51,11 @@ public class ChestLinkVerifier extends BukkitRunnable { /** * Converts the block associated with this inventory into a Single Chest. + * * @param inventory */ - private void convertToSingleChest(Inventory inventory){ - if(inventory != null) { + private void convertToSingleChest(Inventory inventory) { + if (inventory != null) { org.bukkit.block.data.type.Chest blockData = (org.bukkit.block.data.type.Chest) inventory.getLocation().getBlock().getBlockData(); blockData.setType(org.bukkit.block.data.type.Chest.Type.SINGLE); inventory.getLocation().getBlock().setBlockData(blockData); @@ -63,10 +64,11 @@ public class ChestLinkVerifier extends BukkitRunnable { /** * Checks if either side of a @{@link DoubleChest} has been added to a ChestLink + * * @param chest - the double chest being tested. * @return true if either side has been added to a ChestLink. */ - private boolean isChestLinked(DoubleChest chest){ + private boolean isChestLinked(DoubleChest chest) { Location chestSide1 = block.getLocation(); Location diff = chest.getLocation().clone().subtract(chestSide1).multiply(2); Location chestSide2 = chestSide1.clone().add(diff); @@ -77,15 +79,15 @@ public class ChestLinkVerifier extends BukkitRunnable { return (leftStorage != null) || (rightStorage != null); } - private void manualCheck(Chest chest){ - if(chest.getBlockData() instanceof Directional) { + private void manualCheck(Chest chest) { + if (chest.getBlockData() instanceof Directional) { Directional directional = (Directional) chest.getBlockData(); BlockFace facing = directional.getFacing(); BlockFace[] perpendulcarFaces = getPerpendicularFaces(facing); - if(perpendulcarFaces == null) return; + if (perpendulcarFaces == null) return; for (BlockFace perpendicularFace : perpendulcarFaces) { Block toTest = block.getRelative(perpendicularFace); - if(toTest.getState() instanceof Chest && Config.getChestLink().getStorage(toTest.getLocation()) != null){ + if (toTest.getState() instanceof Chest && Config.getChestLink().getStorage(toTest.getLocation()) != null) { convertToSingleChest(chest.getInventory()); convertToSingleChest(((Chest) toTest.getState()).getInventory()); convertToSingleChest(chest.getInventory()); @@ -97,8 +99,8 @@ public class ChestLinkVerifier extends BukkitRunnable { private static final BlockFace[] NS = new BlockFace[]{BlockFace.WEST, BlockFace.EAST}; private static final BlockFace[] WE = new BlockFace[]{BlockFace.NORTH, BlockFace.SOUTH}; - private BlockFace[] getPerpendicularFaces(BlockFace face){ - switch (face){ + private BlockFace[] getPerpendicularFaces(BlockFace face) { + switch (face) { case NORTH: case SOUTH: return NS; diff --git a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/runnables/VirtualChestToHopper.java b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/runnables/VirtualChestToHopper.java index f3ebf65..aa29b5b 100644 --- a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/runnables/VirtualChestToHopper.java +++ b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/runnables/VirtualChestToHopper.java @@ -15,44 +15,45 @@ import org.bukkit.scheduler.BukkitTask; public class VirtualChestToHopper extends BukkitRunnable { - private ChestLinkStorage storage; + private final ChestLinkStorage storage; private BukkitTask task; - public VirtualChestToHopper(ChestLinkStorage storage){ + public VirtualChestToHopper(ChestLinkStorage storage) { this.storage = storage; } - public void start(){ - task = runTaskTimer(ChestsPlusPlus.PLUGIN,1,8); + public void start() { + task = runTaskTimer(ChestsPlusPlus.PLUGIN, 1, 8); } - public void stop(){ + public void stop() { task.cancel(); } @Override public void run() { - for(LocationInfo location : storage.getLocations()) { - if(location != null) { + for (LocationInfo location : storage.getLocations()) { + if (location != null) { if (location.getLocation() != null) { - if(!PluginConfig.SHOULD_RUN_HOPPERS_UNLOADED_CHUNKS.get() && !Utils.isLocationChunkLoaded(location.getLocation())) continue; + if (!PluginConfig.SHOULD_RUN_HOPPERS_UNLOADED_CHUNKS.get() && !Utils.isLocationChunkLoaded(location.getLocation())) + continue; Location below = location.getLocation().clone().subtract(0, 1, 0); if (below.getBlock().getState() instanceof Hopper) { Hopper hopper = (Hopper) below.getBlock().getState(); if (below.getBlock().isBlockIndirectlyPowered() || below.getBlock().isBlockPowered()) { continue; } - if (move(hopper.getLocation(), hopper.getInventory(), storage.getInventory())){ + if (move(hopper.getLocation(), hopper.getInventory(), storage.getInventory())) { storage.updateDisplayItem(); } - if(storage.getInventory().getViewers().size() > 0) storage.sort(); + if (storage.getInventory().getViewers().size() > 0) storage.sort(); } } } } } - public static boolean move(Location targetLocation, Inventory source, Inventory target){ + public static boolean move(Location targetLocation, Inventory source, Inventory target) { int hopperAmount = SpigotConfig.getWorldSettings(targetLocation.getWorld()).getHopperAmount(); return Utils.hopperMove(source, hopperAmount, target, HopperFilter.getHopperFilters(targetLocation.getBlock())); } diff --git a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/serialize/Config.java b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/serialize/Config.java index 1d4d2d1..e871dc7 100644 --- a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/serialize/Config.java +++ b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/serialize/Config.java @@ -25,7 +25,7 @@ public class Config { private static ConfigStorage store; private static FileConfiguration config; - private static String saveName = "/data/storage.yml"; + private static final String saveName = "/data/storage.yml"; /* ALL STORAGE TYPES */ private static ChestLinkStorageType chestLinkStorageType; @@ -39,7 +39,7 @@ public class Config { try { config = YamlConfiguration.loadConfiguration(getStorageFile()); - } catch (IllegalArgumentException | IOException e){ + } catch (IllegalArgumentException | IOException e) { ChestsPlusPlus.PLUGIN.getLogger().severe("Config was null or couldn't be read!"); config = new YamlConfiguration(); } @@ -70,7 +70,7 @@ public class Config { } } - public static void saveASync(){ + public static void saveASync() { Bukkit.getScheduler().runTaskAsynchronously(ChestsPlusPlus.PLUGIN, Config::save); } @@ -82,11 +82,13 @@ public class Config { return chestLinkStorageType; } - public static List> getStorageTypes(){ + public static List> getStorageTypes() { return storageTypes != null ? storageTypes : new ArrayList<>(); } - public static ConfigStorage getStore(){ return store; } + public static ConfigStorage getStore() { + return store; + } //TODO This needs improving public static OfflinePlayer getOfflinePlayer(String name) { @@ -101,23 +103,23 @@ public class Config { File pluginDataFolder = ChestsPlusPlus.PLUGIN.getDataFolder(); File file = new File(pluginDataFolder, saveName); file.getParentFile().mkdirs(); - if(!file.exists()) file.createNewFile(); + if (!file.exists()) file.createNewFile(); return file; } - private File getLegacyFile(){ + private File getLegacyFile() { return new File("chests.yml"); } - private void legacyConverter(){ + private void legacyConverter() { File legacyFile = getLegacyFile(); - if(!legacyFile.exists()) return; + if (!legacyFile.exists()) return; ChestsPlusPlus.PLUGIN.getLogger().info("Found a Legacy config! Converting to new data-format and moving to: /plugins/ChestsPlusPlus/data/storage.yml"); ChestsPlusPlus.PLUGIN.getLogger().info("If you are having issues with data-loss the plugin may not have permissions to delete the legacy file 'chests.yml'"); try { Path path = Paths.get(legacyFile.toURI()); - String content = new String(Files.readAllBytes(path),Charsets.UTF_8); + String content = new String(Files.readAllBytes(path), Charsets.UTF_8); content = legacyContentConverter(content); Files.write(getStorageFile().toPath(), content.getBytes(Charsets.UTF_8)); legacyFile.createNewFile(); @@ -127,17 +129,17 @@ public class Config { } } - private String legacyContentConverter(String content){ + private String legacyContentConverter(String content) { content = content.replaceAll("==: LinkedChest", "==: ConfigStorage"); content = content.replaceAll("==: com.jamesdpeters.minecraft.chests.storage.InventoryStorage", "==: ChestLinkStorage"); content = content.replaceAll("==: com.jamesdpeters.minecraft.chests.serialize.InventoryStorage", "==: ChestLinkStorage"); return content; } - private void configConverter(){ + private void configConverter() { try { Path path = Paths.get(getStorageFile().toURI()); - String content = new String(Files.readAllBytes(path),Charsets.UTF_8); + String content = new String(Files.readAllBytes(path), Charsets.UTF_8); content = content.replaceAll("==: Recipe", "==: C++Recipe"); Files.write(getStorageFile().toPath(), content.getBytes(Charsets.UTF_8)); } catch (IOException e) { diff --git a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/serialize/ConfigStorage.java b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/serialize/ConfigStorage.java index ff7ff3f..02fe4cb 100644 --- a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/serialize/ConfigStorage.java +++ b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/serialize/ConfigStorage.java @@ -19,13 +19,13 @@ public class ConfigStorage implements ConfigurationSerializable { @Override public Map serialize() { LinkedHashMap hashMap = new LinkedHashMap<>(); - hashMap.put("chests",chests); - hashMap.put("autocraftingtables",autocraftingtables); + hashMap.put("chests", chests); + hashMap.put("autocraftingtables", autocraftingtables); return hashMap; } @SuppressWarnings("unchecked") - public ConfigStorage(Map map){ + public ConfigStorage(Map map) { //Legacy handling @@ -34,16 +34,17 @@ public class ConfigStorage implements ConfigurationSerializable { // } autocraftingtables = (HashMap>) map.get("autocraftingtables"); - if(autocraftingtables == null) autocraftingtables = new HashMap<>(); + if (autocraftingtables == null) autocraftingtables = new HashMap<>(); validate(); } - private void validate(){ - if(chests != null) chests.forEach((s, invMap) -> invMap.values().removeIf(Objects::isNull)); - if(autocraftingtables != null) autocraftingtables.forEach((s, craftMap) -> craftMap.values().removeIf(Objects::isNull)); + private void validate() { + if (chests != null) chests.forEach((s, invMap) -> invMap.values().removeIf(Objects::isNull)); + if (autocraftingtables != null) + autocraftingtables.forEach((s, craftMap) -> craftMap.values().removeIf(Objects::isNull)); } - public ConfigStorage(){ + public ConfigStorage() { chests = new HashMap<>(); autocraftingtables = new HashMap<>(); } diff --git a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/serialize/LocationInfo.java b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/serialize/LocationInfo.java index 93318c5..df38bbb 100644 --- a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/serialize/LocationInfo.java +++ b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/serialize/LocationInfo.java @@ -17,7 +17,8 @@ import java.util.Optional; @SerializableAs("LocationInfo") public class LocationInfo implements ConfigurationSerializable { - private Location location, signLocation; + private final Location location; + private Location signLocation; private ArmorStand itemStand, blockStand, toolItemStand; private TileEntityOpener tileEntityOpener; @@ -28,11 +29,11 @@ public class LocationInfo implements ConfigurationSerializable { return map; } - public LocationInfo(Map map){ + public LocationInfo(Map map) { location = (Location) map.get("Location"); } - public LocationInfo(Location location){ + public LocationInfo(Location location) { this.location = location; } @@ -44,8 +45,8 @@ public class LocationInfo implements ConfigurationSerializable { return signLocation; } - public Sign getSign(){ - if(signLocation.getBlock().getState() instanceof Sign){ + public Sign getSign() { + if (signLocation.getBlock().getState() instanceof Sign) { return (Sign) signLocation.getBlock().getState(); } return null; @@ -87,7 +88,7 @@ public class LocationInfo implements ConfigurationSerializable { return tileEntityOpener; } - public static List convert(List locationList){ + public static List convert(List locationList) { List locationInfos = new ArrayList<>(); for (Location location : locationList) { locationInfos.add(new LocationInfo(location)); @@ -95,11 +96,11 @@ public class LocationInfo implements ConfigurationSerializable { return locationInfos; } - public static Optional getLocationInfo(List locationInfos, Location location){ + public static Optional getLocationInfo(List locationInfos, Location location) { return locationInfos.stream().filter(locationInfo -> locationInfo.getLocation().equals(location)).findFirst(); } - public boolean isInWorld(Player player){ + public boolean isInWorld(Player player) { return getLocation() != null && player.getWorld().equals(getLocation().getWorld()); } } diff --git a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/serialize/MaterialSerializer.java b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/serialize/MaterialSerializer.java index 92f7b3d..cbb545b 100644 --- a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/serialize/MaterialSerializer.java +++ b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/serialize/MaterialSerializer.java @@ -8,22 +8,22 @@ import java.util.LinkedHashMap; import java.util.Map; @SerializableAs("Material") -public class MaterialSerializer implements ConfigurationSerializable { +public class MaterialSerializer implements ConfigurationSerializable { - private Material material; + private final Material material; - public MaterialSerializer(Material material){ + public MaterialSerializer(Material material) { this.material = material; } @Override public Map serialize() { - LinkedHashMap map = new LinkedHashMap<>(); - map.put("Material",material.name()); + LinkedHashMap map = new LinkedHashMap<>(); + map.put("Material", material.name()); return map; } - public MaterialSerializer(Map map){ + public MaterialSerializer(Map map) { String matName = (String) map.get("Material"); material = Material.getMaterial(matName); } diff --git a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/serialize/PluginConfig.java b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/serialize/PluginConfig.java index d644889..e1289ec 100644 --- a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/serialize/PluginConfig.java +++ b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/serialize/PluginConfig.java @@ -27,29 +27,30 @@ public class PluginConfig { /* *************** * Config Values * ***************/ - public final static Value IS_UPDATE_CHECKER_ENABLED = new Value<>("update-checker", Boolean.class, true); - public final static Value UPDATE_CHECKER_PERIOD = new Value<>("update-checker-period", Integer.class, 60*60); - public final static Value SHOULD_LIMIT_CHESTS = new Value<>("limit-chests", Boolean.class, false); - public final static Value LIMIT_CHESTS_AMOUNT = new Value<>("limit-chestlinks-amount", Integer.class, 0); - public final static Value SHOULD_ANIMATE_ALL_CHESTS = new Value<>("should-animate-all-chests", Boolean.class, true); - public final static Value SHOULD_RUN_HOPPERS_UNLOADED_CHUNKS = new Value<>("run-hoppers-unloaded-chunks", Boolean.class, false); - public final static Value DISPLAY_CHESTLINK_ARMOUR_STAND = new Value<>("display_chestlink_armour_stand", Boolean.class, true); - public final static Value DISPLAY_AUTOCRAFT_ARMOUR_STAND = new Value<>("display_autocraft_armour_stands", Boolean.class, true); - public final static Value INVISIBLE_FILTER_ITEM_FRAMES = new Value<>("set-filter-itemframe-invisible", Boolean.class, false); - public final static ListValue WORLD_BLACKLIST = new ListValue<>("world-blacklist", String.class, Collections.singletonList("")); - public final static Value LANG_FILE = new Value<>("language-file", String.class, "default"); + public final static Value IS_UPDATE_CHECKER_ENABLED = new Value<>("update-checker", Boolean.class, true); + public final static Value UPDATE_CHECKER_PERIOD = new Value<>("update-checker-period", Integer.class, 60 * 60); + public final static Value SHOULD_LIMIT_CHESTS = new Value<>("limit-chests", Boolean.class, false); + public final static Value LIMIT_CHESTS_AMOUNT = new Value<>("limit-chestlinks-amount", Integer.class, 0); + public final static Value SHOULD_ANIMATE_ALL_CHESTS = new Value<>("should-animate-all-chests", Boolean.class, true); + public final static Value SHOULD_RUN_HOPPERS_UNLOADED_CHUNKS = new Value<>("run-hoppers-unloaded-chunks", Boolean.class, false); + public final static Value DISPLAY_CHESTLINK_ARMOUR_STAND = new Value<>("display_chestlink_armour_stand", Boolean.class, true); + public final static Value DISPLAY_AUTOCRAFT_ARMOUR_STAND = new Value<>("display_autocraft_armour_stands", Boolean.class, true); + public final static Value INVISIBLE_FILTER_ITEM_FRAMES = new Value<>("set-filter-itemframe-invisible", Boolean.class, false); + public final static ListValue WORLD_BLACKLIST = new ListValue<>("world-blacklist", String.class, Collections.singletonList("")); + public final static Value LANG_FILE = new Value<>("language-file", String.class, "default"); /** * Loads this @{@link Plugin}'s Config and adds default values if they don't exist. + * * @param plugin - the plugin of the @{@link org.bukkit.configuration.Configuration} to be loaded. */ - public static void load(Plugin plugin){ + public static void load(Plugin plugin) { //Read in config configuration = plugin.getConfig(); //Add default values values.forEach((configSection, values) -> { - if(configSection != null){ + if (configSection != null) { ConfigurationSection section = Optional.ofNullable(configuration.getConfigurationSection(configSection)).orElse(configuration.createSection(configSection)); values.forEach(value -> section.addDefault(value.getPath(), value.getDefaultValue())); } else { @@ -64,7 +65,7 @@ public class PluginConfig { //Read config in and set values configuration = plugin.getConfig(); values.forEach((configSection, values) -> { - if(configSection != null){ + if (configSection != null) { ConfigurationSection section = Optional.ofNullable(configuration.getConfigurationSection(configSection)).orElse(configuration.createSection(configSection)); values.forEach(value -> value.setValue(section.get(value.getPath()))); } else { @@ -78,25 +79,25 @@ public class PluginConfig { protected final T defaultValue; protected T value; - AbstractValue(String configurationSection, String path, T defaultValue){ + AbstractValue(String configurationSection, String path, T defaultValue) { this.path = path; this.value = defaultValue; this.defaultValue = defaultValue; this.configurationSection = configurationSection; List> valueList = values.computeIfAbsent(configurationSection, k -> new ArrayList<>()); - if(valueList.stream().anyMatch(value -> value.getPath().equals(path))){ - throw new IllegalArgumentException("Two values with the same path have been added to the Config: '"+path+"'"); + if (valueList.stream().anyMatch(value -> value.getPath().equals(path))) { + throw new IllegalArgumentException("Two values with the same path have been added to the Config: '" + path + "'"); } valueList.add(this); } - public T get(){ + public T get() { return value != null ? value : defaultValue; } - public void set(T value){ + public void set(T value) { this.value = value; } @@ -113,6 +114,7 @@ public class PluginConfig { /** * A class that represents a singular value in a @{@link org.bukkit.configuration.Configuration} + * * @param the type of the variable to be stored/loaded. */ public static class Value extends AbstractValue { @@ -120,25 +122,25 @@ public class PluginConfig { /** * @param configSection the @{@link ConfigurationSection} this value belongs to. - * @param path the key that represents this value. - * @param type the @{@link Class} that represents this value - * @param defaultValue the default value to be inserted into the @{@link org.bukkit.configuration.Configuration} + * @param path the key that represents this value. + * @param type the @{@link Class} that represents this value + * @param defaultValue the default value to be inserted into the @{@link org.bukkit.configuration.Configuration} */ - public Value(String configSection, String path, Class type, T defaultValue){ + public Value(String configSection, String path, Class type, T defaultValue) { super(configSection, path, defaultValue); this.type = type; } /** - * @param path the key that represents this value. - * @param type the @{@link Class} that represents this value + * @param path the key that represents this value. + * @param type the @{@link Class} that represents this value * @param defaultValue the default value to be inserted into the @{@link org.bukkit.configuration.Configuration} */ - public Value(String path, Class type, T defaultValue){ + public Value(String path, Class type, T defaultValue) { this(null, path, type, defaultValue); } - public void setValue(Object value){ + public void setValue(Object value) { this.value = type.isInstance(value) ? type.cast(value) : defaultValue; } @@ -146,6 +148,7 @@ public class PluginConfig { /** * A class that represents a list of values in a @{@link org.bukkit.configuration.Configuration} + * * @param the type of the variable to be stored/loaded. */ public static class ListValue extends AbstractValue> { @@ -154,30 +157,30 @@ public class PluginConfig { /** * @param configSection the @{@link ConfigurationSection} this value belongs to. - * @param path the key that represents this value. - * @param type the @{@link Class} that represents a value in the list - * @param defaultValue the default value to be inserted into the @{@link org.bukkit.configuration.Configuration} + * @param path the key that represents this value. + * @param type the @{@link Class} that represents a value in the list + * @param defaultValue the default value to be inserted into the @{@link org.bukkit.configuration.Configuration} */ - public ListValue(String configSection, String path, Class type, List defaultValue){ + public ListValue(String configSection, String path, Class type, List defaultValue) { super(configSection, path, defaultValue); this.type = type; } /** - * @param path the key that represents this value. - * @param type the @{@link Class} that represents a value in the list + * @param path the key that represents this value. + * @param type the @{@link Class} that represents a value in the list * @param defaultValue the default value to be inserted into the @{@link org.bukkit.configuration.Configuration} */ - public ListValue(String path, Class type, List defaultValue){ + public ListValue(String path, Class type, List defaultValue) { this(null, path, type, defaultValue); } - public void setValue(Object value){ + public void setValue(Object value) { List list = (value instanceof List) ? (List) value : defaultValue; this.value = new ArrayList(); for (Object o : list) { - if(type.isInstance(o)){ + if (type.isInstance(o)) { this.value.add(type.cast(o)); } } diff --git a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/serialize/RecipeSerializable.java b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/serialize/RecipeSerializable.java index ff7975a..c7b1a7f 100644 --- a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/serialize/RecipeSerializable.java +++ b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/serialize/RecipeSerializable.java @@ -14,17 +14,18 @@ import java.util.Map; @SerializableAs("C++Recipe") public class RecipeSerializable implements ConfigurationSerializable { - private Recipe recipe; - private NamespacedKey key; + private final Recipe recipe; + private final NamespacedKey key; - public RecipeSerializable(Recipe recipe){ + public RecipeSerializable(Recipe recipe) { this.recipe = recipe; - if(recipe instanceof ShapedRecipe) key = ((ShapedRecipe) recipe).getKey(); - else if(recipe instanceof ShapelessRecipe) key = ((ShapelessRecipe) recipe).getKey(); - else throw new IllegalArgumentException("Recipe type has not been implemented! "+recipe.getClass().toGenericString()); + if (recipe instanceof ShapedRecipe) key = ((ShapedRecipe) recipe).getKey(); + else if (recipe instanceof ShapelessRecipe) key = ((ShapelessRecipe) recipe).getKey(); + else + throw new IllegalArgumentException("Recipe type has not been implemented! " + recipe.getClass().toGenericString()); } - public RecipeSerializable(Map map){ + public RecipeSerializable(Map map) { //noinspection deprecation key = new NamespacedKey((String) map.get("namespace"), (String) map.get("key")); recipe = Crafting.getRecipeByKey(key); @@ -33,8 +34,8 @@ public class RecipeSerializable implements ConfigurationSerializable { @Override public Map serialize() { LinkedHashMap map = new LinkedHashMap<>(); - map.put("namespace",key.getNamespace()); - map.put("key",key.getKey()); + map.put("namespace", key.getNamespace()); + map.put("key", key.getKey()); return map; } diff --git a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/serialize/SpigotConfig.java b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/serialize/SpigotConfig.java index d9f1fb6..8a84c99 100644 --- a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/serialize/SpigotConfig.java +++ b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/serialize/SpigotConfig.java @@ -8,35 +8,37 @@ import java.util.HashMap; public class SpigotConfig { - private static HashMap worlds; + private static HashMap worlds; private static WorldSettings default_; - public static void load(JavaPlugin plugin){ + public static void load(JavaPlugin plugin) { worlds = new HashMap<>(); try { //Check if we're using the Spigot API. Class.forName("org.spigotmc.SpigotConfig"); ConfigurationSection worldSettings = plugin.getServer().spigot().getConfig().getConfigurationSection("world-settings"); - if(worldSettings != null) { + if (worldSettings != null) { worldSettings.getValues(false).forEach((worldName, o) -> { ConfigurationSection worldSetting = worldSettings.getConfigurationSection(worldName); if (!worldName.equals("default") && worldSetting != null) worlds.put(worldName, new WorldSettings(worldSetting)); }); ConfigurationSection section = worldSettings.getConfigurationSection("default"); - if(section != null) default_ = new WorldSettings(section); + if (section != null) default_ = new WorldSettings(section); } - if(default_ == null) default_ = new WorldSettings(); - } catch (ClassNotFoundException e){ + if (default_ == null) default_ = new WorldSettings(); + } catch (ClassNotFoundException e) { //Not using the Spigot API so fallback to defaults default_ = new WorldSettings(); } } - public static WorldSettings getDefault(){ return default_; } + public static WorldSettings getDefault() { + return default_; + } - public static WorldSettings getWorldSettings(World world){ - return world != null ? worlds.getOrDefault(world.getName(),default_) : default_; + public static WorldSettings getWorldSettings(World world) { + return world != null ? worlds.getOrDefault(world.getName(), default_) : default_; } } diff --git a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/serialize/WorldSettings.java b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/serialize/WorldSettings.java index bfd6b9d..b0fcf5e 100644 --- a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/serialize/WorldSettings.java +++ b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/serialize/WorldSettings.java @@ -2,24 +2,28 @@ package com.jamesdpeters.minecraft.chests.serialize; import org.bukkit.configuration.ConfigurationSection; -public class WorldSettings{ +public class WorldSettings { //Values - private int ticksPerHopperTransfer, hopperAmount; + private final int ticksPerHopperTransfer; + private final int hopperAmount; - public WorldSettings(ConfigurationSection settings){ + public WorldSettings(ConfigurationSection settings) { ticksPerHopperTransfer = settings.getInt("ticks-per.hopper-transfer"); hopperAmount = settings.getInt("hopper-amount"); } //Default class used as a fallback if Spigot isn't being used etc. - public WorldSettings(){ + public WorldSettings() { ticksPerHopperTransfer = 8; hopperAmount = 1; } - public int getTicksPerHopperTransfer(){ + public int getTicksPerHopperTransfer() { return ticksPerHopperTransfer; } - public int getHopperAmount() { return hopperAmount; } + + public int getHopperAmount() { + return hopperAmount; + } } \ No newline at end of file diff --git a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/sort/InventorySorter.java b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/sort/InventorySorter.java index 3645f58..c59d580 100644 --- a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/sort/InventorySorter.java +++ b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/sort/InventorySorter.java @@ -11,9 +11,10 @@ import java.util.Optional; public class InventorySorter { - public static ItemStack[] sort(Inventory inventory, SortMethod sortMethod){ - switch (sortMethod){ - case OFF: return inventory.getContents(); + public static ItemStack[] sort(Inventory inventory, SortMethod sortMethod) { + switch (sortMethod) { + case OFF: + return inventory.getContents(); case NAME: { List condensed = condenseInventory(inventory.getContents()); condensed.sort((item1, item2) -> { @@ -27,17 +28,17 @@ public class InventorySorter { return condensed.toArray(new ItemStack[0]); } case AMOUNT_DESC: { - return sortByAmount(inventory,true); + return sortByAmount(inventory, true); } case AMOUNT_ASC: { - return sortByAmount(inventory,false); + return sortByAmount(inventory, false); } } return inventory.getContents(); } - private static ItemStack[] sortByAmount(Inventory inventory, boolean descending){ - HashMap itemAmounts = getItemAmounts(inventory.getContents()); + private static ItemStack[] sortByAmount(Inventory inventory, boolean descending) { + HashMap itemAmounts = getItemAmounts(inventory.getContents()); List condensed = condenseInventory(inventory.getContents()); condensed.sort((item1, item2) -> { @@ -46,26 +47,26 @@ public class InventorySorter { Optional matchItem1 = itemAmounts.keySet().stream().filter(is -> is.isSimilar(item1)).findFirst(); Optional matchItem2 = itemAmounts.keySet().stream().filter(is -> is.isSimilar(item2)).findFirst(); - if(!matchItem1.isPresent()) return 1; - if(!matchItem2.isPresent()) return -1; + if (!matchItem1.isPresent()) return 1; + if (!matchItem2.isPresent()) return -1; int itemOrder = itemAmounts.get(matchItem1.get()).compareTo(itemAmounts.get(matchItem2.get())); - if(descending) itemOrder *= -1; + if (descending) itemOrder *= -1; return itemOrder; }); return condensed.toArray(new ItemStack[0]); } - private static HashMap getItemAmounts(ItemStack[] itemStacks){ - HashMap itemAmounts = new HashMap<>(); - for(ItemStack itemStack : itemStacks){ - if(itemStack == null) continue; + private static HashMap getItemAmounts(ItemStack[] itemStacks) { + HashMap itemAmounts = new HashMap<>(); + for (ItemStack itemStack : itemStacks) { + if (itemStack == null) continue; int amount; Optional match = itemAmounts.keySet().stream().filter(is -> is.isSimilar(itemStack)).findFirst(); - if(!match.isPresent()){ + if (!match.isPresent()) { amount = itemStack.getAmount(); - itemAmounts.put(itemStack,amount); + itemAmounts.put(itemStack, amount); } else { amount = itemAmounts.get(match.get()) + itemStack.getAmount(); itemAmounts.put(match.get(), amount); @@ -74,34 +75,34 @@ public class InventorySorter { return itemAmounts; } - private static List condenseInventory(ItemStack[] itemStacks){ - HashMap itemAmounts = getItemAmounts(itemStacks); + private static List condenseInventory(ItemStack[] itemStacks) { + HashMap itemAmounts = getItemAmounts(itemStacks); return condenseInventory(itemAmounts); } - private static List condenseInventory(HashMap itemAmounts){ + private static List condenseInventory(HashMap itemAmounts) { List condensedItems = new ArrayList<>(); itemAmounts.forEach((itemStack, amount) -> { int maxStack = itemStack.getMaxStackSize(); - int amountOfMaxStacks = amount/maxStack; + int amountOfMaxStacks = amount / maxStack; int remainder = amount % maxStack; - for(int i=0; i, S extends AbstractStorage> { - private StorageType storageType; - public StorageUtils(StorageType storageType){ + private final StorageType storageType; + + public StorageUtils(StorageType storageType) { this.storageType = storageType; } - public StorageInfo getStorageInfo(Sign sign, String[] lines, UUID uuid){ - if(lines != null) { + public StorageInfo getStorageInfo(Sign sign, String[] lines, UUID uuid) { + if (lines != null) { if (lines.length >= 2 && lines[0].contains(storageType.getSignTag())) { String playerUUID = sign.getPersistentDataContainer().get(Values.playerUUID, PersistentDataType.STRING); String group = ChatColor.stripColor(StringUtils.substringBetween(lines[1], "[", "]")); - if(playerUUID == null){ - if(uuid == null) return null; + if (playerUUID == null) { + if (uuid == null) return null; playerUUID = uuid.toString(); - if(lines[2] != null){ + if (lines[2] != null) { OfflinePlayer owner = Config.getOfflinePlayer(lines[2]); - if(owner != null){ + if (owner != null) { AbstractStorage storage = storageType.getStorage(owner.getUniqueId(), group); Player player = Bukkit.getPlayer(uuid); - if(player != null && storage.hasPermission(player)) playerUUID = owner.getUniqueId().toString(); + if (player != null && storage.hasPermission(player)) + playerUUID = owner.getUniqueId().toString(); } } } @@ -49,29 +51,30 @@ public class StorageUtils, S extends AbstractStorage> { return null; } - public StorageInfo getStorageInfo(Sign sign, String[] lines){ + public StorageInfo getStorageInfo(Sign sign, String[] lines) { return getStorageInfo(sign, lines, null); } - public StorageInfo getStorageInfo(Sign sign){ + public StorageInfo getStorageInfo(Sign sign) { return getStorageInfo(sign, sign.getLines()); } /** * Returns StorageInfo for a sign. + * * @param location - Location of Storage to find. * @return @{@link StorageInfo} */ - public StorageInfo getStorageInfo(Location location){ + public StorageInfo getStorageInfo(Location location) { Block block = location.getBlock(); BlockFace face = storageType.getStorageFacing(block); - if(face == null) return null; + if (face == null) return null; Block sign = block.getRelative(face); - if(sign.getBlockData() instanceof Directional){ + if (sign.getBlockData() instanceof Directional) { //Check if the sign is attached to the given block. Directional directional = (Directional) sign.getBlockData(); - if(directional.getFacing() != face) return null; + if (directional.getFacing() != face) return null; //If it is we can extract info from it. if (sign.getState() instanceof Sign) { Sign s = (Sign) sign.getState(); @@ -84,18 +87,19 @@ public class StorageUtils, S extends AbstractStorage> { /** * Checks if the block being placed against is valid. * Doesn't check if this block is already apart of the group. + * * @param location - location of sign being placed. * @return true if valid. */ - public boolean isValidSignPosition(Location location){ + public boolean isValidSignPosition(Location location) { Block block = location.getBlock(); - if(block.getBlockData() instanceof Directional){ + if (block.getBlockData() instanceof Directional) { Directional sign = (Directional) block.getBlockData(); BlockFace facing = sign.getFacing().getOppositeFace(); Block toTest = block.getRelative(facing); //Check if block face is a valid place for a sign! - if(!storageType.getValidBlockFaces(toTest).contains(sign.getFacing())) return false; + if (!storageType.getValidBlockFaces(toTest).contains(sign.getFacing())) return false; //Return if block isn't valid if (!storageType.isValidBlockType(toTest)) return false; diff --git a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/storage/abstracts/AbstractStorage.java b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/storage/abstracts/AbstractStorage.java index 94e298b..507abc8 100644 --- a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/storage/abstracts/AbstractStorage.java +++ b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/storage/abstracts/AbstractStorage.java @@ -40,15 +40,15 @@ public abstract class AbstractStorage implements ConfigurationSerializable { //Serializables private ArrayList members; private List bukkitMembers; - private OfflinePlayer player; - private UUID playerUUID; + private final OfflinePlayer player; + private final UUID playerUUID; private boolean isPublic; private List locationInfoList; private Inventory inventory; private int signUpdateTask; - public AbstractStorage(OfflinePlayer player, String identifier, Location location, Location signLocation){ + public AbstractStorage(OfflinePlayer player, String identifier, Location location, Location signLocation) { this.player = player; this.playerUUID = player.getUniqueId(); this.isPublic = false; @@ -63,16 +63,17 @@ public abstract class AbstractStorage implements ConfigurationSerializable { /** * This constructor MUST be in the subclass in order for deserialization to work! + * * @param map */ @SuppressWarnings("unchecked") - public AbstractStorage(Map map){ + public AbstractStorage(Map map) { //Pass map through deserialize(map); //This reformats the previous method of location storage to the newer version. List locations = (ArrayList) map.get("locations"); - if(locations != null) { + if (locations != null) { locations.removeAll(Collections.singletonList(null)); locationInfoList = LocationInfo.convert(locations); } else { @@ -87,20 +88,20 @@ public abstract class AbstractStorage implements ConfigurationSerializable { player = Bukkit.getOfflinePlayer(playerUUID); //Read publicity data - if(map.containsKey("isPublic")) isPublic = (boolean) map.get("isPublic"); + if (map.containsKey("isPublic")) isPublic = (boolean) map.get("isPublic"); else isPublic = false; //Read members for this storage - if(map.get("members") != null){ + if (map.get("members") != null) { members = (ArrayList) map.get("members"); bukkitMembers = new ArrayList<>(); - for(String uuid : members){ + for (String uuid : members) { bukkitMembers.add(Bukkit.getOfflinePlayer(UUID.fromString(uuid))); } } inventory = initInventory(); - if(storeInventory()) { + if (storeInventory()) { ItemStack[] itemStacks = ((ArrayList) map.get("inventory")).toArray(new ItemStack[0]); inventory.setContents(itemStacks); } @@ -110,7 +111,7 @@ public abstract class AbstractStorage implements ConfigurationSerializable { public Map serialize() { HashMap map = new LinkedHashMap<>(); //Add default parameters - if(storeInventory()) map.put("inventory", inventory.getContents()); + if (storeInventory()) map.put("inventory", inventory.getContents()); map.put("locationInfo", locationInfoList); map.put("playerUUID", player.getUniqueId().toString()); map.put("members", members); @@ -120,28 +121,29 @@ public abstract class AbstractStorage implements ConfigurationSerializable { return map; } - private void init(){ - if(shouldDisplayArmourStands()) { + private void init() { + if (shouldDisplayArmourStands()) { startSignChangeTask(); } else { for (LocationInfo locationInfo : locationInfoList) { - if(locationInfo.getSignLocation() != null) locationInfo.getSignLocation().getBlock().getState().update(); - if(locationInfo.getBlockStand() != null) locationInfo.getBlockStand().remove(); - if(locationInfo.getToolItemStand() != null) locationInfo.getToolItemStand().remove(); + if (locationInfo.getSignLocation() != null) + locationInfo.getSignLocation().getBlock().getState().update(); + if (locationInfo.getBlockStand() != null) locationInfo.getBlockStand().remove(); + if (locationInfo.getToolItemStand() != null) locationInfo.getToolItemStand().remove(); } } } - private int startSignChangeTask(){ + private int startSignChangeTask() { return Bukkit.getScheduler().scheduleSyncRepeatingTask(ChestsPlusPlus.PLUGIN, this::updateSign, 1, 5); } - private void updateSign(){ + private void updateSign() { Bukkit.getOnlinePlayers().forEach(player -> { List locationInfos = locationInfoList.stream().filter(locationInfo -> locationInfo.isInWorld(player)).collect(Collectors.toList()); // Create a utility method for this locationInfos.forEach(locationInfo -> { if (Utils.isLocationInViewDistance(player, locationInfo.getSignLocation()) && Utils.isLocationChunkLoaded(locationInfo.getSignLocation())) { - if(displayItem != null) player.sendBlockChange(locationInfo.getSignLocation(), air); + if (displayItem != null) player.sendBlockChange(locationInfo.getSignLocation(), air); } }); }); @@ -150,8 +152,8 @@ public abstract class AbstractStorage implements ConfigurationSerializable { /** * This is called after the config has loaded into memory. */ - public void postConfigLoad(){ - for(LocationInfo locationInfo : locationInfoList) { + public void postConfigLoad() { + for (LocationInfo locationInfo : locationInfoList) { locationInfo.setSignLocation(getSignLocation(locationInfo.getLocation())); } @@ -167,6 +169,7 @@ public abstract class AbstractStorage implements ConfigurationSerializable { /** * Add custom parameters here to be serialized. + * * @param map - the map to be added to. */ protected abstract void serialize(Map map); @@ -174,12 +177,17 @@ public abstract class AbstractStorage implements ConfigurationSerializable { /** * Use this to deserialize custom parameters. + * * @param map - the map to deserialize from. */ protected abstract void deserialize(Map map); + protected abstract Inventory initInventory(); + protected abstract void setIdentifier(String newIdentifier); + public abstract String getIdentifier(); + public abstract boolean shouldDisplayArmourStands(); /** @@ -189,13 +197,15 @@ public abstract class AbstractStorage implements ConfigurationSerializable { /** * This is the distance from a full block to the size of the storage block. (e.g Chest is smaller than a regular block.) + * * @return */ public abstract double getBlockOffset(Block block); /** * This is called when a block is added to the storage system. - * @param block - the block that was added. + * + * @param block - the block that was added. * @param player - the player who added the storage. */ public abstract void onStorageAdded(Block block, Player player); @@ -210,14 +220,15 @@ public abstract class AbstractStorage implements ConfigurationSerializable { /** * Adds a location to this storage. + * * @param location - location to be added. */ - public void addLocation(Location location, Location signLocation){ + public void addLocation(Location location, Location signLocation) { LocationInfo locationInfo = new LocationInfo(location); locationInfo.setSignLocation(signLocation); locationInfoList.add(locationInfo); - if(shouldDisplayArmourStands()){ - if(displayItem != null) { + if (shouldDisplayArmourStands()) { + if (displayItem != null) { updateSign(); updateClient(locationInfo); } @@ -226,17 +237,18 @@ public abstract class AbstractStorage implements ConfigurationSerializable { /** * Removes a location from this storage and removes any @{@link ArmorStand} associated with that location + * * @param location - location to be removed. */ - public void removeLocation(Location location){ + public void removeLocation(Location location) { //Remove armor stands from the world. locationInfoList.stream().filter(locationInfo -> locationInfo.getLocation().equals(location)).forEach(locationInfo -> { ArmorStand blockStand = locationInfo.getBlockStand(); - if(blockStand != null) blockStand.remove(); + if (blockStand != null) blockStand.remove(); ArmorStand itemStand = locationInfo.getItemStand(); - if(itemStand != null) itemStand.remove(); + if (itemStand != null) itemStand.remove(); ArmorStand toolStand = locationInfo.getToolItemStand(); - if(toolStand != null) toolStand.remove(); + if (toolStand != null) toolStand.remove(); }); //Remove this location from storage. locationInfoList.removeIf(locationInfo -> locationInfo.getLocation().equals(location)); @@ -246,21 +258,21 @@ public abstract class AbstractStorage implements ConfigurationSerializable { * @param location - location being checked * @return true if this storage contains this location */ - public boolean containsLocation(Location location){ + public boolean containsLocation(Location location) { return locationInfoList.stream().filter(locationInfo -> locationInfo.getLocation() != null).anyMatch(locationInfo -> locationInfo.getLocation().equals(location)); } - public LocationInfo getLocationInfo(Location location){ + public LocationInfo getLocationInfo(Location location) { return locationInfoList.stream().filter(locationInfo -> locationInfo.getLocation().equals(location)).findFirst().orElse(null); } - public int getLocationsSize(){ + public int getLocationsSize() { return locationInfoList.size(); } - public void rename(String newName){ + public void rename(String newName) { setIdentifier(newName); - if(storeInventory()){ + if (storeInventory()) { ItemStack[] items = getInventory().getContents(); inventory = initInventory(); inventory.setContents(items); @@ -271,11 +283,11 @@ public abstract class AbstractStorage implements ConfigurationSerializable { getLocations().forEach(location -> { Block block = location.getLocation().getBlock(); BlockFace face = getStorageType().getStorageFacing(block); - if(face != null) { + if (face != null) { Block signBlock = block.getRelative(face); - if(signBlock.getState() instanceof Sign) { + if (signBlock.getState() instanceof Sign) { Sign sign = (Sign) signBlock.getState(); - sign.setLine(1, ChatColor.GREEN + ChatColor.stripColor("[" + newName+ "]")); + sign.setLine(1, ChatColor.GREEN + ChatColor.stripColor("[" + newName + "]")); sign.update(); } } @@ -284,10 +296,11 @@ public abstract class AbstractStorage implements ConfigurationSerializable { /** * Drops the contents of the storage at the provided location. + * * @param location - location to drop. */ - public void dropInventory(Location location){ - if(doesDropInventory()) { + public void dropInventory(Location location) { + if (doesDropInventory()) { for (ItemStack item : getInventory().getContents()) { if (location.getWorld() != null) { if (item != null) { @@ -299,12 +312,12 @@ public abstract class AbstractStorage implements ConfigurationSerializable { } } - public Location getSignLocation(Location storageBlock){ - if(storageBlock == null) return null; + public Location getSignLocation(Location storageBlock) { + if (storageBlock == null) return null; World world = storageBlock.getWorld(); Block block = storageBlock.getBlock(); - if(world != null) { + if (world != null) { BlockFace facing = getStorageType().getStorageFacing(block); if (facing != null) { @@ -319,23 +332,25 @@ public abstract class AbstractStorage implements ConfigurationSerializable { /** * Checks if the given @{@link Player} has permission to access this storage + * * @param player - the player being checked * @return true if player has permission. */ - public boolean hasPermission(Player player){ - if(player.hasPermission(Permissions.OPEN_ANY)) return true; + public boolean hasPermission(Player player) { + if (player.hasPermission(Permissions.OPEN_ANY)) return true; return hasPermission((OfflinePlayer) player); } /** * Checks if the given @{@link OfflinePlayer} has permission to access this storage + * * @param player - the player being checked * @return true if player has permission. */ - public boolean hasPermission(OfflinePlayer player){ - if(isPublic) return true; - if(player.getUniqueId().equals(playerUUID)) return true; - if(members != null) { + public boolean hasPermission(OfflinePlayer player) { + if (isPublic) return true; + if (player.getUniqueId().equals(playerUUID)) return true; + if (members != null) { for (String uuid : members) { if (player.getUniqueId().toString().equals(uuid)) return true; } @@ -346,15 +361,16 @@ public abstract class AbstractStorage implements ConfigurationSerializable { /** * Add a @{@link Player} to this storage. * This will return false if the player is null or the player was already present. + * * @param player - the player being added. * @return true if the player was added */ - public boolean addMember(OfflinePlayer player){ - if(player != null){ - if(members == null) members = new ArrayList<>(); - if(bukkitMembers == null) bukkitMembers = new ArrayList<>(); + public boolean addMember(OfflinePlayer player) { + if (player != null) { + if (members == null) members = new ArrayList<>(); + if (bukkitMembers == null) bukkitMembers = new ArrayList<>(); String uuid = player.getUniqueId().toString(); - if(members.contains(uuid)) return false; + if (members.contains(uuid)) return false; members.add(uuid); bukkitMembers.add(player); return true; @@ -364,13 +380,14 @@ public abstract class AbstractStorage implements ConfigurationSerializable { /** * Remove a @{@link Player} from this storage. + * * @param player - player being removed. * @return true if player was removed. */ - public boolean removeMember(OfflinePlayer player){ - if(player != null){ - if(bukkitMembers != null) bukkitMembers.remove(player); - if(members != null){ + public boolean removeMember(OfflinePlayer player) { + if (player != null) { + if (bukkitMembers != null) bukkitMembers.remove(player); + if (members != null) { return members.remove(player.getUniqueId().toString()); } } @@ -382,12 +399,12 @@ public abstract class AbstractStorage implements ConfigurationSerializable { private ItemStack displayItem; private DISPLAY_TYPE displayType; - private void resetSign(){ + private void resetSign() { Bukkit.getOnlinePlayers().forEach(player -> { List locationInfos = locationInfoList.stream().filter(locationInfo -> locationInfo.isInWorld(player)).collect(Collectors.toList()); // Create a utility method for this locationInfos.forEach(locationInfo -> { if (Utils.isLocationInViewDistance(player, locationInfo.getSignLocation())) { - if( locationInfo.getSignLocation().getBlock().getState() instanceof Sign) { + if (locationInfo.getSignLocation().getBlock().getState() instanceof Sign) { Sign sign = (Sign) locationInfo.getSignLocation().getBlock().getState(); player.sendBlockChange(locationInfo.getSignLocation(), sign.getBlockData()); player.sendSignChange(locationInfo.getSignLocation(), sign.getLines()); @@ -397,10 +414,10 @@ public abstract class AbstractStorage implements ConfigurationSerializable { }); } - public void onItemDisplayUpdate(ItemStack newItem){ - if(shouldDisplayArmourStands()) { + public void onItemDisplayUpdate(ItemStack newItem) { + if (shouldDisplayArmourStands()) { if (newItem == null || newItem.getType().equals(Material.AIR)) { - if(displayItem != null) resetSign(); + if (displayItem != null) resetSign(); Bukkit.getScheduler().cancelTask(signUpdateTask); signUpdateTask = -1; } else { @@ -409,26 +426,26 @@ public abstract class AbstractStorage implements ConfigurationSerializable { } displayItem = newItem; displayType = DISPLAY_TYPE.getType(displayItem); - if(shouldDisplayArmourStands()) updateClients(); + if (shouldDisplayArmourStands()) updateClients(); } - private EulerAngle BLOCK_POSE = new EulerAngle( Math.toRadians( -15 ), Math.toRadians( -45 ), Math.toRadians(0) ); - private EulerAngle STANDARD_ITEM_POSE = new EulerAngle(Math.toRadians(90),0,Math.toRadians(180)); - private EulerAngle TOOL_ITEM_POSE = new EulerAngle(Math.toRadians(-145),0,Math.toRadians(0)); + private final EulerAngle BLOCK_POSE = new EulerAngle(Math.toRadians(-15), Math.toRadians(-45), Math.toRadians(0)); + private final EulerAngle STANDARD_ITEM_POSE = new EulerAngle(Math.toRadians(90), 0, Math.toRadians(180)); + private final EulerAngle TOOL_ITEM_POSE = new EulerAngle(Math.toRadians(-145), 0, Math.toRadians(0)); /** * Updates nearby clients for all locations of this storage: * - If getArmorStandItem() is non-null the block in-front of the storage is set to Air and an @{@link ArmorStand} is - * spawned that displays the item. + * spawned that displays the item. */ - private void updateClients(){ - if(locationInfoList == null) return; - for (LocationInfo location : locationInfoList){ + private void updateClients() { + if (locationInfoList == null) return; + for (LocationInfo location : locationInfoList) { updateClient(location); } } - private BlockData air = Material.AIR.createBlockData(); + private final BlockData air = Material.AIR.createBlockData(); enum DISPLAY_TYPE { IGNORE, @@ -436,71 +453,72 @@ public abstract class AbstractStorage implements ConfigurationSerializable { BLOCK, ITEM; - public static DISPLAY_TYPE getType(ItemStack itemStack){ - if(itemStack == null) return IGNORE; - if(ApiSpecific.getMaterialChecker().isIgnored(itemStack)) return IGNORE; - if(ApiSpecific.getMaterialChecker().isTool(itemStack)) return TOOL; - if(ApiSpecific.getMaterialChecker().isGraphically2D(itemStack)) return ITEM; + public static DISPLAY_TYPE getType(ItemStack itemStack) { + if (itemStack == null) return IGNORE; + if (ApiSpecific.getMaterialChecker().isIgnored(itemStack)) return IGNORE; + if (ApiSpecific.getMaterialChecker().isTool(itemStack)) return TOOL; + if (ApiSpecific.getMaterialChecker().isGraphically2D(itemStack)) return ITEM; else return BLOCK; } } - public void updateClient(LocationInfo location){ - if(location.getLocation() == null || !Utils.isLocationChunkLoaded(location.getLocation())) return; + public void updateClient(LocationInfo location) { + if (location.getLocation() == null || !Utils.isLocationChunkLoaded(location.getLocation())) return; World world = location.getLocation().getWorld(); - if(world != null) { - if(location.getSignLocation() == null) return; - Block storageBlock = location.getLocation().getBlock(); - Block anchor = location.getSignLocation().getBlock(); + if (world != null) { + if (location.getSignLocation() == null) return; + Block storageBlock = location.getLocation().getBlock(); + Block anchor = location.getSignLocation().getBlock(); - if(displayItem != null && displayType != DISPLAY_TYPE.IGNORE) { - boolean isBlock = displayType == DISPLAY_TYPE.BLOCK; - boolean isTool = displayType == DISPLAY_TYPE.TOOL; + if (displayItem != null && displayType != DISPLAY_TYPE.IGNORE) { + boolean isBlock = displayType == DISPLAY_TYPE.BLOCK; + boolean isTool = displayType == DISPLAY_TYPE.TOOL; - //Get currently stored armorStand if there isn't one spawn it. - ArmorStand stand = isTool ? location.getToolItemStand() : (isBlock ? location.getBlockStand() : location.getItemStand()); - if(stand == null || !stand.isValid()) { - BlockFace facing; - if(anchor.getBlockData() instanceof Directional){ - facing = ((Directional) anchor.getBlockData()).getFacing(); - } else return; - Location standLoc = isTool ? getHeldItemArmorStandLoc(storageBlock,anchor, facing) : getArmorStandLoc(storageBlock, anchor, facing, isBlock); - stand = createArmorStand(world, standLoc, isBlock, isTool); - addArmorStand(isBlock, isTool, location, stand); - } + //Get currently stored armorStand if there isn't one spawn it. + ArmorStand stand = isTool ? location.getToolItemStand() : (isBlock ? location.getBlockStand() : location.getItemStand()); + if (stand == null || !stand.isValid()) { + BlockFace facing; + if (anchor.getBlockData() instanceof Directional) { + facing = ((Directional) anchor.getBlockData()).getFacing(); + } else return; + Location standLoc = isTool ? getHeldItemArmorStandLoc(storageBlock, anchor, facing) : getArmorStandLoc(storageBlock, anchor, facing, isBlock); + stand = createArmorStand(world, standLoc, isBlock, isTool); + addArmorStand(isBlock, isTool, location, stand); + } - stand.setItemInHand(displayItem); + stand.setItemInHand(displayItem); - //Set on fire to correct lighting. - stand.setFireTicks(Integer.MAX_VALUE); + //Set on fire to correct lighting. + stand.setFireTicks(Integer.MAX_VALUE); - //Set other armor stand helmet to null. - if(isBlock) { - removeArmorStandItem(location.getToolItemStand()); - removeArmorStandItem(location.getItemStand()); - } else { - removeArmorStandItem(location.getBlockStand()); - if(isTool) removeArmorStandItem(location.getItemStand()); - else removeArmorStandItem(location.getToolItemStand()); - } - } else { -// anchor.getState().update(); + //Set other armor stand helmet to null. + if (isBlock) { removeArmorStandItem(location.getToolItemStand()); removeArmorStandItem(location.getItemStand()); + } else { removeArmorStandItem(location.getBlockStand()); + if (isTool) removeArmorStandItem(location.getItemStand()); + else removeArmorStandItem(location.getToolItemStand()); } + } else { +// anchor.getState().update(); + removeArmorStandItem(location.getToolItemStand()); + removeArmorStandItem(location.getItemStand()); + removeArmorStandItem(location.getBlockStand()); + } } } /** * Creates an empty @{@link ArmorStand} with properties to make it invisible, invulnerable etc. - * @param world - the world to spawn in. + * + * @param world - the world to spawn in. * @param standLoc - location to spawn the @{@link ArmorStand} at. * @return instance of @{@link ArmorStand} that was spawned. */ - private ArmorStand createArmorStand(World world, Location standLoc, boolean isBlock, boolean isTool){ + private ArmorStand createArmorStand(World world, Location standLoc, boolean isBlock, boolean isTool) { ArmorStand stand = world.spawn(standLoc, ArmorStand.class); stand.setVisible(false); stand.setGravity(false); @@ -520,12 +538,13 @@ public abstract class AbstractStorage implements ConfigurationSerializable { /** * Gets the location of an @{@link ArmorStand} based on the Block, BlockFace and if it's a Block/Item. - * @param anchor - anchor block to base @{@link ArmorStand} location from. - * @param facing - BlockFace the stand should be placed on. + * + * @param anchor - anchor block to base @{@link ArmorStand} location from. + * @param facing - BlockFace the stand should be placed on. * @param isBlock - true if the @{@link ItemStack} is a Block / false if an Item. * @return the calculated location for the @{@link ArmorStand} */ - private Location getArmorStandLoc(Block storageBlock, Block anchor, BlockFace facing, boolean isBlock){ + private Location getArmorStandLoc(Block storageBlock, Block anchor, BlockFace facing, boolean isBlock) { double directionFactor = isBlock ? 0.65 : 0.275; double perpendicularFactor = isBlock ? 0.025 : 0.125; double y = isBlock ? -0.3 : 0.1; @@ -534,7 +553,7 @@ public abstract class AbstractStorage implements ConfigurationSerializable { } - private Location getHeldItemArmorStandLoc(Block storageBlock, Block anchor, BlockFace facing){ + private Location getHeldItemArmorStandLoc(Block storageBlock, Block anchor, BlockFace facing) { double directionFactor = 0.36; double perpendicularFactor = 0; double y = 0.275; @@ -542,43 +561,44 @@ public abstract class AbstractStorage implements ConfigurationSerializable { return getArmorStandLoc(storageBlock, anchor, facing, directionFactor, perpendicularFactor, y, yaw); } - private Location getArmorStandLoc(Block storageBlock, Block anchor, BlockFace facing, double directionFactor, double perpendicularFactor, double y, float yaw){ + private Location getArmorStandLoc(Block storageBlock, Block anchor, BlockFace facing, double directionFactor, double perpendicularFactor, double y, float yaw) { //Get centre of block location. - Location standLoc = anchor.getLocation().add(0.5,-0.5,0.5); + Location standLoc = anchor.getLocation().add(0.5, -0.5, 0.5); Vector direction = facing.getDirection(); directionFactor = directionFactor + getBlockOffset(storageBlock); - double x = directionFactor*direction.getX() - perpendicularFactor*direction.getZ(); - double z = directionFactor*direction.getZ() + perpendicularFactor*direction.getX(); + double x = directionFactor * direction.getX() - perpendicularFactor * direction.getZ(); + double z = directionFactor * direction.getZ() + perpendicularFactor * direction.getX(); - standLoc.setYaw(getYaw(direction.getX(),direction.getZ())+yaw); + standLoc.setYaw(getYaw(direction.getX(), direction.getZ()) + yaw); return standLoc.subtract(x, y, z); } - private void removeArmorStandItem(ArmorStand stand){ - if(stand != null) stand.setItemInHand(null); + private void removeArmorStandItem(ArmorStand stand) { + if (stand != null) stand.setItemInHand(null); } - private void addArmorStand(boolean isBlock, boolean isTool, LocationInfo location, ArmorStand stand){ - if(isTool) location.setToolItemStand(stand); - else if(isBlock) location.setBlockStand(stand); + private void addArmorStand(boolean isBlock, boolean isTool, LocationInfo location, ArmorStand stand) { + if (isTool) location.setToolItemStand(stand); + else if (isBlock) location.setBlockStand(stand); else location.setItemStand(stand); } /** * Get yaw based upon the direction of the x and y components of the Chest BlockFace * Uses precalculated values for most orientations. + * * @param x component * @param y component * @return yaw */ - private float getYaw(double x, double y){ - if(x == 0 && y == -1) return 0; - if(x == 1 && y == 0) return 90; - if(x == 0 && y == 1) return 180; - if(x == -1 && y == 0) return 270; + private float getYaw(double x, double y) { + if (x == 0 && y == -1) return 0; + if (x == 1 && y == 0) return 90; + if (x == 0 && y == 1) return 180; + if (x == -1 && y == 0) return 270; - return (float) (Math.asin(y/Math.sqrt(y*y+x*x))+90); + return (float) (Math.asin(y / Math.sqrt(y * y + x * x)) + 90); } diff --git a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/storage/abstracts/StorageInfo.java b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/storage/abstracts/StorageInfo.java index 2548884..b934048 100644 --- a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/storage/abstracts/StorageInfo.java +++ b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/storage/abstracts/StorageInfo.java @@ -14,27 +14,27 @@ import java.util.UUID; public class StorageInfo { - private String group; - private OfflinePlayer player; + private final String group; + private final OfflinePlayer player; private T storage; - public StorageInfo(String playerUUID, String group, StorageType storageType, Sign sign){ - this(UUID.fromString(playerUUID),group, storageType, sign); + public StorageInfo(String playerUUID, String group, StorageType storageType, Sign sign) { + this(UUID.fromString(playerUUID), group, storageType, sign); } - public StorageInfo(UUID playerUUID, String group, StorageType storageType, Sign sign){ + public StorageInfo(UUID playerUUID, String group, StorageType storageType, Sign sign) { this.group = group; this.player = Bukkit.getOfflinePlayer(playerUUID); - this.storage = storageType.getStorage(playerUUID,group); - if(storage == null){ - if(sign.getBlockData() instanceof Directional) { + this.storage = storageType.getStorage(playerUUID, group); + if (storage == null) { + if (sign.getBlockData() instanceof Directional) { Directional directional = (Directional) sign.getBlockData(); BlockFace storageFace = directional.getFacing().getOppositeFace(); Block storageBlock = sign.getBlock().getRelative(storageFace); Player player = Bukkit.getPlayer(playerUUID); - if(player != null) { + if (player != null) { boolean added = storageType.add(player, group, storageBlock.getLocation(), sign.getLocation(), this.player); - if(added) { + if (added) { this.storage = storageType.getStorage(playerUUID, group); // storageType.getMessages().foundUnlinkedStorage(player,group); } @@ -54,14 +54,15 @@ public class StorageInfo { /** * Get the AutoCraftingStorage for this Sign and check if the given location is apart of the system if not * add it. + * * @return @{@link AutoCraftingStorage} */ public T getStorage(Location location) { - if(storage == null) return null; - if(!storage.containsLocation(location)){ + if (storage == null) return null; + if (!storage.containsLocation(location)) { storage.addLocation(location, storage.getSignLocation(location)); Player player = storage.getOwner().getPlayer(); - if(player != null) storage.getStorageType().getMessages().foundUnlinkedStorage(player,getGroup()); + if (player != null) storage.getStorageType().getMessages().foundUnlinkedStorage(player, getGroup()); } return storage; } diff --git a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/storage/abstracts/StorageMessages.java b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/storage/abstracts/StorageMessages.java index 64c64aa..e0389a4 100644 --- a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/storage/abstracts/StorageMessages.java +++ b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/storage/abstracts/StorageMessages.java @@ -12,67 +12,70 @@ public abstract class StorageMessages { public abstract String getStorageName(); - public void storageAdded(Player target, String group, String player){ - target.sendMessage(ChatColor.GREEN+TAG+" "+ Message.STORAGE_ADDED.getString(getStorageName(), ChatColor.WHITE+group+ChatColor.GREEN, ChatColor.WHITE+player)); + public void storageAdded(Player target, String group, String player) { + target.sendMessage(ChatColor.GREEN + TAG + " " + Message.STORAGE_ADDED.getString(getStorageName(), ChatColor.WHITE + group + ChatColor.GREEN, ChatColor.WHITE + player)); } - public void storageRemoved(Player target, String group, String player){ - target.sendMessage(ChatColor.RED+TAG+" "+Message.STORAGE_REMOVED.getString(getStorageName(), ChatColor.WHITE+group+ChatColor.RED, ChatColor.WHITE+player)); + public void storageRemoved(Player target, String group, String player) { + target.sendMessage(ChatColor.RED + TAG + " " + Message.STORAGE_REMOVED.getString(getStorageName(), ChatColor.WHITE + group + ChatColor.RED, ChatColor.WHITE + player)); } - public void removedGroup(Player target, String toRemove){ - target.sendMessage(ChatColor.RED+""+ChatColor.BOLD+TAG+" "+Message.REMOVED_GROUP.getString(toRemove, getStorageName())); + public void removedGroup(Player target, String toRemove) { + target.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + TAG + " " + Message.REMOVED_GROUP.getString(toRemove, getStorageName())); } - public void groupDoesntExist(Player target, String toRemove){ - target.sendMessage(ChatColor.RED+""+ChatColor.BOLD+TAG+" "+Message.GROUP_DOESNT_EXIST.getString(toRemove, getStorageName())); + public void groupDoesntExist(Player target, String toRemove) { + target.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + TAG + " " + Message.GROUP_DOESNT_EXIST.getString(toRemove, getStorageName())); } - public void foundUnlinkedStorage(Player target, String group){ - target.sendMessage(ChatColor.GOLD+TAG+" "+Message.FOUND_UNLINKED_STORAGE.getString(getStorageName(), group)); + public void foundUnlinkedStorage(Player target, String group) { + target.sendMessage(ChatColor.GOLD + TAG + " " + Message.FOUND_UNLINKED_STORAGE.getString(getStorageName(), group)); } - public void addedMember(Player target, AbstractStorage storage, String added){ - target.sendMessage(ChatColor.GREEN+""+ChatColor.BOLD+TAG+" "+Message.ADDED_MEMBER.getString(ChatColor.WHITE+added+ChatColor.GREEN, getStorageName(), ChatColor.WHITE+storage.getIdentifier())); - target.sendMessage(ChatColor.GREEN+""+ChatColor.BOLD+TAG+" "+Message.CURRENT_MEMBERS.getString(Utils.prettyPrintPlayers(ChatColor.GREEN,storage.getMembers()))); + public void addedMember(Player target, AbstractStorage storage, String added) { + target.sendMessage(ChatColor.GREEN + "" + ChatColor.BOLD + TAG + " " + Message.ADDED_MEMBER.getString(ChatColor.WHITE + added + ChatColor.GREEN, getStorageName(), ChatColor.WHITE + storage.getIdentifier())); + target.sendMessage(ChatColor.GREEN + "" + ChatColor.BOLD + TAG + " " + Message.CURRENT_MEMBERS.getString(Utils.prettyPrintPlayers(ChatColor.GREEN, storage.getMembers()))); } - public void addMemberToAll(Player target, OfflinePlayer added){ - target.sendMessage(ChatColor.GREEN+""+ChatColor.BOLD+TAG+" "+Message.ADDED_MEMBER_TO_ALL.getString(ChatColor.WHITE+added.getName()+ChatColor.GREEN, getStorageName())); + public void addMemberToAll(Player target, OfflinePlayer added) { + target.sendMessage(ChatColor.GREEN + "" + ChatColor.BOLD + TAG + " " + Message.ADDED_MEMBER_TO_ALL.getString(ChatColor.WHITE + added.getName() + ChatColor.GREEN, getStorageName())); } - public void unableToAddMember(Player target, String toAdd){ - target.sendMessage(ChatColor.RED+""+ChatColor.BOLD+TAG+" "+Message.UNABLE_TO_ADD_MEMBER_TO_ALL.getString(toAdd, getStorageName())); + public void unableToAddMember(Player target, String toAdd) { + target.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + TAG + " " + Message.UNABLE_TO_ADD_MEMBER_TO_ALL.getString(toAdd, getStorageName())); } - public void removedMember(Player target, AbstractStorage storage, String added){ - target.sendMessage(ChatColor.GREEN+""+ChatColor.BOLD+TAG+" "+Message.REMOVED_MEMBER.getString(ChatColor.WHITE+added+ChatColor.GREEN, getStorageName(), ChatColor.WHITE+storage.getIdentifier())); - target.sendMessage(ChatColor.GREEN+""+ChatColor.BOLD+TAG+" "+Message.CURRENT_MEMBERS.getString(Utils.prettyPrintPlayers(ChatColor.GREEN,storage.getMembers()))); + public void removedMember(Player target, AbstractStorage storage, String added) { + target.sendMessage(ChatColor.GREEN + "" + ChatColor.BOLD + TAG + " " + Message.REMOVED_MEMBER.getString(ChatColor.WHITE + added + ChatColor.GREEN, getStorageName(), ChatColor.WHITE + storage.getIdentifier())); + target.sendMessage(ChatColor.GREEN + "" + ChatColor.BOLD + TAG + " " + Message.CURRENT_MEMBERS.getString(Utils.prettyPrintPlayers(ChatColor.GREEN, storage.getMembers()))); } - public void removeMemberFromAll(Player target, OfflinePlayer added){ - target.sendMessage(ChatColor.GREEN+""+ChatColor.BOLD+TAG+" "+Message.REMOVE_MEMBER_FROM_ALL.getString(ChatColor.WHITE+added.getName()+ChatColor.GREEN, getStorageName())); + public void removeMemberFromAll(Player target, OfflinePlayer added) { + target.sendMessage(ChatColor.GREEN + "" + ChatColor.BOLD + TAG + " " + Message.REMOVE_MEMBER_FROM_ALL.getString(ChatColor.WHITE + added.getName() + ChatColor.GREEN, getStorageName())); } - public void unableToRemoveMember(Player target, String toAdd){ - target.sendMessage(ChatColor.RED+""+ChatColor.BOLD+TAG+" "+Message.UNABLE_TO_REMOVE_MEMBER.getString(toAdd, getStorageName())); + public void unableToRemoveMember(Player target, String toAdd) { + target.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + TAG + " " + Message.UNABLE_TO_REMOVE_MEMBER.getString(toAdd, getStorageName())); } - public void listMembers(Player target, AbstractStorage storage){ - if(storage.getMembers() != null){ - target.sendMessage(ChatColor.GREEN+Message.LIST_MEMBERS_OF_GROUP.getString(getStorageName(), ChatColor.WHITE+storage.getIdentifier(), Utils.prettyPrintPlayers(ChatColor.GREEN,storage.getMembers()))); + public void listMembers(Player target, AbstractStorage storage) { + if (storage.getMembers() != null) { + target.sendMessage(ChatColor.GREEN + Message.LIST_MEMBERS_OF_GROUP.getString(getStorageName(), ChatColor.WHITE + storage.getIdentifier(), Utils.prettyPrintPlayers(ChatColor.GREEN, storage.getMembers()))); } else { - target.sendMessage(ChatColor.YELLOW+Message.NO_ADDITIONAL_MEMBERS.getString(ChatColor.WHITE+storage.getIdentifier())); + target.sendMessage(ChatColor.YELLOW + Message.NO_ADDITIONAL_MEMBERS.getString(ChatColor.WHITE + storage.getIdentifier())); } } - public void setPublic(Player target, AbstractStorage storage){ - target.sendMessage(ChatColor.GREEN+Message.SET_PUBLICITY.getString(getStorageName(), storage.getIdentifier(), ChatColor.WHITE+""+storage.isPublic())); + public void setPublic(Player target, AbstractStorage storage) { + target.sendMessage(ChatColor.GREEN + Message.SET_PUBLICITY.getString(getStorageName(), storage.getIdentifier(), ChatColor.WHITE + "" + storage.isPublic())); } public abstract void invalidID(Player target); + public abstract void listStorageGroups(Player target); + public abstract void mustLookAtBlock(Player player); + public abstract void invalidSignPlacement(Player player); } diff --git a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/storage/abstracts/StorageType.java b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/storage/abstracts/StorageType.java index 5f2ed9b..82e6e12 100644 --- a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/storage/abstracts/StorageType.java +++ b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/storage/abstracts/StorageType.java @@ -39,11 +39,11 @@ import java.util.stream.Collectors; public abstract class StorageType { - private ConfigStorage store; - private StorageUtils, T> storageUtils; - private HashMap storageCache; + private final ConfigStorage store; + private final StorageUtils, T> storageUtils; + private final HashMap storageCache; - protected StorageType(ConfigStorage store){ + protected StorageType(ConfigStorage store) { this.store = store; storageUtils = new StorageUtils<>(this); storageCache = new HashMap<>(); @@ -57,12 +57,13 @@ public abstract class StorageType { public abstract T createNewStorageInstance(OfflinePlayer player, String inventoryName, Location location, Location signLocation); - public HashMap> getStorageMap(){ + public HashMap> getStorageMap() { return getStorageMap(store); } /** * This is the tag used in Signs such as [ChestLink] or [AutoCraft] + * * @return String value of the sign tag. */ public abstract String getSignTag(); @@ -70,6 +71,7 @@ public abstract class StorageType { /** * This method should check if a block type is a valid type for this Storage. * E.g A Chest, or Crafting table etc. + * * @param block - the block being checked * @return true if the block is valid. */ @@ -77,19 +79,22 @@ public abstract class StorageType { /** * This gets called when a block is removed from the storage system but is still present in the world. + * * @param block - the block that was removed (Not the sign) */ public abstract void onSignRemoval(Block block); public abstract boolean hasPermissionToAdd(Player player); - public void createStorage(Player player, Block block, String identifier, boolean requireSign){ + public void createStorage(Player player, Block block, String identifier, boolean requireSign) { createStorage(player, player, block, identifier, requireSign); } + public abstract void createStorage(Player player, OfflinePlayer owner, Block block, String identifier, boolean requireSign); public abstract void createStorageFacing(Player player, OfflinePlayer owner, Block block, String identifier, BlockFace facing, boolean requireSign); - public void createStorageFacing(Player player, Block block, String identifier, BlockFace facing, boolean requireSign){ + + public void createStorageFacing(Player player, Block block, String identifier, BlockFace facing, boolean requireSign) { createStorageFacing(player, player, block, identifier, facing, requireSign); } @@ -118,7 +123,7 @@ public abstract class StorageType { STORAGE MAP SECTION */ - private HashMap> getMap(){ + private HashMap> getMap() { return getStorageMap(store); } @@ -142,19 +147,19 @@ public abstract class StorageType { } } - public T getStorage(UUID playerUUID, String identifier){ + public T getStorage(UUID playerUUID, String identifier) { HashMap map = getStorageMap(playerUUID); return map.getOrDefault(identifier, null); } public T getStorage(Location location) { T storage = storageCache.get(location); - if(storage != null) return storage; + if (storage != null) return storage; if (location != null) { Block block = location.getBlock(); if (isValidBlockType(block)) { StorageInfo storageInfo = storageUtils.getStorageInfo(location); - if(storageInfo != null){ + if (storageInfo != null) { return storageInfo.getStorage(location); } } @@ -214,8 +219,9 @@ public abstract class StorageType { /** * Removes a block from the given storage system. - * @param storage - @{@link AbstractStorage} - * @param location - the @{@link Location} to remove + * + * @param storage - @{@link AbstractStorage} + * @param location - the @{@link Location} to remove * @param hasPickedUp - true if the player Silk Touched the block. * @return */ @@ -252,7 +258,7 @@ public abstract class StorageType { }); storage.dropInventory(player.getLocation()); getStorageMap(player.getUniqueId()).remove(group); - getMessages().removedGroup(player,group); + getMessages().removedGroup(player, group); } else { getMessages().groupDoesntExist(player, group); } @@ -289,12 +295,12 @@ public abstract class StorageType { /* HELPER UTILS */ - protected void placeSign(Block placedAgainst, Block toReplace, BlockFace facing, Player player, OfflinePlayer ownerPlayer, String identifier, String linkTag, boolean requireSign){ - if(Utils.isAir(toReplace)){ + protected void placeSign(Block placedAgainst, Block toReplace, BlockFace facing, Player player, OfflinePlayer ownerPlayer, String identifier, String linkTag, boolean requireSign) { + if (Utils.isAir(toReplace)) { BlockState replacedBlockState = toReplace.getState(); Material signMaterial = Material.OAK_WALL_SIGN; - if(player.getGameMode() != GameMode.CREATIVE && requireSign) { + if (player.getGameMode() != GameMode.CREATIVE && requireSign) { if (player.getEquipment() != null) { if (!Tag.SIGNS.isTagged(player.getEquipment().getItemInMainHand().getType())) { Messages.MUST_HOLD_SIGN(player); @@ -309,12 +315,12 @@ public abstract class StorageType { } String uuid, group, owner = null; - if(identifier.contains(":")){ + if (identifier.contains(":")) { String[] args = identifier.split(":"); owner = args[0]; group = args[1]; ownerPlayer = Config.getOfflinePlayer(owner); - if(ownerPlayer != null){ + if (ownerPlayer != null) { uuid = ownerPlayer.getUniqueId().toString(); } else { getMessages().invalidID(player); @@ -329,7 +335,7 @@ public abstract class StorageType { lines[0] = linkTag; lines[1] = Values.identifier(group); lines[3] = ""; - if(owner != null) lines[2] = owner; + if (owner != null) lines[2] = owner; else lines[2] = ""; Material airType = toReplace.getType(); @@ -342,45 +348,45 @@ public abstract class StorageType { sign.getPersistentDataContainer().set(Values.playerUUID, PersistentDataType.STRING, uuid); sign.update(); - BlockPlaceEvent event = new BlockPlaceEvent(sign.getBlock(),replacedBlockState,placedAgainst,new ItemStack(Material.AIR),player,true, EquipmentSlot.HAND); + BlockPlaceEvent event = new BlockPlaceEvent(sign.getBlock(), replacedBlockState, placedAgainst, new ItemStack(Material.AIR), player, true, EquipmentSlot.HAND); ChestsPlusPlus.PLUGIN.getServer().getPluginManager().callEvent(event); - if(event.isCancelled()){ + if (event.isCancelled()) { sign.setType(airType); return; } - SignChangeEvent signChangeEvent = new SignChangeEvent(sign.getBlock(),player,lines); + SignChangeEvent signChangeEvent = new SignChangeEvent(sign.getBlock(), player, lines); ChestsPlusPlus.PLUGIN.getServer().getPluginManager().callEvent(signChangeEvent); } else { getMessages().invalidSignPlacement(player); } } - public List getStorageList(Player player, String searchedArg){ + public List getStorageList(Player player, String searchedArg) { return getStorageMap(player.getUniqueId()).values().stream().filter(t -> t.getIdentifier().contains(searchedArg)).map(AbstractStorage::getIdentifier).collect(Collectors.toList()); } - public List getOpenableStorageList(Player player, String searchedArg){ + public List getOpenableStorageList(Player player, String searchedArg) { List playerList = getStorageList(player, searchedArg); - List memberList = getStorageMemberOf(player).stream().filter(t -> t.getIdentifier().contains(searchedArg)).map(storage -> storage.getOwner().getName()+":"+storage.getIdentifier()).collect(Collectors.toList()); + List memberList = getStorageMemberOf(player).stream().filter(t -> t.getIdentifier().contains(searchedArg)).map(storage -> storage.getOwner().getName() + ":" + storage.getIdentifier()).collect(Collectors.toList()); playerList.addAll(memberList); return playerList; } - public List getViewingDistanceStorages(Player player){ + public List getViewingDistanceStorages(Player player) { List list = new ArrayList<>(); getStorageMap(store).values().forEach(map -> map.values().forEach(abstractStorage -> abstractStorage.getLocations().forEach(locationInfo -> { - if(Utils.isLocationInViewDistance(player, locationInfo.getSignLocation())){ + if (Utils.isLocationInViewDistance(player, locationInfo.getSignLocation())) { list.add(locationInfo); } }))); return list; } - public List getLocationsInChunk(Chunk chunk){ + public List getLocationsInChunk(Chunk chunk) { List list = new ArrayList<>(); getStorageMap().values().forEach(map -> map.values().forEach(abstractStorage -> abstractStorage.getLocations().forEach(locationInfo -> { - if(locationInfo.getSignLocation().getChunk().equals(chunk)){ + if (locationInfo.getSignLocation().getChunk().equals(chunk)) { list.add(locationInfo); } }))); @@ -391,7 +397,7 @@ public abstract class StorageType { POST LOAD */ - public void onConfigLoad(){ + public void onConfigLoad() { getMap().values().forEach(stringTHashMap -> stringTHashMap.values().forEach(AbstractStorage::postConfigLoad)); } diff --git a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/storage/autocraft/AutoCraftingStorage.java b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/storage/autocraft/AutoCraftingStorage.java index 43ce5a0..a2f946e 100644 --- a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/storage/autocraft/AutoCraftingStorage.java +++ b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/storage/autocraft/AutoCraftingStorage.java @@ -19,13 +19,13 @@ import org.bukkit.inventory.ShapelessRecipe; import java.util.Map; @SerializableAs("AutoCraftingStorage") -public class AutoCraftingStorage extends AbstractStorage implements ConfigurationSerializable { +public class AutoCraftingStorage extends AbstractStorage implements ConfigurationSerializable { private RecipeSerializable recipeSerializable; private String identifier; private VirtualCraftingHolder virtualCraftingHolder; - public AutoCraftingStorage(Map map){ + public AutoCraftingStorage(Map map) { super(map); } @@ -34,7 +34,7 @@ public class AutoCraftingStorage extends AbstractStorage implements Configuratio return Config.getAutoCraft(); } - public AutoCraftingStorage(OfflinePlayer player, String identifier, Location location, Location signLocation){ + public AutoCraftingStorage(OfflinePlayer player, String identifier, Location location, Location signLocation) { super(player, identifier, location, signLocation); this.identifier = identifier; initInventory(); @@ -42,7 +42,7 @@ public class AutoCraftingStorage extends AbstractStorage implements Configuratio @Override protected void serialize(Map hashMap) { - hashMap.put("recipe",recipeSerializable); + hashMap.put("recipe", recipeSerializable); hashMap.put("identifier", identifier); } @@ -58,8 +58,8 @@ public class AutoCraftingStorage extends AbstractStorage implements Configuratio return false; } - public void setRecipe(Recipe recipe){ - if(recipe == null){ + public void setRecipe(Recipe recipe) { + if (recipe == null) { recipeSerializable = null; return; } @@ -91,10 +91,10 @@ public class AutoCraftingStorage extends AbstractStorage implements Configuratio } @Override - protected Inventory initInventory(){ - if(virtualCraftingHolder == null) virtualCraftingHolder = new VirtualCraftingHolder(this); + protected Inventory initInventory() { + if (virtualCraftingHolder == null) virtualCraftingHolder = new VirtualCraftingHolder(this); - if(recipeSerializable != null) { + if (recipeSerializable != null) { Recipe recipe = recipeSerializable.getRecipe(); if (recipe instanceof ShapelessRecipe) { @@ -125,6 +125,7 @@ public class AutoCraftingStorage extends AbstractStorage implements Configuratio @Override public void postConfigLoad() { super.postConfigLoad(); - if(recipeSerializable != null && recipeSerializable.getRecipe() != null) onItemDisplayUpdate(recipeSerializable.getRecipe().getResult()); + if (recipeSerializable != null && recipeSerializable.getRecipe() != null) + onItemDisplayUpdate(recipeSerializable.getRecipe().getResult()); } } diff --git a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/storage/autocraft/AutoCraftingStorageType.java b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/storage/autocraft/AutoCraftingStorageType.java index e9857e5..277b8ea 100644 --- a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/storage/autocraft/AutoCraftingStorageType.java +++ b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/storage/autocraft/AutoCraftingStorageType.java @@ -63,9 +63,9 @@ public class AutoCraftingStorageType extends StorageType { @Override public void createStorage(Player player, OfflinePlayer owner, Block block, String identifier, boolean requireSign) { - if(isValidBlockType(block)){ + if (isValidBlockType(block)) { BlockFace facing = Utils.getBlockFace(player); - if(facing != null) { + if (facing != null) { createStorageFacing(player, owner, block, identifier, facing, requireSign); } } @@ -73,27 +73,27 @@ public class AutoCraftingStorageType extends StorageType { @Override public void createStorageFacing(Player player, OfflinePlayer owner, Block block, String identifier, BlockFace facing, boolean requireSign) { - if(Utils.isSideFace(facing)) { + if (Utils.isSideFace(facing)) { Block toReplace = block.getRelative(facing); StorageInfo info = getStorageUtils().getStorageInfo(block.getLocation()); - if(info != null){ - Messages.ALREADY_PART_OF_GROUP(player,"Crafting Table"); + if (info != null) { + Messages.ALREADY_PART_OF_GROUP(player, "Crafting Table"); return; } - placeSign(block, toReplace, facing, player, owner, identifier, Values.AutoCraftTag,requireSign); + placeSign(block, toReplace, facing, player, owner, identifier, Values.AutoCraftTag, requireSign); } } @Override public BlockFace onStoragePlacedBlockFace(Player player, Block placed) { - return Utils.getNearestBlockFace(player,placed.getLocation()); + return Utils.getNearestBlockFace(player, placed.getLocation()); } @Override public BlockFace getStorageFacing(Block block) { - for(BlockFace face : blockfaces){ + for (BlockFace face : blockfaces) { Block sign = block.getRelative(face); - if(sign.getState() instanceof Sign) { + if (sign.getState() instanceof Sign) { StorageInfo info = Config.getAutoCraft().getStorageUtils().getStorageInfo((Sign) sign.getState()); if (info != null) return face; } @@ -116,7 +116,7 @@ public class AutoCraftingStorageType extends StorageType { return messages; } - private static AutoCraftMessages messages = new AutoCraftMessages(); + private static final AutoCraftMessages messages = new AutoCraftMessages(); private static class AutoCraftMessages extends StorageMessages { @@ -127,28 +127,28 @@ public class AutoCraftingStorageType extends StorageType { @Override public void invalidID(Player target) { - target.sendMessage(ChatColor.RED+ Message.INVALID_ID.getString(getStorageName())); - target.sendMessage(ChatColor.RED+"/autocraft add :"); + target.sendMessage(ChatColor.RED + Message.INVALID_ID.getString(getStorageName())); + target.sendMessage(ChatColor.RED + "/autocraft add :"); } @Override public void listStorageGroups(Player target) { - target.sendMessage(ChatColor.GREEN+""+ChatColor.BOLD+Message.LIST_OF_AUTOCRAFTERS); - for(AutoCraftingStorage storage : Config.getAutoCraft().getStorageMap(target.getUniqueId()).values()){ - if(storage != null){ - target.sendMessage(ChatColor.GREEN+storage.getIdentifier()+ChatColor.WHITE); + target.sendMessage(ChatColor.GREEN + "" + ChatColor.BOLD + Message.LIST_OF_AUTOCRAFTERS); + for (AutoCraftingStorage storage : Config.getAutoCraft().getStorageMap(target.getUniqueId()).values()) { + if (storage != null) { + target.sendMessage(ChatColor.GREEN + storage.getIdentifier() + ChatColor.WHITE); } } } @Override public void mustLookAtBlock(Player player) { - player.sendMessage(ChatColor.RED+TAG+" "+Message.MUST_LOOK_AT_CRAFTING_TABLE); + player.sendMessage(ChatColor.RED + TAG + " " + Message.MUST_LOOK_AT_CRAFTING_TABLE); } @Override public void invalidSignPlacement(Player player) { - player.sendMessage(ChatColor.GOLD+""+ChatColor.BOLD+TAG+" "+Message.INVALID_AUTOCRAFTER); + player.sendMessage(ChatColor.GOLD + "" + ChatColor.BOLD + TAG + " " + Message.INVALID_AUTOCRAFTER); } } } diff --git a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/storage/chestlink/ChestLinkStorage.java b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/storage/chestlink/ChestLinkStorage.java index 4c71603..132b38f 100644 --- a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/storage/chestlink/ChestLinkStorage.java +++ b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/storage/chestlink/ChestLinkStorage.java @@ -39,17 +39,17 @@ public class ChestLinkStorage extends AbstractStorage implements ConfigurationSe private String inventoryName; private SortMethod sortMethod; - public ChestLinkStorage(Map map){ + public ChestLinkStorage(Map map) { super(map); } - public ChestLinkStorage(OfflinePlayer player, String group, Location location, Location signLocation){ + public ChestLinkStorage(OfflinePlayer player, String group, Location location, Location signLocation) { super(player, group, location, signLocation); this.inventoryName = group; this.sortMethod = SortMethod.OFF; Block block = location.getBlock(); - if(block.getState() instanceof Container) { + if (block.getState() instanceof Container) { Container container = (Container) block.getState(); getInventory().setContents(container.getInventory().getContents()); container.getInventory().clear(); @@ -60,22 +60,22 @@ public class ChestLinkStorage extends AbstractStorage implements ConfigurationSe @Override protected void serialize(Map hashMap) { - hashMap.put("inventoryName",inventoryName); + hashMap.put("inventoryName", inventoryName); hashMap.put("sortMethod", sortMethod.toString()); } @Override protected void deserialize(Map map) { String tempName = (String) map.get("inventoryName"); - if(tempName != null) inventoryName = tempName; + if (tempName != null) inventoryName = tempName; - if(map.containsKey("sortMethod")) sortMethod = Enum.valueOf(SortMethod.class, (String) map.get("sortMethod")); + if (map.containsKey("sortMethod")) sortMethod = Enum.valueOf(SortMethod.class, (String) map.get("sortMethod")); else sortMethod = SortMethod.OFF; init(); } - private void init(){ + private void init() { VirtualChestToHopper chestToHopper = new VirtualChestToHopper(this); chestToHopper.start(); } @@ -91,8 +91,8 @@ public class ChestLinkStorage extends AbstractStorage implements ConfigurationSe } @Override - protected Inventory initInventory(){ - return Bukkit.createInventory(new VirtualInventoryHolder(this), 54,inventoryName); + protected Inventory initInventory() { + return Bukkit.createInventory(new VirtualInventoryHolder(this), 54, inventoryName); } @Override @@ -103,7 +103,7 @@ public class ChestLinkStorage extends AbstractStorage implements ConfigurationSe @Override public void onStorageAdded(Block block, Player player) { //Migrates that chest into InventoryStorage and if full drops it at the chest location. - if(block.getState() instanceof Container) { + if (block.getState() instanceof Container) { Container chest = (Container) block.getState(); boolean hasOverflow = false; for (ItemStack chestItem : chest.getInventory().getContents()) { @@ -121,22 +121,22 @@ public class ChestLinkStorage extends AbstractStorage implements ConfigurationSe } } - public ItemStack getIventoryIcon(Player player){ + public ItemStack getIventoryIcon(Player player) { ItemStack mostCommon = InventorySorter.getMostCommonItem(getInventory()); ItemStack toReturn; - if(mostCommon == null) toReturn = new ItemStack(Material.CHEST); + if (mostCommon == null) toReturn = new ItemStack(Material.CHEST); else toReturn = mostCommon.clone(); ItemMeta meta = toReturn.getItemMeta(); - if(meta != null) { - String dispName = ChatColor.GREEN + "" + getIdentifier() + ": " +ChatColor.WHITE+ ""+getTotalItems()+" items"; - if(player.getUniqueId().equals(getPlayerUUID())) meta.setDisplayName(dispName); - else meta.setDisplayName(getOwner().getName()+": "+dispName); + if (meta != null) { + String dispName = ChatColor.GREEN + "" + getIdentifier() + ": " + ChatColor.WHITE + "" + getTotalItems() + " items"; + if (player.getUniqueId().equals(getPlayerUUID())) meta.setDisplayName(dispName); + else meta.setDisplayName(getOwner().getName() + ": " + dispName); - if(getMembers() != null) { + if (getMembers() != null) { List memberNames = new ArrayList<>(); - if(isPublic()) memberNames.add(ChatColor.WHITE+"Public Chest"); - memberNames.add(ChatColor.BOLD+""+ChatColor.UNDERLINE+"Members:"); + if (isPublic()) memberNames.add(ChatColor.WHITE + "Public Chest"); + memberNames.add(ChatColor.BOLD + "" + ChatColor.UNDERLINE + "Members:"); getMembers().forEach(player1 -> memberNames.add(ChatColor.stripColor(player1.getName()))); meta.setLore(memberNames); } @@ -149,39 +149,39 @@ public class ChestLinkStorage extends AbstractStorage implements ConfigurationSe public ClickableItem getClickableItem(Player player) { return ClickableItem.from(getIventoryIcon(player), event -> { InventoryHolder inventoryHolder = getInventory().getHolder(); - if(inventoryHolder instanceof VirtualInventoryHolder){ + if (inventoryHolder instanceof VirtualInventoryHolder) { ((VirtualInventoryHolder) inventoryHolder).setPreviousInventory(() -> { Bukkit.getScheduler().runTask(ChestsPlusPlus.PLUGIN, () -> ChestLinkMenu.getMenu(player).open(player)); }); } - Utils.openChestInventory(player,getInventory()); + Utils.openChestInventory(player, getInventory()); }); } - public int getTotalItems(){ + public int getTotalItems() { int total = 0; - if(getInventory() != null) { - for(ItemStack itemStack : getInventory().getContents()){ - if(itemStack != null) total += itemStack.getAmount(); + if (getInventory() != null) { + for (ItemStack itemStack : getInventory().getContents()) { + if (itemStack != null) total += itemStack.getAmount(); } } return total; } - public void setSortMethod(SortMethod sortMethod){ + public void setSortMethod(SortMethod sortMethod) { this.sortMethod = sortMethod; } - public SortMethod getSortMethod(){ + public SortMethod getSortMethod() { return sortMethod; } - public void sort(){ + public void sort() { ItemStack[] sortedInventory = InventorySorter.sort(getInventory(), sortMethod); getInventory().setContents(sortedInventory); } - public void updateDisplayItem(){ + public void updateDisplayItem() { onItemDisplayUpdate(InventorySorter.getMostCommonItem(getInventory())); } @@ -208,13 +208,13 @@ public class ChestLinkStorage extends AbstractStorage implements ConfigurationSe @Override public double getBlockOffset(Block block) { - if(block.getState() instanceof Chest) return 0; - //Barrel is full block. + if (block.getState() instanceof Chest) return 0; + //Barrel is full block. else return -0.07; } @Override public String toString() { - return inventoryName+": "+getLocations().toString(); + return inventoryName + ": " + getLocations().toString(); } } diff --git a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/storage/chestlink/ChestLinkStorageType.java b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/storage/chestlink/ChestLinkStorageType.java index e473c93..30e5530 100644 --- a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/storage/chestlink/ChestLinkStorageType.java +++ b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/storage/chestlink/ChestLinkStorageType.java @@ -47,7 +47,7 @@ public class ChestLinkStorageType extends StorageType { @Override public void onSignRemoval(Block block) { - if(block.getState() instanceof Container){ + if (block.getState() instanceof Container) { ((Container) block.getState()).getInventory().clear(); } } @@ -59,30 +59,30 @@ public class ChestLinkStorageType extends StorageType { @Override public void createStorage(Player player, OfflinePlayer owner, Block block, String identifier, boolean requireSign) { - if(block.getState() instanceof Chest) { + if (block.getState() instanceof Chest) { new ChestLinkVerifier(block).withDelay(0).check(); } createStorageForBlock(player, owner, block, identifier, requireSign); } - private void createStorageForBlock(Player player, OfflinePlayer owner, Block block, String identifier, boolean requireSign){ - if(block.getBlockData() instanceof Directional) { + private void createStorageForBlock(Player player, OfflinePlayer owner, Block block, String identifier, boolean requireSign) { + if (block.getBlockData() instanceof Directional) { Directional chest = (Directional) block.getBlockData(); BlockFace facing = chest.getFacing(); Block toReplace = block.getRelative(facing); - placeSign(block,toReplace,facing,player,owner,identifier,Values.ChestLinkTag, requireSign); + placeSign(block, toReplace, facing, player, owner, identifier, Values.ChestLinkTag, requireSign); } } @Override public void createStorageFacing(Player player, OfflinePlayer owner, Block block, String identifier, BlockFace facing, boolean requireSign) { //Chests already get placed facing in the correct direction. - createStorage(player,owner,block,identifier,requireSign); + createStorage(player, owner, block, identifier, requireSign); } @Override public BlockFace onStoragePlacedBlockFace(Player player, Block placed) { - if(placed.getBlockData() instanceof Directional){ + if (placed.getBlockData() instanceof Directional) { return ((Directional) placed.getBlockData()).getFacing(); } return null; @@ -96,7 +96,7 @@ public class ChestLinkStorageType extends StorageType { @Override public BlockFace getStorageFacing(Block block) { - if(block.getBlockData() instanceof Directional) { + if (block.getBlockData() instanceof Directional) { Directional chest = (Directional) block.getBlockData(); return chest.getFacing(); } @@ -110,7 +110,7 @@ public class ChestLinkStorageType extends StorageType { @Override public void validate(Block block) { - if(block.getState() instanceof Chest) new ChestLinkVerifier(block).withDelay(0).check(); + if (block.getState() instanceof Chest) new ChestLinkVerifier(block).withDelay(0).check(); } @Override @@ -118,7 +118,7 @@ public class ChestLinkStorageType extends StorageType { return messages; } - private static ChestLinkMessages messages = new ChestLinkMessages(); + private static final ChestLinkMessages messages = new ChestLinkMessages(); private static class ChestLinkMessages extends StorageMessages { @@ -129,28 +129,28 @@ public class ChestLinkStorageType extends StorageType { @Override public void invalidID(Player target) { - target.sendMessage(ChatColor.RED+ Message.INVALID_ID.getString(getStorageName())); - target.sendMessage(ChatColor.RED+"/chestlink add :"); + target.sendMessage(ChatColor.RED + Message.INVALID_ID.getString(getStorageName())); + target.sendMessage(ChatColor.RED + "/chestlink add :"); } @Override public void listStorageGroups(Player target) { - target.sendMessage(ChatColor.GREEN+""+ChatColor.BOLD+Message.LIST_OF_CHESTLINK); - for(ChestLinkStorage storage : Config.getChestLink().getStorageMap(target.getUniqueId()).values()){ - if(storage != null){ - target.sendMessage(ChatColor.GREEN+storage.getIdentifier()+ChatColor.WHITE+" - "+storage.getTotalItems()+" items"); + target.sendMessage(ChatColor.GREEN + "" + ChatColor.BOLD + Message.LIST_OF_CHESTLINK); + for (ChestLinkStorage storage : Config.getChestLink().getStorageMap(target.getUniqueId()).values()) { + if (storage != null) { + target.sendMessage(ChatColor.GREEN + storage.getIdentifier() + ChatColor.WHITE + " - " + storage.getTotalItems() + " items"); } } } @Override public void mustLookAtBlock(Player player) { - player.sendMessage(ChatColor.RED+TAG+" "+Message.MUST_LOOK_AT_CHEST); + player.sendMessage(ChatColor.RED + TAG + " " + Message.MUST_LOOK_AT_CHEST); } @Override public void invalidSignPlacement(Player player) { - player.sendMessage(ChatColor.GOLD+""+ChatColor.BOLD+TAG+" "+Message.INVALID_CHESTLINK); + player.sendMessage(ChatColor.GOLD + "" + ChatColor.BOLD + TAG + " " + Message.INVALID_CHESTLINK); } } } diff --git a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/versionchecker/UpdateChecker.java b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/versionchecker/UpdateChecker.java index 6607f51..a7c57e4 100644 --- a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/versionchecker/UpdateChecker.java +++ b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/versionchecker/UpdateChecker.java @@ -130,12 +130,11 @@ public final class UpdateChecker { * of UpdateChecker has already been initialized, this method will act similarly to {@link #get()} * (which is recommended after initialization). * - * @param plugin the plugin for which to check updates. Cannot be null - * @param pluginID the ID of the plugin as identified in the SpigotMC resource link. For example, - * "https://www.spigotmc.org/resources/veinminer.12038/" would expect "12038" as a value. The - * value must be greater than 0 + * @param plugin the plugin for which to check updates. Cannot be null + * @param pluginID the ID of the plugin as identified in the SpigotMC resource link. For example, + * "https://www.spigotmc.org/resources/veinminer.12038/" would expect "12038" as a value. The + * value must be greater than 0 * @param versionScheme a custom version scheme parser. Cannot be null - * * @return the UpdateChecker instance */ public static UpdateChecker init(JavaPlugin plugin, int pluginID, VersionScheme versionScheme) { @@ -151,11 +150,10 @@ public final class UpdateChecker { * of UpdateChecker has already been initialized, this method will act similarly to {@link #get()} * (which is recommended after initialization). * - * @param plugin the plugin for which to check updates. Cannot be null + * @param plugin the plugin for which to check updates. Cannot be null * @param pluginID the ID of the plugin as identified in the SpigotMC resource link. For example, - * "https://www.spigotmc.org/resources/veinminer.12038/" would expect "12038" as a value. The - * value must be greater than 0 - * + * "https://www.spigotmc.org/resources/veinminer.12038/" would expect "12038" as a value. The + * value must be greater than 0 * @return the UpdateChecker instance */ public static UpdateChecker init(JavaPlugin plugin, int pluginID) { @@ -188,25 +186,24 @@ public final class UpdateChecker { * A functional interface to compare two version Strings with similar version schemes. */ @FunctionalInterface - public static interface VersionScheme { + public interface VersionScheme { /** * Compare two versions and return the higher of the two. If null is returned, it is assumed * that at least one of the two versions are unsupported by this version scheme parser. * - * @param first the first version to check + * @param first the first version to check * @param second the second version to check - * * @return the greater of the two versions. null if unsupported version schemes */ - public String compareVersions(String first, String second); + String compareVersions(String first, String second); } /** * A constant reason for the result of {@link UpdateResult}. */ - public static enum UpdateReason { + public enum UpdateReason { /** * A new update is available for download on SpigotMC. @@ -248,7 +245,7 @@ public final class UpdateChecker { /** * The plugin is up to date with the version released on SpigotMC's resources section. */ - UP_TO_DATE; + UP_TO_DATE } diff --git a/ChestsPlusPlus_Main/src/main/resources/lang/de_DE.properties b/ChestsPlusPlus_Main/src/main/resources/lang/de_DE.properties index e8086ac..42e902d 100644 --- a/ChestsPlusPlus_Main/src/main/resources/lang/de_DE.properties +++ b/ChestsPlusPlus_Main/src/main/resources/lang/de_DE.properties @@ -4,49 +4,49 @@ # Die Sprachdatei sollte sich anschließend im 'lang'-Ordner befinden # Dann in config.yml würde 'language-file: default' in z.B 'language-file: en_US' umbennannt werden # Um der Entwicklung des plug-ins beizutragen und neue Sprachdateien bereitzustellen kannst du einen pull-request auf https://github.com/JamesPeters98/ChestsPlusPlus erstellen oder unserem Discord-Server beitreten: https://discord.gg/YRs3mP5 -STORAGE_REMOVED = {storage_type} wurde für {player_name} erfolgreich von der Gruppe {storage_group} entfernt -CANNOT_RENAME_GROUP_DOESNT_EXIST = Fehler beim umbenennen der Gruppe\! {storage_identifier} existiert nicht\! -LIST_MEMBERS_OF_GROUP = Mitglieder der {storage_type}-Gruppe {storage_identifier}\: {player_list} -SORT = Sortiermethode für {storage_identifier} wurde zu {sort_method} gesetzt -LIST_OF_CHESTLINK = Liste deiner ChestLinks\: -LIST_OF_AUTOCRAFTERS = Liste deiner AutoCraft-Stationen\: -OWNER_HAS_TOO_MANY_CHESTS = Eigentümer {player_name} hat die Obergrenze der erlaubten Gruppen überschritten\! -MUST_LOOK_AT_CRAFTING_TABLE = Du musst die Werkbank anschauen, mit der du AutoCraft verwenden möchtest\! -CHEST_HAD_OVERFLOW = Nicht alle Gegenstände der Truhe würden in den ChestLink passen\! -GROUP_DOESNT_EXIST = {storage_group} ist keine gültige zu Entfernende {storage_type}-Gruppe\! -INVALID_ID = Ungültige {storage_type} ID\! Darf keinen Doppelpunkt '\:' enthalten, es sei denn, du verweist auf die Gruppe eines anderen Spielers, der du angehörst. -UNABLE_TO_ADD_MEMBER_TO_ALL = Kann Spieler {player_name} nicht zu {storage_type} hinzufügen\! -REMOVED_MEMBER = Spieler {player_name} erfolgreich von {storage_type}-Gruppe {storage_identifier} entfernt -STORAGE_ADDED = {storage_type} erfolgreich zu Gruppe\: {storage_group} für {player_name} hinzugefügt -NO_ADDITIONAL_MEMBERS = Es gibt keine weiteren Mitglieder in dieser Gruppe\: {storage_identifier} -REMOVE_MEMBER_FROM_ALL = Spieler {player_name} erfolgreich von allen {storage_type}-Gruppen entfernt -CURRENT_MEMBERS = Derzeitige Mitglieder\: {player_list} -CANNOT_RENAME_GROUP_ALREADY_EXISTS = Fehler beim umbenennen der Gruppe\! {storage_identifier} existiert bereits\! -ADDED_MEMBER = Spieler {player_name} erfolgreich zur {storage_type}-Gruppe {storage_identifier} hinzugefügt -UNABLE_TO_REMOVE_MEMBER = Kann den Spieler {player_name} nicht von {storage_type} entfernen\! Wurde jener bereits entfernt? -INVALID_AUTOCRAFTER = Ungültiger AutoCrafter - Du musst ein Schild auf irgendeiner Seite der Werkbank platzieren, und sie darf nicht bereits Teil einer anderen Gruppe sein\! -NO_PERMISSION = Du hast keine Erlaubnis, dies zu tun\! -MUST_LOOK_AT_CHEST = Du musst die Kiste anschauen, die du verknüpfen möchtest\! -FOUND_UNLINKED_STORAGE = Dieser {storage_type} wurde nicht mit deinem system verknüpft\! Es wurde zur {storage_identifier} Gruppe hinzugefügt\! -INVALID_CHESTLINK = Ungültiger ChestLink - Du musst ein Schild auf der Vorderseite einer Truhe platzieren / Stelle sicher, dass genug Platz für ein Schild auf der Vorderseite vorhanden ist\! -ADDED_MEMBER_TO_ALL = {player_name} erfolgreich zu allen {storage_type}-Gruppen hinzugefügt -SET_PUBLICITY = Es gibt keine weiteren Spieler in der Gruppe {storage_identifier} -REMOVED_GROUP = Die Gruppe {storage_group} wurde erfolgeich von deinen {storage_type}s entfernt\! -MUST_HOLD_SIGN = Du musst ein Schild in der Hand halten, um dies zu tun -ALREADY_PART_OF_GROUP = Dieser {storage_type} ist bereits Teil einer Gruppe\! -COMMAND_CHESTLINK_LIST = Listet alle ChestLinks auf, die du besitzt -COMMAND_MEMBER = Mitglieder einer Gruppe hinzufügen, entfernen oder auflisten -COMMAND_AUTOCRAFT_LIST = Listet alle dir zu Eigen seienden AutoCraft-Gruppen auf -COMMAND_CHESTLINK_OPEN = Öffnet das Inventar einer ChestLink-Gruppe -COMMAND_AUTOCRAFT_OPEN = Öffnet die Werkbank einer AutoCraft-Gruppe -COMMAND_CHESTLINK_SETPUBLIC = Stellt einen ChestLink so ein, dass jeder darauf zugreifen kann. -COMMAND_CHESTLINK_RENAME = Benennt einen ChestLink um. -COMMAND_CHESTLINK_REMOVE = Löscht einen ChestLink und lässt dessen Inventar vor deine Füße fallen\! -COMMAND_CHESTLINK_MENU = Öffne das ChestLink-Menü, um alle Gruppen anzuzeigen\! -COMMAND_CHESTLINK_SORT = Legt eine Sortiermethode für den vorliegenden ChestLink fest. -COMMAND_AUTOCRAFT_ADD = Erstellen / hinzufügen einer Werkbank zu einer AutoCraft-Gruppe -COMMAND_CHESTLINK_ADD = Erstellen / hinzufügen einer Truhe zu einer ChestLink Gruppe -COMMAND_HELP = Liste aller Befehle und ihrer Verwendung -COMMAND_AUTOCRAFT_RENAME = Umbenennen einer AutoCraft-Gruppe -COMMAND_AUTOCRAFT_REMOVE = Löscht eine AutoCraft-Gruppe und lässt alle Werkbanken fallen -COMMAND_AUTOCRAFT_SETPUBLIC = Stellt eine AutoCraft Gruppe so ein, dass jeder darauf zugreifen kann. \ No newline at end of file +STORAGE_REMOVED={storage_type} wurde für {player_name} erfolgreich von der Gruppe {storage_group} entfernt +CANNOT_RENAME_GROUP_DOESNT_EXIST=Fehler beim umbenennen der Gruppe\! {storage_identifier} existiert nicht\! +LIST_MEMBERS_OF_GROUP=Mitglieder der {storage_type}-Gruppe {storage_identifier}\: {player_list} +SORT=Sortiermethode für {storage_identifier} wurde zu {sort_method} gesetzt +LIST_OF_CHESTLINK=Liste deiner ChestLinks\: +LIST_OF_AUTOCRAFTERS=Liste deiner AutoCraft-Stationen\: +OWNER_HAS_TOO_MANY_CHESTS=Eigentümer {player_name} hat die Obergrenze der erlaubten Gruppen überschritten\! +MUST_LOOK_AT_CRAFTING_TABLE=Du musst die Werkbank anschauen, mit der du AutoCraft verwenden möchtest\! +CHEST_HAD_OVERFLOW=Nicht alle Gegenstände der Truhe würden in den ChestLink passen\! +GROUP_DOESNT_EXIST={storage_group} ist keine gültige zu Entfernende {storage_type}-Gruppe\! +INVALID_ID=Ungültige {storage_type} ID\! Darf keinen Doppelpunkt '\:' enthalten, es sei denn, du verweist auf die Gruppe eines anderen Spielers, der du angehörst. +UNABLE_TO_ADD_MEMBER_TO_ALL=Kann Spieler {player_name} nicht zu {storage_type} hinzufügen\! +REMOVED_MEMBER=Spieler {player_name} erfolgreich von {storage_type}-Gruppe {storage_identifier} entfernt +STORAGE_ADDED={storage_type} erfolgreich zu Gruppe\: {storage_group} für {player_name} hinzugefügt +NO_ADDITIONAL_MEMBERS=Es gibt keine weiteren Mitglieder in dieser Gruppe\: {storage_identifier} +REMOVE_MEMBER_FROM_ALL=Spieler {player_name} erfolgreich von allen {storage_type}-Gruppen entfernt +CURRENT_MEMBERS=Derzeitige Mitglieder\: {player_list} +CANNOT_RENAME_GROUP_ALREADY_EXISTS=Fehler beim umbenennen der Gruppe\! {storage_identifier} existiert bereits\! +ADDED_MEMBER=Spieler {player_name} erfolgreich zur {storage_type}-Gruppe {storage_identifier} hinzugefügt +UNABLE_TO_REMOVE_MEMBER=Kann den Spieler {player_name} nicht von {storage_type} entfernen\! Wurde jener bereits entfernt? +INVALID_AUTOCRAFTER=Ungültiger AutoCrafter - Du musst ein Schild auf irgendeiner Seite der Werkbank platzieren, und sie darf nicht bereits Teil einer anderen Gruppe sein\! +NO_PERMISSION=Du hast keine Erlaubnis, dies zu tun\! +MUST_LOOK_AT_CHEST=Du musst die Kiste anschauen, die du verknüpfen möchtest\! +FOUND_UNLINKED_STORAGE=Dieser {storage_type} wurde nicht mit deinem system verknüpft\! Es wurde zur {storage_identifier} Gruppe hinzugefügt\! +INVALID_CHESTLINK=Ungültiger ChestLink - Du musst ein Schild auf der Vorderseite einer Truhe platzieren / Stelle sicher, dass genug Platz für ein Schild auf der Vorderseite vorhanden ist\! +ADDED_MEMBER_TO_ALL={player_name} erfolgreich zu allen {storage_type}-Gruppen hinzugefügt +SET_PUBLICITY=Es gibt keine weiteren Spieler in der Gruppe {storage_identifier} +REMOVED_GROUP=Die Gruppe {storage_group} wurde erfolgeich von deinen {storage_type}s entfernt\! +MUST_HOLD_SIGN=Du musst ein Schild in der Hand halten, um dies zu tun +ALREADY_PART_OF_GROUP=Dieser {storage_type} ist bereits Teil einer Gruppe\! +COMMAND_CHESTLINK_LIST=Listet alle ChestLinks auf, die du besitzt +COMMAND_MEMBER=Mitglieder einer Gruppe hinzufügen, entfernen oder auflisten +COMMAND_AUTOCRAFT_LIST=Listet alle dir zu Eigen seienden AutoCraft-Gruppen auf +COMMAND_CHESTLINK_OPEN=Öffnet das Inventar einer ChestLink-Gruppe +COMMAND_AUTOCRAFT_OPEN=Öffnet die Werkbank einer AutoCraft-Gruppe +COMMAND_CHESTLINK_SETPUBLIC=Stellt einen ChestLink so ein, dass jeder darauf zugreifen kann. +COMMAND_CHESTLINK_RENAME=Benennt einen ChestLink um. +COMMAND_CHESTLINK_REMOVE=Löscht einen ChestLink und lässt dessen Inventar vor deine Füße fallen\! +COMMAND_CHESTLINK_MENU=Öffne das ChestLink-Menü, um alle Gruppen anzuzeigen\! +COMMAND_CHESTLINK_SORT=Legt eine Sortiermethode für den vorliegenden ChestLink fest. +COMMAND_AUTOCRAFT_ADD=Erstellen / hinzufügen einer Werkbank zu einer AutoCraft-Gruppe +COMMAND_CHESTLINK_ADD=Erstellen / hinzufügen einer Truhe zu einer ChestLink Gruppe +COMMAND_HELP=Liste aller Befehle und ihrer Verwendung +COMMAND_AUTOCRAFT_RENAME=Umbenennen einer AutoCraft-Gruppe +COMMAND_AUTOCRAFT_REMOVE=Löscht eine AutoCraft-Gruppe und lässt alle Werkbanken fallen +COMMAND_AUTOCRAFT_SETPUBLIC=Stellt eine AutoCraft Gruppe so ein, dass jeder darauf zugreifen kann. \ No newline at end of file diff --git a/ChestsPlusPlus_Main/src/main/resources/lang/es_ES.properties b/ChestsPlusPlus_Main/src/main/resources/lang/es_ES.properties index ff554a7..d468a6e 100644 --- a/ChestsPlusPlus_Main/src/main/resources/lang/es_ES.properties +++ b/ChestsPlusPlus_Main/src/main/resources/lang/es_ES.properties @@ -4,49 +4,49 @@ # Debe ser colocado en la carpeta 'lang' # Luego en config.yml 'language-file: default' debe ser renombrado a 'language-file: en_US' # Para ayudar a contribuir al plugin y proveer nuevos archivos de idioma puede crear un "pull-request" en https://github.com/JamesPeters98/ChestsPlusPlus o unete a nuestro servidor de discord https://discord.gg/YRs3mP5 -STORAGE_REMOVED = Eliminado correctamente {storage_type} del grupo\: {storage_group} por {player_name} -CANNOT_RENAME_GROUP_DOESNT_EXIST = ¡Error al renombrar el grupo\! ¡{storage_identifier} no existe\! -LIST_MEMBERS_OF_GROUP = Los miembros de {storage_type} del grupo {storage_identifier}\: {player_list} -SORT = El modo de ordenación para {storage_identifier} se ha cambiado a {sort_method} -LIST_OF_CHESTLINK = Lista de tus ChestLinks\: -LIST_OF_AUTOCRAFTERS = Lista de tus estaciones de AutoCraft -OWNER_HAS_TOO_MANY_CHESTS = ¡El dueño {player_name} ha alcanzado el límite de grupos permitidos\! -MUST_LOOK_AT_CRAFTING_TABLE = ¡Debes estar mirando a una mesa de trabajo para crear un AutoCraft\! -CHEST_HAD_OVERFLOW = ¡Los objetos del cofre podrían no entrar en el ChestLink\! -GROUP_DOESNT_EXIST = ¡{storage_group} no es un grupo válido {storage_type} para eliminar\! -INVALID_ID = ¡ID de {storage_type} no válido\! No puede contener dos puntos '\:' a menos que te refieras a otro grupo de jugadores donde eres miembro -UNABLE_TO_ADD_MEMBER_TO_ALL = ¡No se puede añadir al jugador {player_name} a {storage_type}\! -REMOVED_MEMBER = Se ha eliminado correctamente a {player_name} del grupo {storage_type}\: {storage_identifier} -STORAGE_ADDED = Se ha añadido correctamente {storage_type} al grupo\: {storage_group} por {player_name} -NO_ADDITIONAL_MEMBERS = No hay miembros adicionales en el grupo\: {storage_identifier} -REMOVE_MEMBER_FROM_ALL = Se ha eliminado correctamente a {player_name} de todos los grupos de {storage_type} -CURRENT_MEMBERS = Miembros actuales\: {player_list} -CANNOT_RENAME_GROUP_ALREADY_EXISTS = ¡Error al renombrar el grupo\! ¡{storage_identifier} ya existe\! -ADDED_MEMBER = Se ha añadido correctamente al jugador {player_name} al grupo {storage_type} {storage_identifier} -UNABLE_TO_REMOVE_MEMBER = ¡No se puede eliminar al jugador {player_name} de {storage_type}\! ¿Puede que ya lo hayas eliminado? -INVALID_AUTOCRAFTER = AutoCrafter inválido - ¡Debes colocar un cartel en cualquier lado de la mesa de trabajo, no debe estar separado de un grupo\! -NO_PERMISSION = ¡No tienes permisos para hacer esto\! -MUST_LOOK_AT_CHEST = ¡Debes mirar al cofre que deseas para crear un ChestLink\! -FOUND_UNLINKED_STORAGE = Este {storage_type} no estaba enlazado a tu sistema\! Ha sido agregado al grupo {storage_identifier} -INVALID_CHESTLINK = ChestLink inválido - ¡Debes colocar un cartel al frente del cofre o asegúrate de que hay un espacio frente al cofre\! -ADDED_MEMBER_TO_ALL = Se ha añadido correctamente al jugador {player_name} a todos los grupos de {storage_type} -SET_PUBLICITY = No hay miembros adicionales en el grupo\: {storage_identifier} -REMOVED_GROUP = Se ha eliminado correctamente el grupo {storage_group} de tus {storage_type}\! -MUST_HOLD_SIGN = ¡Debes tener un cartel en la mano para hacer esto\! -ALREADY_PART_OF_GROUP = ¡Este {storage_type} ya es parte de un grupo\! -COMMAND_CHESTLINK_LIST = ¡Lista de todos los ChestLinks que posees\! -COMMAND_MEMBER = Agrega, elimina o muestra una lista de miembros de un grupo. -COMMAND_AUTOCRAFT_LIST = ¡Lista de todos los grupos AutoCraft que posees\! -COMMAND_CHESTLINK_OPEN = Abre el inventario de un grupo de ChestLink. -COMMAND_AUTOCRAFT_OPEN = Abre la mesa de trabajo de un grupo de AutoCraft. -COMMAND_CHESTLINK_SETPUBLIC = Configura un ChestLink para que sea accesible para todos. -COMMAND_CHESTLINK_RENAME = Renombra un ChestLink -COMMAND_CHESTLINK_REMOVE = ¡Elimina un ChestLink y suelta su inventario\! -COMMAND_CHESTLINK_MENU = ¡Abre el menú de ChestLink para mostrar todos los grupos\! -COMMAND_CHESTLINK_SORT = Establece un modo de ordenación para un ChestLink. -COMMAND_AUTOCRAFT_ADD = Crea/agrega una mesa de trabajo a un grupo de AutoCraft -COMMAND_CHESTLINK_ADD = Crea/agrega un cofre a un grupo de ChestLink -COMMAND_HELP = ¡Lista de comandos y sus usos\! -COMMAND_AUTOCRAFT_RENAME = Renombra un grupo de AutoCraft -COMMAND_AUTOCRAFT_REMOVE = Elimina un grupo de AutoCraft y suelta todas las mesas de trabajo\! -COMMAND_AUTOCRAFT_SETPUBLIC = Establece un grupo de AutoCraft para que sea accesibles para todos. \ No newline at end of file +STORAGE_REMOVED=Eliminado correctamente {storage_type} del grupo\: {storage_group} por {player_name} +CANNOT_RENAME_GROUP_DOESNT_EXIST=¡Error al renombrar el grupo\! ¡{storage_identifier} no existe\! +LIST_MEMBERS_OF_GROUP=Los miembros de {storage_type} del grupo {storage_identifier}\: {player_list} +SORT=El modo de ordenación para {storage_identifier} se ha cambiado a {sort_method} +LIST_OF_CHESTLINK=Lista de tus ChestLinks\: +LIST_OF_AUTOCRAFTERS=Lista de tus estaciones de AutoCraft +OWNER_HAS_TOO_MANY_CHESTS=¡El dueño {player_name} ha alcanzado el límite de grupos permitidos\! +MUST_LOOK_AT_CRAFTING_TABLE=¡Debes estar mirando a una mesa de trabajo para crear un AutoCraft\! +CHEST_HAD_OVERFLOW=¡Los objetos del cofre podrían no entrar en el ChestLink\! +GROUP_DOESNT_EXIST=¡{storage_group} no es un grupo válido {storage_type} para eliminar\! +INVALID_ID=¡ID de {storage_type} no válido\! No puede contener dos puntos '\:' a menos que te refieras a otro grupo de jugadores donde eres miembro +UNABLE_TO_ADD_MEMBER_TO_ALL=¡No se puede añadir al jugador {player_name} a {storage_type}\! +REMOVED_MEMBER=Se ha eliminado correctamente a {player_name} del grupo {storage_type}\: {storage_identifier} +STORAGE_ADDED=Se ha añadido correctamente {storage_type} al grupo\: {storage_group} por {player_name} +NO_ADDITIONAL_MEMBERS=No hay miembros adicionales en el grupo\: {storage_identifier} +REMOVE_MEMBER_FROM_ALL=Se ha eliminado correctamente a {player_name} de todos los grupos de {storage_type} +CURRENT_MEMBERS=Miembros actuales\: {player_list} +CANNOT_RENAME_GROUP_ALREADY_EXISTS=¡Error al renombrar el grupo\! ¡{storage_identifier} ya existe\! +ADDED_MEMBER=Se ha añadido correctamente al jugador {player_name} al grupo {storage_type} {storage_identifier} +UNABLE_TO_REMOVE_MEMBER=¡No se puede eliminar al jugador {player_name} de {storage_type}\! ¿Puede que ya lo hayas eliminado? +INVALID_AUTOCRAFTER=AutoCrafter inválido - ¡Debes colocar un cartel en cualquier lado de la mesa de trabajo, no debe estar separado de un grupo\! +NO_PERMISSION=¡No tienes permisos para hacer esto\! +MUST_LOOK_AT_CHEST=¡Debes mirar al cofre que deseas para crear un ChestLink\! +FOUND_UNLINKED_STORAGE=Este {storage_type} no estaba enlazado a tu sistema\! Ha sido agregado al grupo {storage_identifier} +INVALID_CHESTLINK=ChestLink inválido - ¡Debes colocar un cartel al frente del cofre o asegúrate de que hay un espacio frente al cofre\! +ADDED_MEMBER_TO_ALL=Se ha añadido correctamente al jugador {player_name} a todos los grupos de {storage_type} +SET_PUBLICITY=No hay miembros adicionales en el grupo\: {storage_identifier} +REMOVED_GROUP=Se ha eliminado correctamente el grupo {storage_group} de tus {storage_type}\! +MUST_HOLD_SIGN=¡Debes tener un cartel en la mano para hacer esto\! +ALREADY_PART_OF_GROUP=¡Este {storage_type} ya es parte de un grupo\! +COMMAND_CHESTLINK_LIST=¡Lista de todos los ChestLinks que posees\! +COMMAND_MEMBER=Agrega, elimina o muestra una lista de miembros de un grupo. +COMMAND_AUTOCRAFT_LIST=¡Lista de todos los grupos AutoCraft que posees\! +COMMAND_CHESTLINK_OPEN=Abre el inventario de un grupo de ChestLink. +COMMAND_AUTOCRAFT_OPEN=Abre la mesa de trabajo de un grupo de AutoCraft. +COMMAND_CHESTLINK_SETPUBLIC=Configura un ChestLink para que sea accesible para todos. +COMMAND_CHESTLINK_RENAME=Renombra un ChestLink +COMMAND_CHESTLINK_REMOVE=¡Elimina un ChestLink y suelta su inventario\! +COMMAND_CHESTLINK_MENU=¡Abre el menú de ChestLink para mostrar todos los grupos\! +COMMAND_CHESTLINK_SORT=Establece un modo de ordenación para un ChestLink. +COMMAND_AUTOCRAFT_ADD=Crea/agrega una mesa de trabajo a un grupo de AutoCraft +COMMAND_CHESTLINK_ADD=Crea/agrega un cofre a un grupo de ChestLink +COMMAND_HELP=¡Lista de comandos y sus usos\! +COMMAND_AUTOCRAFT_RENAME=Renombra un grupo de AutoCraft +COMMAND_AUTOCRAFT_REMOVE=Elimina un grupo de AutoCraft y suelta todas las mesas de trabajo\! +COMMAND_AUTOCRAFT_SETPUBLIC=Establece un grupo de AutoCraft para que sea accesibles para todos. \ No newline at end of file diff --git a/ChestsPlusPlus_Main/src/main/resources/lang/hu_HU.properties b/ChestsPlusPlus_Main/src/main/resources/lang/hu_HU.properties index 297a790..947126d 100644 --- a/ChestsPlusPlus_Main/src/main/resources/lang/hu_HU.properties +++ b/ChestsPlusPlus_Main/src/main/resources/lang/hu_HU.properties @@ -1,48 +1,48 @@ # Chests++ Magyar - hu_HU # Megjegyzés: Ez a fájl felülíródik minden alkalommal amikor a plugin elindul. Ha módosítani szeretnél a fájl tartalmán csinálj egy másolatot egy másik névvel! -STORAGE_REMOVED = {storage_type} sikeresen eltávolítva a {storage_group} csoportból {player_name} játékosnak. -CANNOT_RENAME_GROUP_DOESNT_EXIST = Hiba az átnevezés közben\!\n{storage_identifier} nem létezik\! -LIST_MEMBERS_OF_GROUP = {storage_type} tipusú {storage_identifier} nevű csoport tagjai\: {player_list} -SORT = Szelektálási forma a {storage_identifier} csoport számára beállítva\: {sort_method} -LIST_OF_CHESTLINK = A ChestLink-eid listája\: -LIST_OF_AUTOCRAFTERS = Az AutoCraft állomásaid listája\: -OWNER_HAS_TOO_MANY_CHESTS = {player_name} elérte a maximális csoportmennyiséget\! -MUST_LOOK_AT_CRAFTING_TABLE = Rá kell nézned arra a barkácsasztalra amiből AutoCraft állomást szeretnél készíteni\! -CHEST_HAD_OVERFLOW = A láda tartalma nem fért bele ebbe a ChestLink-be\! -GROUP_DOESNT_EXIST = {storage_group} nem egy létező {storage_type}. Nem lehet eltávolítani\! -INVALID_ID = Hibás {storage_type} név\! A név nem tartalmazhat kettőspontot(\:)\! -UNABLE_TO_ADD_MEMBER_TO_ALL = Nem lehet hozzáadni {player_name} játékost a következő tipushoz\: {storage_type}\! -REMOVED_MEMBER = {player_name} sikeresen eltávolítva a/az {storage_type} tipusú {storage_identifier} nevű csoportból. -STORAGE_ADDED = {player_name} sikeresen hozzáadva a/az {storage_type} tipusú {storage_group} nevű csoporthoz. -NO_ADDITIONAL_MEMBERS = {storage_identifier} nevű csoportnak nincsenek további tagjai. -REMOVE_MEMBER_FROM_ALL = {player_name} sikeresen eltávolítva minden {storage_type} tipusú csoportból. -CURRENT_MEMBERS = Jelenlegi tagok\: {player_list} -CANNOT_RENAME_GROUP_ALREADY_EXISTS = Hiba a csoport átnevezésekor\! {storage_identifier} nevű csoport már létezik\! -ADDED_MEMBER = {player_name} sikeresen hozzáadva a/az {storage_type} tipusú {storage_identifier} nevű csoporthoz. -UNABLE_TO_REMOVE_MEMBER = {storage_type} tipusú csoportból nem lehet eltávolítani {player_name} játékost\! Már eltávolítottad? -INVALID_AUTOCRAFTER = Nem érvényes AutoCrafter\! A táblát muszáj egy barkácsasztal bármely oldalára tenned és a barkácsasztalon nem lehet másik csoport\! -NO_PERMISSION = Nincs jogod\! -MUST_LOOK_AT_CHEST = Muszáj a ládára nézned hogyha hozzá akarod adni egy ChestLink-hez\! -FOUND_UNLINKED_STORAGE = Ez a {storage_type} tipusú elem nem volt regisztrálva. Regisztrálva lett a {storage_identifier} nevű csoporthoz\! -INVALID_CHESTLINK = Nem érvényes ChestLink\! Muszáj a láda elejére raknod a táblát vagy bizonyosodj meg hogy a láda előtt van hely\! -ADDED_MEMBER_TO_ALL = {player_name} sikeresen hozzáadva az összes {storage_type} tipusú csoporthoz\! -SET_PUBLICITY = Nincs több tagja az adott csoportnak\: {storage_identifier} -REMOVED_GROUP = {storage_type} tipusú {storage_identifier} nevű csoportból sikeresen eltávolítva\! -MUST_HOLD_SIGN = Muszáj a kezedben egy táblát fognod hogy ezt megtehesd\! -ALREADY_PART_OF_GROUP = Ez a {storage_type} tipusú elem már egy csoport tagja\! -COMMAND_CHESTLINK_LIST = Kilistázza az összes ChestLink csoportodat. -COMMAND_MEMBER = Hozzáad, elvesz vagy kilistázza egy csoport tagjait. -COMMAND_AUTOCRAFT_LIST = Kilistázza az összes AutoCraft csoportodat. -COMMAND_CHESTLINK_OPEN = Megnyitja a tartalmát egy ChestLink csoportodnak. -COMMAND_AUTOCRAFT_OPEN = Megnyitja egy AutoCraft barkácsolási menüjét. -COMMAND_CHESTLINK_SETPUBLIC = Mindenki számára elérhetővé teszi a ChestLink csoportodat. -COMMAND_CHESTLINK_RENAME = Átnevezi a ChestLink csoportodat. -COMMAND_CHESTLINK_REMOVE = Kitöröl egy ChestLink csoportot és a tartalmát magad alá dobja. -COMMAND_CHESTLINK_MENU = Megynitja a ChestLink menüt ahol eléred az összes csoportodat. -COMMAND_CHESTLINK_SORT = Beálítja a szelektáló opciót a megadott ChestLink csoportodnak. -COMMAND_AUTOCRAFT_ADD = Létrehoz vagy hozzáad egy AutoCraft tipusú csoportot. -COMMAND_CHESTLINK_ADD = Létrehoz vagy hozzáad egy ChestLink tipusú csoportot. -COMMAND_HELP = A Parancsok és a leírásuk kilistázása. -COMMAND_AUTOCRAFT_RENAME = Átnevez egy AutoCraft csoportot. -COMMAND_AUTOCRAFT_REMOVE = Kitöröl egy AutoCraft csoportot és a lábadhoz dobja a barkácsasztalokat. -COMMAND_AUTOCRAFT_SETPUBLIC = Mindenki számára elérhetővé teszi az AutoCraft csoportodat. \ No newline at end of file +STORAGE_REMOVED={storage_type} sikeresen eltávolítva a {storage_group} csoportból {player_name} játékosnak. +CANNOT_RENAME_GROUP_DOESNT_EXIST=Hiba az átnevezés közben\!\n{storage_identifier} nem létezik\! +LIST_MEMBERS_OF_GROUP={storage_type} tipusú {storage_identifier} nevű csoport tagjai\: {player_list} +SORT=Szelektálási forma a {storage_identifier} csoport számára beállítva\: {sort_method} +LIST_OF_CHESTLINK=A ChestLink-eid listája\: +LIST_OF_AUTOCRAFTERS=Az AutoCraft állomásaid listája\: +OWNER_HAS_TOO_MANY_CHESTS={player_name} elérte a maximális csoportmennyiséget\! +MUST_LOOK_AT_CRAFTING_TABLE=Rá kell nézned arra a barkácsasztalra amiből AutoCraft állomást szeretnél készíteni\! +CHEST_HAD_OVERFLOW=A láda tartalma nem fért bele ebbe a ChestLink-be\! +GROUP_DOESNT_EXIST={storage_group} nem egy létező {storage_type}. Nem lehet eltávolítani\! +INVALID_ID=Hibás {storage_type} név\! A név nem tartalmazhat kettőspontot(\:)\! +UNABLE_TO_ADD_MEMBER_TO_ALL=Nem lehet hozzáadni {player_name} játékost a következő tipushoz\: {storage_type}\! +REMOVED_MEMBER={player_name} sikeresen eltávolítva a/az {storage_type} tipusú {storage_identifier} nevű csoportból. +STORAGE_ADDED={player_name} sikeresen hozzáadva a/az {storage_type} tipusú {storage_group} nevű csoporthoz. +NO_ADDITIONAL_MEMBERS={storage_identifier} nevű csoportnak nincsenek további tagjai. +REMOVE_MEMBER_FROM_ALL={player_name} sikeresen eltávolítva minden {storage_type} tipusú csoportból. +CURRENT_MEMBERS=Jelenlegi tagok\: {player_list} +CANNOT_RENAME_GROUP_ALREADY_EXISTS=Hiba a csoport átnevezésekor\! {storage_identifier} nevű csoport már létezik\! +ADDED_MEMBER={player_name} sikeresen hozzáadva a/az {storage_type} tipusú {storage_identifier} nevű csoporthoz. +UNABLE_TO_REMOVE_MEMBER={storage_type} tipusú csoportból nem lehet eltávolítani {player_name} játékost\! Már eltávolítottad? +INVALID_AUTOCRAFTER=Nem érvényes AutoCrafter\! A táblát muszáj egy barkácsasztal bármely oldalára tenned és a barkácsasztalon nem lehet másik csoport\! +NO_PERMISSION=Nincs jogod\! +MUST_LOOK_AT_CHEST=Muszáj a ládára nézned hogyha hozzá akarod adni egy ChestLink-hez\! +FOUND_UNLINKED_STORAGE=Ez a {storage_type} tipusú elem nem volt regisztrálva. Regisztrálva lett a {storage_identifier} nevű csoporthoz\! +INVALID_CHESTLINK=Nem érvényes ChestLink\! Muszáj a láda elejére raknod a táblát vagy bizonyosodj meg hogy a láda előtt van hely\! +ADDED_MEMBER_TO_ALL={player_name} sikeresen hozzáadva az összes {storage_type} tipusú csoporthoz\! +SET_PUBLICITY=Nincs több tagja az adott csoportnak\: {storage_identifier} +REMOVED_GROUP={storage_type} tipusú {storage_identifier} nevű csoportból sikeresen eltávolítva\! +MUST_HOLD_SIGN=Muszáj a kezedben egy táblát fognod hogy ezt megtehesd\! +ALREADY_PART_OF_GROUP=Ez a {storage_type} tipusú elem már egy csoport tagja\! +COMMAND_CHESTLINK_LIST=Kilistázza az összes ChestLink csoportodat. +COMMAND_MEMBER=Hozzáad, elvesz vagy kilistázza egy csoport tagjait. +COMMAND_AUTOCRAFT_LIST=Kilistázza az összes AutoCraft csoportodat. +COMMAND_CHESTLINK_OPEN=Megnyitja a tartalmát egy ChestLink csoportodnak. +COMMAND_AUTOCRAFT_OPEN=Megnyitja egy AutoCraft barkácsolási menüjét. +COMMAND_CHESTLINK_SETPUBLIC=Mindenki számára elérhetővé teszi a ChestLink csoportodat. +COMMAND_CHESTLINK_RENAME=Átnevezi a ChestLink csoportodat. +COMMAND_CHESTLINK_REMOVE=Kitöröl egy ChestLink csoportot és a tartalmát magad alá dobja. +COMMAND_CHESTLINK_MENU=Megynitja a ChestLink menüt ahol eléred az összes csoportodat. +COMMAND_CHESTLINK_SORT=Beálítja a szelektáló opciót a megadott ChestLink csoportodnak. +COMMAND_AUTOCRAFT_ADD=Létrehoz vagy hozzáad egy AutoCraft tipusú csoportot. +COMMAND_CHESTLINK_ADD=Létrehoz vagy hozzáad egy ChestLink tipusú csoportot. +COMMAND_HELP=A Parancsok és a leírásuk kilistázása. +COMMAND_AUTOCRAFT_RENAME=Átnevez egy AutoCraft csoportot. +COMMAND_AUTOCRAFT_REMOVE=Kitöröl egy AutoCraft csoportot és a lábadhoz dobja a barkácsasztalokat. +COMMAND_AUTOCRAFT_SETPUBLIC=Mindenki számára elérhetővé teszi az AutoCraft csoportodat. \ No newline at end of file diff --git a/ChestsPlusPlus_Main/src/main/resources/lang/nl_NL.properties b/ChestsPlusPlus_Main/src/main/resources/lang/nl_NL.properties index ad7429b..0016b01 100644 --- a/ChestsPlusPlus_Main/src/main/resources/lang/nl_NL.properties +++ b/ChestsPlusPlus_Main/src/main/resources/lang/nl_NL.properties @@ -4,49 +4,49 @@ # Zorg dat dit bestand zich in de 'lang' map bevindt. # In de config.yml wijzigt u de waarde van 'language-file: default' naar 'language-file: nl_NL' # Als u wilt bijdragen aan deze plugin en nieuwe taalbestanden wilt aanbieden can u een pull-request aanmaken op https://github.com/JamesPeters98/ChestsPlusPlus of join onze Discord server https://discord.gg/YRs3mP5 -STORAGE_REMOVED = U hebt succesvol {storage_type} van groep {storage_group} verwijderd voor {player_name}. -CANNOT_RENAME_GROUP_DOESNT_EXIST = Er is iets misgelopen, {storage_identifier} bestaat niet\! -LIST_MEMBERS_OF_GROUP = Leden van {storage_type} uit de groep {storage_identifier}\: {player_list}. -SORT = Sorteermethode voor {storage_identifier} werd gewijzigd naar {sort_method}. -LIST_OF_CHESTLINK = Lijst van jou ChestLinks\: -LIST_OF_AUTOCRAFTERS = Lijst van jou AutoCraft Stations\: -OWNER_HAS_TOO_MANY_CHESTS = Eigenaar {player_name} heeft het limiet voor het aantal groepen bereikt\! -MUST_LOOK_AT_CRAFTING_TABLE = U moet naar de werkbank kijken waarmee u wilt AutoCraften. -CHEST_HAD_OVERFLOW = Kist item's pasten niet in de ChestLink. -GROUP_DOESNT_EXIST = {storage_group} is geen geldige {storage_type} om te verwijderen. -INVALID_ID = Ongeldige {storage_type} ID\! Moet geen dubbelepunt '\:' bevatten tenzij je naar een groep verwijst waar u lid van bent. -UNABLE_TO_ADD_MEMBER_TO_ALL = Kan {player_name} niet aan {storage_type} toevoegen\! -REMOVED_MEMBER = U hebt succesvol {player_name} verwijderd uit de {storage_group} groep {storage_identifier} -STORAGE_ADDED = U hebt succesvol {storage_type} toegevoegd aan de groep {storage_group} voor {player_name}. -NO_ADDITIONAL_MEMBERS = Er zijn geen andere leden in de groep {storage_identifier}. -REMOVE_MEMBER_FROM_ALL = U hebt succesvol {player_name} van alle {storage_type} groepen verwijderd. -CURRENT_MEMBERS = Leden\: {player_list} -CANNOT_RENAME_GROUP_ALREADY_EXISTS = Er is iets misgelopen, {storage_identifier} bestaat al\! -ADDED_MEMBER = U hebt succesvol {player_name} aan {storage_type} groep {storage_identifier} toegevoegd. -UNABLE_TO_REMOVE_MEMBER = Kon speler {player_name} niet verwijderen van {storage_type}, deze speler is mogelijk al verwijderd. -INVALID_AUTOCRAFTER = Ongeldige AutoCrafter - U moet de sign op een zijde van de werkbank plaatsen en de werkbank mag nog niet deel uitmaken van een groep. -NO_PERMISSION = U mag dit commando niet uitvoeren. -MUST_LOOK_AT_CHEST = U moet naar de kist kijken die u wilt ChestLinken. -FOUND_UNLINKED_STORAGE = Deze {storage_type} was nog niet aan jouw systeem gekoppeld, het werd toegevoegd aan de {storage_identifier} groep. -INVALID_CHESTLINK = Ongeldige ChestLink - U moet de sign op de voorkant van de kist plaatsen, zorg dat er genoeg ruimte is voor een sign op de voorkant van een kist. -ADDED_MEMBER_TO_ALL = U hebt succesvol {player_name} toegevoegd aan alle {storage_type} groepen. -SET_PUBLICITY = Er zijn geen andere leden in de groep {storage_identifier}. -REMOVED_GROUP = U hebt succesvol {storage_group} verwijderd van uw {storage_type}'s. -MUST_HOLD_SIGN = U moet een sign in uw hand hebben om dit uit te voeren. -ALREADY_PART_OF_GROUP = Deze {storage_type} is maakt al deel uit van een groep. -COMMAND_CHESTLINK_LIST = Toont alle ChestLinks die jij bezit. -COMMAND_MEMBER = Voeg leden toe aan een groep, verwijder ze of verkrijg een lijst van een groep. -COMMAND_AUTOCRAFT_LIST = Toon een lijst met alle AutoCraft groepen die jij bezit. -COMMAND_CHESTLINK_OPEN = Open de inventory van een ChestLink groep. -COMMAND_AUTOCRAFT_OPEN = Open de werkbank van een AutoCraft groep. -COMMAND_CHESTLINK_SETPUBLIC = Maak een ChestLink toegankelijk voor iedereen. -COMMAND_CHESTLINK_RENAME = Wijzig de naam van een ChestLink. -COMMAND_CHESTLINK_REMOVE = Verwijder een ChestLink en laat de inhoud op de vloer vallen\! -COMMAND_CHESTLINK_MENU = Open het ChestLink menu om alle groepen weer te geven\! -COMMAND_CHESTLINK_SORT = Stel de sorteer optie in voor de opgegeven ChestLink. -COMMAND_AUTOCRAFT_ADD = Creëer een werkbank en voeg hem toe aan een AutoCraft groep. -COMMAND_CHESTLINK_ADD = Creëer een kist en voeg hem toe aan een ChestLink groep. -COMMAND_HELP = Geeft een lijst weer met alle commando's die jij kan gebruiken. -COMMAND_AUTOCRAFT_RENAME = Wijzig de naam van een AutoCraft groep. -COMMAND_AUTOCRAFT_REMOVE = Verwijder een AutoCraft groep en laat alle werkbanken op de vloer vallen\! -COMMAND_AUTOCRAFT_SETPUBLIC = Maak een AutoCraft groep toegankelijk voor iedereen. \ No newline at end of file +STORAGE_REMOVED=U hebt succesvol {storage_type} van groep {storage_group} verwijderd voor {player_name}. +CANNOT_RENAME_GROUP_DOESNT_EXIST=Er is iets misgelopen, {storage_identifier} bestaat niet\! +LIST_MEMBERS_OF_GROUP=Leden van {storage_type} uit de groep {storage_identifier}\: {player_list}. +SORT=Sorteermethode voor {storage_identifier} werd gewijzigd naar {sort_method}. +LIST_OF_CHESTLINK=Lijst van jou ChestLinks\: +LIST_OF_AUTOCRAFTERS=Lijst van jou AutoCraft Stations\: +OWNER_HAS_TOO_MANY_CHESTS=Eigenaar {player_name} heeft het limiet voor het aantal groepen bereikt\! +MUST_LOOK_AT_CRAFTING_TABLE=U moet naar de werkbank kijken waarmee u wilt AutoCraften. +CHEST_HAD_OVERFLOW=Kist item's pasten niet in de ChestLink. +GROUP_DOESNT_EXIST={storage_group} is geen geldige {storage_type} om te verwijderen. +INVALID_ID=Ongeldige {storage_type} ID\! Moet geen dubbelepunt '\:' bevatten tenzij je naar een groep verwijst waar u lid van bent. +UNABLE_TO_ADD_MEMBER_TO_ALL=Kan {player_name} niet aan {storage_type} toevoegen\! +REMOVED_MEMBER=U hebt succesvol {player_name} verwijderd uit de {storage_group} groep {storage_identifier} +STORAGE_ADDED=U hebt succesvol {storage_type} toegevoegd aan de groep {storage_group} voor {player_name}. +NO_ADDITIONAL_MEMBERS=Er zijn geen andere leden in de groep {storage_identifier}. +REMOVE_MEMBER_FROM_ALL=U hebt succesvol {player_name} van alle {storage_type} groepen verwijderd. +CURRENT_MEMBERS=Leden\: {player_list} +CANNOT_RENAME_GROUP_ALREADY_EXISTS=Er is iets misgelopen, {storage_identifier} bestaat al\! +ADDED_MEMBER=U hebt succesvol {player_name} aan {storage_type} groep {storage_identifier} toegevoegd. +UNABLE_TO_REMOVE_MEMBER=Kon speler {player_name} niet verwijderen van {storage_type}, deze speler is mogelijk al verwijderd. +INVALID_AUTOCRAFTER=Ongeldige AutoCrafter - U moet de sign op een zijde van de werkbank plaatsen en de werkbank mag nog niet deel uitmaken van een groep. +NO_PERMISSION=U mag dit commando niet uitvoeren. +MUST_LOOK_AT_CHEST=U moet naar de kist kijken die u wilt ChestLinken. +FOUND_UNLINKED_STORAGE=Deze {storage_type} was nog niet aan jouw systeem gekoppeld, het werd toegevoegd aan de {storage_identifier} groep. +INVALID_CHESTLINK=Ongeldige ChestLink - U moet de sign op de voorkant van de kist plaatsen, zorg dat er genoeg ruimte is voor een sign op de voorkant van een kist. +ADDED_MEMBER_TO_ALL=U hebt succesvol {player_name} toegevoegd aan alle {storage_type} groepen. +SET_PUBLICITY=Er zijn geen andere leden in de groep {storage_identifier}. +REMOVED_GROUP=U hebt succesvol {storage_group} verwijderd van uw {storage_type}'s. +MUST_HOLD_SIGN=U moet een sign in uw hand hebben om dit uit te voeren. +ALREADY_PART_OF_GROUP=Deze {storage_type} is maakt al deel uit van een groep. +COMMAND_CHESTLINK_LIST=Toont alle ChestLinks die jij bezit. +COMMAND_MEMBER=Voeg leden toe aan een groep, verwijder ze of verkrijg een lijst van een groep. +COMMAND_AUTOCRAFT_LIST=Toon een lijst met alle AutoCraft groepen die jij bezit. +COMMAND_CHESTLINK_OPEN=Open de inventory van een ChestLink groep. +COMMAND_AUTOCRAFT_OPEN=Open de werkbank van een AutoCraft groep. +COMMAND_CHESTLINK_SETPUBLIC=Maak een ChestLink toegankelijk voor iedereen. +COMMAND_CHESTLINK_RENAME=Wijzig de naam van een ChestLink. +COMMAND_CHESTLINK_REMOVE=Verwijder een ChestLink en laat de inhoud op de vloer vallen\! +COMMAND_CHESTLINK_MENU=Open het ChestLink menu om alle groepen weer te geven\! +COMMAND_CHESTLINK_SORT=Stel de sorteer optie in voor de opgegeven ChestLink. +COMMAND_AUTOCRAFT_ADD=Creëer een werkbank en voeg hem toe aan een AutoCraft groep. +COMMAND_CHESTLINK_ADD=Creëer een kist en voeg hem toe aan een ChestLink groep. +COMMAND_HELP=Geeft een lijst weer met alle commando's die jij kan gebruiken. +COMMAND_AUTOCRAFT_RENAME=Wijzig de naam van een AutoCraft groep. +COMMAND_AUTOCRAFT_REMOVE=Verwijder een AutoCraft groep en laat alle werkbanken op de vloer vallen\! +COMMAND_AUTOCRAFT_SETPUBLIC=Maak een AutoCraft groep toegankelijk voor iedereen. \ No newline at end of file