Advertisement
Lisenochek

Untitled

Oct 22nd, 2019
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.33 KB | None | 0 0
  1. package ru.lisenochek.mcrust.objects.blockMechanic;
  2.  
  3. import com.google.common.collect.Lists;
  4. import org.bukkit.Bukkit;
  5. import org.bukkit.Location;
  6. import org.bukkit.Material;
  7. import org.bukkit.entity.Player;
  8. import org.bukkit.inventory.Inventory;
  9. import org.bukkit.inventory.ItemStack;
  10. import ru.lisenochek.mcrust.objects.misc.CustomBlock;
  11. import ru.lisenochek.mcrust.sql.SQLManager;
  12. import ru.lisenochek.mcrust.utils.Cuboid;
  13. import ru.lisenochek.mcrust.utils.ISBuilder;
  14. import ru.lisenochek.mcrust.utils.Utils;
  15.  
  16. import java.util.HashMap;
  17. import java.util.Iterator;
  18. import java.util.List;
  19. import java.util.UUID;
  20.  
  21. public class Cupboard {
  22.  
  23. private static HashMap<Location, Cupboard> cupboardsMap = new HashMap<>();
  24. private static HashMap<Location, Cupboard> locationsMap = new HashMap<>();
  25.  
  26. private Location cupboardLocation;
  27. private Cuboid cuboid;
  28. private List<UUID> ownersList;
  29.  
  30. public Cupboard(Location cupboardLocation, UUID... uuiids) {
  31. this.cupboardLocation = cupboardLocation;
  32. this.ownersList = Lists.newArrayList(uuiids);
  33. this.cuboid = new Cuboid(cupboardLocation, 20);
  34. for (Location location : cuboid.getBlocksList()) locationsMap.put(location, this);
  35. cupboardsMap.put(cupboardLocation, this);
  36. }
  37.  
  38. public static Cupboard create(Location cupboardLocation, UUID... uuiids) {
  39. return new Cupboard(cupboardLocation, uuiids);
  40. }
  41.  
  42. public static int getCupboardsSize() {
  43. return cupboardsMap.size();
  44. }
  45.  
  46. public static Cupboard fromCupboard(Location location) {
  47. return cupboardsMap.get(location);
  48. }
  49.  
  50. public static Cupboard fromLocation(Location location) {
  51. return locationsMap.get(location);
  52. }
  53.  
  54. public static boolean checkBreak(Player player, Location location) {
  55. Cupboard cupboard = Cupboard.locationsMap.get(location);
  56. if (cupboard == null) return true;
  57. if (CustomBlock.getBlock(location.getBlock()).getType().isIgnoreBreakCupboard()) return true;
  58. return player.hasPermission("mcrust.admin") || cupboard.getOwnersList().contains(player.getUniqueId());
  59. }
  60.  
  61. public static boolean checkPlace(Player player, Location location) {
  62. Cupboard cupboard = Cupboard.locationsMap.get(location);
  63. if (cupboard == null) return true;
  64. if (CustomBlock.getBlock(location.getBlock()).getType().isIgnoreBuildCupboard()) return true;
  65. return player.hasPermission("mcrust.admin") || cupboard.getOwnersList().contains(player.getUniqueId());
  66. }
  67.  
  68. public Location getCupboardLocation() {
  69. return cupboardLocation;
  70. }
  71.  
  72. public Cuboid getCuboid() {
  73. return cuboid;
  74. }
  75.  
  76. public List<UUID> getOwnersList() {
  77. return ownersList;
  78. }
  79.  
  80. public void remove() {
  81. for (Location location : cuboid.getBlocksList()) Cupboard.locationsMap.remove(location);
  82. Cupboard.cupboardsMap.remove(cupboardLocation);
  83. SQLManager.getManager().deleteCupboardData(this);
  84. }
  85.  
  86. public void openGUI(Player player) {
  87.  
  88. Inventory inventory = Bukkit.createInventory(null, 9, Utils.stripColor("&2&lШкаф"));
  89. StringBuilder builder = new StringBuilder();
  90.  
  91. inventory.setItem(3, !ownersList.contains(player.getUniqueId())
  92. ?
  93. ISBuilder.getBuilder(Material.BOOK, 0, 1, "&a&l» &e&lАвторизоваться в шкафу",
  94. "",
  95. "&aАвторизуйтесь &7в шкафу, чтобы", "&aстроить &7на территории"
  96. ).getStack()
  97. :
  98. ISBuilder.getBuilder(Material.BOOK, 0, 1, "&a&l» &e&lВыписаться из шкафа",
  99. "",
  100. "&aВыпишитесь &7из шкафа, если вы ",
  101. "&7не хотите строить на территории"
  102. ).getStack()
  103. );
  104.  
  105. inventory.setItem(4, ISBuilder.getBuilder(Material.BOOK, 0, 1, "&a&l» &e&lВыписать всех из шкафа",
  106. "",
  107. "&aВыписать &7всех выживших из шкафа"
  108. ).getStack());
  109.  
  110. for (int slot = 0; slot < inventory.getSize(); slot++) {
  111. ItemStack stack = inventory.getItem(slot);
  112. if (stack != null) inventory.setItem(slot, ISBuilder.getBuilder(stack).setTag("location", Utils.serialiseLocation(cupboardLocation)).getStack());
  113. }
  114.  
  115. for (Iterator<UUID> i = ownersList.iterator(); i.hasNext(); ) {
  116. UUID uuid = i.next();
  117. builder.append(Bukkit.getPlayer(uuid) == null ? "&c" + Bukkit.getOfflinePlayer(uuid).getName() : "&a" + Bukkit.getPlayer(uuid).getName()).append("&7").append(i.hasNext() ? ", " : "");
  118. }
  119.  
  120. inventory.setItem(5, ISBuilder.getBuilder(Material.BOOK, 0, 1, "&a&l» &e&lАвторизированные выжившие:", "", ownersList.size() == 0 ? "&cНету &7авторизированных выживших" : builder.toString()).getStack());
  121. for (int emptySlot = 0; emptySlot < inventory.getSize(); emptySlot++) if (inventory.getItem(emptySlot) == null) inventory.setItem(emptySlot, ISBuilder.getBuilder(Material.STAINED_GLASS_PANE, 0, 1, " ").getStack());
  122. player.openInventory(inventory);
  123. }
  124. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement