Aller au contenu principal

API développeur

Prérequis

BetterStructures nécessite :

  • Java 17 ou supérieur
  • Serveur Spigot/Paper
  • Plugin WorldEdit (7.3.0+)

Dépendances optionnelles :

  • WorldGuard (7.0.7+) - Pour les fonctionnalités de protection de régions
  • EliteMobs - Pour l'intégration de spawn d'elite mobs
  • MythicMobs - Pour l'intégration de mythic mobs

Dépôt public

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.1.2</version>
<scope>provided</scope>
</dependency>

Note : Visitez https://repo.magmaguy.com/releases/com/magmaguy/BetterStructures

Gradle

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

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

Note : Visitez https://repo.magmaguy.com/releases/com/magmaguy/BetterStructures

Événements

Note : Les événements sont dans com.magmaguy.betterstructures.api

Imports de paquets

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

Appelé quand une construction est sur le point d'être placée. Expose des données sur quelle construction va être placée et où, entre autres, via l'objet FitAnything.

N'essayez pas de modifier la construction en cours de placement ! Vous pouvez modifier des choses mineures, mais changer toute la construction résultera probablement en une construction mal ajustée.

Cet événement est annulable.

ChestFillEvent

Appelé quand un coffre est rempli. Utilise l'inventaire snapshot du conteneur pour stocker en toute sécurité les données à appliquer.

Vous pouvez modifier le butin en utilisant les méthodes d'Inventaire addItem() ou removeItem() sur l'inventaire snapshot du conteneur obtenu via getContainer().getSnapshotInventory().

Vous pouvez aussi appeler getTreasureConfigFilename() pour identifier quelle configuration de table de butin a été utilisée pour remplir ce coffre.

Cet événement est annulable.

WorldGenerationFinishEvent

Appelé quand la génération du monde se termine. Fournit l'accès à l'objet ModularWorld contenant toutes les données sur le monde généré incluant les points de spawn, les emplacements de coffres et les points de sortie.

Cet événement N'EST PAS annulable.

Vous pouvez accéder aux données du monde via la méthode getModularWorld(), qui fournit :

  • getWorld() - L'objet World de Bukkit
  • getSpawnLocations() - Liste des emplacements de points de spawn
  • getChestLocations() - Liste des emplacements de coffres
  • getBarrelLocations() - Liste des emplacements de tonneaux
  • getExitLocations() - Liste des emplacements de points de sortie
  • spawnChests() - Faire apparaître des coffres manuellement aux emplacements marqués
  • spawnBarrels() - Faire apparaître des tonneaux manuellement aux emplacements marqués

Exemple d'Event Listener

public class MyBetterStructuresListener implements Listener {

@EventHandler
public void onBuildPlace(BuildPlaceEvent event) {
FitAnything build = event.getFitAnything();
Location location = build.getLocation();
// event.setCancelled(true);
}

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

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

Classes clés

FitAnything

La classe FitAnything est la classe instanciée quand une construction est collée et gère chaque aspect du collage, incluant le remplissage de coffres et le spawn de mobs.

Méthodes getter disponibles :

  • getSchematicContainer() - Retourne le conteneur du schematic
  • getSchematicClipboard() - Retourne l'objet Clipboard de WorldEdit
  • getSchematicOffset() - Retourne le Vector offset pour le placement
  • getLocation() - Retourne la Location de placement

Ces méthodes sont utiles pour créer des protections de région personnalisées ou analyser les placements de constructions.

ModularWorld

La classe ModularWorld représente un monde modulaire généré et est fournie via le WorldGenerationFinishEvent. Elle contient toutes les données de localisation et les méthodes pour faire apparaître des entités et conteneurs dans le monde généré.

Méthodes clés :

  • getWorld() - Retourne l'instance World de Bukkit
  • getWorldFolder() - Retourne le dossier File du monde
  • getSpawnLocations() - Retourne tous les emplacements de spawn marqués
  • getChestLocations() - Retourne tous les emplacements de spawn de coffres
  • getBarrelLocations() - Retourne tous les emplacements de spawn de tonneaux
  • getExitLocations() - Retourne tous les emplacements de points de sortie
  • spawnChests() - Fait apparaître des coffres aux emplacements marqués, retourne List of Block
  • spawnBarrels() - Fait apparaître des tonneaux aux emplacements marqués, retourne List of Block
  • spawnInaccessibleExitLocations() - Fait apparaître les schematics d'ascenseur supérieur
  • spawnAccessibleExitLocations() - Fait apparaître les schematics d'ascenseur inférieur
  • spawnOtherEntities() - Fait apparaître des entités personnalisées depuis les pools de spawn

La classe WorldGuard gère les protections de région WorldGuard. La méthode utilitaire public static ProtectedRegion generateProtectedRegion(FitAnything fitAnything, String regionName) est disponible pour que les développeurs puissent facilement connecter un schéma de protection de région personnalisé sur BetterStructures.

Autres méthodes utiles :

  • checkArea(Location, Player) - Vérifie si un emplacement est dans une région protégée par BetterStructures (retourne true si protégé, envoie un message d'avertissement au joueur)
  • Protect(...) - Créer des régions protégées par programmation
  • Unprotect(CustomBossEntity) - Supprimer la protection de région quand un boss est tué

WorldGuard

undefined

undefined