SunLicense

¿Qué clases deben conservar su nombre?

Pega el descriptor de tu plugin o mod antes de ofuscar el jar. Se lee en tu navegador; no se sube nada.

  • En tu navegador
  • Paper, Spigot, BungeeCord, Velocity, Fabric

Pega un descriptor para ver la respuesta

plugin.yml, paper-plugin.yml, bungee.yml, velocity-plugin.json o fabric.mod.json. O elige uno de Ejemplos.

Lo que siempre se conserva de todos modos

El Main-Class del manifiesto, los proveedores de META-INF/services, los manejadores de eventos (@EventHandler, @Subscribe), los enums, los miembros serializables y las clases @Mod de Forge.

Lo que solo tú puedes saber (reflexión, nombres en archivos de configuración)

Las clases que cargas por nombre (Class.forName, reflexión, nombres en tus archivos de configuración) y los campos que una biblioteca JSON asigna por nombre.

Después ofusca el jar en una cuenta gratuita.Subir un jar

El mismo plugin. Mucho más difícil de leer.

Tu 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;
    }
}
Después de ofuscar (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

Renombra clases, campos y métodos. El predeterminado; funciona con casi cualquier plugin.

Skidfuscator

Suma ofuscación del flujo de control y cadenas cifradas al renombrado.

Máximo

ProGuard y luego Skidfuscator: el más fuerte, para plugins que merecen la prueba extra.

Preguntas, respondidas

¿Por qué algunas clases deben conservar su nombre?

El servidor las carga por nombre desde tu descriptor: la clase principal de plugin.yml, los puntos de entrada de Fabric, los mixins. Si las renombras, el plugin deja de cargar. Todo lo demás se puede renombrar.

¿Tengo que escribir yo las reglas para conservar nombres?

Casi nunca. SunLicense lee tu jar y conserva por sí solo la clase principal, los main de Velocity y BungeeCord, los puntos de entrada y mixins de Fabric, los proveedores de servicios, los manejadores de eventos y los enums. Este comprobador muestra lo que queda para ti, como un bootstrapper de Paper.

¿Qué ofuscadores usa SunLicense?

ProGuard (el predeterminado), yGuard y Skidfuscator, que añade ofuscación del flujo de control y cifrado de cadenas, o Máximo, que ejecuta ProGuard y luego Skidfuscator. Recibes un archivo de mapeo para leer tus propios stack traces.

¿Se sube mi descriptor?

No. El comprobador lo lee en tu navegador; no se envía nada.

¿Cuánto cuesta?

El plan Free incluye 3 ofuscaciones al mes, con claves de licencia y límites de dispositivos para el mismo plugin. Lite y Standard incluyen más usos.

Leer la guía de ofuscación

Más herramientas gratuitas