-
Total de itens
188 -
Registro em
-
Última visita
Respostas na Comunidade
-
FilipeNock's postagem in [Duvida] Fazer uma scoreboard was marked as the answer
Continuando o Kaway falou com algumas correções.. voce pode usar os teams para setar 48 caracteres na score
setando a
prefix, entry, e suffix fiz um exemplo
public static void setScore(Player player) { Scoreboard s = Bukkit.getScoreboardManager().getNewScoreboard(); Objective o = s.registerNewObjective("nock", "dummy"); o.setDisplaySlot(DisplaySlot.SIDEBAR); o.setDisplayName("§e§lSKY WARS"); //REGISTRANDO O TEAM DO SLOT 1 Team team = s.registerNewTeam("SLOT_1"); //DIVIDINDO 16 LETRAS PARA PREFIX E 16 PARA SUFFIX String somente16letras1 = "§bsomente 48 c"; String entry16letras = "aracteres aqui"; String somente16letras3 = " para score"; team.setPrefix(somente16letras1); team.addEntry(entry16letras); //ENTRY DO SCORE team.setSuffix(somente16letras3); //SETANDO O SCORE DE ACORDO COM A ENTRY o.getScore(entry16letras).setScore(1); player.setScoreboard(s); } public static void updateScore(Player player) { Scoreboard b = player.getScoreboard(); String randomcolor = "§"+new Random().nextInt(9); //PEGANDO O TEAM Team team = b.getTeam("SLOT_1"); //DIVIDINDO 16 LETRAS PARA PREFIX E 16 PARA SUFFIX String somente16letras1 = randomcolor+"somente 48 c"; //randomcolor é só pra pegar uma cor aleatoria String entry16letras = "aracteres aqui"; String somente16letras3 = " para score"; team.setPrefix(somente16letras1); team.addEntry(entry16letras); //ENTRY DO SCORE team.setSuffix(somente16letras3); } RESULTADO:
Se quiser pode usar minha API
https://hastebin.com/atetekirup.java
Como usar:
https://hastebin.com/agitujejun.cs
-
FilipeNock's postagem in Sistema de porcentagem was marked as the answer
//LEVEL | MAX | QUANTIDADE DE BARS | barCHAR | COR DOS COMPLETOS | COR DOS INCOMPLETOS p.sendMessage(getProgressBar(30, 100, 20, "|", "§a", "§7")); Outro exemplo:
int level = 20; //LEVEL DO PLAYER; String bar = getProgressBar(level, 100, 40, "|", "§a", "§7"); p.sendMessage(bar+" §a"+level+"%"); Codigo:
public String getProgressBar(int current, int max, int totalBars, String barChar, String completedColor, String notCompletedColor) { float percent = (float) current / max; int progressBars = (int) (totalBars * percent); return StringUtils.repeat(completedColor + barChar, progressBars)+StringUtils.repeat(notCompletedColor + barChar, totalBars - progressBars); } Resultado:
-
FilipeNock's postagem in Como pegar o nome do fundador do clan was marked as the answer
Uso o simpleclans e pra pegar o primeiro dono no caso o que criou o clan uso isso
public void test(Player player) { Clan clan = SimpleClans.getInstance().getClanManager().getClanByPlayerName(player.getName()); ClanPlayer cplayer = null; for (ClanPlayer cp : clan.getLeaders()) { if (cplayer == null) cplayer = cp; if (cp.getJoinDate() < cplayer.getJoinDate()) { cplayer = cp; } } cplayer.getName(); //RETORNA O NOME DO LIDER DO CLAN Player lider = Bukkit.getPlayer(cplayer.getName()); //RETORNA O LIDER (SE ESTIVER ONLINE) OBS: tem que checar se o clan não é nulo no caso se o player nao estiver em um clan vai dar erro
-
FilipeNock's postagem in [Duvida] Como usar PlayerPoints, adicionar saldo e retirar! was marked as the answer
https://dev.bukkit.org/projects/playerpoints/pages/api
Ai tem todas instruções
-
FilipeNock's postagem in Evento autoiniciar was marked as the answer
no java é simples no seu plugin deve ter um task ou seja executando de hora em hora ou minuto em minuto vai por voce!
LocalDate data = LocalDate.now(); Calendar calender = Calendar.getInstance(TimeZone.getTimeZone("BRST")); if (data.getDayOfWeek() == DayOfWeek.SUNDAY || data.getDayOfWeek() == DayOfWeek.FRIDAY) { System.out.println(calender.getTime().getHours()+":"+calender.getTime().getMinutes()); } usando esse exemplo voce pode checar o dia da semana e o horario
calender.getTime().getHours()
calender.getTime().getMinutes()
calender.getTime().getSeconds()
-
FilipeNock's postagem in [Duvida] Como remover essas tag do Item was marked as the answer
ItemStack is = #; ItemMeta im = is.getItemMeta(); im.addItemFlags(ItemFlag.HIDE_ATTRIBUTES); im.addItemFlags(ItemFlag.HIDE_ENCHANTS); im.addItemFlags(ItemFlag.HIDE_UNBREAKABLE); im.addItemFlags(ItemFlag.HIDE_POTION_EFFECTS); is.setItemMeta(im); Isso foi testado na 1.8 nas versões anteriores pode nao ter
-
FilipeNock's postagem in UUID na config que contem was marked as the answer
public void setNome(Player player, String nome) { getConfig().set(nome, player.getUniqueId().toString()); saveConfig(); } @EventHandler public void check(AsyncPlayerPreLoginEvent e) { //NOME QUE O PLAYER ESTA ENTRANDO String player = e.getName(); //CHECA SE ESTE NOME CONTEM NA CONFIG if (getConfig().contains(player)) { //SE CONTER PEGA O UUID SALVO LÁ String uuidsalvo = getConfig().getString(player); //SE O UUID SALVO NAO FOR O DELE IRA KIKAR if (!e.getUniqueId().toString().equalsIgnoreCase(uuidsalvo)) { e.disallow(Result.KICK_OTHER, "Voce nao pode entrar com este Nick"); } } } -
FilipeNock's postagem in Cancelar Drop De um player quando morre was marked as the answer
Basicamente ele vai dropar todos os items, o que voce precisa fazer é ver os items que são armaduras e setar para o player quando ele renascer
public HashMap<Player, ItemStack[]> pitems = new HashMap<>(); @EventHandler public void playerd(PlayerDeathEvent e) { Player p = e.getEntity(); pitems.put(p, p.getInventory().getArmorContents()); e.getDrops().removeAll(Arrays.asList(p.getInventory().getArmorContents())); } @EventHandler public void playerr(PlayerRespawnEvent e) { Player p = e.getPlayer(); if (pitems.containsKey(p)) { p.getInventory().setArmorContents(pitems.get(p)); } } isso é só um exemplo n sei se funciona fiz pelo navegador msm mas se vc pensar um pouco consegue fazer melhor!
EDIT:
public HashMap<Player, ItemStack[]> pitems = new HashMap<>(); public HashMap<Player, ItemStack[]> pinvitems = new HashMap<>(); public boolean salvarInventario = false; public boolean salvarArmaduras = true; @EventHandler public void playerd(PlayerDeathEvent e) { Player p = e.getEntity(); if (salvarArmaduras) { pitems.put(p, p.getInventory().getArmorContents()); e.getDrops().removeAll(Arrays.asList(p.getInventory().getArmorContents())); } if (salvarInventario) { pinvitems.put(p, p.getInventory().getContents()); e.getDrops().removeAll(Arrays.asList(p.getInventory().getContents())); } } @EventHandler public void playerr(PlayerRespawnEvent e) { Player p = e.getPlayer(); if (pitems.containsKey(p)) { p.getInventory().setArmorContents(pitems.get(p)); pitems.remove(p); } if (pinvitems.containsKey(p)) { p.getInventory().setContents(pinvitems.get(p)); pinvitems.remove(p); } } -
FilipeNock's postagem in [Duvida] Face do pistao was marked as the answer
@EventHandler public void placee(BlockPlaceEvent e) { if (e.getBlock().getType() == Material.PISTON_BASE) { Block b = e.getBlockPlaced(); //0 - PARA BAIXO //1 - PARA CIMA //2, 3 ,4 ,5 são para rotação do pistao //ISSO SÓ FUNCIONA PRA BLOCOS, SE VC TENTAR ISSO PARA BAUS E PLACAS //TERA QUE FAZER DIFERENTE b.setData((byte)0, true); b.getState().update(); } }
-
FilipeNock's postagem in [Dúvida] Placa Colocada was marked as the answer
public static Block getBlockBehindSign(Block block) {
if (block.getType().equals(Material.WALL_SIGN))
switch (block.getData()) {
case 2:
return block.getRelative(BlockFace.WEST);
case 3:
return block.getRelative(BlockFace.EAST);
case 4:
return block.getRelative(BlockFace.SOUTH);
case 5:
return block.getRelative(BlockFace.NORTH);
}
return null;
}
Block block = getBlockBehindSign(BLOCO DA PLACA)
-
FilipeNock's postagem in Sistema de resetar arena com Problemas! was marked as the answer
Pode fechar consegui resolver!! depois de horas
Simplesmente antes de spawnar a cage eu n usei a localização salva no objeto criei uma nova Localização com os dados salvos
Location teleportLoc = new Location(Bukkit.getWorld(getName()), is.getSpawn().getX(), is.getSpawn().getY(), is.getSpawn().getZ(), is.getSpawn().getYaw(), is.getSpawn().getPitch()); Util.setSoloCage(teleportLoc, cage.getItem().getType(), cage.getItem().getData().getData()); -
FilipeNock's postagem in Duvida was marked as the answer
se vc vai fazer um rankup o correto seria criar um Objeto "Rank" e armazenar todas as informações nele
caso contrario se vc vai mandar só as mensagens
for (String rank : getConfig().getConfigurationSection("Ranks").getKeys(false)) { String id = getConfig().getString("Ranks." +rank); p.sendMessage(id + " - " + rank); } -
FilipeNock's postagem in Duvida was marked as the answer
faz um item Deserializer fiz um aqui rapidão pra vc ver
public ItemStack deserializeItem(String item) { String[] split = item.split(" : "); ItemStack stack = new ItemStack(Material.AIR); if (split.length == 1) { stack = new ItemStack(Material.getMaterial(split[0])); } if (split.length == 2) { stack = new ItemStack(Material.getMaterial(split[0]), 1, (short)1, Byte.valueOf(split[1])); } if (split.length == 3) { stack = new ItemStack(Material.getMaterial(split[0]), 1, (short)1, Byte.valueOf(split[1])); ItemMeta meta = stack.getItemMeta(); meta.setDisplayName(split[2].replace("&", "§")); stack.setItemMeta(meta); } return stack; } Na Config:
Items: #ITEM : DATA : NOME - 'DIAMOND_SWORD : 0 : &bEspada Foda' - 'DIAMOND : 0 : &6Meu Diamante' - 'WOOL : 5 : &9La Colorida' para dar os items para o player
public void darItems(Player player) { for (String item : getConfig().getStringList("Items")) { ItemStack temp = deserializeItem(item); player.getInventory().addItem(temp); } } o seu método de deserializar os items pode conter tudo, Lore enchants então depende mt da sua capacidade de fazer fiz isso em uns 5 minutos
EDIT:
Fiz um mais complexo com lore e algumas coisas diferentes
https://hastebin.com/nahawecoyo.vbs
Config:
Items: #ITEM : DATA : name=NOME : lore=LORE - '276 : 0 : name=&bEspada Foda : lore=&bLinha1, &6Linha2, &9Linha3' - 'DIAMOND : 0 : name=&6Meu Diamante' - '35 : 5 : name=&9La Colorida' -
FilipeNock's postagem in messages.yml was marked as the answer
o plugin é sua main, seria setup(this)
eu fiz um Objeto pra config isso porque eu costumo criar vários tipos de arquivos separados
https://pastebin.com/PVyYYg8J
na sua Main
-
FilipeNock's postagem in Sistema de licença was marked as the answer
public void onEnable() { if (!getServer().getIp().equals("192.168.0.0")) { Bukkit.getConsoleSender().sendMessage("§cVOCE NAO TEM A LICENÇA PARA USAR ESTE PLUGIN"); getPluginLoader().disablePlugin(this); } } '-- Coloca o ip do servidor ali! mas isso é fácil de burlar com qualquer bytecode editor vc pode modificar isso! voce pode usar um obfuscador que mude as strings, assim evita que o plugin seja alterado! eu uso um chamado Stringer Obfuscator
exemplo:
-
FilipeNock's postagem in Linhas da scoreboard duplicando was marked as the answer
usa essa API, feita pelo meu amigo @GremoryDev
https://pastebin.com/cVLgAjp2
public HashMap<Player, ScoreManager> scoreboard = new HashMap<>(); //invoca isso quando o player entrar no servidor public void AddPlayertoScoreboard(Player player) { ScoreManager board = new ScoreManager(player, "§E§LTITULO") { @Override public String placeHolders(String str) { return str.replace("%players%", Bukkit.getOnlinePlayers().size()+"").replace("%player%", player.getName()); } }; board.add("LINHA-1"); board.blank(); //ESPAÇO board.add("LINHA-2"); board.blank(); //ESPAÇO board.add("LINHA-3"); board.updateScoreboard(); if (scoreboard.containsKey(player)) { scoreboard.remove(player); } scoreboard.put(player, board); } public void onEnable() { Bukkit.getScheduler().runTaskTimer(this, new Runnable() { @Override public void run() { for (ScoreManager board : scoreboard.values()) { board.updateScoreboard(); } } }, 0, 20); } no onenable vc cria um scheduler para ele fazer update
-
FilipeNock's postagem in [Ajuda] config subistituindo valor was marked as the answer
File file = new File(Main.getInstance().getDataFolder() + "/livros/" + player + ".yml"); YamlConfiguration edit = YamlConfiguration.loadConfiguration(file); edit.set("Resposta.1", "teste"); try { edit.save(file); } catch (IOException e) { e.printStackTrace(); } eu uso esse método e funciona
-
FilipeNock's postagem in [Dúvida] Por que tá funcionando no inventário do Player? was marked as the answer
@EventHandler
public void on(InventoryClickEvent e) {
e.getClickedInventory(); //INVENTARIO CLICADO
e.getWhoClicked(); //PLAYER
if (e.getCurrentItem() == null) {
return;
}
if (e.getClickedInventory().getName().equals("§bMENU")) {
Player p = (Player) e.getWhoClicked();
e.setCancelled(true);
}
}