Advertisement
MrTranzistor

CheckBorder.java

Jun 22nd, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.39 KB | None | 0 0
  1. package net.unique.worldborder;
  2.  
  3. import org.bukkit.Bukkit;
  4. import org.bukkit.Location;
  5. import org.bukkit.Material;
  6. import org.bukkit.configuration.file.FileConfiguration;
  7. import org.bukkit.entity.Player;
  8. import org.bukkit.event.EventHandler;
  9. import org.bukkit.event.Listener;
  10. import org.bukkit.event.player.PlayerMoveEvent;
  11. import org.bukkit.util.Vector;
  12.  
  13. public class CheckBorder implements Listener {
  14.     @EventHandler
  15.     public void checkIsPlayerNearBorder(PlayerMoveEvent e) {
  16.         Player p = e.getPlayer();
  17.         Location l = p.getLocation();
  18.         FileConfiguration config = Main.getInst().getConfig();
  19.         Main plugin = Main.getInst();
  20.         if (config.get("worlds."+l.getWorld())+".middlepoint.w" != null) {
  21.             Location middlepoint = new Location(
  22.                     Bukkit.getWorld(config.getString("worlds."+l.getWorld().getName()+".middle.w")),
  23.                     config.getDouble("worlds"+l.getWorld().getName()+".middle.x"),
  24.                     config.getDouble("worlds"+l.getWorld().getName()+".middle.y"),
  25.                     config.getDouble("worlds"+l.getWorld().getName()+".middle.z"));
  26.             if (p.getLocation().distance(middlepoint) == config.getDouble("worlds"+l.getWorld().getName()+".radius")) {
  27.                 String direction = Utils.getCardinalDirection(p);
  28.                 Utils.clearBlocks(l, direction);
  29.                 switch (direction) {
  30.                 case "N":
  31.                     new Location(l.getWorld(), l.getX(), l.getY(), l.getZ() - 1).getBlock().setType(Material.GLASS);
  32.                     break;
  33.                 case "E":
  34.                     new Location(l.getWorld(), l.getX() + 1, l.getY(), l.getZ()).getBlock().setType(Material.GLASS);
  35.                     break;
  36.                 case "S":
  37.                     new Location(l.getWorld(), l.getX(), l.getY(), l.getZ() + 1).getBlock().setType(Material.GLASS);
  38.                     break;
  39.                 case "W":
  40.                     new Location(l.getWorld(), l.getX() - 1, l.getY(), l.getZ()).getBlock().setType(Material.GLASS);
  41.                     break;
  42.                 }
  43.             } else if (p.getLocation().distance(middlepoint) < config.getDouble("worlds"+l.getWorld().getName()+".radius")) {
  44.                 String direction = Utils.getCardinalDirection(p);
  45.                 Utils.clearBlocks(l, direction);
  46.                 Vector vector = new Vector(0, 0, 0);
  47.                 switch (direction) {
  48.                 case "N":
  49.                     // -Z
  50.                     vector = new Vector(0, 1, -1);
  51.                     break;
  52.                 case "E":
  53.                     // +X
  54.                     vector = new Vector(1, 1, 0);
  55.                     break;
  56.                 case "S":
  57.                     // +Z
  58.                     vector = new Vector(0, 1, 1);
  59.                     break;
  60.                 case "W":
  61.                     // -X
  62.                     vector = new Vector(-1, 1, 0);
  63.                     break;
  64.                 }
  65.                 p.setVelocity(vector);
  66.             }
  67.         }
  68.     }
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement