API pour développeurs
Exigences
BetterStructures nécessite:
- Java 17 ou plus
- Serveur Spigot/Paper
- Plugin WorldEdit (7.3.0+)
Dépendances optionnelles:
- WorldGuard (7.0.7+) - Pour les fonctionnalités de protection des régions
- EliteMobs - Pour l'intégration de l'apparition de mobs élites
- MythicMobs - Pour l'intégration de mobs mythiques
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.0.4</version>
<scope>provided</scope>
</dependency>
Remarque: Visitez https://repo.magmaguy.com/releases/com/magmaguy/BetterStructures pour voir les versions disponibles. Dernière version stable: 2.0.4
Gradle
repositories {
maven {
name = "magmaguyRepoReleases"
url = uri("https://repo.magmaguy.com/releases")
}
}
dependencies {
implementation 'com.magmaguy:BetterStructures:2.0.4'
}
Remarque: Visitez https://repo.magmaguy.com/releases/com/magmaguy/BetterStructures pour voir les versions disponibles. Dernière version stable: 2.0.4
Événements
Remarque: Les événements se trouvent 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é lorsqu'une structure est sur le point d'être placée. Expose les données sur quelle structure va être placée et où, entre autres, via l'objet FitAnything.
N'essayez pas de modifier la structure en cours de placement! Vous pouvez modifier des éléments mineurs, mais changer toute la structure entraînera probablement une structure mal positionnée.
Cet événement est annulable.
ChestFillEvent
Appelé lorsqu'un coffre est rempli. Utilise l'instantané d'inventaire 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().
Cet événement est annulable.
WorldGenerationFinishEvent
Appelé lorsque la génération du monde est terminée. Fournit un accès à l'objet ModularWorld contenant toutes les données sur le monde généré, y compris les points d'apparition, les emplacements des 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 des points d'apparitiongetChestLocations()- Liste des emplacements des coffresgetBarrelLocations()- Liste des emplacements des tonneauxgetExitLocations()- Liste des emplacements des points de sortiespawnChests()- Apparition manuelle de coffres aux emplacements marquésspawnBarrels()- Apparition manuelle de tonneaux aux emplacements marqués
Exemple d'écouteur d'événement
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 clés
FitAnything
La classe FitAnything est la classe qui est instanciée lorsqu'une structure est collée et gère tous les aspects du collage, y compris le remplissage des coffres et l'apparition des mobs.
Méthodes d'accès disponibles:
getSchematicContainer()- Retourne le conteneur schématiquegetSchematicClipboard()- Retourne l'objet Clipboard de WorldEditgetSchematicOffset()- Retourne le décalage Vector pour le placementgetLocation()- Retourne l'emplacement du placement
Ces méthodes sont utiles pour créer des protections de régions personnalisées ou analyser les placements de structures.
ModularWorld
La classe ModularWorld représente un monde modulaire généré et est fournie via WorldGenerationFinishEvent. Elle contient toutes les données de localisation et les méthodes d'apparition d'entités et de conteneurs dans le monde généré.
Méthodes clés:
getWorld()- Retourne l'instance Bukkit WorldgetWorldFolder()- Retourne le dossier File du mondegetSpawnLocations()- Retourne tous les emplacements d'apparition marquésgetChestLocations()- Retourne tous les emplacements d'apparition des coffresgetBarrelLocations()- Retourne tous les emplacements d'apparition des tonneauxgetExitLocations()- Retourne tous les emplacements des points de sortiespawnChests()- Apparition de coffres aux emplacements marqués, retourne List of BlockspawnBarrels()- Apparition de tonneaux aux emplacements marqués, retourne List of BlockspawnInaccessibleExitLocations()- Apparition des schémas d'ascenseurs supérieursspawnAccessibleExitLocations()- Apparition des schémas d'ascenseurs inférieursspawnOtherEntities()- Apparition d'entités personnalisées à partir de pools d'apparition
WorldGuard
La classe WorldGuard gère les protections régionales de WorldGuard. La méthode utilitaire public static ProtectedRegion generateProtectedRegion(FitAnything fitAnything, String regionName) est mise à disposition des développeurs pour intégrer facilement un schéma de protection de régions personnalisé sur BetterStructures.
Autres méthodes utiles:
checkArea(Location, Player)- Vérifier si un joueur peut construire à un emplacementProtect(...)- Créer des régions protégées par programmationUnprotect(CustomBossEntity)- Supprimer la protection régionale