SulfurLabSulfurLab

SulfurLab API

##SulfurLab API

La SulfurLab API te permite generar Cubos de Azufre totalmente configurados desde tu propio plugin — sin código repetitivo de Bukkit. Gira en torno a un SulfurCubeBuilder fluido y los presets listos para usar de SulfurCubes.

INFO

La API es independiente del registro y la persistencia del plugin — solo crea y configura cubos. Los cubos generados por la API no tienen nombre, no se guardan en sulfurs.json ni se pueden gestionar con /sulfurlab. Úsala cuando quieras cubos que tu propio plugin controla.


###Instalación

Añade el repositorio JitPack y la dependencia. Reemplaza la versión con la última etiqueta publicada.

<repositories>
    <repository>
        <id>jitpack.io</id>
        <url>https://jitpack.io</url>
    </repository>
</repositories>

<dependency>
    <groupId>com.github.33drygo</groupId>
    <artifactId>SulfurLab</artifactId>
    <version>1.0.0</version>
    <scope>provided</scope>
</dependency>

Luego declara SulfurLab como soft-depend en tu plugin.yml:

name: MyPlugin
main: com.example.MyPlugin
version: 1.0
softdepend:   # usa depend en su lugar si SulfurLab es obligatorio
  - SulfurLab

###Inicio rápido

import dev.drygo.sulfurlab.api.SulfurCubes;
import org.bukkit.Material;
import org.bukkit.entity.SulfurCube;

// Un cubo saltarín que viste un bloque de slime.
SulfurCube cube = SulfurCubes.bouncy()
        .block(Material.SLIME_BLOCK)
        .spawn(location);

###SulfurCubes

Punto de entrada de conveniencia y presets de física. Todo es estático en dev.drygo.sulfurlab.api.SulfurCubes.

INFO

Los presets devuelven un SulfurCubeBuilder que puedes seguir ajustando antes de llamar a spawn(...) — así que SulfurCubes.bouncy().block(Material.SLIME_BLOCK).spawn(loc) es válido.

Puntos de entrada
  • ####SulfurCubeBuilder builder()

    Un builder nuevo con la física por defecto.

  • ####SulfurCube spawn(Location location)

    Genera un Cubo de Azufre por defecto.

  • ####SulfurCube spawn(Location location, Material block)

    Genera un cubo por defecto mostrando el bloque indicado.

SulfurCube cube = SulfurCubes.spawn(location, Material.GOLD_BLOCK);
Presets

Cada uno devuelve un builder preajustado; llama a .spawn(location) (y ajústalo más si quieres).

Preset Física Sensación
bouncy() bounciness 1.0, friction 1.0, airDrag 0.2 Muy saltarín, sigue rebotando (1.0 es el rebote máximo que permite Minecraft).
slippery() friction 0.05, bounciness 0.5 Se desliza lejos, casi sin fricción.
floaty() airDrag 0.9, bounciness 0.5 Cae despacio, mucha resistencia del aire.
heavy() bounciness 0.0, friction 2.0, airDrag 0.1 Peso muerto: sin rebote, mucha fricción.
SulfurCube slider = SulfurCubes.slippery().spawn(location);

###SulfurCubeBuilder

Un builder fluido para configurar y generar un cubo, en dev.drygo.sulfurlab.api.SulfurCubeBuilder. Crea uno con SulfurCubeBuilder.create() o SulfurCubes.builder().

Valores por defecto: bounciness 1.0, friction 1.0, airDrag 0.2, bloque minecraft:sulfur. size y glowing se dejan en el valor vanilla salvo que los definas.

Configuración
  • ####SulfurCubeBuilder bounciness(double value)

    Qué tan saltarín es el cubo.

  • ####SulfurCubeBuilder friction(double value)

    Cuánto se frena en las superficies.

  • ####SulfurCubeBuilder airDrag(double value)

    Cuánto lo frena el aire.

  • ####SulfurCubeBuilder block(Material material) / block(String blockId)

    El bloque que muestra el cubo (su bloque absorbido, en el slot de equipo BODY). Pasa null/vacío para quitarlo.

  • ####SulfurCubeBuilder size(int size)

    El tamaño del cubo. Se deja en el valor vanilla si no se define.

  • ####SulfurCubeBuilder glowing(boolean glowing)

    Si el cubo brilla. Se deja como esté si no se define.

Generar y aplicar
  • ####SulfurCube spawn(Location location)

    Genera un cubo nuevo en la ubicación con esta configuración. Lanza IllegalArgumentException si la ubicación no tiene mundo.
SulfurCube cube = SulfurCubeBuilder.create()
        .bounciness(1.0)
        .friction(0.1)
        .block(Material.SLIME_BLOCK)
        .spawn(location);
  • ####void apply(SulfurCube cube)

    Aplica esta configuración a un cubo existente. Los size / glowing sin definir se dejan intactos — útil para reconfigurar un cubo del que ya tienes una referencia.

###Cómo se mapea la física a Minecraft

Por debajo, el builder fija atributos vanilla de la entidad en el Cubo de Azufre:

Método del builder Atributo
bounciness(...) Attribute.BOUNCINESS
friction(...) Attribute.FRICTION_MODIFIER
airDrag(...) Attribute.AIR_DRAG_MODIFIER
block(...) el ítem del EquipmentSlot.BODY

Aplican los mismos rangos válidos que los comandos — ve la tabla de Primeros Pasos (bounciness 0.0–1.0, friction 0.0–10.0, air drag 0.0–100.0).


###Notas

  • La API no registra los cubos en el plugin — no aparecerán en /sulfurlab list ni persistirán entre reinicios. Gestiona esos con los comandos del plugin.
  • spawn(...) debe ejecutarse en el hilo principal, como cualquier generación de entidad de Bukkit.
  • block(Material) ignora los materiales que no son ítems; block(String) resuelve mediante Material.matchMaterial(...).
  • apply(...) solo toca size / glowing cuando los has definido, así que es seguro para una reconfiguración parcial.

###Referencias