Ir para conteúdo

smgabriel

Membros
  • Total de itens

    227
  • Registro em

  • Última visita

Respostas na Comunidade

  1. smgabriel's postagem in Java + Base de dados was marked as the answer   
    Você pode usar o JDBC para se conectar com o banco de dados e checar essas informações.
    Lembrando que você precisa de um driver para se conectar com o banco de dados(caso esteja usando spigot/bukkit e bla bla, já vem com o driver mysql/sqlite).
     
    As URL's abaixo são dos drivers mysql e sqlite, elas serão necessárias para o driver informado se conectar com o banco de dados:
     
    MySQL:
    "jdbc:mysql://" + ip_do_host + ":" + porta + "/" + nome_da_database SQLITE:
    "jdbc:sqlite:" + nome_do_arquivo_sqlite Cada driver tem sua url, caso você não use nenhuma desses bancos, dê uma procurada pelo Google. (jdbc nome do driver url)
     
     
    Podemos usar o método #getConnection, da classe DriverManager, para recuperar a classe java.sql.Connection. A classe Connection mexe com o banco de dados, recuperando, inserindo, deletando, resumindo, podemos fazer tudo com essa classe.
     
    Bem, essa é uma explicação bem resumida mesmo, recomendo dar uma estudada para aprender mais coisas sobre JDBC.
     
    A classe Connection contém um método chamado #prepareStatement ele pode fazer algumas ações como: inserir, recuperar, deletar e atualizar um dado de uma tabela ou até mesmo a tabela. Esse método retorna a classe PreparedStatement.
     
    Exemplo:
    Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/minhadatabase", "root", "456"); Alguns drivers podem receber usuário e senha, o método #getConnection recebe os parâmetros usuário e senha.
     
    Temos:
    public boolean contains(String info) { try { Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/minhadatabase", "root", "456"); // Cria a conexão com o banco de dados PreparedStatement ps = con.prepareStatement("SELECT * FROM tabela WHERE info=?"); // Prepara o statement, informando a seguinte operação: SELECIONE TUDO EM tabela QUE info FOR IGUAL A ?(O valor deve ser informado) ps.setString(1, info); // Para informar o valor, usamos o método #setString, onde ele aceita a posição e a String que deve ser verificada. return ps.executeQuery().next(); // Aqui executamos a consulta, ele retorna uma classe chamada ResultSet, que tem os resultados da consulta. https://docs.oracle.com/javase/8/docs/api/java/sql/ResultSet.html // Esse método checa se existe ou não, caso exista, retorna true, caso contrário retorna false ou sqlexception. } catch (Exception e) { return false; // caso tenha dado algum erro, retorna falso, informando que não existe. } } Eu sinceramente não sei se existe outra forma de verificar se existe ou não um dado na tabela sem ser dessa forma, mas acredito que não. Nunca pesquisei.
     
    Agora podemos usar:
    String info = user.getText() + ":" + "senha.getPassword().toString(); String array[] = new String[2]; array = frase.split(":"); if(contains(info)){ // checando se contém. System.out.println("Infos encontradas na database"); } Acho que deu para entender.
     
    OBS:
    Tome cuidado com essa consulta, ela cria uma conexão com o banco de dados sempre que vai consultar algo.
    Recomendações:
    Tentar manter essa conexão sempre ativa e não abrir mais, armazenar as informações em cache ou abrir só quando necessário.
  2. smgabriel's postagem in [1.11] chest com item was marked as the answer   
    O Bukkit/Spigot não permite que você altere alguns dados do jogo de forma "asynchronous", que não é sincronizado com a thread principal.
    Este evento ChatMessageEvent, é async, ou seja, você não pode fazer praticamente nenhuma alteração do jogo aí e modificar o mundo é uma delas.
     
    Recomendo criar uma espécie de ''ouvinte'' para executar essas funções, por exemplo: o evento ocorre, você faz suas operações e verifica se é para criar o bloco, se for, você envia esses dados para uma Lista por exemplo, o ouvinte vai, obviamente, ouvir e executar a função na thread principal.
    Outra é usar o evento PlayerChatEvent, mas é um método depreciado, em alguns dias, ele pode deixar de existir.
  3. smgabriel's postagem in [Duvida] getEnchantments para String list was marked as the answer   
    List<String> enchants = new ArrayList<>(); for(Enchantment enc : itemstack.getItemMeta().getEnchants().keySet()){ enchants.add(enc.getName()+":"+itemstack.getItemMeta().getEnchants().get(enc)); } FILECONFIGURATION.set("meuitem.enchantments", enchants); Crie uma lista, faça um foreach, adicione os encantamentos na lista e depois sete na config.
    Lembre-se de salvar a config.
    Acho que foi isso que vc quer.
     
    Eu recomendo você usar essa classe, ela te auxilia a salvar/carregar itens com facilidade.
  4. smgabriel's postagem in [Centos7] Conflitos ao instalar phpMyAdmin, alguém sabe resolver? was marked as the answer   
    Como a instalação ''automática'' não funciona, faça a instalação manual.
     
    Tutorial retirado de: https://stackoverflow.com/questions/34060036/have-trouble-installing-phpmyadmin-on-php7-apache-2-4-7-ubuntu
  5. smgabriel's postagem in [Duvida][Centos7] Como atualizo o PHP? was marked as the answer   
    Remove o PHP atual e instala esses pacotes:
    mod_php70u php70u-cli php70u-mysqlnd
  6. smgabriel's postagem in Erro/duvida money configuravel was marked as the answer   
    Com as informações que você deu, você não está chamando o método #register() em nenhum local ou seja, a variável economia sempre será nula.
    Como você verifica se a variável economia não é nula, ele já retorna false no método #contains(), porque ela é nula.
    if(economia != null /*retorna null pq essa varivel é nula*/ && economia.getBalance(p) >= valor){}
  7. smgabriel's postagem in StringBuilder was marked as the answer   
    O próprio nome já define sua função, um construtor de Strings.
    Ou seja, com essa classe você pode criar uma String, editar, fazer o que quiser(até onde ela lhe permite)
    Para usar, basta criar um objeto, os construtores delas permitem você criar uma nova String ou editar uma String existente
    StringBuilder sb = new StringBuilder(); // Criando uma String do zero, de acordo com a descrição, o tamanho inicial é 16 chars String text = "Eae galerinha"; StringBuilder sb2 = new StringBuilder(text); // Editando uma String. Além disso, você pode criar uma String definindo o tamanho dela.
     
    Eu gosto de usar o método append.
    Basicamente, ele acrescenta um novo objeto(int, double, long, String, char entre outros) à String, exemplo:
    String text = "Eae galerinha"; StringBuilder sb = new StringBuilder(); sb.append(text); Além de acrescentar, você pode remover também.
    String text = "Eae galerinha"; StringBuilder sb = new StringBuilder(); sb.delete(0, 3); // Deleta do primeiro caractere até o quarto caractere sb.deleteCharAt(0); // Remove um char de uma determinada localização, a diferença entre o método delete e esse, é visível. Existe diversas possibilidades nesse Builder(exemplo insert), olhe a javadocs.
  8. smgabriel's postagem in Chance was marked as the answer   
    Usa o método random() da classe Math.
    Exemplo:
    double random = Math.random(); if(random <= 0.7D) // 70% de chance else if(random <= 0.01D) // 1% de chance
  9. smgabriel's postagem in Como crio uma db local? was marked as the answer   
    Aparece algum erro? ou coisa do tipo? provavelmente não existe esse arquivo...
    Como eu uso:
    File fileDB = new File[...]; if (!fileDB.exists()) { fileDB.createNewFile(); } Class.forName("org.sqlite.JDBC"); connection = DriverManager.getConnection("jdbc:sqlite:" + fileDB.getAbsolutePath());
  10. smgabriel's postagem in [Ajuda] Ao clicar em uma entidade + Ao bater em uma entidade was marked as the answer   
    1 - Utilize o evento PlayerInteractAtEntityEvent
    2 - Utilize o evento EntityDamageByEntityEvent
     
    Se não conseguiu, olhe os exemplos:
    @EventHandler public void onClickNPC(PlayerInteractAtEntityEvent e) { Entity et = e.getRightClicked(); if(et != null && et instanceof Villager && et.getName() != null && et.getName().equalsIgnoreCase("Aderbal")) { e.getPlayer().sendMessage("O SAM É BRABO"); } } @EventHandler public void onDamageNPC(EntityDamageByEntityEvent e) { Entity et = e.getEntity(); if(e.getDamager() instanceof Player) { if(et instanceof Villager) { Player dmg =(Player)e.getDamager(); ItemStack item = dmg.getItemInHand(); if(item != null && item.getType().equals(Material.STONE_SWORD) && item.getItemMeta() != null && item.getItemMeta().getDisplayName() != null && item.getItemMeta().getDisplayName().equalsIgnoreCase("HIT KILL")){ et.remove(); } } } } Ah, não testei.
  11. smgabriel's postagem in AJUDA COM VILLAGER! API DO CITIZENS was marked as the answer   
    void spawnVillager(){
    Villager v = (Villager) Bukkit.getWorld("world").spawn(new Location(Bukkit.getWorld("world"), 100, Bukkit.getWorld("world").getHighestBlockYAt(100, 100), 100), Villager.class);
    noAI(v);
    v.setBaby();
    v.setCustomName("JUBILEU");
    v.setCustomNameVisible(true);
    }
     
    @EventHandler
    public void onClickEntity(PlayerInteractAtEntityEvent e){
    Entity et = e.getRightClicked();
    if(et.getCustomName().equalsIgnoreCase("JUBILEU")){
    Inventory inv = Bukkit.createInventory(null, 9 , "Inventario do Jubileu");
    e.getPlayer().openInventory(inv);
    }
    }
     
    void noAI(Entity bukkitEntity) {
    net.minecraft.server.v1_8_R3.Entity nmsEntity = ((CraftEntity) bukkitEntity).getHandle();
    NBTTagCompound tag = nmsEntity.getNBTTag();
    if (tag == null) {
    tag = new NBTTagCompound();
    }
    nmsEntity.c(tag);
    tag.setInt("NoAI", 1);
    nmsEntity.f(tag);
    }

     
  12. smgabriel's postagem in XP HELP. was marked as the answer   
    É bem complexo mexer com EXP...
    Tente o método abaixo, o ruim é por que vai ficar com um som que ele ganhou exp..:
    if (getPlayer().getTotalExperience() >= 1000) { int exp = getPlayer().getTotalExperience() - 1000; getPlayer().setTotalExperience(0); getPlayer().setLevel(0); getPlayer().setExp(0); getPlayer().giveExp(exp); Bukkit.broadcastMessage("" + /*????*/getPlayer().getTotalExperience()); } getPlayer() == Player p;
  13. smgabriel's postagem in [AJUDA] ITENS EM GUI was marked as the answer   
    Dye d = new Dye(); d.setColor(DyeColor.BLUE); ItemStack i = d.toItemStack(); i.setAmount(10); p.getInventory().addItem(i);
  14. smgabriel's postagem in [AJUDA] ICONOMY was marked as the answer   
    Você terá que fazer um ''hook'' utilizando o Vault, após baixar o vault, abra sua classe principal e siga esses passos:
    No topo, coloque esse objeto:
    public static Economy eco = null; Agora, adicione esse método em sua classe:
    private boolean setupEconomy(){ RegisteredServiceProvider<Economy> economyProvider = getServer().getServicesManager().getRegistration(net.milkbowl.vault.economy.Economy.class); if (economyProvider != null) { eco = economyProvider.getProvider(); } return (eco != null); } No onEnable, ''chame'' o método setupEconomy():
    @Override public void onEnable() { m = this; setupEconomy(); } Agora, você pode adicionar/retirar  o money do player:
    eco.getBalance("GabrielSm_"); // retorna o money do player eco.bankDeposit("GabrielSm_"/*nick do player, pode usar o método p.getName() também.*/, 10/*quantia que vai ser depositada*/); // deposita money eco.withdrawPlayer("GabrielSm_"/*nick do player, pode usar o método p.getName() também.*/, 10/*quantia que vai ser retirada*/); //retira o money do player
  15. smgabriel's postagem in [Duvida] Comparar Strings was marked as the answer   
    Faça um debugg e veja aonde para.
    Você falou que mesmo usando replace, não adiantou, você usou replace nas duas strings ou apenas em uma?
    Já verificou se o diretorio da config está certo?
    Eu fiz um debugg e aqui funcionou perfeitamente: http://imgur.com/AHxuxJd
    Bukkit.broadcastMessage("[1]"); String a = e.getLine(0).replace("&", "§"); String b = getConfig().getString("placa.linha0").replace("&", "§"); if(a.equalsIgnoreCase(b)){ Bukkit.broadcastMessage("[2]"); System.out.println("SIM"); }else{ Bukkit.broadcastMessage("[3]"); System.out.println("Não"); } Bukkit.broadcastMessage("[4F]"); } Caso não tenha resultados positivos, mostre seu método.
  16. smgabriel's postagem in [Dúvida] Lista de enchantment was marked as the answer   
    Eu fiz uma gambiarra aqui, não sei se vai funcionar, não testei...
    void setEnchantment(List<String> location, ItemStack item) { ItemMeta m = item.getItemMeta(); for (String enc : location) { // retorna uma string por vez da lista if (enc.indexOf(":") >= 1) { // verifica se na string contem mais de um caractere : String[] partes = enc.split(":"); String encNome = partes[0]; // Pega o encantamento int level = Integer.parseInt(partes[1]); // Pega o level do encantamento boolean ignore = Boolean.parseBoolean(partes[2]); // Pega o valor logico(se quer que ultrapasse ou não o limite dos encantamentos) m.addEnchant(Enchantment.getByName(encNome), level, ignore); // adiciona o encantamento ao item } } item.setItemMeta(m); } Na config os encantamentos devem ficar assim: 
    Sword: Encantamentos: - "FIRE_ASPECT:1:true" - "ARROW_INFINITE:1:true"
  17. smgabriel's postagem in [DÚVIDA] COMO REMOVER APENAS 1 ITEM DO INVENTÁRIO? was marked as the answer   
    Fiz esse método mas não cheguei a testar, presumo que vá funcionar: 
    void removeItem(ItemStack item, Player p) { int amount = item.getAmount(); if (amount > 1) { // Se for maior que um item.setAmount(amount - 1); //tira um } else { // caso contrario... p.getInventory().remove(item); //remove o item(se for igual a 1) } }
  18. smgabriel's postagem in Como checar itens inventario was marked as the answer   
    Você pode fazer um loop pegando todos os itens do player, verificar se algum item do inventario é o que você quer e verificar a quantia, por exemplo:
    public Boolean checkItem(Player p, Material type) { Inventory inv = p.getInventory(); for (ItemStack s : inv.getContents()) { if (s != null) { // (não sei se é necessario isso) if (s.getType().equals(type)) { if (s.getAmount() == 30) { Bukkit.broadcastMessage("Yeeaahh"); return true; } } } } return false; } Ah, não testei. 
  19. smgabriel's postagem in Como faço isso? Verificar item e quantidade was marked as the answer   
    Simples, olhe os métodos dessa classe:
    https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/inventory/ItemStack.html
    (o link acima esta bugado)https://hub.spigotmc.org/javadocs/spigot/org/bukkit/inventory/ItemStack.html
    Ok ok, observou que tinha getAmount();?
    Então, este método retorna um INTEGER.
    Só verificar se a quantia do itemstack (getItem(4)) é igual a 1, exemplo:
    Inventory inventory = Bukkit.createInventory(null, 54); ItemStack diamante = new ItemStack(Material.DIAMOND); if(inventory.getItem(4) != null){ // Verifica se o item não é nulo if(inventory.getItem(4).equals(diamante)){ if(inventory.getItem(4).getAmount() == 1){ // Caso o item seja um diamante e a quantia dele é igual 1, vai acontecer algo. }else{ // Caso item seja um diamante e a quantia dele é maior que 1, vai acontecer algo. } }else{ // Caso o item não seja um diamante, vai acontecer algo. }
  20. smgabriel's postagem in SimplesClan was marked as the answer   
    Para fazer o hook: https://dev.bukkit.org/projects/simpleclans/pages/simple-clans1-api
     
    Para pegar a tag do clan:  
    ClanPlayer cp = sc.getClanManager().getClanPlayer(p).getTag(); De uma forma que não causa erros(é... eu acho):
    public void getTag(CommandSender sender, String player) { Player p = Bukkit.getPlayer(player); if(p != null) { if (sc != null) { ClanPlayer cp = sc.getClanManager().getClanPlayer(p); if (cp != null) { Clan clan = cp.getClan(); clan.getTag(); sender.sendMessage("A tag do clan é: "+clan.getTag()); }else{ sender.sendMessage("Este player não tem clan!"); return; } }else{ sender.sendMessage("Algo de errado não esta certo..."); return; } }else{ sender.sendMessage("Player offline!"); } }
  21. smgabriel's postagem in [Entregue] teste was marked as the answer   
    Algo comentar
  22. smgabriel's postagem in [Resolvido] [Duvida] Erro no version: was marked as the answer   
    Você esta compilando o plugin em uma versão do java e executando ele em outra, exemplo: fiz em java 8 e estou tentando iniciar em java 7 = erro.
    Se você compila em java 7, tem que ser executado no java 7;
    Se você compila em java 8, tem que ser executado no java 8;
  23. smgabriel's postagem in [Resolvido] Duvida-MenuGui was marked as the answer   
    Eu compilei o código anterior e não funcionou também,  a parte de cancelar que o player pegue o item, não esta registrada, registre o evento na onEnable  e ele vai funcionar, aqui o código: http://hastebin.com/fecejakibe.java
    Funcionou aqui, creio eu que deve funcionar ai também.
     
     
    @edit
    Link atualizado.
×
×
  • Criar Novo...