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.
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.
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
####
Genera un cubo nuevo en la ubicación con esta configuración. LanzaSulfurCube spawn(Location location)IllegalArgumentExceptionsi la ubicación no tiene mundo.
SulfurCube cube = SulfurCubeBuilder.create()
.bounciness(1.0)
.friction(0.1)
.block(Material.SLIME_BLOCK)
.spawn(location);####
Aplica esta configuración a un cubo existente. Losvoid apply(SulfurCube cube)size/glowingsin 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 listni 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 medianteMaterial.matchMaterial(...).apply(...)solo tocasize/glowingcuando los has definido, así que es seguro para una reconfiguración parcial.