Ir para conteúdo

[Old] NyRankUP - Plugin de rankup antigo que eu fiz.


Pica-Pau

Posts Recomendados

Não vou enrolar muito, direto ao ponto. Esse é um plugin de rankup antigo que eu fiz.

Eu nem sei como o sistema de funciona direito, mas se eu revisar um pouco o código eu começo a entender e atualizo eles.

 

Sistema de licenças integrado no plugin:

Esse plugin tem uma classe integrada nela.

Se você quiser pode pegar e usar como base pra seu plugin, mas lembre-se. Ele é gratuito.

Não precisa colocar nenhuma licença. Só colocar na pasta e ligar o servidor.

 

Dependencias:

Vault
LegendChat

 

 

Comandos:

/rankup - Upar rank

/ranktop - Lista de jogadores com ranks elevados

/rankreset - Resetar seu rank

/rankreload - Recarregar a configuração e ranks

/ranks - Ver todos os ranks disponíveis (VERDE = seu rank atual)

 

Config:

####################################################
# +----------------------------------------------+ #
# |                   NyRankUP                   | #
# |          Plugin de RankUP by DevNatan        | #
# |    * Suporte: https://nyeyes.tk/suporte/'>https://nyeyes.tk/suporte/ *   | #
# |                                              | #
# - Versões BETA podem conter bugs. Fique atento - #
# +----------------------------------------------+ #
####################################################

# Prefixo que irá aparecer em todas as mensagens.
prefixo: '&6[NyRankUP] &8&l| &7'

# Comando que será usado para subir de rank.
comando: '/rankup'

# Rank inicial do jogador ao entrar no servidor.
# Você deve colocar a posição do rank.
rank-inicial: 1

# Tempo de auto-save para salvar todos os rank uppers (em segundos).
auto-save: 600

# Enviar uma mensagem a todos os players quando um jogador upar seu rank.
broadcast: true

# Simbolo da economia.
# Coloque 'default' para usar o padrão do plugin de economia.
simbolo: default

# O Título do menu da lista de ranks disponíveis.
menuTitulo: '&cNyRankUP &8» &4Ranks'

# Caso não saiba seus dados, acesse: https://nyeyes.tk/suporte
# Informações da licença. Usúario do site, senha e licença.
licenca:
  usuario: '<seu-usuario>'
  senha: '<sua-senha>'
  licenca: '<sua-licenca>'

# Informações do banco de dados.
# Para usar MySQL (phpMyAdmin), habilite a opção <database.use>
database:
  usar: false
  host: localhost
  porta: 3306
  usuario: root
  senha: <senha>
  nome: 'nyrankup' 

 

Mensagens:

####################################################
# +----------------------------------------------+ #
# |                   NyRankUP                   | #
# |          Plugin de RankUP by DevNatan        | #
# |    * Suporte: https://nyeyes.tk/suporte/'>https://nyeyes.tk/suporte/ *   | #
# |                                              | #
# - Versões BETA podem conter bugs. Fique atento - #
# -   Placeholders: https://nyeyes.tk/nyrankup   - #
# +----------------------------------------------+ #
####################################################

noRankUpFirst: '&cVocê não pode resetar seu rank, ainda está no primeiro!'
noRankUpLast: '&cVocê não pode upar, está no último rank!
  &cResete seu rank usando &e/rankreset. &cO Dinheiro gasto com os ranks upados não serão devolvidos'
noPermission: '&cVocê não tem permissão para fazer isto!'
noEconomy: '&cNão foi possível encontrar uma fonte de economia.
  &cContate um administrador!'
noMoney: '&cVocê não tem dinheiro suficiente para upar de rank.
 &cConsiga mais &e{0} &cpara upar!'
reloaded: '&aRanks, mensagens e configuração recarregados!'
rankListHeader: '&eRanks:'
rankListFormat: '  &8» &7(&f{0}&7) &f{1} &7{2}'
rankListFormatRanked: '  &8» &7(&a{0}&7) &a{1} &7{2}'
rankTopHeader: '&eTop 10 Ranks:'
rankTopFormat: '  &8» &7(&f{0}&7) &f{1} &7{2}'
rankTopFormatRanked: '  &8» &7(&a{0}&7) &a{1} &7{2}'
rankedUp: '&aVocê subiu para o rank &6{0}&a!'
rankedUpBroadcast: '&8» &e{0} &7subiu para o rank &6{1}&7!'
 

 

Ranks:

####################################################
# +----------------------------------------------+ #
# |                   NyRankUP                   | #
# |          Plugin de RankUP by DevNatan        | #
# |    * Suporte: https://nyeyes.tk/suporte/'>https://nyeyes.tk/suporte/ *   | #
# |                                              | #
# - Versões BETA podem conter bugs. Fique atento - #
# -   Placeholders: https://nyeyes.tk/nyrankup   - #
# +----------------------------------------------+ #
####################################################

easy:
  posicao: 1
  nome: Easy
  preco: 0
  prefixo: '&a[Easy]'
  comandos:
    - '/say &a%player% &7subiu para o rank &a%rank-prefixo%'
  menu:
    slot: 0
    icone: '276'
    display: '&e» &f%rank-posicao%. &7%rank-nome%'
    lore:
      - '&aLinha 1'
      - '&bLinha 2'
      - '&cLinha 3'
medium:
  posicao: 2
  nome: Medium
  preco: 5000.0
  prefixo: '&b[Medium]'
  comandos:
    - '/say &a%player% &7subiu para o rank &a%rank-prefixo%'
  menu:
    slot: 1
    icone: '277'
    display: '&e» &f%rank-posicao%. &7%rank-nome%'
    lore:
      - '&aLinha 1'
      - '&bLinha 2'
      - '&cLinha 3'
hard:
  posicao: 3
  nome: Hard
  preco: 10000.0
  prefixo: '&c[Hard]'
  comandos:
    - '/say &a%player% &7subiu para o rank &a%rank-prefixo%'
  menu:
    slot: 2
    icone: '278'
    display: '&e» &f%rank-posicao%. &7%rank-nome%'
    lore:
      - '&aLinha 1'
      - '&bLinha 2'
      - '&cLinha 3'
 

 

 

Imagens:

 

 

API:

NyRankAPI api = NyRankUP.getAPI();
package tk.nyeyes.projetos.nyrankup;

import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.UUID;

import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player;

import tk.nyeyes.projetos.nyrankup.objects.Rank;
import tk.nyeyes.projetos.nyrankup.objects.RankUpper;
import tk.nyeyes.projetos.nyrankup.system.Manager;

public class NyRankAPI {
	
	private Manager m;
	
	private NyRankAPI(Manager m) {
		this.m = m;
	}
	
	/**
	 * Retorna todos os ranks existentes em uma lista.
	 * @return ArrayList<Rank>
	 */
	public List<Rank> getRanks() {
		return m.getRanks();
	}
	
	/**
	 * Obter um Rank através de sua posição.
	 * @param paramPosition = posição do rank.
	 * @return Rank
	 */
	public Rank getRank(int paramPosition) {
		return m.getRank(paramPosition);
	}
	
	/**
	 * Obter um Rank através de seu nome.
	 * @param paramName = nome do rank.
	 * @return Rank
	 */
	public Rank getRank(String paramName) {
		return m.getRank(paramName);
	}
	
	/**
	 * Obter um Rank através de seu prefixo.
	 * @param paramPrefix = prefixo do rank
	 * @return Rank
	 */
	public Rank getRankByPrefix(String paramPrefix) {
		return m.getRankByPrefix(paramPrefix);
	}
	
	public Rank getDefaultRank() {
		return m.getRank(1);
	}
	
	/**
	 * Retorna todos os RankUppers existentes em uma lista.
	 * @return ArrayList<RankUpper>
	 */
	public List<RankUpper> getRankUppers() {
		return m.getRankUppers();
	}
	
	/**
	 * Obter um RankUpper através de sua UUID.
	 * @param paramUuid = uuid do jogador
	 * @return RankUpper
	 */
	public RankUpper getRankUpper(UUID paramUuid) {
		return m.getPlayerRankByUuid(paramUuid);
	}
	
	/**
	 * Obter um RankUpper através da interface Player.
	 * @param paramPlayer = interface Player
	 * @return RankUpper
	 */
	public RankUpper getRankUpperByPlayer(Player paramPlayer) {
		return m.getPlayerRankByPlayer(paramPlayer);
	}
	
	/**
	 * Obter um RankUpper através da interface OfflinePlayer.
	 * @param paramOfflinePlayer = interface OfflinePlayer
	 * @return RankUpper
	 */
	public RankUpper getRankUpperByOfflinePlayer(OfflinePlayer paramOfflinePlayer) {
		return m.getPlayerRankByOfflinePlayer(paramOfflinePlayer);
	}
	
	/**
	 * Obter um RankUpper através do seu nome.
	 * @param paramName = nome do jogador.
	 * @return RankUpper
	 * @deprecated O Nome pode estar em Lowercase/Uppercase que será
	 * detectado da mesma forma.
	 */
	@Deprecated
	public RankUpper getRankUpperByName(String paramName) {
		return m.getPlayerRankByName(paramName);
	}
	
	/**
	 * Retorna o próximo rank do jogador.
	 * @param paramUuid = UUID do jogador.
	 * @return Rank
	 */
	public Rank getNextRank(UUID paramUuid) {
		RankUpper ru = getRankUpper(paramUuid);
		
		for(Rank r : getRanks()) {
			if(Integer.valueOf(ru.getRank().getPosition() + 1).equals(r.getPosition())) {
				return r;
			}
		} return ru.getRank();
	}
	
	/**
	 * Retorna o próximo rank do jogador.
	 * @param paramUuid = UUID do jogador.
	 * @return Rank
	 */
	public Rank getNextRank(Player paramPlayer) {
		return getNextRank(paramPlayer.getUniqueId());
	}
	
	/**
	 * Retorna o próximo rank do jogador.
	 * @param paramUuid = interface OfflinePlayer
	 * @return Rank
	 */
	public Rank getNextRank(OfflinePlayer paramOfflinePlayer) {
		return getNextRank(paramOfflinePlayer.getUniqueId());
	}
	
	/**
	 * Retorna o próximo rank do jogador.
	 * @param paramUuid = nome do jogador.
	 * @return Rank
	 * @deprecated O Nome pode estar em Lowercase/Uppercase que será
	 * detectado da mesma forma.
	 */
	@Deprecated
	public Rank getNextRank(String paramName) {
		return getNextRank(Bukkit.getOfflinePlayer(paramName).getUniqueId());
	}
	
	/**
	 * Verifica se o Rank 1 vem anteriormente do Rank 2.
	 * @param paramRank1 = rank 1
	 * @param paramRank2 = rank 2
	 * @return boolean
	 */
	public boolean isBefore(Rank paramRank1, Rank paramRank2) {
		return paramRank1.getPosition() <= paramRank2.getPosition();
	}
	
	/**
	 * Verifica se o Rank 1 vem depois do Rank 2.
	 * @param paramRank1 = rank 1
	 * @param paramRank2 = rank 2
	 * @return boolean
	 */
	public boolean isAfter(Rank paramRank1, Rank paramRank2) {
		return paramRank1.getPosition() > paramRank2.getPosition();
	}
	
	/**
	 * Upar um jogador para o próximo Rank.
	 * Se o jogador estiver no último rank, não irá subir.
	 * @param paramUuid = UUID do jogador
	 */
	public void upgradeRank(UUID paramUuid) {
		RankUpper ru = getRankUpper(paramUuid);
		
		if(ru.getRank().getPosition() <
				getRanks().size()) {
			ru.setRank(getRank(ru.getRank().getPosition() + 1));
		}
	}
	
	/**
	 * Upar um jogador para o próximo Rank.
	 * Se o jogador estiver no último rank, não irá subir.
	 * @param paramPlayer = interface Player
	 */
	public void upgradeRank(Player paramPlayer) {
		upgradeRank(paramPlayer.getUniqueId());
	}
	
	/**
	 * Upar um jogador para o próximo Rank.
	 * Se o jogador estiver no último rank, não irá subir.
	 * @param paramOfflinePlayer = interface OfflinePlayer
	 */
	public void upgradeRank(OfflinePlayer paramOfflinePlayer) {
		upgradeRank(paramOfflinePlayer.getUniqueId());
	}
	
	/**
	 * Upar um jogador para o próximo Rank.
	 * Se o jogador estiver no último rank, não irá subir.
	 * @param paramName = nome do jogador
	 * @deprecated O Nome pode estar em Lowercase/Uppercase que será
	 * detectado da mesma forma.
	 */
	@Deprecated
	public void upgradeRank(String paramName) {
		upgradeRank(Bukkit.getOfflinePlayer(paramName));
	}
	
	/**
	 * Rebaixa um jogador para o Rank anterior.
	 * Se o jogador estiver no primeiro rank, não irá rebaixar.
	 * @param paramUuid = UUID do jogador.
	 */
	public void downgradeRank(UUID paramUuid) {
		RankUpper ru = getRankUpper(paramUuid);
		
		if(ru.getRank().getPosition() > getDefaultRank().getPosition()) {
			ru.setRank(getRank(ru.getRank().getPosition() - 1));
		}
	}
	
	/**
	 * Rebaixa um jogador para o Rank anterior.
	 * Se o jogador estiver no primeiro rank, não irá rebaixar.
	 * @param paramPlayer = interface Player
	 */
	public void downgradeRank(Player paramPlayer) {
		downgradeRank(paramPlayer.getUniqueId());
	}
	
	/**
	 * Rebaixa um jogador para o Rank anterior.
	 * Se o jogador estiver no primeiro rank, não irá rebaixar.
	 * @param paramOfflinePlayer = interface OfflinePlayer
	 */
	public void downgradeRank(OfflinePlayer paramOfflinePlayer) {
		downgradeRank(paramOfflinePlayer.getUniqueId());
	}
	
	/**
	 * Rebaixa um jogador para o Rank anterior.
	 * Se o jogador estiver no primeiro rank, não irá rebaixar.
	 * @param paramName = nome do jogador
	 * @deprecated O Nome pode estar em Lowercase/Uppercase que será
	 * detectado da mesma forma.
	 */
	@Deprecated
	public void downgradeRank(String paramName) {
		downgradeRank(Bukkit.getOfflinePlayer(paramName).getUniqueId());
	}
	
	/**
	 * Organiza todos os RankUppers em uma lista e os organiza
	 * de acordo com a posição do seu rank, ordem descrecente.
	 * @return List<RankUpper>
	 */
	public List<RankUpper> getRankUpperTop() {
		List<RankUpper> rankUppers = getRankUppers();
		
		Collections.sort(rankUppers, new Comparator<RankUpper>() {
			@Override
			public int compare(RankUpper ru1, RankUpper ru2) {
				return ru2.getRank().getPosition() - ru1.getRank().getPosition();
			}
		});
		
		return rankUppers;
	}
	
	/**
	 * Salva os dados de todos os ranks.
	 * Envia suas informações para o arquivo FLAT,
	 * e o mesmo o processa. Adiciona ou atualiza.
	 */
	public void saveRanks() {
		m.saveRanks();
	}
	
	/**
	 * Salva os dados de um RankUpper.
	 * Envia suas informações para o banco de dados,
	 * e o mesmo o processa. Adiciona ou atualiza.
	 * @param paramRankUpper = classe RankUpper
	 */
	public void save(RankUpper paramRankUpper) {
		m.save(paramRankUpper);
				
	}
	
	/**
	 * Salva todos os Ranks e RankUppers.
	 * Envia as informações salvas em uma lista estática,
	 * para o banco de dados, e o mesmo o processa.
	 */
	public void save() {
		m.save();
	}
	
}

 

Lincença Integrada:

package tk.nyeyes.projetos.nyrankup;

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.security.NoSuchAlgorithmException;

import javax.crypto.Cipher;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;


/**
 * 
 * © NyEyes, 2017. Todos os direitos reservados
 * 
 * @since 2017
 * @version 2.0
 * @author DevNatan
 *
 * API para verificação de e consulta dos dados de uma licença.
 *
 */

public final class NyEyes {

	private final String U = "https://licenca.nyeyes.tk/";
	private Request r = new Request(U);
	private Criptografia c = new Criptografia();
	
	/**
	 * Verifica se o usúario é autenticável.
	 * @param a = login do usúario.
	 * @return boolean
	 */
	public boolean a(String a) {
		r.b("usuario=" + a);
		r.r();
		
		return Boolean.valueOf((c.a(r.c).length() <= 0 ? "false" : "true"));
	}
	
	/**
	 * Verifica se o usúario é autenticável.
	 * @param a = login do usúario.
	 * @param b = senha do usúario.
	 * @return boolean
	 * 
	 */
	public boolean a(String a, String b) {
		r.b("usuario=" + a + "&senha=" + b);
		r.r();
		
		return Boolean.valueOf((c.a(r.c).length() <= 0 ? "false" : "true"));
	}
	
	/**
	 * Verifica se o usúario é autenticável e se a licença é válida.
	 * @param a = o login do usúario.
	 * @param b = a senha do usúario.
	 * @param c = o código da licenca.
	 * @return boolean
	 */
	public boolean a(String a, String b, String c) {
		r.b("usuario=" + a + "&senha=" + b + "&licenca=" + c);
		r.r();
		
		return Boolean.valueOf((this.c.a(r.c).length() <= 0 ? "false" : "true"));
	}
	
	/**
	 * Verifica se a licença é valida para o IP.
	 * @param a = ip do servidor.
	 * @param b = código da licença.
	 * @return boolean
	 */
	public boolean c(String a, String b) {
		r.b("ip=" + a + "&licenca=" + b);
		r.r();
		
		return Boolean.valueOf((this.c.a(r.c).length() <= 0 ? "false" : "true"));
	}
	
	/**
	 * Verifica se a licença com o plugin é válida para o IP.
	 * @param a = ip do servidor.
	 * @param b = código da licença.
	 * @param c = nome do plugin.
	 * @return boolean
	 */
	public boolean c(String a, String b, String c) {
		r.b("ip=" + a + "&licenca=" + b + "&plugin=" + c);
		r.r();
		
		return Boolean.valueOf((this.c.a(r.c).length() <= 0 ? "false" : "true"));
	}
	
	final class Plugin {
		
		private int id;
		private String nome;
		private String versao;
		private String autor;
		private String download;
		private String preco;
		
		public int getId() {
			return id;
		}
		
		public String getNome() {
			return nome;
		}
		
		public String getVersao() {
			return versao;
		}
		
		public String getAutor() {
			return autor;
		}
		
		public String getDownload() {
			return "https://data.nyeyes.tk/plugins/" + download;
		}
		
		public String getPreco() {
			return preco;
		}
		
		public void setId(int id) {
			this.id = id;
		}
		
		public void setNome(String nome) {
			this.nome = nome;
		}
		
		public void setVersao(String versao) {
			this.versao = versao;
		}
		
		public void setAutor(String autor) {
			this.autor = autor;
		}
		
		public void setDownload(String download) {
			this.download = download;
		}
		
		public void setPreco(String preco) {
			this.preco = preco;
		}
		
	}
	
	final class Request {
		
		private final String a;
		private String b;
		private String c;
		
		public Request(String a) {
			this.a = a;
		}
		
		public Request(String a, String b) {
			this.a = a;
			this.b = b;
		}

		public String a() {
			return a;
		}

		public String b() {
			return b;
		}

		public String c() {
			return c;
		}
		
		public void b(String b) {
			this.b = b;
		}

		public void c(String c) {
			this.c = c;
		}
		
		public void r() {
			HttpURLConnection connection = null;

			try {
			    URL url = new URL(a);
			    
			    connection = (HttpURLConnection) url.openConnection();
			    connection.setRequestMethod("POST");
			    connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
			    connection.setRequestProperty("Content-Length", Integer.toString(b.getBytes().length));
			    connection.setRequestProperty("Content-Language", "pt-BR");  
			    connection.setUseCaches(false);
			    connection.setDoOutput(true);

			    DataOutputStream wr = new DataOutputStream (
			        connection.getOutputStream());
			    
			    wr.writeBytes(b);
			    wr.close();

			    InputStream is = connection.getInputStream();
			    BufferedReader rd = new BufferedReader(new InputStreamReader(is));
			    StringBuffer response = new StringBuffer();
			    String line;
			    
			    while ((line = rd.readLine()) != null) {
			    	response.append(line);
			    	response.append('\r');
			    }
			    
			    rd.close();
			    is.close();
			    c = response.toString();
			  } catch (Exception e) {
				  System.err.println("Falha na conexão: " + e.getMessage());
			  } finally {
				  if (connection != null) {
					  connection.disconnect();
				  }
			  }
		}
		
	}
    
	final class Criptografia {
    	
		public String a(final String a) {
			if(a == null)
				throw new NullPointerException("Falha ao finalizar método. String não pode ser nula!");
			try {
				return new String(new Criptografia().decrypt(a), StandardCharsets.UTF_8);
			} catch (Exception e) {
				e.printStackTrace();
			}
			
			return null;
		}
		
		private String iv = "fedcba9876543210";
		private IvParameterSpec ivspec;
		private SecretKeySpec keyspec;
		private Cipher cipher;
		
		private String SecretKey = "0123456789abcdef";
		
		public Criptografia() {
			ivspec = new IvParameterSpec(iv.getBytes());
			keyspec = new SecretKeySpec(SecretKey.getBytes(), "AES");
			
			try {
				cipher = Cipher.getInstance("AES/CBC/NoPadding");
			} catch (NoSuchAlgorithmException e) {
				e.printStackTrace();
			} catch (NoSuchPaddingException e) {
				e.printStackTrace();
			}
		}
		
		public byte[] decrypt(String code) throws Exception {
			if(code == null || code.length() == 0)
				throw new Exception("String vazia.");
			
			byte[] decrypted = null;

			try {
				cipher.init(Cipher.DECRYPT_MODE, keyspec, ivspec);
				
				decrypted = cipher.doFinal(hexToBytes(code));
			} catch (Exception e) {
				throw new Exception(e.getMessage());
			}
			
			return decrypted;
		}
		
		private byte[] hexToBytes(String str) {
			if (str == null) {
				return null;
			} else if (str.length() < 2) {
				return null;
			} else {
				int len = str.length() / 2;
				byte[] buffer = new byte[len];
				
				for (int i = 0; i < len; i++) {
					buffer[i] = (byte) Integer.parseInt(str.substring(i * 2, i * 2 + 2),16);
				}
				
				return buffer;
			}
		}
		
        
    }
	
}


 

 

DOWNLOAD


API maior que minha bola esquerda

Editado por Pica-Pau
Link para o comentário
Compartilhar em outros sites

ANÁLISE DE INATIVIDADE
 

Este tópico foi automaticamente arquivado devido à inatividade. Para manter a organização e fluidez das discussões na comunidade, tópicos que permanecem sem novas interações por um período prolongado são fechados automaticamente.
 

Se houver interesse em retomar o conteúdo, sinta-se à vontade para criar um novo tópico ou entre em contato com a equipe da comunidade para reabrir este tópico.


Equipe de Moderação
Gamer's Board
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...