Advertisement
Guest User

Untitled

a guest
Mar 30th, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.41 KB | None | 0 0
  1. package fr.fac.events;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.Arrays;
  5. import java.util.List;
  6. import java.util.function.Predicate;
  7.  
  8. import org.bukkit.Bukkit;
  9. import org.bukkit.Material;
  10. import org.bukkit.enchantments.Enchantment;
  11. import org.bukkit.entity.Player;
  12. import org.bukkit.event.EventHandler;
  13. import org.bukkit.event.Listener;
  14. import org.bukkit.event.entity.PlayerDeathEvent;
  15. import org.bukkit.event.inventory.ClickType;
  16. import org.bukkit.event.inventory.InventoryClickEvent;
  17. import org.bukkit.event.player.PlayerDropItemEvent;
  18. import org.bukkit.event.player.PlayerJoinEvent;
  19. import org.bukkit.event.player.PlayerMoveEvent;
  20. import org.bukkit.event.player.PlayerQuitEvent;
  21. import org.bukkit.event.player.PlayerRespawnEvent;
  22. import org.bukkit.inventory.ItemFlag;
  23. import org.bukkit.inventory.ItemStack;
  24.  
  25. import fr.fac.commands.ItemBuilder;
  26. import fr.fac.mithologie.Main;
  27. import fr.fac.mithologie.SQLConnection;
  28.  
  29. public class EventsListener implements Listener {
  30. private Main main;
  31. private SQLConnection connection;
  32. private ItemStack stickOne, stickTwo;
  33. private Predicate<ItemStack> ifStat;
  34.  
  35. public EventsListener(Main main) {
  36. this.main = main;
  37. connection = new SQLConnection("jdbc:mysql://127.0.0.1:3306/cooldowns", "root", "");
  38.  
  39. stickTwo = new ItemBuilder().addName("§7 Bâton de défense").addItemFlag(ItemFlag.HIDE_ENCHANTS)
  40. .setMaterial(Material.STICK).addEnchant(Enchantment.DIG_SPEED, 1)
  41. .addLore(Arrays.asList("§9 Bâton défensif utilisé", "§6 Par Per-Ankh(Maison de vie)",
  42. "§9 Peut défendre méme les plus faibles !", "§a Sorts : Protéger, fuir, soigner"))
  43. .toItemStack();
  44. stickOne = new ItemBuilder().addName("§4 Bâton d'attaque !")
  45. .addLore(Arrays.asList("§4 Bâton offensif utilisé par", "§6 Per-Ankh (Maison de vie)",
  46. "§4 Peut s’avérer utile contre un adversaire!", "§a Sorts : Rage, brûler, aveugler, ralentir"))
  47. .addEnchant(Enchantment.ARROW_INFINITE, 1).addItemFlag(ItemFlag.HIDE_ENCHANTS)
  48. .setMaterial(Material.BLAZE_ROD).toItemStack();
  49. ifStat = (x) -> x != null && (compareMetasProperties(x, stickOne) || compareMetasProperties(x, stickTwo));
  50. }
  51.  
  52. @EventHandler
  53. public void onJoin(PlayerJoinEvent e) {
  54.  
  55. e.setJoinMessage("§6[§4+§6]§8 §a" + e.getPlayer().getName());
  56. if (!e.getPlayer().hasPlayedBefore()) {
  57. Bukkit.broadcastMessage("§6 Bienvenue au joueur §4" + e.getPlayer().getName() + " §6 sur le serveur! ");
  58.  
  59. }
  60.  
  61. }
  62.  
  63. @EventHandler
  64. public void onLeft(PlayerQuitEvent e) {
  65. e.setQuitMessage("§6[§4-§6]§8 -> §4" + e.getPlayer().getName());
  66. }
  67.  
  68. @EventHandler
  69. public void whenMoving(PlayerMoveEvent e) {
  70. if (e.getPlayer().getLocation().getBlockY() <= -2)
  71. e.getPlayer().teleport(main.world.getSpawnLocation());
  72.  
  73. }
  74.  
  75. @EventHandler
  76. public void onClick(InventoryClickEvent e) {
  77. if (e.getCurrentItem() != null || e.getCursor() != null) {
  78. if (!e.getInventory().equals(e.getWhoClicked().getInventory())) {
  79. if (e.getClick() == ClickType.NUMBER_KEY) {
  80. if(ifStat.test(e.getWhoClicked().getInventory().getItem(e.getHotbarButton()))){
  81. e.setCancelled(true);
  82. }
  83.  
  84. }
  85. if (ifStat.test(e.getCurrentItem()) || ifStat.test(e.getCursor())) {
  86. e.setCancelled(true);
  87. e.getWhoClicked()
  88. .sendMessage("§cVous n'avez pas le droit de déplacer cet objet dans un autre inventaire !");
  89. }
  90. if (e.getInventory().equals(main.cmdKits.inv)) {
  91. e.setCancelled(true);
  92.  
  93. switch ((e.getCurrentItem() != null) ? e.getCurrentItem().getType()
  94. : (e.getCursor() != null) ? e.getCursor().getType() : e.getCurrentItem().getType()) {
  95. case WOOD_SWORD:
  96. kitsCode(e.getWhoClicked().getName(), 1, connection,
  97. Arrays.asList(new ItemStack(Material.ANVIL)), 24);
  98. break;
  99. case DIAMOND_SWORD:
  100. kitsCode(e.getWhoClicked().getName(), 2, connection,
  101. Arrays.asList(new ItemStack(Material.BAKED_POTATO)), 24);
  102. break;
  103. case IRON_SWORD:
  104. kitsCode(e.getWhoClicked().getName(), 3, connection,
  105. Arrays.asList(new ItemStack(Material.ARROW)), 24);
  106. break;
  107. case COOKED_CHICKEN:
  108. kitsCode(e.getWhoClicked().getName(), 4, connection,
  109. Arrays.asList(new ItemStack(Material.DIAMOND_AXE)), 24);
  110. break;
  111. case STONE_SWORD:
  112. kitsCode(e.getWhoClicked().getName(), 5, connection,
  113. Arrays.asList(new ItemStack(Material.APPLE)), 24);
  114. break;
  115. default:
  116. }
  117. }
  118. }
  119. }
  120. }
  121.  
  122. @EventHandler
  123. public void onRespawn(PlayerRespawnEvent e) {
  124. e.getPlayer().getInventory().setItem(0, stickOne);
  125. e.getPlayer().getInventory().setItem(1, stickTwo);
  126.  
  127. }
  128.  
  129. @EventHandler
  130. public void onDrop(PlayerDropItemEvent e) {
  131. if (ifStat.test(e.getItemDrop().getItemStack())) {
  132. e.setCancelled(true);
  133. e.getPlayer().sendMessage("§4 Vous n'avez pas le droit de jeter cet objet !");
  134. }
  135. }
  136.  
  137. @EventHandler
  138. public void onDeath(PlayerDeathEvent e) {
  139. e.getDrops().removeIf(x -> ifStat.test(x));
  140.  
  141. }
  142.  
  143. /* dez le .isSimilar et le .equals Marchait pas : */
  144. public boolean compareMetasProperties(ItemStack its, ItemStack it) {
  145. boolean bln = false;
  146. if (its.hasItemMeta() && it.hasItemMeta()) {
  147. if (its.getItemMeta().hasDisplayName() && it.getItemMeta().hasDisplayName() && its.getItemMeta().hasLore()
  148. && it.getItemMeta().hasLore() && its.getItemMeta().hasEnchants()
  149. && it.getItemMeta().hasEnchants()) {
  150. if (its.getItemMeta().getDisplayName().equals(it.getItemMeta().getDisplayName())
  151. && its.getItemMeta().getLore().equals(it.getItemMeta().getLore())
  152. && its.getItemMeta().getEnchants().equals(it.getItemMeta().getEnchants())) {
  153. bln = true;
  154. }
  155. }
  156.  
  157. }
  158.  
  159. return bln;
  160.  
  161. }
  162.  
  163. public void kitsCode(String playerName, int indexOfKit, SQLConnection connection, List<ItemStack> givenItems,
  164. int cooldownInHours) {
  165. if (Bukkit.getPlayer(playerName) != null) {
  166. Player player = Bukkit.getPlayer(playerName);
  167. if (!connection.contains(player, indexOfKit)) {
  168. connection.set(player, System.currentTimeMillis() / 1000, indexOfKit);
  169.  
  170. } else {
  171. if (player.hasPermission("bypasskits.perms")) {
  172. connection.set(player, 0, indexOfKit);
  173. }
  174.  
  175. if (System.currentTimeMillis() / 1000 >= connection.get(player, indexOfKit)) {
  176. for(ItemStack item : givenItems){
  177. if(!player.getInventory().addItem(item).isEmpty()){
  178. player.getWorld().dropItem(player.getLocation(), item);
  179.  
  180. }
  181. }
  182.  
  183. player.sendMessage("§aVous avez bien été givé!");
  184.  
  185.  
  186.  
  187. connection.set(player, (long) (System.currentTimeMillis() / 1000 + cooldownInHours * 3600),
  188. indexOfKit);
  189.  
  190. } else
  191. player.sendMessage("§cVous devez encore attendre "
  192. + ((connection.get(player, indexOfKit) / 3600 - System.currentTimeMillis() / 1000 / 3600)
  193. - 1)
  194. + "h, "
  195. + ((connection.get(player, indexOfKit)) - System.currentTimeMillis() / 1000) % 3600 / 60
  196. + "m, " + ((connection.get(player, indexOfKit)) - System.currentTimeMillis() / 1000) % 60
  197. + "s avant de pouvoir reprendre ce kit !");
  198.  
  199. }
  200. }
  201. }
  202. /*
  203. * hour = timestamp stocké/3600 - currentTimeMillis/1000/3600 -1 minutes =
  204. * ((timestamp stocké) - currentTimeMillis / 1000) % 3600 / 60) secondes =
  205. * ((timestamp stocké) - currentTimeMillis / 1000) % 60)
  206. */
  207. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement