Advertisement
MinecraftSolutions

Untitled

Apr 15th, 2023
23
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.04 KB | None | 0 0
  1. package com.minecraftsolutions.blackmatter.listener;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.List;
  5. import java.util.Random;
  6.  
  7. import com.massivecraft.factions.entity.Board;
  8. import com.massivecraft.factions.entity.Faction;
  9.  
  10. import org.bukkit.Location;
  11. import org.bukkit.Material;
  12. import org.bukkit.block.Block;
  13. import org.bukkit.entity.Player;
  14. import org.bukkit.event.EventHandler;
  15. import org.bukkit.event.Listener;
  16. import org.bukkit.event.block.BlockBreakEvent;
  17. import org.bukkit.event.block.BlockPlaceEvent;
  18. import org.bukkit.event.entity.EntityExplodeEvent;
  19. import org.bukkit.inventory.ItemStack;
  20. import org.bukkit.scheduler.BukkitRunnable;
  21.  
  22. import com.massivecraft.factions.entity.MPlayer;
  23. import com.massivecraft.massivecore.ps.PS;
  24. import com.minecraftsolutions.blackmatter.BlackMatterPlugin;
  25. import com.minecraftsolutions.blackmatter.manager.ItemManager;
  26. import com.minecraftsolutions.blackmatter.utils.ConfigManager;
  27.  
  28. public class BlackMatterGenerator implements Listener {
  29.  
  30. public static List<Location> blocosList = new ArrayList<>();
  31. public static List<Location> geradoresLocs = new ArrayList<>();
  32. private final ItemManager itemManager = new ItemManager();
  33.  
  34. @EventHandler
  35. public void place(BlockPlaceEvent event) {
  36. Player player = event.getPlayer();
  37. MPlayer mPlayer = MPlayer.get(player);
  38. Faction factionAt = Board.get(player).getFactionAt(PS.valueOf(event.getBlock().getLocation()));
  39.  
  40. if (!player.getItemInHand().isSimilar(itemManager.getTitaniumGenerator(0))) {
  41. return;
  42. }
  43.  
  44. if (event.isCancelled()) return;
  45.  
  46. if (factionAt.isNone() || !factionAt.getTag().equals(mPlayer.getFactionTag())) {
  47. player.sendMessage(BlackMatterPlugin.getInstance().getConfig().getString("messages.error-put").replace("&", "§"));
  48. event.setCancelled(true);
  49. return;
  50. }
  51.  
  52. if (mPlayer.getFaction().isInAttack()) {
  53. player.sendMessage(BlackMatterPlugin.getInstance().getConfig().getString("messages.error-attack").replace("&", "§"));
  54. event.setCancelled(true);
  55. return;
  56. }
  57.  
  58. geradoresLocs.add(event.getBlockPlaced().getLocation());
  59. gerarTitanio(event.getBlockPlaced().getLocation());
  60. player.sendMessage(BlackMatterPlugin.getInstance().getConfig().getString("messages.sucess-put").replace("&", "§"));
  61. }
  62.  
  63. @EventHandler
  64. public void onBreak(BlockBreakEvent event) {
  65. Player player = event.getPlayer();
  66.  
  67. if (event.getBlock().getType() == Material.QUARTZ_ORE && blocosList.contains(event.getBlock().getLocation())) {
  68.  
  69. player.giveExp(10 * event.getExpToDrop());
  70. player.getInventory().addItem(new ItemStack(itemManager.getTitanium(1)));
  71. event.setCancelled(true);
  72. event.getBlock().setType(Material.AIR);
  73. }
  74.  
  75. if (ConfigManager.getDataBase().contains("Generator")) {
  76.  
  77. List<Location> locs = (List<Location>) ConfigManager.getDataBase().get("Generator");
  78.  
  79. if (event.getBlock().getType() == Material.QUARTZ_ORE && geradoresLocs.contains(event.getBlock().getLocation())) {
  80. event.setCancelled(true);
  81. }
  82.  
  83. if (event.getBlock().getType() == Material.QUARTZ_ORE && locs.contains(event.getBlock().getLocation())) {
  84. event.setCancelled(true);
  85. }
  86. }
  87. }
  88.  
  89. @EventHandler
  90. public void explode(EntityExplodeEvent event) {
  91.  
  92. if (ConfigManager.getDataBase().contains("Generator")) {
  93. List<Location> locs = (List<Location>) ConfigManager.getDataBase().get("Generator");
  94.  
  95. for (Block block : event.blockList()) {
  96.  
  97. if (locs.contains(block.getLocation()) || geradoresLocs.contains(block.getLocation())) {
  98.  
  99. if (new Random().nextInt(100) + 1 >= 50) {
  100. block.getWorld().dropItem(block.getLocation(), new ItemStack(itemManager.getTitaniumGenerator(1)));
  101. }
  102.  
  103. if (locs.contains(block.getLocation())) {
  104. locs.remove(block.getLocation());
  105. ConfigManager.getDataBase().set("Generator", locs);
  106. } else {
  107. geradoresLocs.remove(block.getLocation());
  108. }
  109. }
  110. }
  111.  
  112. } else {
  113.  
  114. for (Block block : event.blockList()) {
  115. if (geradoresLocs.contains(block.getLocation())) {
  116. geradoresLocs.remove(block.getLocation());
  117. }
  118.  
  119. }
  120.  
  121. }
  122.  
  123. }
  124.  
  125. public static void gerarTitanio(Location location) {
  126.  
  127. List<Location> locs = (List<Location>) ConfigManager.getDataBase().get("Generator");
  128.  
  129. if (location.getBlock().getType() != Material.ENDER_PORTAL_FRAME) {
  130. geradoresLocs.remove(location);
  131. return;
  132. }
  133.  
  134. locs.forEach(loc -> {
  135. if (loc.getBlock().getType() != Material.ENDER_PORTAL_FRAME) {
  136. locs.remove(loc);
  137. }
  138. });
  139.  
  140. Location loc1 = new Location(location.getWorld(), location.getX(), location.getY() + 1, location.getZ());
  141. Location loc2 = new Location(location.getWorld(), location.getX(), location.getY() + 2, location.getZ());
  142. Location loc3 = new Location(location.getWorld(), location.getX(), location.getY() + 3, location.getZ());
  143.  
  144. if (!blocosList.contains(loc1)) {
  145. blocosList.add(loc1);
  146. }
  147.  
  148. if (!blocosList.contains(loc2)) {
  149. blocosList.add(loc2);
  150. }
  151.  
  152. if (!blocosList.contains(loc3)) {
  153. blocosList.add(loc3);
  154. }
  155.  
  156.  
  157. new BukkitRunnable() {
  158.  
  159. @Override
  160. public void run() {
  161.  
  162. if (!geradoresLocs.contains(location)) {
  163. this.cancel();
  164. return;
  165. }
  166.  
  167. Location loc1 = new Location(location.getWorld(), location.getX(), location.getY() + 1, location.getZ());
  168. Location loc2 = new Location(location.getWorld(), location.getX(), location.getY() + 2, location.getZ());
  169. Location loc3 = new Location(location.getWorld(), location.getX(), location.getY() + 3, location.getZ());
  170.  
  171. if (loc1.getBlock().getType() == Material.AIR) {
  172. loc1.getBlock().setType(Material.QUARTZ_ORE);
  173. return;
  174. }
  175.  
  176. if (loc2.getBlock().getType() == Material.AIR) {
  177. loc2.getBlock().setType(Material.QUARTZ_ORE);
  178. return;
  179. }
  180.  
  181. if (loc3.getBlock().getType() == Material.AIR) {
  182. loc3.getBlock().setType(Material.QUARTZ_ORE);
  183. }
  184.  
  185. }
  186. }.runTaskTimer(BlackMatterPlugin.getInstance(), 20L * BlackMatterPlugin.getInstance().getConfig().getInt("generator.time"), 20L * BlackMatterPlugin.getInstance().getConfig().getInt("generator.time"));
  187.  
  188. }
  189.  
  190. }
  191.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement