Untitled
unknown
java
3 years ago
42 kB
3
Indexable
CoinflipManager PlayerConfig pc = PlayerConfig.playerConfigCache.get(p1.getName()); pc.coinflipswon ++; if (pc.coinflipswon == 100) { if (!pc.hasAchievement(Achievement.COINFLIP)) { pc.addAchievement(Achievement.COINFLIP); } pc.addAchievement(Achievement.COINFLIP); } Playermine package de.iraphi.rax.mines; import com.boydti.fawe.FaweAPI; import com.boydti.fawe.object.schematic.Schematic; import com.gmail.filoghost.holographicdisplays.api.HologramsAPI; import com.gmail.filoghost.holographicdisplays.api.line.TextLine; import com.sk89q.worldedit.Vector; import com.sk89q.worldedit.bukkit.BukkitWorld; import de.iraphi.rax.Main; import de.iraphi.rax.actionbar.Actionbar; import de.iraphi.rax.brave.manager.LocationManager; import de.iraphi.rax.configmanager.ConfigManager; import de.iraphi.rax.confirmmenu.ConfirmMenu; import de.iraphi.rax.crate.CrateManager; import de.iraphi.rax.fakemobs.util.FakeMob; import de.iraphi.rax.itembuilder.ItemBuilder; import de.iraphi.rax.itemcreator.ItemCreator; import de.iraphi.rax.locationutil.LocationUtil; import de.iraphi.rax.menubuilder.inventory.InventoryMenuBuilder; import de.iraphi.rax.menubuilder.inventory.ItemListener; import de.iraphi.rax.playerconfig.PlayerConfig; import de.iraphi.rax.settings.S; import de.iraphi.rax.shop.Shop; import de.iraphi.rax.timeutil.TimeUtil; import org.bukkit.*; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import org.bukkit.scheduler.BukkitRunnable; import java.io.File; import java.io.IOException; import java.util.*; public class PlayerMine extends Mine { public static final int ISLAND_SIZE = 250; public static final int ISLAND_HEIGHT = 150; public static World world = Bukkit.getWorld("PlayerMines"); public static File playerMineFolder = new File("plugins/" + Main.getInstance().getDescription().getName() + "/mines/playermines/"); public static File schematicFile; public static Schematic schematic; static { try { schematicFile = new File("plugins/" + Main.getInstance().getDescription().getName() + "/mines/schematics/default-private-mine.schematic"); schematic = FaweAPI.load(schematicFile); } catch (IOException e) { e.printStackTrace(); } } public static ConfigManager config = new ConfigManager("mines/pmset"); private int initialOffsetX = 0; private int initialOffsetY = 0; private final boolean pasted; private FakeMob villager; private int minX; private int minY; private int maxX; private int maxY; private final List<ItemStack> drops; private UUID owner; private Location warpSign; private List<String> mineSettings; private List<String> mineUpgrades; private List<String> trusted; private final Inventory mineLager; private final ConfigManager mineCfg; public PlayerMine(UUID uid) { super(Bukkit.getOfflinePlayer(uid).getName(), LocationManager.getSpawn()); this.mineLager = Bukkit.createInventory(null, 9 * 4, S.invPrefix + "Mine Lager"); this.mineCfg = new ConfigManager(uid.toString(), "/mines/playermines/"); this.minX = 0; this.minY = 0; this.maxX = 0; this.maxY = 0; this.mineUpgrades = new ArrayList<>(); this.trusted = new ArrayList<>(); this.owner = uid; this.pasted = false; this.drops = new ArrayList<>(); this.mineSettings = new ArrayList<>(); } public int getInitialOffsetX() { return initialOffsetX; } public int getInitialOffsetY() { return initialOffsetY; } public int getMinX() { return minX; } public int getMinY() { return minY; } public int getMaxX() { return maxX; } public int getMaxY() { return maxY; } public boolean isPasted() { return pasted; } public UUID getOwner() { return owner; } public List<String> getMineUpgrades() { return mineUpgrades; } public List<String> getTrusted() { return trusted; } public ConfigManager getMineCfg() { return mineCfg; } private void loadDefaults() { if (!config.contains("initialOffsetX")) { config.set("initialOffsetX", 0); } if (!config.contains("initialOffsetY")) { config.set("initialOffsetY", 0); } config.save(); } private void checkAndCreate() { schematicFile.getParentFile().mkdirs(); if (!schematicFile.exists()) System.err.println("No schematic found."); /* Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "mv import " + Settings.worldName + " normal -g " + plugin.getName()); if (!Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "mv modify set generator " + plugin.getName() + " " + Settings.worldName)) { Bukkit.getLogger().severe("Multiverse is out of date! - Upgrade to latest version!"); */ } public static void loadWorld() { //Code from https://github.com/tastybento/askyblock/blob/master/src/com/wasteofplastic/askyblock/ASkyBlock.java if (world == null) { Bukkit.getLogger().info("Creating world..."); world = WorldCreator.name("PlayerMines").type(WorldType.FLAT).environment(World.Environment.NORMAL).generator(new ChunkGeneratorWorld()).createWorld(); } Bukkit.getLogger().info("Trying to register generator with Multiverse "); try { Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "mv import " + "PlayerMines" + " normal -g " + Main.getInstance().getName()); if (!Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "mv modify set generator " + Main.getInstance().getName() + " " + "PlayerMines")) { Bukkit.getLogger().severe("Multiverse is out of date! - Upgrade to latest version!"); } } catch (Exception e) { Bukkit.getLogger().severe("Not successfull! Disabling " + Main.getInstance().getName() + "!"); Bukkit.getServer().getPluginManager().disablePlugin(Main.getInstance()); } } public void pasteSchematic(Player player) { checkAndCreate(); this.loadDefaults(); int initialOffsetXConfig = config.getInt("initialOffsetX"); int initialOffsetYConfig = config.getInt("initialOffsetY"); if (initialOffsetXConfig > initialOffsetYConfig) { this.initialOffsetY = initialOffsetYConfig + 1; config.set("initialOffsetY", this.initialOffsetY); } else { this.initialOffsetX = initialOffsetXConfig + 1; config.set("initialOffsetX", this.initialOffsetX); } config.save(); this.minX = ISLAND_SIZE * initialOffsetX; this.minY = ISLAND_SIZE * initialOffsetY; this.maxX = this.minX + ISLAND_SIZE; this.maxY = this.minY + ISLAND_SIZE; this.spawnLocation = new Location(world, minX+(int)(ISLAND_SIZE/2)+.5, ISLAND_HEIGHT, minY+(int)(ISLAND_SIZE/2)+.5); this.minLocation = spawnLocation.clone().add(30, -32, 20); this.maxLocation = spawnLocation.clone().add(-16, -1, 66); saveToFile(); new BukkitRunnable() { @Override public void run() { schematic.paste(new BukkitWorld(world), new Vector(minX + (ISLAND_SIZE / 2), ISLAND_HEIGHT, minY + (ISLAND_SIZE / 2))); reset(); new BukkitRunnable() { @Override public void run() { updateHologram(); player.teleport(spawnLocation); respawnVillager(); Main.getPlayerMineManager().playerMines.put(PlayerMine.this.owner, PlayerMine.this); } }.runTaskLater(Main.getInstance(), 20); } }.runTaskLaterAsynchronously(Main.getInstance(), 1); } public List<String> getMineSettings() { return mineSettings; } public Player getPlayer() { return Bukkit.getPlayer(this.owner); } /* Vector position = new Vector(this.minX, 30, this.minY); // The paste position BukkitWorld worldEditWorld = new BukkitWorld(world); EditSession editSession = WorldEdit.getInstance().getEditSessionFactory().getEditSession(worldEditWorld, -1); SchematicFormat.getFormat(schematicFile).load(schematicFile).paste(editSession, position, false, false); editSession.flushQueue(); */ public Long nextChange = 0L; public Inventory getMineLager() { return mineLager; } public void openMineGui(Player player) { InventoryMenuBuilder invb = new InventoryMenuBuilder(9 * 5, S.getPrefixAlt("§a", "Mines") + "Private Mine"); for (int i = 0; i < 9 * 5; i++) { invb.withItem(i, Shop.FILLER, InventoryMenuBuilder.ALL_CLICK_TYPES); } invb.withItem(11, new ItemCreator().material(Material.CHEST).displayName("§6Mine-Lager §cBald verfügbar").lore(S.mc + "Gefundene Crates werden hier gelagert.", "", "§eLinksklick §8- §7Mine-Lager öffnen").build()); invb.withItem(12, new ItemCreator().material(Material.BEACON).displayName("§bKristall-Lager §cBald verfügbar").lore(S.mc + "Gefundene Kristall-Items werden hier gelagert.", "", "§eLinksklick §8- §7Kristall-Lager öffnen").build()); int[] slots = new int[]{14, 15, 20, 21, 22, 23, 24, 29, 30, 31, 32, 33}; int i = 0; PlayerConfig pc = PlayerConfig.playerConfigCache.get(player.getName()); for (Mine mine : Main.getMineManager().getMines()) { ItemBuilder ib = new ItemBuilder(CrateManager.fromName("minereward" + PlayerConfig.getCrateTierStatic(mine.getMinLevel())).getCrateItem(null)) .name(S.mc + "Mine-Level§8: §6§l" + mine.getName()) .clearLore() .lore("") .lore(" §8» " + S.mc + "Status§8: " + (pc.getMineLevel() >= mine.getMinLevel() ? "§aFreigeschalten" : "§cNicht freigeschalten")) .lore("") .lore(S.mc + "Verfügbare Blöcke:"); List<MineBlock> listed = new ArrayList<>(); for (MineBlock mb : mine.getBlocks()) { if (!listed.contains(mb)) { listed.add(mb); ib.lore(" §8- §6" + ChatColor.stripColor(mb.getName())); } } ib.lore(""); ib.lore("§eLinksklick §8- §7Block-Pattern ändern"); if (pc.getMineLevel() >= mine.getMinLevel()) { invb.withItem(slots[i], ib.build(), new ItemListener() { @Override public void onInteract(Player player, ClickType action, ItemStack item) { if (nextChange > System.currentTimeMillis()) { player.sendMessage(S.getPrefix("§a", "Mines") + "Bitte warte noch " + TimeUtil.convertedBanDate(nextChange)); return; } ConfirmMenu.openBestätigung(player, p -> { nextChange = System.currentTimeMillis() + (1000 * 60 * 2); blocks = mine.getBlocks(); saveToFile(); reset(); }, "Block-Pattern ändern?", new ItemBuilder(item).name("§ePattern ändern?").build()); } }, InventoryMenuBuilder.ALL_CLICK_TYPES); } else { invb.withItem(slots[i], ib.build(), new ItemListener() { @Override public void onInteract(Player player, ClickType action, ItemStack item) { player.sendMessage(S.getPrefix("§a", "Mines") + "Du hast dieses Block-Pattern noch nicht freigeschalten."); } }, InventoryMenuBuilder.ALL_CLICK_TYPES); } i++; } invb.show(player); } public void openMineGuiSettings(Player player) { InventoryMenuBuilder invb = new InventoryMenuBuilder(9 * 3, S.getPrefixAlt("§a", "Mines") + "Private Mine"); for (int i = 0; i < 9 * 3; i++) { invb.withItem(i, Shop.FILLER, InventoryMenuBuilder.ALL_CLICK_TYPES); } invb.withItem(10, new ItemCreator().material(Material.DIAMOND_PICKAXE).displayName("§eBlöcke zerstören").lore(S.mc + "Blöcke können zerstört werden.", "", " §8» " + S.mc + "Status§8: " + (this.mineSettings.contains("destroyblocks") ? "§cVerboten" : "§aErlaubt"), "", "§eLinksklick §8- §7Einstellung ändern").build(), new ItemListener() { @Override public void onInteract(Player player, ClickType action, ItemStack item) { if (mineSettings.contains("destroyblocks")) { mineSettings.remove("destroyblocks"); } else { mineSettings.add("destroyblocks"); } invb.withItem(10, new ItemCreator().material(Material.DIAMOND_PICKAXE).displayName("§eBlöcke zerstören").lore(S.mc + "Blöcke können zerstört werden.", "", " §8» " + S.mc + "Status§8: " + (mineSettings.contains("destroyblocks") ? "§cVerboten" : "§aErlaubt"), "", "§eLinksklick §8- §7Einstellung ändern").build()); invb.refreshContent(); } }, InventoryMenuBuilder.ALL_CLICK_TYPES); invb.withItem(11, new ItemCreator().material(Material.BEDROCK).displayName("§aBlöcke platzieren").lore(S.mc + "Blöcke können platziert werden.", "", " §8» " + S.mc + "Status§8: " + (this.mineSettings.contains("placeblocks") ? "§cVerboten" : "§aErlaubt"), "", "§eLinksklick §8- §7Einstellung ändern").build(), new ItemListener() { @Override public void onInteract(Player player, ClickType action, ItemStack item) { if (mineSettings.contains("placeblocks")) { mineSettings.remove("placeblocks"); } else { mineSettings.add("placeblocks"); } invb.withItem(11, new ItemCreator().material(Material.BEDROCK).displayName("§aBlöcke platzieren").lore(S.mc + "Blöcke können platziert werden.", "", " §8» " + S.mc + "Status§8: " + (mineSettings.contains("placeblocks") ? "§cVerboten" : "§aErlaubt"), "", "§eLinksklick §8- §7Einstellung ändern").build()); invb.refreshContent(); } }, InventoryMenuBuilder.ALL_CLICK_TYPES); invb.withItem(12, new ItemCreator().material(Material.ENDER_PEARL).displayName("§5Besucher").lore(S.mc + "Spieler können deine Insel besuchen.", "", " §8» " + S.mc + "Status§8: " + (this.mineSettings.contains("visit") ? "§cVerboten" : "§aErlaubt"), "", "§eLinksklick §8- §7Einstellung ändern").build(), new ItemListener() { @Override public void onInteract(Player player, ClickType action, ItemStack item) { if (mineSettings.contains("visit")) { mineSettings.remove("visit"); } else { mineSettings.add("visit"); } invb.withItem(12, new ItemCreator().material(Material.ENDER_PEARL).displayName("§5Besucher").lore(S.mc + "Spieler können deine Insel besuchen.", "", " §8» " + S.mc + "Status§8: " + (mineSettings.contains("visit") ? "§cVerboten" : "§aErlaubt"), "", "§eLinksklick §8- §7Einstellung ändern").build()); invb.refreshContent(); } }, InventoryMenuBuilder.ALL_CLICK_TYPES); invb.withItem(13, new ItemCreator().material(Material.WATCH).displayName("§4Automatische Mine-Resets").lore(S.mc + "Die Mine wird automatisch zurückgesetzt.", "", " §8» " + S.mc + "Status§8: " + (this.mineSettings.contains("reset") ? "§cDeaktiviert" : "§aAktiviert"), "", "§eLinksklick §8- §7Einstellung ändern").build(), new ItemListener() { @Override public void onInteract(Player player, ClickType action, ItemStack item) { if (mineSettings.contains("reset")) { mineSettings.remove("reset"); } else { mineSettings.add("reset"); } invb.withItem(13, new ItemCreator().material(Material.WATCH).displayName("§4Automatische Mine-Resets").lore(S.mc + "Die Mine wird automatisch zurückgesetzt.", "", " §8» " + S.mc + "Status§8: " + (mineSettings.contains("reset") ? "§cDeaktiviert" : "§aAktiviert"), "", "§eLinksklick §8- §7Einstellung ändern").build()); invb.refreshContent(); } }, InventoryMenuBuilder.ALL_CLICK_TYPES); invb.show(player); } @Override public void updateHologram() { if (time <= 0) { time = 60 * 3; reset(); } else if (!this.mineSettings.contains("reset")) time--; if (hologram == null) { hologram = HologramsAPI.createHologram(Main.getInstance(), this.spawnLocation.clone().add(0, 4, 2)); hologram.appendItemLine(new ItemBuilder(Material.SKULL_ITEM).setSkullOwner(Bukkit.getOfflinePlayer(owner).getName()).build()); hologram.appendTextLine(""); hologram.appendTextLine(S.mc + "§6§l" + getName() + "'s Private Mine"); hologram.appendTextLine(""); hologram.appendTextLine(S.mc + "Zeit bis zum Reset§8: §a" + TimeUtil.convertedBanDate(System.currentTimeMillis() + time * 1000L)); hologram.appendTextLine(S.mc + "Freigeschaltet ab§8: §cLevel " + minLevel); hologram.appendTextLine(""); hologram.appendTextLine("§a/mine upgrade §e- §6Upgrades"); hologram.appendTextLine("§a/mine tp §e- §6Teleport"); hologram.appendTextLine("§a/mine trust §e- §6Berechtigungen"); hologram.appendTextLine("§a/mine settings §e- §6Einstellungen"); hologram.appendTextLine(""); world.getPlayers().forEach(player -> { Actionbar.sendActionBar(player, "§fMine-Level§8: §e" + PlayerConfig.getPlayerData(player.getName()).getMineLevel() + " §8(§C§L"); }); } ((TextLine) hologram.getLine(4)).setText(S.mc + "Zeit bis zum Reset§8: §a" + TimeUtil.convertedBanDate(System.currentTimeMillis() + time * 1000L)); } public static void openMenu(Player player) { InventoryMenuBuilder invb = new InventoryMenuBuilder(9 * 3, S.getPrefixAlt("§a", "Mines") + "Private Mine"); for (int i = 0; i < 9 * 3; i++) { invb.withItem(i, Shop.FILLER); } invb.withItem(11, new ItemBuilder(Material.ENDER_PEARL).name("§5Private-Mine-Teleport").lore("§7Teleportiere dich zu deiner eigenen Mine").build(), new ItemListener() { @Override public void onInteract(Player player, ClickType action, ItemStack item) { player.performCommand("mine tp"); } }, InventoryMenuBuilder.ALL_CLICK_TYPES); invb.withItem(13, new ItemBuilder(Material.CHEST).name("§6Private-Mine-Upgrades").lore("§7Ändere dein Block-Pattern").build(), new ItemListener() { @Override public void onInteract(Player player, ClickType action, ItemStack item) { player.performCommand("mine upgrade"); } }, InventoryMenuBuilder.ALL_CLICK_TYPES); invb.withItem(15, new ItemBuilder(Material.PAPER).name("§cPrivate-Mine-Settings").lore("§7Passe deine Mine an").build(), new ItemListener() { @Override public void onInteract(Player player, ClickType action, ItemStack item) { player.performCommand("mine settings"); } }, InventoryMenuBuilder.ALL_CLICK_TYPES); invb.show(player); } public static <T> T mostCommon(List<T> list) { Map<T, Integer> map = new HashMap<>(); for (T t : list) { Integer val = map.get(t); map.put(t, val == null ? 1 : val + 1); } Map.Entry<T, Integer> max = null; for (Map.Entry<T, Integer> e : map.entrySet()) { if (max == null || e.getValue() > max.getValue()) max = e; } return max.getKey(); } public FakeMob getVillager() { return villager; } public void saveToFile() { this.mineCfg.set("owner", owner.toString()); this.mineCfg.set("minLevel", this.minLevel); this.mineCfg.set("minLocation", LocationUtil.locationToString(minLocation)); this.mineCfg.set("maxLocation", LocationUtil.locationToString(maxLocation)); this.mineCfg.set("spawnLocation", LocationUtil.locationToString(spawnLocation)); List<String> blocks = new ArrayList<>(); for (MineBlock mineBlock : this.blocks) { blocks.add(mineBlock.name()); } this.mineCfg.set("blocks", blocks); this.mineCfg.set("initialOffsetX", initialOffsetX); this.mineCfg.set("initialOffsetY", initialOffsetY); this.mineCfg.set("minX", minX); this.mineCfg.set("minY", minY); this.mineCfg.set("maxX", maxX); this.mineCfg.set("maxY", maxY); this.mineCfg.set("mineUpgrades", mineUpgrades); this.mineCfg.set("trusted", trusted); this.mineCfg.set("settings", this.mineSettings); this.mineCfg.set("warpSign", warpSign != null ? LocationUtil.locationToString(warpSign) : null); this.mineCfg.set("lager", this.mineLager.getContents()); this.mineCfg.save(); } public boolean hasWarpSign() { return warpSign != null; } public void setWarpSign(Location warpSign) { this.warpSign = warpSign; } public Location getWarpSign() { return warpSign; } public void loadFromFile() { this.owner = UUID.fromString(this.mineCfg.getString("owner")); this.minLevel = this.mineCfg.getInt("minLevel"); this.minLocation = LocationUtil.stringToLocation(this.mineCfg.getString("minLocation")); this.maxLocation = LocationUtil.stringToLocation(this.mineCfg.getString("maxLocation")); this.spawnLocation = LocationUtil.stringToLocation(this.mineCfg.getString("spawnLocation")); if (this.mineCfg.contains("warpSign")) this.warpSign = LocationUtil.stringToLocation(this.mineCfg.getString("warpSign")); if (this.mineCfg.contains("settings")) { this.mineSettings = this.mineCfg.getStringList("settings"); } List<MineBlock> blocks = new ArrayList<>(); for (String mbs : this.mineCfg.getStringList("blocks")) { blocks.add(MineBlock.valueOf(mbs)); } this.blocks = blocks; this.initialOffsetX = this.mineCfg.getInt("initialOffsetX"); this.initialOffsetY = this.mineCfg.getInt("initialOffsetY"); this.minX = this.mineCfg.getInt("minX"); this.minY = this.mineCfg.getInt("minY"); this.maxX = this.mineCfg.getInt("maxX"); this.maxY = this.mineCfg.getInt("maxY"); this.mineUpgrades = this.mineCfg.getStringList("mineUpgrades"); this.trusted = this.mineCfg.getStringList("trusted"); this.mineLager.setContents(this.mineCfg.contains("lager") ? ((List<ItemStack>) this.mineCfg.get("lager")).toArray(new ItemStack[0]) : new ItemStack[0]); respawnVillager(); } public void respawnVillager() { if (this.villager == null) { this.villager = new FakeMob(new Random().nextInt(), this.spawnLocation.clone().add(-5, 1, 15), EntityType.VILLAGER); this.villager.setCustomName("§a§lMiner"); this.villager.setPlayerLook(true); } } } Minelistener package de.iraphi.rax.mines; import com.boydti.fawe.IFawe; import de.iraphi.rax.achievement.Achievement; import de.iraphi.rax.actionbar.Actionbar; import de.iraphi.rax.fakemobs.event.PlayerInteractFakeMobEvent; import de.iraphi.rax.maths.Maths; import de.iraphi.rax.playerconfig.PlayerConfig; import de.iraphi.rax.reward.Reward; import de.iraphi.rax.settings.S; import de.iraphi.rax.util.Util; import org.bukkit.*; import org.bukkit.block.Block; import org.bukkit.entity.FallingBlock; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.block.Action; import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.event.block.SignChangeEvent; import org.bukkit.event.entity.EntityChangeBlockEvent; import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.player.PlayerBucketEmptyEvent; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.util.BlockIterator; import org.bukkit.util.Vector; import java.util.HashMap; import java.util.Random; public class MineListener implements Listener { @EventHandler public void on(EntityDamageEvent event) { if (event.getEntity() instanceof Player && ( event.getEntity().getWorld().getName().equalsIgnoreCase("mineEF") || event.getEntity().getWorld().getName().equalsIgnoreCase("PlayerMines"))) { event.setCancelled(true); } } @EventHandler public void on(SignChangeEvent event) { PlayerMine playerMine; if ((playerMine = PlayerMineManager.forBlock(event.getBlock())) != null) { if (event.getPlayer().getUniqueId().equals(playerMine.getOwner()) && event.getLine(0) .equalsIgnoreCase("[warp]")) { if (playerMine.hasWarpSign()) { playerMine.getWarpSign().getBlock().setType(Material.AIR); } playerMine.setWarpSign(event.getBlock().getLocation()); event.setLine(0, "§8***"); event.setLine(1, "§a§lMine-Warp"); event.setLine(2, "§6" + event.getPlayer().getName()); event.setLine(3, "§8***"); event.getPlayer() .sendMessage(S.getPrefix("§a", "Mines") + "Du hast ein Warp-Schild platziert."); } } } @EventHandler public void on(PlayerBucketEmptyEvent event) { if (event.getPlayer().getWorld().getName().equalsIgnoreCase("PlayerMines") && !PlayerMineManager.canBuild(event.getPlayer(), event.getBlockClicked())) { event.setCancelled(true); } } @EventHandler public void on(BlockPlaceEvent event) { if (event.getPlayer().getWorld().getName().equalsIgnoreCase("PlayerMines")) { if (!PlayerMineManager.canBuild(event.getPlayer(), event.getBlock()) || MineManager.isInMine( event.getBlock(), false)) { event.setCancelled(true); return; } PlayerMine playerMine = PlayerMineManager.forBlock(event.getBlock()); if (playerMine != null) { if (playerMine.getMineSettings().contains("placeblocks")) { event.setCancelled(true); } } } } @EventHandler public void on(PlayerInteractEvent event) { if (!event.getAction().equals(Action.RIGHT_CLICK_AIR) && !event.getAction() .equals(Action.LEFT_CLICK_AIR) && event.getPlayer().getWorld().getName() .equalsIgnoreCase("PlayerMines") && !PlayerMineManager.canBuild(event.getPlayer(), event.getClickedBlock())) { event.setCancelled(true); } } @EventHandler public void on(BlockBreakEvent event) { if (event.getPlayer().getWorld().getName().equalsIgnoreCase("PlayerMines") && !PlayerMineManager.canBuild(event.getPlayer(), event.getBlock())) { event.setCancelled(true); return; } if (onBlockBreakEvent(event)) { for (MineEnchant me : MineEnchant.MINE_ENCHANTS) { if (me.hasEnchantment(event.getPlayer().getItemInHand())) { if (me.getListener() != null) { me.getListener().onBlockBreak(event.getBlock(), event.getPlayer(), me.getEnchantmentLevelFromPickaxe(event.getPlayer().getItemInHand())); } } } } else { if (event.getPlayer().getWorld().getName().equalsIgnoreCase("PlayerMines")) { PlayerMine playerMine = PlayerMineManager.forBlock(event.getBlock()); if (playerMine != null) { if (playerMine.hasWarpSign() && playerMine.getWarpSign().getBlock() .equals(event.getBlock())) { if (playerMine.getOwner().equals(event.getPlayer().getUniqueId())) { playerMine.setWarpSign(null); event.getPlayer() .sendMessage(S.getPrefix("§a", "Mines") + "Du hast das Warp-Schild entfernt."); return; } else { event.setCancelled(true); } } if (playerMine.getMineSettings().contains("destroyblocks")) { event.setCancelled(true); } } } } } public static boolean onBlockBreakEvent(BlockBreakEvent event) { if (MineManager.isInMine(event.getBlock(), false)) { event.setCancelled(true); event.setExpToDrop(0); event.getBlock().getDrops().clear(); Player player = event.getPlayer(); Block block = event.getBlock(); PlayerConfig pc = PlayerConfig.playerConfigCache.get(player.getName()); Mine mine = MineManager.forBlock(block, false); MineBlock blockType = MineBlock.forMaterial(block.getType()); if (pc.getMineLevel() < mine.getMinLevel()) { event.getPlayer().sendMessage( S.getPrefix("§a", "Mines") + "Du benötigst mindestens Level " + S.sc + mine.getMinLevel() + S.mc + ", um hier abbauen zu können."); return false; } /* if(Util.hitChance(MineManager.getLevel(event.getPlayer().getUniqueId()) / (double) MineManager.config.getOrDefault("crateChance", 15.0))) { MineReward reward = MineReward.getRandomReward(); if(reward.broadcast) { Bukkit.broadcastMessage(S.pr+S.sc+event.getPlayer().getName()+S.mc+" hat "+S.sc+"§l"+reward.name+S.mc+" als §7Mine§8-§7Reward"+S.mc+" erhalten."); } Util.giveItem(event.getPlayer(), reward.item); event.getPlayer().sendMessage(S.pr+"Du hast "+S.sc+reward.name+S.mc+" erhalten."); if (!pc.contains("mine2.belohnungen")) pc.set("mine2.belohnungen", 0L); pc.set("mine2.belohnungen",pc.getLong("mine2.belohnungen")+1); } } */ if (blockType != null) { if (pc.getMineLevel() < blockType.getMinLevel()) { event.getPlayer().sendMessage( S.getPrefix("§a", "Mines") + "Du benötigst mindestens Level " + S.sc + blockType.getMinLevel() + S.mc + ", um diesen Block abbauen zu können."); return false; } if (blockType == MineBlock.LUCKY_BLOCK) { block.getWorld() .playEffect(block.getLocation().clone().add(0.5, 0.5, 0.5), Effect.STEP_SOUND, block.getTypeId(), block.getData()); block.setType(Material.AIR); mine.minedBlocks++; Reward.rewardPlayer(S.getPrefix("§a", "Mines"), player, Reward.getRandomReward()); pc.setMineRewardsTotal(pc.getMineRewardsTotal() + 1); if (pc.getMineRewardsTotal() == 500) { if (!pc.hasAchievement(Achievement.CRATES1)) { pc.addAchievement(Achievement.CRATES1); } } else if (pc.getMineRewardsTotal() == 2000) { if (pc.hasAchievement(Achievement.CRATES2)) { pc.addAchievement(Achievement.CRATES2); } } return true; } if (pc.getMinedBlocks(blockType) >= pc.getInventorySize()) { if (MineEnchant.MINE_ENCHANTS.get(0).hasEnchantment(player.getItemInHand())) { if (pc.getMinedBlocks(MineBlock.forMaterial(block.getType())) >= pc.getInventorySize() - 1) { MineManager.sellAll(player); player.playSound(player.getLocation(), Sound.HORSE_ARMOR, 1, 1); } } else { Actionbar.sendActionBar(event.getPlayer(), "§4§lEiner oder mehrere deiner Mine-Inventar Slots sind voll."); } } else { int i = 1; if (MineEnchant.FORTUNE.hasEnchantment(player.getItemInHand())) { i = MineEnchant.FORTUNE.getEnchantmentLevelFromPickaxe(player.getItemInHand()); } for (int i1 = 0; i1 < i; i1++) { pc.addMineBlocks(blockType); } } if (Maths.randomDouble(0, 100) < (1.25 + (pc.getMineLevel() / 100) + pc.getPrestigeLevel() * 0.25)) { if (new Random().nextInt(100) < 25) { Reward.rewardPlayer(S.getPrefix("§a", "Mines"), player, Reward.getRandomReward()); pc.setMineRewardsTotal(pc.getMineRewardsTotal() + 1); if (pc.getMineRewardsTotal() == 500) { if (!pc.hasAchievement(Achievement.CRATES1)){ pc.addAchievement(Achievement.CRATES1); } } else if (pc.getMineRewardsTotal() == 2000) { if (!pc.hasAchievement(Achievement.CRATES2)) { pc.addAchievement(Achievement.CRATES2); } } } } if (pc.getMineBlocksTotal() >= 100000) { if (!pc.hasAchievement(Achievement.MINER1)) { pc.addAchievement(Achievement.MINER1); } } else if (pc.getMineBlocksTotal() >= 250000) { if (!pc.hasAchievement(Achievement.MINER2)){ pc.addAchievement(Achievement.MINER2); } } boolean x = true; for (MineBlock mineBlock : MineBlock.getOres()) { if (!x) { continue; } x = pc.getMinedBlocksTotal(mineBlock) == 10000; } if (x) { if (!pc.hasAchievement(Achievement.ERZE)) { pc.addAchievement(Achievement.ERZE); } } block.getWorld() .playEffect(block.getLocation().clone().add(0.5, 0.5, 0.5), Effect.STEP_SOUND, block.getTypeId(), block.getData()); block.setType(Material.AIR); mine.minedBlocks++; } if (pc.getMinePoints() >= MineManager.calculateMinePoints(pc.getMineLevel() + 1)) { if (pc.isAutoLevelUp()) { MineManager.tryLevelUp(player); } } return true; } return false; } HashMap<String, Long> d = new HashMap<>(); @EventHandler public void on(PlayerInteractFakeMobEvent event) { if (event.getMob().getCustomName().equalsIgnoreCase("§a§lMiner")) { PlayerMine.openMenu(event.getPlayer()); event.setCancelled(true); } } @EventHandler(priority = EventPriority.HIGHEST) public void on(EntityChangeBlockEvent event) { if (event.getEntity() instanceof FallingBlock) { Block blockWhereFallingLands = event.getBlock(); event.getEntity().remove(); event.setCancelled(true); event.getBlock().setType(Material.AIR); for (Block block : Util.generateSphere(blockWhereFallingLands.getLocation(), 2, false)) { if (MineManager.forBlock(block, false) != null && block.getType() != Material.AIR) { block.setType(Material.ENDER_STONE); } } } } @EventHandler public void onPlayerInteract(PlayerInteractEvent event) { if (MineEnchant.MINE_ENCHANTS.get(2).hasEnchantment(event.getPlayer().getItemInHand())) { if (event.getAction() != Action.RIGHT_CLICK_AIR && event.getAction() != Action.RIGHT_CLICK_BLOCK) { return; } if (!d.containsKey(event.getPlayer().getName())) { d.put(event.getPlayer().getName(), System.currentTimeMillis()); } if (d.get(event.getPlayer().getName()) > System.currentTimeMillis()) { return; } d.put(event.getPlayer().getName(), System.currentTimeMillis() + 500); BlockIterator iter = new BlockIterator(event.getPlayer(), MineEnchant.MINE_ENCHANTS.get(2) .getEnchantmentLevelFromPickaxe(event.getPlayer().getItemInHand()) == 1 ? 10 : 15); Block currentTargetBlock = iter.next(); while (iter.hasNext()) { currentTargetBlock = iter.next(); if (onBlockBreakEvent(new BlockBreakEvent(currentTargetBlock, event.getPlayer()))) { World world = currentTargetBlock.getWorld(); double radius = 1.5; double X = currentTargetBlock.getX(); double Y = currentTargetBlock.getY(); double Z = currentTargetBlock.getZ(); double minX = X - radius; double maxX = X + radius + 1.0D; double minY = Y - radius; double maxY = Y + radius + 1.0D; double minZ = Z - radius; double maxZ = Z + radius + 1.0D; double x = minX; while (x < maxX) { double y = minY; while (y < maxY) { double z = minZ; while (z < maxZ) { double distance = ((X - x) * (X - x) + ((Z - z) * (Z - z)) + ((Y - y) * (Y - y))); if (distance < radius * radius) { Location location = new Location(currentTargetBlock.getWorld(), x, y, z); Block block1 = location.getBlock(); MineListener.onBlockBreakEvent(new BlockBreakEvent(block1, event.getPlayer())); } z++; } y++; } x++; } } } drawLine(currentTargetBlock.getLocation().clone().add(0.5, 0, 0.5), event.getPlayer().getLocation().clone().getBlock().getLocation().add(0.5, 1.5, 0.5), Effect.COLOURED_DUST); drawLine(currentTargetBlock.getLocation().clone().add(0.5, 0, 0.5), event.getPlayer().getLocation().clone().getBlock().getLocation().add(0.5, 1.5, 0.5), Effect.LAVADRIP); } } public final Block getTargetBlock(Player player, int range) { BlockIterator iter = new BlockIterator(player, range); Block lastBlock = iter.next(); while (iter.hasNext()) { lastBlock = iter.next(); continue; } return lastBlock; } public static void drawLine(Location targetLoc, Location startLoc, Effect effect) { Location origin = startLoc.clone(); Vector target = targetLoc.clone().toVector();// location where it ends (for the direction only) origin.setDirection( target.subtract(origin.toVector())); // setting direction bc of above information Vector increase = origin.getDirection(); // getting what to increase by for (int counter = 0; counter < 10; counter++) { // 5 == blocks to travel Location loc = origin.add(increase); // add the increase loc.getWorld().playEffect(loc, effect, 2); // spawn the particle } } } jackpotManager pc.jackpotsWon++; //JACKPOT ACHIEVEMENT if (pc.jackpotsWon == 5) { if (!pc.hasAchievement(Achievement.JACKPOT)) { pc.addAchievement(Achievement.JACKPOT); } } //JACKPOT ACHIEVEMENT
Editor is loading...