Pular para o conteúdo principal

API do Desenvolvedor

Requisitos

BetterStructures requer:

  • Java 17 ou superior
  • Servidor Spigot/Paper
  • Plugin WorldEdit (7.3.0+)

Dependências opcionais:

  • WorldGuard (7.0.7+) - Para recursos de proteção de região
  • EliteMobs - Para integração de spawn de mobs elite
  • MythicMobs - Para integração de mobs míticos

Repositório Público

Maven

<repositories>
<repository>
<id>magmaguy-repo-releases</id>
<name>MagmaGuy's Repository</name>
<url>https://repo.magmaguy.com/releases</url>
</repository>
</repositories>

<dependency>
<groupId>com.magmaguy</groupId>
<artifactId>BetterStructures</artifactId>
<version>2.0.4</version>
<scope>provided</scope>
</dependency>

Nota: Visite https://repo.magmaguy.com/releases/com/magmaguy/BetterStructures para ver versões disponíveis. Estável mais recente: 2.0.4

Gradle

repositories {
maven {
name = "magmaguyRepoReleases"
url = uri("https://repo.magmaguy.com/releases")
}
}

dependencies {
implementation 'com.magmaguy:BetterStructures:2.0.4'
}

Nota: Visite https://repo.magmaguy.com/releases/com/magmaguy/BetterStructures para ver versões disponíveis. Estável mais recente: 2.0.4

Eventos

Nota: Os eventos estão em com.magmaguy.betterstructures.api

Importações de Pacote

import com.magmaguy.betterstructures.api.BuildPlaceEvent;
import com.magmaguy.betterstructures.api.ChestFillEvent;
import com.magmaguy.betterstructures.api.WorldGenerationFinishEvent;
import com.magmaguy.betterstructures.buildingfitter.FitAnything;
import com.magmaguy.betterstructures.modules.ModularWorld;
import com.magmaguy.betterstructures.thirdparty.WorldGuard;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

BuildPlaceEvent

Chamado quando uma construção está prestes a ser colocada. Expõe dados sobre qual construção será colocada e onde, entre outras coisas, através do objeto FitAnything.

Não tente modificar a construção sendo colocada! Você pode modificar coisas menores, mas alterar toda a construção provavelmente resultará em uma construção com ajuste deficiente.

Isto é cancelável.

ChestFillEvent

Chamado quando um baú é preenchido. Usa o snapshot de inventário do contêiner para armazenar com segurança os dados a serem aplicados.

Você pode modificar o saque usando os métodos do Inventory addItem() ou removeItem() no snapshot de inventário do contêiner obtido via getContainer().getSnapshotInventory().

Isto é cancelável.

WorldGenerationFinishEvent

Chamado quando a geração do mundo termina. Fornece acesso ao objeto ModularWorld contendo todos os dados sobre o mundo gerado, incluindo pontos de spawn, locais de baú e pontos de saída.

Este evento NÃO é cancelável.

Você pode acessar dados do mundo através do método getModularWorld(), que fornece:

  • getWorld() - O objeto Bukkit World
  • getSpawnLocations() - Lista de locais de ponto de spawn
  • getChestLocations() - Lista de locais de baú
  • getBarrelLocations() - Lista de locais de barril
  • getExitLocations() - Lista de locais de ponto de saída
  • spawnChests() - Spawn manual de baús em locais marcados
  • spawnBarrels() - Spawn manual de barris em locais marcados

Exemplo de Ouvinte de Evento

public class MyBetterStructuresListener implements Listener {

@EventHandler
public void onBuildPlace(BuildPlaceEvent event) {
FitAnything build = event.getFitAnything();
Location location = build.getLocation();
// Custom logic here
// event.setCancelled(true); // To prevent placement
}

@EventHandler
public void onChestFill(ChestFillEvent event) {
Container container = event.getContainer();
Inventory inv = container.getSnapshotInventory();
// Modify inventory here
inv.addItem(new ItemStack(Material.DIAMOND, 1));
}

@EventHandler
public void onWorldGenFinish(WorldGenerationFinishEvent event) {
ModularWorld world = event.getModularWorld();
// Access generated world data
List<Location> spawns = world.getSpawnLocations();
}
}

Classes Principais

FitAnything

A classe FitAnything é a classe que é instanciada quando uma construção é colada e trata cada aspecto da colagem, incluindo preenchimento de baús e spawn de mobs.

Métodos getter disponíveis:

  • getSchematicContainer() - Retorna o contêiner de esquema
  • getSchematicClipboard() - Retorna o objeto Clipboard do WorldEdit
  • getSchematicOffset() - Retorna o offset Vector para colocação
  • getLocation() - Retorna a Location de colocação

Estes métodos são úteis ao criar proteções de região personalizadas ou analisar colocações de construção.

ModularWorld

A classe ModularWorld representa um mundo modular gerado e é fornecida através de WorldGenerationFinishEvent. Contém todos os dados de localização e métodos para spawn de entidades e contêineres no mundo gerado.

Métodos principais:

  • getWorld() - Retorna a instância Bukkit World
  • getWorldFolder() - Retorna a pasta File do mundo
  • getSpawnLocations() - Retorna todas as localizações de spawn marcadas
  • getChestLocations() - Retorna todas as localizações de spawn de baú
  • getBarrelLocations() - Retorna todas as localizações de spawn de barril
  • getExitLocations() - Retorna todas as localizações de ponto de saída
  • spawnChests() - Spawn de baús em locais marcados, retorna List de Block
  • spawnBarrels() - Spawn de barris em locais marcados, retorna List de Block
  • spawnInaccessibleExitLocations() - Spawn de esquemas de elevador superior
  • spawnAccessibleExitLocations() - Spawn de esquemas de elevador inferior
  • spawnOtherEntities() - Spawn de entidades personalizadas de pools de spawn

WorldGuard

A classe WorldGuard trata as proteções de região do WorldGuard. O método utilitário public static ProtectedRegion generateProtectedRegion(FitAnything fitAnything, String regionName) é disponibilizado para os desenvolvedores integrarem facilmente um esquema de proteção de região personalizado em cima do BetterStructures.

Outros métodos úteis:

  • checkArea(Location, Player) - Verificar se um jogador pode construir em um local
  • Protect(...) - Criar regiões protegidas programaticamente
  • Unprotect(CustomBossEntity) - Remover proteção de região