SunLicense

Quais classes precisam manter os nomes?

Cole o descritor do seu plugin ou mod antes de ofuscar o jar. Ele é lido no seu navegador; nada é enviado.

  • No seu navegador
  • Paper, Spigot, BungeeCord, Velocity, Fabric

Cole um descritor para ver a resposta

plugin.yml, paper-plugin.yml, bungee.yml, velocity-plugin.json ou fabric.mod.json. Ou escolha um em Exemplos.

O que sempre é mantido de qualquer forma

O Main-Class do manifest, provedores em META-INF/services, handlers de eventos (@EventHandler, @Subscribe), enums, membros serializáveis e classes @Mod do Forge.

O que só você pode saber (reflexão, nomes em arquivos de config)

Classes que você carrega pelo nome (Class.forName, reflexão, nomes nos seus arquivos de configuração) e campos que uma biblioteca JSON mapeia pelo nome.

Depois ofusque o jar em uma conta gratuita.Enviar um jar

O mesmo plugin. Muito mais difícil de ler.

Seu código
public final class AuctionPlugin extends JavaPlugin {
    private final Map<UUID, Listing> listings = new HashMap<>();

    @Override
    public void onEnable() {
        getCommand("ah").setExecutor(new AuctionCommand(this));
    }

    boolean canAfford(Player player, double price) {
        return economy.getBalance(player) >= price;
    }
}
Depois da ofuscação (descompilado)
public final class AuctionPlugin extends JavaPlugin {
    private final Map<UUID, a> a = new HashMap<>();

    @Override
    public void onEnable() {
        this.getCommand(b.a("\u0d4f\u0d4a")).setExecutor(new c(this));
    }

    boolean a(Player var1, double var2) {
        return d.a.getBalance(var1) >= var2;
    }
}

ProGuard

Renomeia classes, campos e métodos. O padrão; funciona com quase todo plugin.

Skidfuscator

Adiciona ofuscação de fluxo de controle e strings criptografadas à renomeação.

Máximo

ProGuard e depois Skidfuscator: o mais forte, para plugins que valem o teste extra.

Perguntas respondidas

Por que algumas classes precisam manter o nome?

O servidor as carrega pelo nome a partir do seu descritor: a classe principal do plugin.yml, os pontos de entrada do Fabric, os mixins. Renomeie-as e o plugin não carrega mais. Todo o resto pode ser renomeado.

Preciso escrever as regras de manutenção de nomes eu mesmo?

Quase nunca. O SunLicense lê seu jar e mantém sozinho a classe principal, os mains do Velocity e do BungeeCord, os pontos de entrada e mixins do Fabric, os provedores de serviço, os handlers de eventos e os enums. Este verificador mostra o que sobra para você, como um bootstrapper do Paper.

Quais ofuscadores o SunLicense usa?

ProGuard (o padrão), yGuard e Skidfuscator, que adiciona ofuscação de fluxo de controle e criptografia de strings, ou Máximo, que roda o ProGuard e depois o Skidfuscator. Você recebe um arquivo de mapeamento para ler seus próprios stack traces.

Meu descritor é enviado?

Não. O verificador lê no seu navegador; nada é enviado.

Quanto custa?

O plano Free inclui 3 ofuscações por mês, com chaves de licença e limites de dispositivos para o mesmo plugin. Lite e Standard incluem mais execuções.

Ler o guia de ofuscação

Mais ferramentas gratuitas