Developer API
Anforderungen
BetterStructures erfordert:
- Java 17 oder höher
- Spigot/Paper Server
- WorldEdit Plugin (7.3.0+)
Optionale Abhängigkeiten:
- WorldGuard (7.0.7+) - Für Regionsschutz-Funktionen
- EliteMobs - Für Elite Mob Spawn-Integration
- MythicMobs - Für Mythic Mob Integration
Öffentliches Repository
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>
Hinweis: Besuchen Sie https://repo.magmaguy.com/releases/com/magmaguy/BetterStructures um verfügbare Versionen zu sehen. Neueste stabile Version: 2.0.4
Gradle
repositories {
maven {
name = "magmaguyRepoReleases"
url = uri("https://repo.magmaguy.com/releases")
}
}
dependencies {
implementation 'com.magmaguy:BetterStructures:2.0.4'
}
Hinweis: Besuchen Sie https://repo.magmaguy.com/releases/com/magmaguy/BetterStructures um verfügbare Versionen zu sehen. Neueste stabile Version: 2.0.4
Events
Hinweis: Events befinden sich in com.magmaguy.betterstructures.api
Package-Importe
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
Wird aufgerufen, wenn ein Gebäude platziert werden soll. Stellt Daten über welches Gebäude platziert wird und wo, unter anderem durch das FitAnything-Objekt, bereit.
Versuchen Sie nicht, das Gebäude zu ändern, das platziert wird! Sie können kleinere Dinge ändern, aber das ganze Gebäude zu ändern wird wahrscheinlich zu einem Gebäude mit schlechter Passung führen.
Dies kann abgebrochen werden.
ChestFillEvent
Wird aufgerufen, wenn eine Kiste gefüllt wird. Verwendet die Container-Snapshot-Inventarverwaltung, um die Daten sicher zu speichern, die angewendet werden sollen.
Sie können das Loot mit den Inventory-Methoden addItem() oder removeItem() auf dem Snapshot-Inventar des Containers ändern, das Sie über getContainer().getSnapshotInventory() erhalten.
Dies kann abgebrochen werden.
WorldGenerationFinishEvent
Wird aufgerufen, wenn die Weltgenerierung beendet ist. Bietet Zugriff auf das ModularWorld-Objekt, das alle Daten über die generierte Welt einschließlich Spawnpunkte, Kistenplatzierungen und Ausstiegspunkte enthält.
Dieses Event kann NICHT abgebrochen werden.
Sie können auf Weltdaten über die Methode getModularWorld() zugreifen, die Folgendes bereitstellt:
getWorld()- Das Bukkit World ObjektgetSpawnLocations()- Liste der Spawnpunkt-PositionengetChestLocations()- Liste der KistenplatzierungengetBarrelLocations()- Liste der FasspositionengetExitLocations()- Liste der Ausstiegspunkt-PositionenspawnChests()- Kisten manuell an markierten Positionen spawnenspawnBarrels()- Fässer manuell an markierten Positionen spawnen
Beispiel Event Listener
public class MyBetterStructuresListener implements Listener {
@EventHandler
public void onBuildPlace(BuildPlaceEvent event) {
FitAnything build = event.getFitAnything();
Location location = build.getLocation();
// Benutzerdefinierte Logik hier
// event.setCancelled(true); // Um Platzierung zu verhindern
}
@EventHandler
public void onChestFill(ChestFillEvent event) {
Container container = event.getContainer();
Inventory inv = container.getSnapshotInventory();
// Inventar hier ändern
inv.addItem(new ItemStack(Material.DIAMOND, 1));
}
@EventHandler
public void onWorldGenFinish(WorldGenerationFinishEvent event) {
ModularWorld world = event.getModularWorld();
// Auf generierte Weltdaten zugreifen
List<Location> spawns = world.getSpawnLocations();
}
}
Wichtige Klassen
FitAnything
Die FitAnything-Klasse ist die Klasse, die instanziiert wird, wenn ein Gebäude eingefügt wird, und verwaltet jeden Aspekt des Einfügens, einschließlich des Füllens von Kisten und des Spawnens von Mobs.
Verfügbare Getter-Methoden:
getSchematicContainer()- Gibt den schematischen Container zurückgetSchematicClipboard()- Gibt das WorldEdit Clipboard-Objekt zurückgetSchematicOffset()- Gibt den Vektor-Versatz für die Platzierung zurückgetLocation()- Gibt die Platzierungs-Position zurück
Diese Methoden sind nützlich beim Erstellen von benutzerdefinierten Regionsschutzmaßnahmen oder beim Analysieren von Gebäudeplatzierungen.
ModularWorld
Die ModularWorld-Klasse stellt eine generierte modulare Welt dar und wird über das WorldGenerationFinishEvent bereitgestellt. Sie enthält alle Positionsdaten und Methoden zum Spawnen von Entitäten und Behältern in der generierten Welt.
Wichtige Methoden:
getWorld()- Gibt die Bukkit World-Instanz zurückgetWorldFolder()- Gibt den Ordner der Welt zurückgetSpawnLocations()- Gibt alle markierten Spawnpositionen zurückgetChestLocations()- Gibt alle Kisten-Spawnpositionen zurückgetBarrelLocations()- Gibt alle Fass-Spawnpositionen zurückgetExitLocations()- Gibt alle Ausstiegspunkt-Positionen zurückspawnChests()- Spawnt Kisten an markierten Positionen, gibt Liste von Block zurückspawnBarrels()- Spawnt Fässer an markierten Positionen, gibt Liste von Block zurückspawnInaccessibleExitLocations()- Spawnt obere AufzugsschemasspawnAccessibleExitLocations()- Spawnt untere AufzugsschemasspawnOtherEntities()- Spawnt benutzerdefinierte Entitäten aus Spawn-Pools
WorldGuard
Die WorldGuard-Klasse verwaltet die WorldGuard-Regionsschutzmaßnahmen. Die Utility-Methode public static ProtectedRegion generateProtectedRegion(FitAnything fitAnything, String regionName) wird für Entwickler bereitgestellt, um einfach ein benutzerdefiniertes Regionsschutzschema auf BetterStructures zu integrieren.
Weitere nützliche Methoden:
checkArea(Location, Player)- Überprüfen Sie, ob ein Spieler an einer Position bauen kannProtect(...)- Erstellen Sie geschützte Regionen programmatischUnprotect(CustomBossEntity)- Entfernen Sie Regionsschutz