

NotSafeForWork
Membros-
Total de itens
9 -
Registro em
-
Última visita
Sobre NotSafeForWork

-
dev [Entregue] Oi, Poderia ler ?
tópico respondeu ao Gutyerrez de NotSafeForWork em Pedidos entregues
Plugin básico, conforme solicitado. Source code abaixo para quem tiver interesse em modificar. X1.java: package notsafeforwork.x1; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Location; 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.entity.PlayerDeathEvent; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerTeleportEvent; import org.bukkit.plugin.java.JavaPlugin; import lombok.AccessLevel; import lombok.Getter; import lombok.NonNull; public class X1 extends JavaPlugin implements Listener { @Getter(AccessLevel.PACKAGE) private static X1 x1; @Getter(AccessLevel.PACKAGE) private Location x1Pos1; @Getter(AccessLevel.PACKAGE) private Location x1Pos2; @Getter(AccessLevel.PACKAGE) private Location x1Exit; @Getter(AccessLevel.PACKAGE) private Location x1Wait; @Override public void onEnable() { x1 = this; for (Messages messages : Messages.values()) { getConfig().set("messages." + messages.name(), getConfig().get("messages." + messages.name(), messages.getMessage())); messages.setMessage(getConfig().getString("messages." + messages.name())); } saveConfig(); x1Pos1 = fromString(getConfig().getString("locations.x1Pos1")); x1Pos2 = fromString(getConfig().getString("locations.x1Pos2")); x1Exit = fromString(getConfig().getString("locations.x1Exit")); x1Wait = fromString(getConfig().getString("locations.x1Wait")); Bukkit.getPluginManager().registerEvents(this, this); } @EventHandler public void onPlayerDeathEvent(PlayerDeathEvent event) { X1Data x1Data = X1Data.get(event.getEntity()); if (x1Data != null && x1Data.isRunning()) { Player winner = event.getEntity().getName().equals(x1Data.getPlayer1().getName()) ? x1Data.getPlayer2() : x1Data.getPlayer1(); x1Data.cancelX1(winner); } } @EventHandler public void onPlayerQuitEvent(PlayerQuitEvent event) { X1Data x1Data = X1Data.get(event.getPlayer()); if (x1Data != null) { if (x1Data.isRunning()) { Player winner = event.getPlayer().getName().equals(x1Data.getPlayer1().getName()) ? x1Data.getPlayer2() : x1Data.getPlayer1(); x1Data.cancelX1(winner); return; } x1Data.cancelX1(null); } } @EventHandler(ignoreCancelled = true) public void onPlayerTeleportEvent(PlayerTeleportEvent event) { X1Data x1Data = X1Data.get(event.getPlayer()); if (x1Data != null && x1Data.isRunning() && !x1Data.isTeleportEnabled()) { Player winner = event.getPlayer().getName().equals(x1Data.getPlayer1().getName()) ? x1Data.getPlayer2() : x1Data.getPlayer1(); x1Data.cancelX1(winner); } } @Override public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { if (!(sender instanceof Player)) { sender.sendMessage(Messages.ONLY_PLAYERS.getMessage()); return false; } Player player = (Player) sender; if (args.length == 0) { if (player.hasPermission("notsafeforwork.x1admin")) { player.sendMessage("§cUtilize /" + commandLabel + " <setPos1 | setPos2 | setExit | setWait>"); } player.sendMessage("§cUtilize /" + commandLabel + " <aceitar | desafiar>"); return false; } if (player.hasPermission("notsafeforwork.x1admin")) { if (args[0].equalsIgnoreCase("setPos1")) { x1Pos1 = player.getLocation(); getConfig().set("locations.x1Pos1", locationToString(player.getLocation())); saveConfig(); player.sendMessage("§aFeito."); return true; } if (args[0].equalsIgnoreCase("setPos2")) { x1Pos2 = player.getLocation(); getConfig().set("locations.x1Pos2", locationToString(player.getLocation())); saveConfig(); player.sendMessage("§aFeito."); return true; } if (args[0].equalsIgnoreCase("setWait")) { x1Wait = player.getLocation(); getConfig().set("locations.x1Wait", locationToString(player.getLocation())); saveConfig(); player.sendMessage("§aFeito."); return true; } if (args[0].equalsIgnoreCase("setExit")) { x1Exit = player.getLocation(); getConfig().set("locations.x1Exit", locationToString(player.getLocation())); saveConfig(); player.sendMessage("§aFeito."); return true; } } if (args[0].equalsIgnoreCase("aceitar") || args[0].equalsIgnoreCase("desafiar")) { if (getX1Pos1() == null || getX1Pos2() == null || getX1Exit() == null || getX1Wait() == null) { player.sendMessage(Messages.NOT_OPERATIONAL.getMessage()); return false; } if (args.length != 2) { player.sendMessage("§cUtilize /" + commandLabel + " " + args[0] + " <nick>"); return false; } Player target = Bukkit.getPlayer(args[1]); if (target == null) { player.sendMessage(Messages.PLAYER_NOT_FOUND.getMessage().replace("$targetName", args[1])); return false; } if (args[0].equalsIgnoreCase("aceitar")) { X1Data x1Data = X1Data.get(player); if (x1Data == null || !x1Data.isMember(target)) { player.sendMessage(Messages.X1_NOT_FOUND.getMessage().replace("$targetName", target.getName())); return false; } player.sendMessage(Messages.X1_WAITING_QUEUE.getMessage()); target.sendMessage(Messages.X1_WAITING_QUEUE.getMessage()); x1Data.setTeleportEnabled(true); player.teleport(x1Wait); target.teleport(x1Wait); x1Data.setTeleportEnabled(false); X1Data.next(); return true; } if (args[0].equalsIgnoreCase("desafiar")) { if (X1Data.get(player) != null) { player.sendMessage(Messages.PLAYER_IS_IN_X1.getMessage()); return false; } if (X1Data.get(target) != null) { player.sendMessage(Messages.TARGET_IS_IN_X1.getMessage().replace("$targetName", args[1])); return false; } X1Data x1Data = new X1Data(player, target); x1Data.register(); return true; } return false; } Bukkit.dispatchCommand(sender, commandLabel); return true; } public String locationToString(@NonNull Location location) { return String.format("%s;%s;%s;%s;%s;%s", location.getWorld().getName(), location.getX(), location.getY(), location.getZ(), location.getYaw(), location.getPitch()); } private Location fromString(String str) { try { String[] location = str.split(";"); String worldName = location[0]; double x = Double.parseDouble(location[1]); double y = Double.parseDouble(location[2]); double z = Double.parseDouble(location[3]); float yaw = Float.parseFloat(location[4]); float pitch = Float.parseFloat(location[5]); return new Location(Bukkit.getWorld(worldName), x, y, z, yaw, pitch); } catch (Exception e) { return null; } } enum Messages { ONLY_PLAYERS("&cEste comando só pode ser utilizado por jogadores."), NOT_OPERATIONAL("&cO X1 ainda não está configurado, avise um admin!"), PLAYER_NOT_FOUND("&c$targetName não está online no momento."), X1_NOT_FOUND("&cVocê não tem um desafio de X1 pendente com $targetName."), PLAYER_IS_IN_X1("&cVocê já tem um desafio de X1 pendente."), TARGET_IS_IN_X1("&c$targetName já está em um desafio X1."), INVITE_1("&cVocê convidou $targetName para um X1"), INVITE_2("&cVocê foi convidado para um X1 por $playerName, digite /x1 aceitar $playerName para continuar."), X1_CANCELLED("&cO X1 pendente foi cancelado."), X1_STARTED("&aValendo!"), X1_WAITING_QUEUE("Aguardando fila.."), WIN("&c$playerName venceu o X1!"); private String message; private Messages(String message) { this.message = message; } public String getMessage() { return ChatColor.translateAlternateColorCodes('&', message); } public void setMessage(String message) { this.message = message; } } } X1Data.java package notsafeforwork.x1; import java.util.ArrayList; import java.util.List; import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; import lombok.AccessLevel; import lombok.Getter; import lombok.NonNull; import lombok.Setter; public class X1Data { private static List<X1Data> data = new ArrayList<X1Data>(); @Getter(AccessLevel.PACKAGE) private static X1Data running = null; @Getter(AccessLevel.PACKAGE) private Player player1; @Getter(AccessLevel.PACKAGE) private Player player2; @Getter(AccessLevel.PACKAGE) @Setter(AccessLevel.PACKAGE) private boolean teleportEnabled; public static X1Data get(@NonNull Player player) { for (X1Data data : data) { if (data.player1.getName().equals(player.getName()) || data.player2.getName().equals(player.getName())) { return data; } } return null; } public X1Data(@NonNull Player player1, @NonNull Player player2) { this.player1 = player1; this.player2 = player2; } public static void next() { if (getRunning() == null && !data.isEmpty()) { data.get(0).start(); } } public void register() { if (!bothOnline()) { return; } data.add(this); player1.sendMessage(X1.Messages.INVITE_1.getMessage().replace("$targetName", player2.getName())); player2.sendMessage(X1.Messages.INVITE_2.getMessage().replace("$playerName", player1.getName())); new BukkitRunnable() { @Override public void run() { if (!isRunning() && isRegistered()) { cancelX1(null); } } }.runTaskLater(X1.getX1(), 20 * 15); } public void cancelX1(Player winner) { data.remove(this); running = null; next(); if (player1.isOnline()) { if (winner == null) { player1.sendMessage(X1.Messages.X1_CANCELLED.getMessage()); } else { player1.sendMessage(X1.Messages.WIN.getMessage().replace("$playerName", winner.getName())); } player1.teleport(X1.getX1().getX1Exit()); } if (player2.isOnline()) { if (winner == null) { player2.sendMessage(X1.Messages.X1_CANCELLED.getMessage()); } else { player2.sendMessage(X1.Messages.WIN.getMessage().replace("$playerName", winner.getName())); } player2.teleport(X1.getX1().getX1Exit()); } } private void start() { if (!bothOnline()) { cancelX1(null); return; } running = this; teleportEnabled = true; player1.teleport(X1.getX1().getX1Pos1()); player2.teleport(X1.getX1().getX1Pos2()); teleportEnabled = false; player1.sendMessage(X1.Messages.X1_STARTED.getMessage()); player2.sendMessage(X1.Messages.X1_STARTED.getMessage()); } public boolean isMember(@NonNull Player player) { return player1.getName().equals(player.getName()) || player2.getName().equals(player.getName()); } public boolean isRegistered() { return data.contains(this); } public boolean isRunning() { return running != null && running.equals(this); } private boolean bothOnline() { return player1.isOnline() && player2.isOnline(); } } plugin.yml: name: X1-NOTSAFEFORWORK version: 0.1 main: notsafeforwork.x1.X1 commands: x1: -
dev [Entregue] Oi, Poderia ler ?
tópico respondeu ao Gutyerrez de NotSafeForWork em Pedidos entregues
Isso acontece se demorar mais de 15 segundos para aceitar o X1. Te adicionei no Skype. -
dev [Entregue] Oi, Poderia ler ?
tópico respondeu ao Gutyerrez de NotSafeForWork em Pedidos entregues
Ta aí o download: https://ufile.io/65006 Permission de admin: notsafeforwork.x1admin Comando: /x1 (aparece sintax) Mensagens: Todas na config Qualquer bug/request, me avise. -
dev [Entregue] Oi, Poderia ler ?
tópico respondeu ao Gutyerrez de NotSafeForWork em Pedidos entregues
Ok, tudo pronto. Não uso Skype, tem TS/Discord? -
dev [Entregue] Oi, Poderia ler ?
tópico respondeu ao Gutyerrez de NotSafeForWork em Pedidos entregues
100%, fazendo testes básicos. -
dev [Entregue] Oi, Poderia ler ?
tópico respondeu ao Gutyerrez de NotSafeForWork em Pedidos entregues
80% -
dev [Entregue] Oi, Poderia ler ?
tópico respondeu ao Gutyerrez de NotSafeForWork em Pedidos entregues
Ok, espera 30 minutos, já entrego seu plugin. -
dev [Entregue] Oi, Poderia ler ?
tópico respondeu ao Gutyerrez de NotSafeForWork em Pedidos entregues
Eu vou fazer o seu plugin, mas antes, qual a vantagem de fazer o jogador esperar 1 minuto? -
dev [Entregue] Oi, Poderia ler ?
tópico respondeu ao Gutyerrez de NotSafeForWork em Pedidos entregues
Bom, você quer um plugin de X1 só que com sala de espera, é isso? Quando você diz "lobby", seria uma construção/local ou um servidor lobby (bungeecord)?