Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package ru.dondays.server.login;
- import org.bukkit.*;
- import org.bukkit.command.Command;
- import org.bukkit.command.CommandSender;
- 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.EntityDamageEvent;
- import org.bukkit.event.player.*;
- import org.bukkit.plugin.java.JavaPlugin;
- import com.comphenix.protocol.PacketType;
- import com.comphenix.protocol.ProtocolLibrary;
- import com.comphenix.protocol.events.PacketAdapter;
- import com.comphenix.protocol.events.PacketEvent;
- public class Main
- extends JavaPlugin
- implements Listener {
- private Location spawn;
- @Override
- public void onEnable() {
- this.saveDefaultConfig();
- this.spawn = this.stringToLocation(this.getConfig().getString("Spawn"));
- this.getServer().getPluginManager().registerEvents(this, this);
- try {
- Class.forName("com.comphenix.protocol.ProtocolLibrary");
- ProtocolLibrary.getProtocolManager().addPacketListener(new PacketAdapter(this, new PacketType[] {PacketType.Play.Server.PLAYER_INFO}) {
- @Override
- public void onPacketSending(final PacketEvent e) {
- e.setCancelled(true);
- }
- });
- this.getLogger().info("ProtocolLib found, hiding players with its API");
- } catch(final ClassNotFoundException ignore) {
- this.getServer().getPluginManager().registerEvents(new Listener() {
- @EventHandler
- public void onJoin(final PlayerJoinEvent e) {
- Main.this.getServer().getOnlinePlayers().forEach(player -> {
- player.hidePlayer(e.getPlayer());
- e.getPlayer().hidePlayer(player);
- });
- }
- }, this);
- this.getLogger().info("ProtocolLib not found, using local player-hide API");
- }
- this.getServer().getScheduler().runTaskTimerAsynchronously(this, () -> this.getServer().getWorlds().forEach(world -> {
- world.setStorm(false);
- world.setTime(1200);
- }), 0L, 120L);
- }
- @EventHandler
- public void onJoin(final PlayerJoinEvent e) {
- e.setJoinMessage(null);
- e.getPlayer().setGameMode(GameMode.ADVENTURE);
- if(this.spawn != null) {
- e.getPlayer().teleport(this.spawn);
- } else {
- e.getPlayer().teleport(e.getPlayer().getWorld().getSpawnLocation());
- }
- }
- @EventHandler
- public void onQuit(final PlayerQuitEvent e) {
- e.setQuitMessage(null);
- }
- @EventHandler
- public void onKick(final PlayerKickEvent e) {
- e.setLeaveMessage(null);
- }
- @EventHandler
- public void onPlace(final BlockPlaceEvent e) {
- e.setCancelled(true);
- }
- @EventHandler
- public void onBreak(final BlockBreakEvent e) {
- e.setCancelled(true);
- }
- @EventHandler
- public void onDamage(final EntityDamageEvent e) {
- e.setCancelled(true);
- }
- @EventHandler
- public void onChat(final AsyncPlayerChatEvent e) {
- e.setCancelled(true);
- e.getPlayer().sendMessage("§f[§cAuth§f] §cВы не можете писать в чат на сервере авторизации");
- }
- @EventHandler
- public void onCommand(final PlayerCommandPreprocessEvent e) {
- if(e.getMessage().startsWith("/setspawn")) return;
- e.setCancelled(true);
- e.getPlayer().sendMessage("§f[§cAuth§f] §cВы не можете выполнять команды на сервере авторизации");
- }
- @EventHandler
- public void onInteract(final PlayerInteractEvent e)
- {
- e.setCancelled(true);
- }
- @Override
- public boolean onCommand(final CommandSender sender, final Command command, final String label, final String[] args) {
- if(!(sender instanceof Player)) {
- sender.sendMessage("§f[§cAuthServer§f] §cВы должны быть игроком для выполнения данной команды");
- return false;
- }
- if(!sender.hasPermission("authserver.setspawn")) {
- sender.sendMessage("§f[§cAuthServer§f] §cУ вас недостаточно прав!");
- return false;
- }
- if(args.length == 1 && args[0].equalsIgnoreCase("tpspawn")) {
- ((Player)sender).teleport(((Player)sender).getWorld().getSpawnLocation());
- sender.sendMessage("§f[§cAuthServer§f] Вы телепортированы в точку спавна вашего мира §c(" + this.locationToString(((Player)sender).getLocation(), false));
- return true;
- }
- final Location loc = ((Player)sender).getLocation();
- this.getConfig().set("Spawn", loc);
- this.saveConfig();
- this.spawn = loc;
- sender.sendMessage("§f[§cAuthServer§f] Спавн успешно установлен.");
- return true;
- }
- private Location stringToLocation(final String line) {
- if(line == null) {
- return null;
- }
- final String[] loc = line.split(";");
- World world = Bukkit.getWorld(loc[0]);
- if(world == null) world = Bukkit.createWorld(new WorldCreator(loc[0]).generator("EmptyGenerator"));
- final Location location = new Location(world, Double.parseDouble(loc[1]), Double.parseDouble(loc[2]), Double.parseDouble(loc[3]));
- if(loc.length > 4) {
- location.setPitch(Float.parseFloat(loc[4]));
- location.setYaw(Float.parseFloat(loc[5]));
- }
- return location;
- }
- private String locationToString(Location loc, boolean pitch) {
- String s = loc.getWorld().getName();
- s = s + ";" + loc.getX();
- s = s + ";" + loc.getY();
- s = s + ";" + loc.getZ();
- if(pitch) {
- s = s + ";" + loc.getPitch();
- s = s + ";" + loc.getYaw();
- }
- return s;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement