Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.minecraftsolutions.blackmatter.listener;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Random;
- import com.massivecraft.factions.entity.Board;
- import com.massivecraft.factions.entity.Faction;
- import org.bukkit.Location;
- import org.bukkit.Material;
- import org.bukkit.block.Block;
- import org.bukkit.entity.Player;
- import org.bukkit.event.EventHandler;
- import org.bukkit.event.Listener;
- import org.bukkit.event.block.BlockBreakEvent;
- import org.bukkit.event.block.BlockPlaceEvent;
- import org.bukkit.event.entity.EntityExplodeEvent;
- import org.bukkit.inventory.ItemStack;
- import org.bukkit.scheduler.BukkitRunnable;
- import com.massivecraft.factions.entity.MPlayer;
- import com.massivecraft.massivecore.ps.PS;
- import com.minecraftsolutions.blackmatter.BlackMatterPlugin;
- import com.minecraftsolutions.blackmatter.manager.ItemManager;
- import com.minecraftsolutions.blackmatter.utils.ConfigManager;
- public class BlackMatterGenerator implements Listener {
- public static List<Location> blocosList = new ArrayList<>();
- public static List<Location> geradoresLocs = new ArrayList<>();
- private final ItemManager itemManager = new ItemManager();
- @EventHandler
- public void place(BlockPlaceEvent event) {
- Player player = event.getPlayer();
- MPlayer mPlayer = MPlayer.get(player);
- Faction factionAt = Board.get(player).getFactionAt(PS.valueOf(event.getBlock().getLocation()));
- if (!player.getItemInHand().isSimilar(itemManager.getTitaniumGenerator(0))) {
- return;
- }
- if (event.isCancelled()) return;
- if (factionAt.isNone() || !factionAt.getTag().equals(mPlayer.getFactionTag())) {
- player.sendMessage(BlackMatterPlugin.getInstance().getConfig().getString("messages.error-put").replace("&", "§"));
- event.setCancelled(true);
- return;
- }
- if (mPlayer.getFaction().isInAttack()) {
- player.sendMessage(BlackMatterPlugin.getInstance().getConfig().getString("messages.error-attack").replace("&", "§"));
- event.setCancelled(true);
- return;
- }
- geradoresLocs.add(event.getBlockPlaced().getLocation());
- gerarTitanio(event.getBlockPlaced().getLocation());
- player.sendMessage(BlackMatterPlugin.getInstance().getConfig().getString("messages.sucess-put").replace("&", "§"));
- }
- @EventHandler
- public void onBreak(BlockBreakEvent event) {
- Player player = event.getPlayer();
- if (event.getBlock().getType() == Material.QUARTZ_ORE && blocosList.contains(event.getBlock().getLocation())) {
- player.giveExp(10 * event.getExpToDrop());
- player.getInventory().addItem(new ItemStack(itemManager.getTitanium(1)));
- event.setCancelled(true);
- event.getBlock().setType(Material.AIR);
- }
- if (ConfigManager.getDataBase().contains("Generator")) {
- List<Location> locs = (List<Location>) ConfigManager.getDataBase().get("Generator");
- if (event.getBlock().getType() == Material.QUARTZ_ORE && geradoresLocs.contains(event.getBlock().getLocation())) {
- event.setCancelled(true);
- }
- if (event.getBlock().getType() == Material.QUARTZ_ORE && locs.contains(event.getBlock().getLocation())) {
- event.setCancelled(true);
- }
- }
- }
- @EventHandler
- public void explode(EntityExplodeEvent event) {
- if (ConfigManager.getDataBase().contains("Generator")) {
- List<Location> locs = (List<Location>) ConfigManager.getDataBase().get("Generator");
- for (Block block : event.blockList()) {
- if (locs.contains(block.getLocation()) || geradoresLocs.contains(block.getLocation())) {
- if (new Random().nextInt(100) + 1 >= 50) {
- block.getWorld().dropItem(block.getLocation(), new ItemStack(itemManager.getTitaniumGenerator(1)));
- }
- if (locs.contains(block.getLocation())) {
- locs.remove(block.getLocation());
- ConfigManager.getDataBase().set("Generator", locs);
- } else {
- geradoresLocs.remove(block.getLocation());
- }
- }
- }
- } else {
- for (Block block : event.blockList()) {
- if (geradoresLocs.contains(block.getLocation())) {
- geradoresLocs.remove(block.getLocation());
- }
- }
- }
- }
- public static void gerarTitanio(Location location) {
- List<Location> locs = (List<Location>) ConfigManager.getDataBase().get("Generator");
- if (location.getBlock().getType() != Material.ENDER_PORTAL_FRAME) {
- geradoresLocs.remove(location);
- return;
- }
- locs.forEach(loc -> {
- if (loc.getBlock().getType() != Material.ENDER_PORTAL_FRAME) {
- locs.remove(loc);
- }
- });
- Location loc1 = new Location(location.getWorld(), location.getX(), location.getY() + 1, location.getZ());
- Location loc2 = new Location(location.getWorld(), location.getX(), location.getY() + 2, location.getZ());
- Location loc3 = new Location(location.getWorld(), location.getX(), location.getY() + 3, location.getZ());
- if (!blocosList.contains(loc1)) {
- blocosList.add(loc1);
- }
- if (!blocosList.contains(loc2)) {
- blocosList.add(loc2);
- }
- if (!blocosList.contains(loc3)) {
- blocosList.add(loc3);
- }
- new BukkitRunnable() {
- @Override
- public void run() {
- if (!geradoresLocs.contains(location)) {
- this.cancel();
- return;
- }
- Location loc1 = new Location(location.getWorld(), location.getX(), location.getY() + 1, location.getZ());
- Location loc2 = new Location(location.getWorld(), location.getX(), location.getY() + 2, location.getZ());
- Location loc3 = new Location(location.getWorld(), location.getX(), location.getY() + 3, location.getZ());
- if (loc1.getBlock().getType() == Material.AIR) {
- loc1.getBlock().setType(Material.QUARTZ_ORE);
- return;
- }
- if (loc2.getBlock().getType() == Material.AIR) {
- loc2.getBlock().setType(Material.QUARTZ_ORE);
- return;
- }
- if (loc3.getBlock().getType() == Material.AIR) {
- loc3.getBlock().setType(Material.QUARTZ_ORE);
- }
- }
- }.runTaskTimer(BlackMatterPlugin.getInstance(), 20L * BlackMatterPlugin.getInstance().getConfig().getInt("generator.time"), 20L * BlackMatterPlugin.getInstance().getConfig().getInt("generator.time"));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement