Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package me.deadfinder.deadsnowy.main;
- import java.io.File;
- import java.io.IOException;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.Collection;
- import java.util.logging.Level;
- import java.util.stream.Stream;
- import org.bukkit.Bukkit;
- import org.bukkit.ChatColor;
- import org.bukkit.Location;
- import org.bukkit.Material;
- import org.bukkit.World;
- import org.bukkit.block.Biome;
- import org.bukkit.block.Block;
- import org.bukkit.entity.Entity;
- import org.bukkit.entity.EntityType;
- import org.bukkit.entity.Player;
- import org.bukkit.event.EventHandler;
- import org.bukkit.event.HandlerList;
- import org.bukkit.event.Listener;
- import org.bukkit.event.block.BlockBreakEvent;
- import org.bukkit.event.block.BlockPlaceEvent;
- import org.bukkit.plugin.Plugin;
- import org.bukkit.plugin.java.JavaPlugin;
- import org.bukkit.potion.PotionEffect;
- import org.bukkit.potion.PotionEffectType;
- import me.deadfinder.deadsnowy.database.Database;
- import me.deadfinder.deadsnowy.database.SQLite;
- public class Main extends JavaPlugin implements Listener {
- private Database db;
- ArrayList<Biome> SnowyBiomes = new ArrayList<Biome>();
- ArrayList<Biome> RainyBiomes = new ArrayList<Biome>();
- ArrayList<Material> RainyBiomesBlocks = new ArrayList<Material>();
- int FirstTask;
- int SecondTask;
- @Override
- public void onEnable() {
- File pl_dir = new File(this.getDataFolder() + "");
- if (!pl_dir.exists()) {
- pl_dir.setReadable(true, false);
- pl_dir.setWritable(true, false);
- pl_dir.setExecutable(true, false);
- pl_dir.mkdirs();
- pl_dir.setReadable(true, false);
- pl_dir.setWritable(true, false);
- pl_dir.setExecutable(true, false);
- }
- File dataFolder = new File(this.getDataFolder(), Database.table + ".db");
- if (!dataFolder.exists()) {
- try {
- dataFolder.setReadable(true, false);
- dataFolder.setWritable(true, false);
- dataFolder.setExecutable(true, false);
- dataFolder.createNewFile();
- dataFolder.setReadable(true, false);
- dataFolder.setWritable(true, false);
- dataFolder.setExecutable(true, false);
- } catch (IOException e) {
- this.getLogger().log(Level.SEVERE, "File write error: " + Database.table + ".db");
- }
- }
- this.db = new SQLite(this);
- SnowyBiomes.addAll(Arrays.asList(Biome.FROZEN_PEAKS, Biome.JAGGED_PEAKS, Biome.SNOWY_SLOPES, Biome.GROVE,
- Biome.SNOWY_BEACH, Biome.FROZEN_RIVER, Biome.SNOWY_TAIGA, Biome.ICE_SPIKES, Biome.SNOWY_PLAINS,
- Biome.DEEP_FROZEN_OCEAN));
- RainyBiomes.addAll(Arrays.asList(Biome.STONY_PEAKS, Biome.JUNGLE, Biome.BAMBOO_JUNGLE, Biome.SPARSE_JUNGLE,
- Biome.MUSHROOM_FIELDS, Biome.PLAINS, Biome.SUNFLOWER_PLAINS, Biome.BEACH, Biome.SWAMP,
- Biome.DARK_FOREST, Biome.FOREST, Biome.FLOWER_FOREST, Biome.OLD_GROWTH_BIRCH_FOREST, Biome.BIRCH_FOREST,
- Biome.LUSH_CAVES, Biome.COLD_OCEAN, Biome.DEEP_COLD_OCEAN, Biome.DEEP_FROZEN_OCEAN,
- Biome.DEEP_LUKEWARM_OCEAN, Biome.OCEAN, Biome.RIVER, Biome.WARM_OCEAN, Biome.MEADOW));
- RainyBiomesBlocks.addAll(Arrays.asList(Material.GRASS_BLOCK, Material.DIRT, Material.COARSE_DIRT,
- Material.PODZOL, Material.ROOTED_DIRT, Material.SAND, Material.MYCELIUM));
- EnableTasks();
- getServer().getPluginManager().registerEvents(this, this);
- Bukkit.getConsoleSender()
- .sendMessage(ChatColor.GREEN + "[Success]" + ChatColor.WHITE + " DeadSnowy plugin is enabled!");
- }
- @Override
- public void onDisable() {
- Bukkit.getServer().getScheduler().cancelTask(FirstTask);
- Bukkit.getServer().getScheduler().cancelTask(SecondTask);
- HandlerList.unregisterAll((Plugin) this);
- Bukkit.getConsoleSender()
- .sendMessage(ChatColor.RED + "[Warning]" + ChatColor.WHITE + " DeadSnowy plugin is disabled!");
- }
- @EventHandler
- public void onPlaceCampfire(final BlockPlaceEvent e) {
- if (e.getBlock() != null && e.getBlock().getType().equals(Material.CAMPFIRE)) {
- db.load();
- db.setCampfire(e.getBlock().getWorld().getName() + ":" + (int) e.getBlock().getLocation().getX() + ":"
- + (int) e.getBlock().getLocation().getY() + ":" + (int) e.getBlock().getLocation().getZ());
- }
- return;
- }
- @EventHandler
- public void onRemoveCampfire(final BlockBreakEvent e) {
- if (e.getBlock() != null && e.getBlock().getType().equals(Material.CAMPFIRE)) {
- db.load();
- if (db.getCampfire(e.getBlock().getWorld().getName() + ":" + (int) e.getBlock().getLocation().getX() + ":"
- + (int) e.getBlock().getLocation().getY() + ":" + (int) e.getBlock().getLocation().getZ()))
- db.remCampfire(e.getBlock().getWorld().getName() + ":" + (int) e.getBlock().getLocation().getX() + ":"
- + (int) e.getBlock().getLocation().getY() + ":" + (int) e.getBlock().getLocation().getZ());
- }
- return;
- }
- public void EnableTasks() {
- FirstTask = Bukkit.getScheduler().scheduleSyncRepeatingTask(this, new Runnable() {
- @Override
- public void run() {
- for (Player pl : Bukkit.getServer().getOnlinePlayers()) {
- Biome pl_bm = pl.getLocation().getBlock().getBiome();
- if (SnowyBiomes.contains(pl_bm)
- && !pl.getLocation().getBlock().getType().equals(Material.POWDER_SNOW)) {
- if (pl.getFreezeTicks() <= 190) {
- db.load();
- if (db.getAllCampfires() != null) {
- for (String s : db.getAllCampfires()) {
- Location campf_loc = getLocationString(s);
- Collection<Entity> col = pl.getWorld().getNearbyEntities(campf_loc, 6D, 3D, 6D,
- (e) -> e.getType() == EntityType.PLAYER);
- if (!col.contains(pl)) {
- if (Stream.of(pl.getEquipment().getBoots(), pl.getEquipment().getLeggings(),
- pl.getEquipment().getChestplate(), pl.getEquipment().getHelmet())
- .allMatch(x -> x != null)) {
- if (pl.getEquipment().getBoots().getType().equals(Material.LEATHER_BOOTS)
- && pl.getEquipment().getLeggings().getType()
- .equals(Material.LEATHER_LEGGINGS)
- && pl.getEquipment().getChestplate().getType()
- .equals(Material.LEATHER_CHESTPLATE)
- && pl.getEquipment().getHelmet().getType()
- .equals(Material.LEATHER_HELMET)) {
- if (pl.getName().equals("DeadFinder")) {
- pl.sendMessage("Рядом с костром");
- pl.sendMessage(Integer.toString(pl.getFreezeTicks()));
- }
- return;
- } else {
- pl.setFreezeTicks(pl.getFreezeTicks() + 40);
- pl.addPotionEffect(
- new PotionEffect(PotionEffectType.SLOW_DIGGING, 3 * 20, 0));
- }
- } else {
- pl.setFreezeTicks(pl.getFreezeTicks() + 40);
- pl.addPotionEffect(
- new PotionEffect(PotionEffectType.SLOW_DIGGING, 3 * 20, 0));
- }
- }
- }
- } else {
- if (Stream
- .of(pl.getEquipment().getBoots(), pl.getEquipment().getLeggings(),
- pl.getEquipment().getChestplate(), pl.getEquipment().getHelmet())
- .allMatch(x -> x != null)) {
- if (pl.getEquipment().getBoots().getType().equals(Material.LEATHER_BOOTS)
- && pl.getEquipment().getLeggings().getType()
- .equals(Material.LEATHER_LEGGINGS)
- && pl.getEquipment().getChestplate().getType()
- .equals(Material.LEATHER_CHESTPLATE)
- && pl.getEquipment().getHelmet().getType()
- .equals(Material.LEATHER_HELMET)) {
- if (pl.getName().equals("DeadFinder")) {
- pl.sendMessage("Не рядом с костром");
- pl.sendMessage(Integer.toString(pl.getFreezeTicks()));
- }
- } else {
- pl.setFreezeTicks(pl.getFreezeTicks() + 40);
- pl.addPotionEffect(new PotionEffect(PotionEffectType.SLOW_DIGGING, 3 * 20, 0));
- }
- } else {
- pl.setFreezeTicks(pl.getFreezeTicks() + 40);
- pl.addPotionEffect(new PotionEffect(PotionEffectType.SLOW_DIGGING, 3 * 20, 0));
- }
- }
- }
- }
- }
- return;
- }
- }, 0L, 10L);
- // SNOW
- // RAIN
- SecondTask = Bukkit.getScheduler().scheduleSyncRepeatingTask(this, new Runnable() {
- @Override
- public void run() {
- for (Player pl : Bukkit.getServer().getOnlinePlayers()) {
- Biome pl_bm = pl.getLocation().getBlock().getBiome();
- int high_bl = pl.getWorld().getHighestBlockAt(pl.getLocation()).getY();
- Block under_pl = pl.getWorld().getBlockAt(pl.getLocation().add(0, -1, 0));
- int pl_pos = pl.getLocation().getBlockY();
- if (RainyBiomes.contains(pl_bm) && pl.getWorld().hasStorm() && pl.getVehicle() == null) {
- if (pl_pos > high_bl) {
- if (RainyBiomesBlocks.contains(under_pl.getType())) {
- pl.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 3 * 20, 0));
- pl.addPotionEffect(new PotionEffect(PotionEffectType.SLOW_DIGGING, 3 * 20, 0));
- }
- }
- }
- }
- return;
- }
- }, 0L, 10L);
- }
- static public Location getLocationString(final String s) {
- if (s == null || s.trim() == "") {
- return null;
- }
- final String[] parts = s.split(":");
- if (parts.length == 4) {
- final World w = Bukkit.getServer().getWorld(parts[0]);
- final int x = Integer.parseInt(parts[1]);
- final int y = Integer.parseInt(parts[2]);
- final int z = Integer.parseInt(parts[3]);
- return new Location(w, x, y, z);
- }
- return null;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement