Advertisement
Guest User

LoginServer

a guest
Apr 23rd, 2017
208
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.14 KB | None | 0 0
  1. package ru.dondays.server.login;
  2.  
  3. import org.bukkit.*;
  4. import org.bukkit.command.Command;
  5. import org.bukkit.command.CommandSender;
  6. import org.bukkit.entity.Player;
  7. import org.bukkit.event.EventHandler;
  8. import org.bukkit.event.Listener;
  9. import org.bukkit.event.block.BlockBreakEvent;
  10. import org.bukkit.event.block.BlockPlaceEvent;
  11. import org.bukkit.event.entity.EntityDamageEvent;
  12. import org.bukkit.event.player.*;
  13. import org.bukkit.plugin.java.JavaPlugin;
  14. import com.comphenix.protocol.PacketType;
  15. import com.comphenix.protocol.ProtocolLibrary;
  16. import com.comphenix.protocol.events.PacketAdapter;
  17. import com.comphenix.protocol.events.PacketEvent;
  18.  
  19. public class Main
  20. extends JavaPlugin
  21. implements Listener {
  22.  
  23. private Location spawn;
  24.  
  25. @Override
  26. public void onEnable() {
  27. this.saveDefaultConfig();
  28. this.spawn = this.stringToLocation(this.getConfig().getString("Spawn"));
  29. this.getServer().getPluginManager().registerEvents(this, this);
  30. try {
  31. Class.forName("com.comphenix.protocol.ProtocolLibrary");
  32. ProtocolLibrary.getProtocolManager().addPacketListener(new PacketAdapter(this, new PacketType[] {PacketType.Play.Server.PLAYER_INFO}) {
  33. @Override
  34. public void onPacketSending(final PacketEvent e) {
  35. e.setCancelled(true);
  36. }
  37. });
  38. this.getLogger().info("ProtocolLib found, hiding players with its API");
  39. } catch(final ClassNotFoundException ignore) {
  40. this.getServer().getPluginManager().registerEvents(new Listener() {
  41. @EventHandler
  42. public void onJoin(final PlayerJoinEvent e) {
  43. Main.this.getServer().getOnlinePlayers().forEach(player -> {
  44. player.hidePlayer(e.getPlayer());
  45. e.getPlayer().hidePlayer(player);
  46. });
  47. }
  48. }, this);
  49. this.getLogger().info("ProtocolLib not found, using local player-hide API");
  50. }
  51. this.getServer().getScheduler().runTaskTimerAsynchronously(this, () -> this.getServer().getWorlds().forEach(world -> {
  52. world.setStorm(false);
  53. world.setTime(1200);
  54. }), 0L, 120L);
  55. }
  56.  
  57. @EventHandler
  58. public void onJoin(final PlayerJoinEvent e) {
  59. e.setJoinMessage(null);
  60. e.getPlayer().setGameMode(GameMode.ADVENTURE);
  61. if(this.spawn != null) {
  62. e.getPlayer().teleport(this.spawn);
  63. } else {
  64. e.getPlayer().teleport(e.getPlayer().getWorld().getSpawnLocation());
  65. }
  66. }
  67.  
  68. @EventHandler
  69. public void onQuit(final PlayerQuitEvent e) {
  70. e.setQuitMessage(null);
  71. }
  72.  
  73. @EventHandler
  74. public void onKick(final PlayerKickEvent e) {
  75. e.setLeaveMessage(null);
  76. }
  77.  
  78. @EventHandler
  79. public void onPlace(final BlockPlaceEvent e) {
  80. e.setCancelled(true);
  81. }
  82.  
  83. @EventHandler
  84. public void onBreak(final BlockBreakEvent e) {
  85. e.setCancelled(true);
  86. }
  87.  
  88. @EventHandler
  89. public void onDamage(final EntityDamageEvent e) {
  90. e.setCancelled(true);
  91. }
  92.  
  93. @EventHandler
  94. public void onChat(final AsyncPlayerChatEvent e) {
  95. e.setCancelled(true);
  96. e.getPlayer().sendMessage("§f[§cAuth§f] §cВы не можете писать в чат на сервере авторизации");
  97. }
  98.  
  99. @EventHandler
  100. public void onCommand(final PlayerCommandPreprocessEvent e) {
  101. if(e.getMessage().startsWith("/setspawn")) return;
  102. e.setCancelled(true);
  103. e.getPlayer().sendMessage("§f[§cAuth§f] §cВы не можете выполнять команды на сервере авторизации");
  104. }
  105.  
  106. @EventHandler
  107. public void onInteract(final PlayerInteractEvent e)
  108. {
  109. e.setCancelled(true);
  110. }
  111.  
  112. @Override
  113. public boolean onCommand(final CommandSender sender, final Command command, final String label, final String[] args) {
  114. if(!(sender instanceof Player)) {
  115. sender.sendMessage("§f[§cAuthServer§f] §cВы должны быть игроком для выполнения данной команды");
  116. return false;
  117. }
  118. if(!sender.hasPermission("authserver.setspawn")) {
  119. sender.sendMessage("§f[§cAuthServer§f] §cУ вас недостаточно прав!");
  120. return false;
  121. }
  122. if(args.length == 1 && args[0].equalsIgnoreCase("tpspawn")) {
  123. ((Player)sender).teleport(((Player)sender).getWorld().getSpawnLocation());
  124. sender.sendMessage("§f[§cAuthServer§f] Вы телепортированы в точку спавна вашего мира §c(" + this.locationToString(((Player)sender).getLocation(), false));
  125. return true;
  126. }
  127. final Location loc = ((Player)sender).getLocation();
  128. this.getConfig().set("Spawn", loc);
  129. this.saveConfig();
  130. this.spawn = loc;
  131. sender.sendMessage("§f[§cAuthServer§f] Спавн успешно установлен.");
  132. return true;
  133. }
  134.  
  135. private Location stringToLocation(final String line) {
  136. if(line == null) {
  137. return null;
  138. }
  139. final String[] loc = line.split(";");
  140. World world = Bukkit.getWorld(loc[0]);
  141. if(world == null) world = Bukkit.createWorld(new WorldCreator(loc[0]).generator("EmptyGenerator"));
  142. final Location location = new Location(world, Double.parseDouble(loc[1]), Double.parseDouble(loc[2]), Double.parseDouble(loc[3]));
  143. if(loc.length > 4) {
  144. location.setPitch(Float.parseFloat(loc[4]));
  145. location.setYaw(Float.parseFloat(loc[5]));
  146. }
  147. return location;
  148. }
  149.  
  150. private String locationToString(Location loc, boolean pitch) {
  151. String s = loc.getWorld().getName();
  152. s = s + ";" + loc.getX();
  153. s = s + ";" + loc.getY();
  154. s = s + ";" + loc.getZ();
  155. if(pitch) {
  156. s = s + ";" + loc.getPitch();
  157. s = s + ";" + loc.getYaw();
  158. }
  159. return s;
  160. }
  161. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement