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 BukkitgetSpawnLocations()- Liste des emplacements de points de spawngetChestLocations()- Liste des emplacements de coffresgetBarrelLocations()- Liste des emplacements de tonneauxgetExitLocations()- Liste des emplacements de points de sortiespawnChests()- Faire apparaître des coffres manuellement aux emplacements marquésspawnBarrels()- 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 schematicgetSchematicClipboard()- Retourne l'objet Clipboard de WorldEditgetSchematicOffset()- Retourne le Vector offset pour le placementgetLocation()- 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 BukkitgetWorldFolder()- Retourne le dossier File du mondegetSpawnLocations()- Retourne tous les emplacements de spawn marquésgetChestLocations()- Retourne tous les emplacements de spawn de coffresgetBarrelLocations()- Retourne tous les emplacements de spawn de tonneauxgetExitLocations()- Retourne tous les emplacements de points de sortiespawnChests()- Fait apparaître des coffres aux emplacements marqués, retourne List of BlockspawnBarrels()- Fait apparaître des tonneaux aux emplacements marqués, retourne List of BlockspawnInaccessibleExitLocations()- Fait apparaître les schematics d'ascenseur supérieurspawnAccessibleExitLocations()- Fait apparaître les schematics d'ascenseur inférieurspawnOtherEntities()- 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 programmationUnprotect(CustomBossEntity)- Supprimer la protection de région quand un boss est tué
WorldGuard
undefined
undefined