¿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: ProGuard, yGuard o Skidfuscator, conservando estos nombres. 3 ejecuciones al mes.Después ofusca el jar en una cuenta gratuita.Subir un jar
El mismo plugin. Mucho más difícil de leer.
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;
}
}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.
SunLicense