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 WorldgetSpawnLocations()- Lista de locais de ponto de spawngetChestLocations()- Lista de locais de baúgetBarrelLocations()- Lista de locais de barrilgetExitLocations()- Lista de locais de ponto de saídaspawnChests()- Spawn manual de baús em locais marcadosspawnBarrels()- 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 esquemagetSchematicClipboard()- Retorna o objeto Clipboard do WorldEditgetSchematicOffset()- Retorna o offset Vector para colocaçãogetLocation()- 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 WorldgetWorldFolder()- Retorna a pasta File do mundogetSpawnLocations()- Retorna todas as localizações de spawn marcadasgetChestLocations()- Retorna todas as localizações de spawn de baúgetBarrelLocations()- Retorna todas as localizações de spawn de barrilgetExitLocations()- Retorna todas as localizações de ponto de saídaspawnChests()- Spawn de baús em locais marcados, retorna List de BlockspawnBarrels()- Spawn de barris em locais marcados, retorna List de BlockspawnInaccessibleExitLocations()- Spawn de esquemas de elevador superiorspawnAccessibleExitLocations()- Spawn de esquemas de elevador inferiorspawnOtherEntities()- 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 localProtect(...)- Criar regiões protegidas programaticamenteUnprotect(CustomBossEntity)- Remover proteção de região