More code cleanup
This commit is contained in:
		| @@ -32,28 +32,33 @@ import org.bukkit.plugin.RegisteredServiceProvider; | ||||
| import org.bukkit.plugin.java.JavaPlugin; | ||||
|  | ||||
| public class BooksWithoutBorders extends JavaPlugin { | ||||
|     protected static int dlimit; | ||||
|     protected static int bookDuplicateLimit; | ||||
|     //The separating string between the book title and the book author | ||||
|     protected static String titleAuthorSeparator; | ||||
|     protected static String loreSep; | ||||
|     protected static final String SLASH = System.getProperty("file.separator"); | ||||
|     protected static List<String> firstBooks = new ArrayList<>(); | ||||
|     protected static String fBMessage; | ||||
|     protected static List<String> firstBooks; | ||||
|     protected static String welcomeMessage; | ||||
|     protected static List<String> existingPlayers; | ||||
|     protected static Economy eco; | ||||
|     protected static Material bookPriceType = null; | ||||
|     protected static double bookPriceQuantity; | ||||
|     protected static boolean authorOnlyCopy, useYml, adminDecrypt; | ||||
|     protected static ItemFactory iF; | ||||
|     protected static final Map<String, List<String>> loadList = new HashMap<>(); | ||||
|     protected static Map<String, List<String>> loadList; | ||||
|     protected static BooksWithoutBorders bwb; | ||||
|     protected static final BooksWithoutBordersListener bL = new BooksWithoutBordersListener(); | ||||
|     protected static BooksWithoutBordersListener bL; | ||||
|     protected static ConsoleCommandSender consoleSender; | ||||
|     protected static String bookFolder; | ||||
|  | ||||
|     @Override | ||||
|     public void onEnable() { | ||||
|         bwb = this; | ||||
|         consoleSender = this.getServer().getConsoleSender(); | ||||
|         bookFolder = this.getDataFolder().getAbsolutePath() + SLASH + "Books" + SLASH; | ||||
|         bL = new BooksWithoutBordersListener(); | ||||
|         loadList = new HashMap<>(); | ||||
|         firstBooks = new ArrayList<>(); | ||||
|  | ||||
|         if (SLASH != null && init()) { | ||||
|             this.getServer().getPluginManager().registerEvents(bL, this); | ||||
| @@ -79,11 +84,11 @@ public class BooksWithoutBorders extends JavaPlugin { | ||||
|         } | ||||
|  | ||||
|         this.getConfig().set("Options.Save_Books_in_Yaml_Format", useYml); | ||||
|         this.getConfig().set("Options.Max_Number_of_Duplicates", dlimit); | ||||
|         this.getConfig().set("Options.Max_Number_of_Duplicates", bookDuplicateLimit); | ||||
|         this.getConfig().set("Options.Title-Author_Separator", titleAuthorSeparator); | ||||
|         this.getConfig().set("Options.Lore_line_separator", loreSep); | ||||
|         this.getConfig().set("Options.Books_for_new_players", firstBooks); | ||||
|         this.getConfig().set("Options.Message_for_new_players", fBMessage); | ||||
|         this.getConfig().set("Options.Message_for_new_players", welcomeMessage); | ||||
|         if (bookPriceType != null) { | ||||
|             if (bookPriceType != Material.AIR) | ||||
|                 this.getConfig().set("Options.Price_to_create_book.Item_type", bookPriceType.toString()); | ||||
| @@ -112,8 +117,8 @@ public class BooksWithoutBorders extends JavaPlugin { | ||||
|  | ||||
|         this.saveConfig(); | ||||
|  | ||||
|         File fTest = new File(this.getDataFolder().getAbsolutePath() + SLASH + "Books" + SLASH); | ||||
|         File efTest = new File(this.getDataFolder().getAbsolutePath() + SLASH + "Books" + SLASH + "Encrypted" + SLASH); | ||||
|         File fTest = new File(bookFolder); | ||||
|         File efTest = new File(bookFolder + "Encrypted" + SLASH); | ||||
|  | ||||
|         if (!fTest.exists()) { | ||||
|             try { | ||||
| @@ -145,7 +150,7 @@ public class BooksWithoutBorders extends JavaPlugin { | ||||
|         this.reloadConfig(); | ||||
|         try { | ||||
|             useYml = this.getConfig().getBoolean("Options.Save_Books_in_Yaml_Format", true); | ||||
|             dlimit = this.getConfig().getInt("Options.Max_Number_of_Duplicates", 5); | ||||
|             bookDuplicateLimit = this.getConfig().getInt("Options.Max_Number_of_Duplicates", 5); | ||||
|             titleAuthorSeparator = this.getConfig().getString("Options.Title-Author_Separator", ","); | ||||
|             loreSep = this.getConfig().getString("Options.Lore_line_separator", "~"); | ||||
|             adminDecrypt = this.getConfig().getBoolean("Options.Admin_Auto_Decrypt", false); | ||||
| @@ -157,7 +162,7 @@ public class BooksWithoutBorders extends JavaPlugin { | ||||
|             if (firstBooks.isEmpty()) | ||||
|                 firstBooks.add(" "); | ||||
|  | ||||
|             fBMessage = this.getConfig().getString("Options.Message_for_new_players", " "); | ||||
|             welcomeMessage = this.getConfig().getString("Options.Message_for_new_players", " "); | ||||
|  | ||||
|             //Converts string into material | ||||
|             String sMaterial = this.getConfig().getString("Options.Price_to_create_book.Item_type", " "); | ||||
| @@ -360,7 +365,7 @@ public class BooksWithoutBorders extends JavaPlugin { | ||||
|                 return true; | ||||
|             } | ||||
|  | ||||
|             if (args.length == 0 && !(sender instanceof Player)) { | ||||
|             if (args.length == 0) { | ||||
|                 //lists commands from console | ||||
|                 sender.sendMessage(ChatColor.YELLOW + "Use: /bwb [Command]"); | ||||
|                 sender.sendMessage(ChatColor.YELLOW + "[] denote parameters"); | ||||
| @@ -781,7 +786,7 @@ public class BooksWithoutBorders extends JavaPlugin { | ||||
|                     } | ||||
|  | ||||
|                     if (args.length == 1 && adminDecrypt && sender.hasPermission("bookswithoutborders.admin") && sender instanceof Player) { | ||||
|                         String path = this.getDataFolder().getAbsolutePath() + SLASH + "Books" + SLASH + "Encrypted" + SLASH; | ||||
|                         String path = bookFolder + "Encrypted" + SLASH; | ||||
|                         String fname = (!((BookMeta) ((Player) sender).getItemInHand().getItemMeta()).hasTitle()) ? "Untitled," + sender.getName() : | ||||
|                                 ((BookMeta) ((Player) sender).getItemInHand().getItemMeta()).getTitle() + titleAuthorSeparator + ((BookMeta) ((Player) sender).getItemInHand().getItemMeta()).getAuthor(); | ||||
|                         File eDir = new File(path); | ||||
| @@ -1244,9 +1249,9 @@ public class BooksWithoutBorders extends JavaPlugin { | ||||
|         BookMeta book = (BookMeta) player.getItemInHand().getItemMeta(); | ||||
|         String path; | ||||
|         if (pub) { | ||||
|             path = this.getDataFolder().getAbsolutePath() + SLASH + "Books" + SLASH; | ||||
|             path = bookFolder; | ||||
|         } else { | ||||
|             path = this.getDataFolder().getAbsolutePath() + SLASH + "Books" + SLASH + cleanString(player.getName()) + SLASH; | ||||
|             path = bookFolder + cleanString(player.getName()) + SLASH; | ||||
|         } | ||||
|         String fname; | ||||
|         if (!book.hasTitle()) { | ||||
| @@ -1292,7 +1297,7 @@ public class BooksWithoutBorders extends JavaPlugin { | ||||
|                 return; | ||||
|             } | ||||
|  | ||||
|             if (dupes > dlimit) { | ||||
|             if (dupes > bookDuplicateLimit) { | ||||
|                 player.sendMessage(ChatColor.RED + "Maximum amount of " + fname + " duplicates reached!"); | ||||
|                 player.sendMessage(ChatColor.RED + "Use " + ChatColor.YELLOW + "/bwb Save true " + ChatColor.RED + "to overwrite!"); | ||||
|                 return; | ||||
| @@ -1340,13 +1345,13 @@ public class BooksWithoutBorders extends JavaPlugin { | ||||
|             if (fname.lastIndexOf(".") != -1) { | ||||
|                 if (fname.substring(fname.lastIndexOf(".")).equals(".yml") || fname.substring(fname.lastIndexOf(".")).equals(".txt")) { | ||||
|                     if (dir.equalsIgnoreCase("public")) | ||||
|                         file = new File(this.getDataFolder().getAbsolutePath() + SLASH + "Books" + SLASH + fname); | ||||
|                         file = new File(bookFolder + fname); | ||||
|  | ||||
|                     else if (dir.equalsIgnoreCase("player")) | ||||
|                         file = new File(this.getDataFolder().getAbsolutePath() + SLASH + "Books" + SLASH + cleanString(sender.getName()) + SLASH + fname); | ||||
|                         file = new File(bookFolder + cleanString(sender.getName()) + SLASH + fname); | ||||
|  | ||||
|                     else if (!dir.equalsIgnoreCase("")) | ||||
|                         file = new File(this.getDataFolder().getAbsolutePath() + SLASH + "Books" + SLASH + "Encrypted" + SLASH + dir + SLASH + fname); | ||||
|                         file = new File(bookFolder + "Encrypted" + SLASH + dir + SLASH + fname); | ||||
|  | ||||
|                     else | ||||
|                         file = null; | ||||
| @@ -1360,26 +1365,26 @@ public class BooksWithoutBorders extends JavaPlugin { | ||||
|             } | ||||
|             //No extension present | ||||
|             if (dir.equalsIgnoreCase("public")) | ||||
|                 file = new File(this.getDataFolder().getAbsolutePath() + SLASH + "Books" + SLASH + fname + ".yml"); | ||||
|                 file = new File(bookFolder + fname + ".yml"); | ||||
|  | ||||
|             else if (dir.equalsIgnoreCase("player")) | ||||
|                 file = new File(this.getDataFolder().getAbsolutePath() + SLASH + "Books" + SLASH + cleanString(sender.getName()) + SLASH + fname + ".yml"); | ||||
|                 file = new File(bookFolder + cleanString(sender.getName()) + SLASH + fname + ".yml"); | ||||
|  | ||||
|             else if (!dir.equalsIgnoreCase("")) | ||||
|                 file = new File(this.getDataFolder().getAbsolutePath() + SLASH + "Books" + SLASH + "Encrypted" + SLASH + dir + SLASH + fname + ".yml"); | ||||
|                 file = new File(bookFolder + "Encrypted" + SLASH + dir + SLASH + fname + ".yml"); | ||||
|  | ||||
|             else | ||||
|                 file = null; | ||||
|  | ||||
|             if (!file.isFile()) { | ||||
|                 if (dir.equalsIgnoreCase("public")) | ||||
|                     file = new File(this.getDataFolder().getAbsolutePath() + SLASH + "Books" + SLASH + fname + ".txt"); | ||||
|                     file = new File(bookFolder + fname + ".txt"); | ||||
|  | ||||
|                 else if (dir.equalsIgnoreCase("player")) | ||||
|                     file = new File(this.getDataFolder().getAbsolutePath() + SLASH + "Books" + SLASH + cleanString(sender.getName()) + SLASH + fname + ".txt"); | ||||
|                     file = new File(bookFolder + cleanString(sender.getName()) + SLASH + fname + ".txt"); | ||||
|  | ||||
|                 else if (!dir.equalsIgnoreCase("")) | ||||
|                     file = new File(this.getDataFolder().getAbsolutePath() + SLASH + "Books" + SLASH + "Encrypted" + SLASH + dir + SLASH + fname + ".txt"); | ||||
|                     file = new File(bookFolder + "Encrypted" + SLASH + dir + SLASH + fname + ".txt"); | ||||
|  | ||||
|                 else | ||||
|                     file = null; | ||||
| @@ -1424,7 +1429,7 @@ public class BooksWithoutBorders extends JavaPlugin { | ||||
|     } | ||||
|  | ||||
|     protected Boolean eSave(Player player, BookMeta book, String key) { | ||||
|         String path = this.getDataFolder().getAbsolutePath() + SLASH + "Books" + SLASH + "Encrypted" + SLASH; | ||||
|         String path = bookFolder + "Encrypted" + SLASH; | ||||
|         String fname = (!book.hasTitle()) ? "Untitled," + player.getName() : | ||||
|                 book.getTitle() + titleAuthorSeparator + book.getAuthor(); | ||||
|  | ||||
| @@ -1449,7 +1454,7 @@ public class BooksWithoutBorders extends JavaPlugin { | ||||
|     } | ||||
|  | ||||
|     protected BookMeta groupESave(Player player, BookMeta book, String key, String groupName) { | ||||
|         String path = this.getDataFolder().getAbsolutePath() + SLASH + "Books" + SLASH + "Encrypted" + SLASH + cleanString(groupName) + SLASH; | ||||
|         String path = bookFolder + "Encrypted" + SLASH + cleanString(groupName) + SLASH; | ||||
|         File dirTest = new File(path); | ||||
|         //Creates group dir | ||||
|         if (!dirTest.exists()) { | ||||
| @@ -1493,7 +1498,7 @@ public class BooksWithoutBorders extends JavaPlugin { | ||||
|  | ||||
|     protected ItemStack eLoad(Player player, String key, boolean deleteEncryptedFile) { | ||||
|         BookMeta book = (BookMeta) player.getItemInHand().getItemMeta(); | ||||
|         String path = this.getDataFolder().getAbsolutePath() + SLASH + "Books" + SLASH + "Encrypted" + SLASH; | ||||
|         String path = bookFolder + "Encrypted" + SLASH; | ||||
|  | ||||
|         String fname = (!book.hasTitle()) ? "Untitled," + player.getName() : book.getTitle() + titleAuthorSeparator + book.getAuthor(); | ||||
|         fname = "[" + key + "]" + fname; | ||||
| @@ -1533,9 +1538,9 @@ public class BooksWithoutBorders extends JavaPlugin { | ||||
|     } | ||||
|  | ||||
|     protected List<String> listFiles(CommandSender sender, Boolean pub, int offset, boolean silent) { | ||||
|         List<String> fList = new ArrayList<>(); | ||||
|         File file = (pub) ? new File(this.getDataFolder().getAbsolutePath() + SLASH + "Books" + SLASH) : | ||||
|                 new File(this.getDataFolder().getAbsolutePath() + SLASH + "Books" + SLASH + cleanString(sender.getName()) + SLASH); | ||||
|         List<String> fileList = new ArrayList<>(); | ||||
|         File file = (pub) ? new File(bookFolder) : | ||||
|                 new File(bookFolder + cleanString(sender.getName()) + SLASH); | ||||
|         File[] fl = file.listFiles(); | ||||
|  | ||||
|         if (!file.exists()) { | ||||
| @@ -1552,13 +1557,13 @@ public class BooksWithoutBorders extends JavaPlugin { | ||||
|             sender.sendMessage(ChatColor.GREEN + "Available Books:"); | ||||
|         for (File value : fl) { | ||||
|             if (value.isFile()) { | ||||
|                 fList.add(value.getName()); | ||||
|                 fileList.add(value.getName()); | ||||
|                 if (!silent) | ||||
|                     sender.sendMessage(ChatColor.GRAY + "[" + (fList.size() + offset) + "] " + value.getName()/*.substring(0, fl[x].getName().length()-4)*/); | ||||
|                     sender.sendMessage(ChatColor.GRAY + "[" + (fileList.size() + offset) + "] " + value.getName()/*.substring(0, fl[x].getName().length()-4)*/); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         return fList; | ||||
|         return fileList; | ||||
|     } | ||||
|  | ||||
|     protected List<String> pageFormat(List<String> rawPages) { | ||||
| @@ -1702,8 +1707,8 @@ public class BooksWithoutBorders extends JavaPlugin { | ||||
|             //Extension is already present | ||||
|             if (fname.lastIndexOf(".") != -1) { | ||||
|                 if (fname.substring(fname.lastIndexOf(".")).equals(".yml") || fname.substring(fname.lastIndexOf(".")).equals(".txt")) { | ||||
|                     file = (ispub) ? new File(this.getDataFolder().getAbsolutePath() + SLASH + "Books" + SLASH + fname) : | ||||
|                             new File(this.getDataFolder().getAbsolutePath() + SLASH + "Books" + SLASH + cleanString(sender.getName()) + SLASH + fname); | ||||
|                     file = (ispub) ? new File(bookFolder + fname) : | ||||
|                             new File(bookFolder + cleanString(sender.getName()) + SLASH + fname); | ||||
|  | ||||
|                     if (!file.isFile()) { | ||||
|                         sender.sendMessage(ChatColor.RED + "Incorrect file name!"); | ||||
| @@ -1714,12 +1719,12 @@ public class BooksWithoutBorders extends JavaPlugin { | ||||
|             } | ||||
|  | ||||
|             //No extension present | ||||
|             file = (ispub) ? new File(this.getDataFolder().getAbsolutePath() + SLASH + "Books" + SLASH + fname + ".yml") : | ||||
|                     new File(this.getDataFolder().getAbsolutePath() + SLASH + "Books" + SLASH + cleanString(sender.getName()) + SLASH + fname + ".yml"); | ||||
|             file = (ispub) ? new File(bookFolder + fname + ".yml") : | ||||
|                     new File(bookFolder + cleanString(sender.getName()) + SLASH + fname + ".yml"); | ||||
|  | ||||
|             if (!file.isFile()) { | ||||
|                 file = (ispub) ? new File(this.getDataFolder().getAbsolutePath() + SLASH + "Books" + SLASH + fname + ".txt") : | ||||
|                         new File(this.getDataFolder().getAbsolutePath() + SLASH + "Books" + SLASH + cleanString(sender.getName()) + SLASH + fname + ".txt"); | ||||
|                 file = (ispub) ? new File(bookFolder + fname + ".txt") : | ||||
|                         new File(bookFolder + cleanString(sender.getName()) + SLASH + fname + ".txt"); | ||||
|  | ||||
|                 if (!file.isFile()) { | ||||
|                     sender.sendMessage(ChatColor.RED + "Incorrect file name!"); | ||||
| @@ -1785,8 +1790,10 @@ public class BooksWithoutBorders extends JavaPlugin { | ||||
|     } | ||||
|  | ||||
|     protected boolean isAuthor(Player player, BookMeta book) { | ||||
|         if (cleanString(player.getName()).equalsIgnoreCase(cleanString(book.getAuthor()))) | ||||
|         String author = book.getAuthor(); | ||||
|         if (author != null && cleanString(player.getName()).equalsIgnoreCase(cleanString(author))) { | ||||
|             return true; | ||||
|         } | ||||
|  | ||||
|         player.sendMessage(ChatColor.RED + "You must be the author of this book to use this command!"); | ||||
|         return false; | ||||
|   | ||||
| @@ -28,7 +28,8 @@ import org.bukkit.inventory.meta.ItemMeta; | ||||
| public class BooksWithoutBordersListener implements Listener { | ||||
|  | ||||
|     private final String slash = BooksWithoutBorders.SLASH; | ||||
|     private final String bookFolder = BooksWithoutBorders.bwb.getDataFolder().getAbsolutePath() + slash + "Books" + slash; | ||||
|     private final String bookFolderPath = BooksWithoutBorders.bwb.getDataFolder().getAbsolutePath() + slash + "Books"; | ||||
|     private final String bookFolder = bookFolderPath + slash; | ||||
|  | ||||
|     /** | ||||
|      * Updates old books to a newer format | ||||
| @@ -76,6 +77,10 @@ public class BooksWithoutBordersListener implements Listener { | ||||
|  | ||||
|     @EventHandler | ||||
|     public void onHold(PlayerItemHeldEvent e) { | ||||
|         if (e.isCancelled()) { | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         Player player = e.getPlayer(); | ||||
|         int selectedSlot = e.getNewSlot(); | ||||
|         PlayerInventory playerInventory = player.getInventory(); | ||||
| @@ -97,9 +102,10 @@ public class BooksWithoutBordersListener implements Listener { | ||||
|  | ||||
|     @EventHandler | ||||
|     public void onPlayerJoin(PlayerJoinEvent e) { | ||||
|         Player player = e.getPlayer(); | ||||
|  | ||||
|         //Handle new players | ||||
|         if (!BooksWithoutBorders.bwb.hasPlayedBefore(e.getPlayer().getName())) { | ||||
|             Player player = e.getPlayer(); | ||||
|         if (!BooksWithoutBorders.bwb.hasPlayedBefore(player.getName())) { | ||||
|             boolean sendMessage = true; | ||||
|  | ||||
|             //Gives new players necessary books | ||||
| @@ -109,49 +115,49 @@ public class BooksWithoutBordersListener implements Listener { | ||||
|         } | ||||
|  | ||||
|         //Updates any books in either hand | ||||
|         ItemStack mainHandItem = e.getPlayer().getInventory().getItemInMainHand(); | ||||
|         ItemStack offHandItem = e.getPlayer().getInventory().getItemInOffHand(); | ||||
|         ItemStack mainHandItem = player.getInventory().getItemInMainHand(); | ||||
|         ItemStack offHandItem = player.getInventory().getItemInOffHand(); | ||||
|         if (mainHandItem.getType() == Material.WRITTEN_BOOK) { | ||||
|             ItemMeta itemMetadata = mainHandItem.getItemMeta(); | ||||
|             updateBookInHand(e.getPlayer(), itemMetadata, true); | ||||
|             updateBookInHand(player, itemMetadata, true); | ||||
|         } | ||||
|         if (offHandItem.getType() == Material.WRITTEN_BOOK) { | ||||
|             ItemMeta itemMetadata = offHandItem.getItemMeta(); | ||||
|             updateBookInHand(e.getPlayer(), itemMetadata, false); | ||||
|             updateBookInHand(player, itemMetadata, false); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Gives a book to a player joining for the first time | ||||
|      * @param bookName <p>The name of the book to give</p> | ||||
|      * @param player <p>The player which just joined</p> | ||||
|      * | ||||
|      * @param bookName    <p>The name of the book to give</p> | ||||
|      * @param player      <p>The player which just joined</p> | ||||
|      * @param sendMessage <p>Whether to send a message to the joining player</p> | ||||
|      * @return <p>True if a message has yet to be sent</p> | ||||
|      */ | ||||
|     private boolean giveBookToNewPlayer(String bookName, Player player, boolean sendMessage) { | ||||
|         if (!bookName.trim().isEmpty()) { | ||||
|  | ||||
|         if (!bookName.equalsIgnoreCase(" ")) { | ||||
|             //handles loadlist numbers | ||||
|             for (int x = 0; x < bookName.length(); x++) { | ||||
|                 if (!Character.isDigit(bookName.charAt(x))) { | ||||
|                     break; | ||||
|                 } | ||||
|                 if (x == bookName.length() - 1) { | ||||
|                     BooksWithoutBorders.loadList.put(player.getName(), BooksWithoutBorders.bwb.listFiles(player, true, 0, true)); | ||||
|                 } | ||||
|             //Handles loadList numbers | ||||
|             try { | ||||
|                 Integer.parseInt(bookName); | ||||
|                 //Load public books for the player | ||||
|                 List<String> availableFiles = BooksWithoutBorders.bwb.listFiles(player, true, 0, true); | ||||
|                 BooksWithoutBorders.loadList.put(player.getName(), availableFiles); | ||||
|             } catch (NumberFormatException ignored) { | ||||
|             } | ||||
|  | ||||
|  | ||||
|             //Give the book to the player if it exists | ||||
|             ItemStack newBook = BooksWithoutBorders.bwb.loadBook(player, bookName, "true", "public"); | ||||
|             if (newBook != null) { | ||||
|                 player.getInventory().addItem(newBook); | ||||
|             } | ||||
|  | ||||
|             if (!BooksWithoutBorders.fBMessage.equalsIgnoreCase(" ") && newBook != null && sendMessage) { | ||||
|             //Send the player a welcome message if it exists | ||||
|             if (!BooksWithoutBorders.welcomeMessage.trim().isEmpty() && newBook != null && sendMessage) { | ||||
|                 sendMessage = false; | ||||
|                 final Player fp = player; | ||||
|                 BooksWithoutBorders.bwb.getServer().getScheduler().scheduleSyncDelayedTask(BooksWithoutBorders.bwb, | ||||
|                         () -> fp.sendMessage(BooksWithoutBorders.fBMessage), 40L); | ||||
|                         () -> player.sendMessage(BooksWithoutBorders.welcomeMessage), 40L); | ||||
|             } | ||||
|         } | ||||
|         return sendMessage; | ||||
| @@ -178,89 +184,107 @@ public class BooksWithoutBordersListener implements Listener { | ||||
|  | ||||
|     @EventHandler | ||||
|     public void onSignChange(SignChangeEvent e) { | ||||
|         if (e.getLine(0).equalsIgnoreCase("[BwB]") && e.getPlayer().hasPermission("bookswithoutborders.signs")) { | ||||
|             e.setLine(0, ChatColor.DARK_GREEN + "[BwB]"); | ||||
|         if (e.isCancelled()) { | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|             if ((e.getLine(1).equalsIgnoreCase("[Encrypt]") || e.getLine(1).equalsIgnoreCase("[Decrypt]") || e.getLine(1).equalsIgnoreCase("[Give]")) && e.getLine(2).replace(" ", "").length() > 0) { | ||||
|                 e.setLine(1, ChatColor.DARK_BLUE + e.getLine(1)); | ||||
|                 if (e.getLine(1).equalsIgnoreCase(ChatColor.DARK_BLUE + "[Encrypt]") || e.getLine(1).equalsIgnoreCase(ChatColor.DARK_BLUE + "[Decrypt]")) { | ||||
|                     e.setLine(2, ChatColor.MAGIC + e.getLine(2)); | ||||
|                     e.setLine(3, ChatColor.DARK_BLUE + e.getLine(3)); | ||||
|         String[] lines = e.getLines(); | ||||
|         Player player = e.getPlayer(); | ||||
|  | ||||
|         //Check if creating a Books Without Borders Sign and if the player has permission | ||||
|         if (!lines[0].equalsIgnoreCase("[BwB]") || !player.hasPermission("bookswithoutborders.signs")) { | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         //Mark the sign as active | ||||
|         e.setLine(0, ChatColor.DARK_GREEN + "[BwB]"); | ||||
|  | ||||
|         if ((lines[1].equalsIgnoreCase("[Encrypt]") || lines[1].equalsIgnoreCase("[Decrypt]") || | ||||
|                 lines[1].equalsIgnoreCase("[Give]")) && lines[2].trim().length() > 0) { | ||||
|  | ||||
|             //Mark the second line as valid | ||||
|             e.setLine(1, ChatColor.DARK_BLUE + lines[1]); | ||||
|  | ||||
|             //Mark valid encryption/decryption sign | ||||
|             if (lines[1].equalsIgnoreCase(ChatColor.DARK_BLUE + "[Encrypt]") || | ||||
|                     lines[1].equalsIgnoreCase(ChatColor.DARK_BLUE + "[Decrypt]")) { | ||||
|                 e.setLine(2, ChatColor.MAGIC + lines[2]); | ||||
|                 e.setLine(3, ChatColor.DARK_BLUE + lines[3]); | ||||
|             } | ||||
|  | ||||
|             //Generate book giving sign | ||||
|             if (lines[1].equalsIgnoreCase(ChatColor.DARK_BLUE + "[Give]")) { | ||||
|                 if (lines[2].length() > 13 || lines[3].length() > 13) { | ||||
|                     player.sendMessage(ChatColor.RED + "[Give] signs' 3rd and 4th lines must be 13 characters or less!"); | ||||
|                     e.setLine(2, ChatColor.DARK_RED + lines[2]); | ||||
|                     e.setLine(3, ChatColor.DARK_RED + lines[3]); | ||||
|                     return; | ||||
|                 } | ||||
|  | ||||
|                 if (e.getLine(1).equalsIgnoreCase(ChatColor.DARK_BLUE + "[Give]")) { | ||||
|                     if (e.getLine(2).length() > 13 || e.getLine(3).length() > 13) { | ||||
|                         e.getPlayer().sendMessage(ChatColor.RED + "[Give] signs' 3rd and 4th lines must be 13 characters or less!"); | ||||
|                         e.setLine(2, ChatColor.DARK_RED + e.getLine(2)); | ||||
|                         e.setLine(3, ChatColor.DARK_RED + e.getLine(3)); | ||||
|                         return; | ||||
|                     } | ||||
|  | ||||
|                     //Tests if a full file name has been supplied | ||||
|                     if ((new File(BooksWithoutBorders.bwb.getDataFolder().getAbsolutePath() + BooksWithoutBorders.SLASH + "Books" + BooksWithoutBorders.SLASH + e.getLine(2) + e.getLine(3)).isFile()) || | ||||
|                             (new File(BooksWithoutBorders.bwb.getDataFolder().getAbsolutePath() + BooksWithoutBorders.SLASH + "Books" + BooksWithoutBorders.SLASH + e.getLine(2) + e.getLine(3) + ".txt").isFile()) || | ||||
|                             (new File(BooksWithoutBorders.bwb.getDataFolder().getAbsolutePath() + BooksWithoutBorders.SLASH + "Books" + BooksWithoutBorders.SLASH + e.getLine(2) + e.getLine(3) + ".yml").isFile())) { | ||||
|                         e.setLine(2, ChatColor.DARK_GREEN + e.getLine(2)); | ||||
|                         e.setLine(3, ChatColor.DARK_GREEN + e.getLine(3)); | ||||
|                     } | ||||
|  | ||||
|                 //Tests if a full file name has been supplied | ||||
|                 if ((new File(bookFolder + lines[2] + lines[3]).isFile()) || | ||||
|                         (new File(bookFolder + lines[2] + lines[3] + ".txt").isFile()) || | ||||
|                         (new File(bookFolder + lines[2] + lines[3] + ".yml").isFile())) { | ||||
|                     e.setLine(2, ChatColor.DARK_GREEN + lines[2]); | ||||
|                     e.setLine(3, ChatColor.DARK_GREEN + lines[3]); | ||||
|                 } else { | ||||
|                     //Tests if a load list number has been supplied | ||||
|                     else { | ||||
|                         File dirFile = new File(BooksWithoutBorders.bwb.getDataFolder().getAbsolutePath() + BooksWithoutBorders.SLASH + "Books"); | ||||
|                         for (int x = 0; x < e.getLine(2).length(); x++) { | ||||
|                             if (!Character.isDigit(e.getLine(2).charAt(x))) { | ||||
|                                 e.setLine(2, ChatColor.DARK_RED + e.getLine(2)); | ||||
|                                 e.setLine(3, ChatColor.DARK_RED + e.getLine(3)); | ||||
|                                 break; | ||||
|                     File dirFile = new File(bookFolderPath); | ||||
|                     for (int x = 0; x < lines[2].length(); x++) { | ||||
|                         if (!Character.isDigit(lines[2].charAt(x))) { | ||||
|                             e.setLine(2, ChatColor.DARK_RED + lines[2]); | ||||
|                             e.setLine(3, ChatColor.DARK_RED + lines[3]); | ||||
|                             break; | ||||
|                         } | ||||
|                         if (x == lines[2].length() - 1) { | ||||
|                             List<String> fList = new ArrayList<>(); | ||||
|                             for (int y = 0; y < dirFile.list().length; y++) { | ||||
|                                 if (dirFile.listFiles()[y].isFile()) { | ||||
|                                     fList.add(dirFile.listFiles()[y].getName()); | ||||
|                                 } | ||||
|                             } | ||||
|                             if (x == e.getLine(2).length() - 1) { | ||||
|                                 List<String> fList = new ArrayList<>(); | ||||
|                                 for (int y = 0; y < dirFile.list().length; y++) { | ||||
|                                     if (dirFile.listFiles()[y].isFile()) { | ||||
|                                         fList.add(dirFile.listFiles()[y].getName()); | ||||
|                                     } | ||||
|                                 } | ||||
|  | ||||
|                                 try { | ||||
|                                     if (Integer.parseInt(e.getLine(2)) >= 0 && Integer.parseInt(e.getLine(2)) <= fList.size()) { | ||||
|                                         BooksWithoutBorders.loadList.put(e.getPlayer().getName(), BooksWithoutBorders.bwb.listFiles(e.getPlayer(), true, 0, true)); | ||||
|                                         e.setLine(2, ChatColor.DARK_GREEN + e.getLine(2)); | ||||
|                                         e.setLine(3, ChatColor.DARK_GREEN + e.getLine(3)); | ||||
|                                     } else { | ||||
|                                         e.setLine(2, ChatColor.DARK_RED + e.getLine(2)); | ||||
|                                         e.setLine(3, ChatColor.DARK_RED + e.getLine(3)); | ||||
|                                     } | ||||
|                                 } catch (NumberFormatException ignored) { | ||||
|                             try { | ||||
|                                 if (Integer.parseInt(lines[2]) >= 0 && Integer.parseInt(lines[2]) <= fList.size()) { | ||||
|                                     BooksWithoutBorders.loadList.put(player.getName(), BooksWithoutBorders.bwb.listFiles(player, true, 0, true)); | ||||
|                                     e.setLine(2, ChatColor.DARK_GREEN + lines[2]); | ||||
|                                     e.setLine(3, ChatColor.DARK_GREEN + lines[3]); | ||||
|                                 } else { | ||||
|                                     e.setLine(2, ChatColor.DARK_RED + lines[2]); | ||||
|                                     e.setLine(3, ChatColor.DARK_RED + lines[3]); | ||||
|                                 } | ||||
|                             } catch (NumberFormatException ignored) { | ||||
|                             } | ||||
|                         } | ||||
|                     } | ||||
|                 } | ||||
|             } else { | ||||
|                 e.setLine(1, ChatColor.DARK_RED + e.getLine(1)); | ||||
|             } | ||||
|         } else { | ||||
|             //Mark the second line as invalid | ||||
|             e.setLine(1, ChatColor.DARK_RED + lines[1]); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @EventHandler | ||||
|     public void onClick(PlayerInteractEvent e) { | ||||
|         if (e.getClickedBlock() == null) { | ||||
|     public void onClick(PlayerInteractEvent event) { | ||||
|         if (event.getClickedBlock() == null) { | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         Material clickedBlockType = e.getClickedBlock().getType(); | ||||
|         Player player = e.getPlayer(); | ||||
|         Material clickedBlockType = event.getClickedBlock().getType(); | ||||
|         Player player = event.getPlayer(); | ||||
|         PlayerInventory playerInventory = player.getInventory(); | ||||
|         EquipmentSlot hand = e.getHand(); | ||||
|         EquipmentSlot hand = event.getHand(); | ||||
|         if (hand == null) { | ||||
|             return; | ||||
|         } | ||||
|         ItemStack heldItem = playerInventory.getItem(hand); | ||||
|         Material heldItemType = heldItem.getType(); | ||||
|  | ||||
|         if (e.getAction() == Action.RIGHT_CLICK_BLOCK && (Tag.SIGNS.isTagged(clickedBlockType) || Tag.WALL_SIGNS.isTagged(clickedBlockType))) { | ||||
|         if (event.getAction() == Action.RIGHT_CLICK_BLOCK && (Tag.SIGNS.isTagged(clickedBlockType) || | ||||
|                 Tag.WALL_SIGNS.isTagged(clickedBlockType))) { | ||||
|             //The player right-clicked a sign | ||||
|             Sign sign = (Sign) e.getClickedBlock().getState(); | ||||
|             Sign sign = (Sign) event.getClickedBlock().getState(); | ||||
|             if (signLineEquals(sign, 0, "[BooksWithoutBorders]", ChatColor.DARK_GREEN)) { | ||||
|  | ||||
|                 if (signLineEquals(sign, 1, "[Encrypt]", ChatColor.DARK_BLUE)) { | ||||
| @@ -272,8 +296,8 @@ public class BooksWithoutBordersListener implements Listener { | ||||
|                     giveBook(sign, player); | ||||
|                 } | ||||
|             } | ||||
|         } else if (heldItemType == Material.WRITTEN_BOOK && (e.getAction() == Action.LEFT_CLICK_AIR | ||||
|                 || e.getAction() == Action.LEFT_CLICK_BLOCK)) { | ||||
|         } else if (heldItemType == Material.WRITTEN_BOOK && (event.getAction() == Action.LEFT_CLICK_AIR | ||||
|                 || event.getAction() == Action.LEFT_CLICK_BLOCK)) { | ||||
|             BookMeta oldBook = (BookMeta) heldItem.getItemMeta(); | ||||
|             if (oldBook == null) { | ||||
|                 return; | ||||
| @@ -335,9 +359,10 @@ public class BooksWithoutBordersListener implements Listener { | ||||
|      */ | ||||
|     private void encryptHeldBookUsingSign(Sign sign, Material heldItemType, Player player, EquipmentSlot hand) { | ||||
|         ItemStack eBook; | ||||
|         String[] lines = sign.getLines(); | ||||
|         if (heldItemType == Material.WRITTEN_BOOK) { | ||||
|             player.closeInventory(); | ||||
|             eBook = BooksWithoutBorders.bwb.bookEncryption(player, sign.getLine(2).substring(2), sign.getLine(3).substring(2), ""); | ||||
|             eBook = BooksWithoutBorders.bwb.bookEncryption(player, lines[2].substring(2), lines[3].substring(2), ""); | ||||
|             if (eBook != null) { | ||||
|                 player.getInventory().setItem(hand, eBook); | ||||
|             } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user