開発者API
要件
BetterStructuresの要件:
- Java 17以上
- サーバー Spigot/Paper
- プラグイン WorldEdit (7.3.0+)
オプションの依存関係:
- WorldGuard (7.0.7+) - リージョン保護機能用
- EliteMobs - エリートモブスポーン統合用
- MythicMobs - ミシックモブ統合用
公開リポジトリ
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>
注意:利用可能なバージョンは以下を参照 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'
}
注意:利用可能なバージョンは以下を参照 https://repo.magmaguy.com/releases/com/magmaguy/BetterStructures
イベント
注意:イベントはcom.magmaguy.betterstructures.apiにあります
パッケージインポート
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
ビルドが配置されようとしている時に呼び出されます。FitAnythingオブジェクトを通じて、どのビルドがどこに配置されるかなどのデータを公開します。
配置されるビルドを変更しようとしないでください!細かいことは変更できますが、ビルド全体を変更するとフィットが悪いビルドになる可能性があります。
このイベントはキャンセル可能です。
ChestFillEvent
チェストが満たされた時に呼び出されます。コンテナのスナップショットインベントリを使用して、適用するデータを安全に保存します。
getContainer().getSnapshotInventory()で取得したコンテナのスナップショットインベントリに対して、インベントリメソッドaddItem()またはremoveItem()を使用してルートを変更できます。
また、getTreasureConfigFilename()を呼び出して、このチェストを満たすために使用されたルートテーブル設定を特定できます。
このイベントはキャンセル可能です。
WorldGenerationFinishEvent
ワールド生成が完了した時に呼び出されます。スポーンポイント、チェストの位置、出口ポイントを含む生成されたワールドのすべてのデータを含むModularWorldオブジェクトへのアクセスを提供します。
このイベントはキャンセルできません。
getModularWorld()メソッドを通じてワールドデータにアクセスできます:
getWorld()- BukkitのWorldオブジェクトgetSpawnLocations()- スポーンポイントの位置リストgetChestLocations()- チェストの位置リストgetBarrelLocations()- 樽の位置リストgetExitLocations()- 出口ポイントの位置リストspawnChests()- マークされた位置にチェストを手動でスポーンspawnBarrels()- マークされた位置に樽を手動でスポーン
イベントリスナーの例
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();
}
}
主要クラス
FitAnything
FitAnythingクラスはビルドがペーストされる時にインスタンス化されるクラスで、チェストの充填やモブのスポーンを含むペーストのあらゆる側面を処理します。
利用可能なgetterメソッド:
getSchematicContainer()- スキーマティックコンテナを返すgetSchematicClipboard()- WorldEditのClipboardオブジェクトを返すgetSchematicOffset()- 配置用のVectorオフセットを返すgetLocation()- 配置Locationを返す
これらのメソッドはカスタムリージョン保護の作成やビルド配置の分析に有用です。
ModularWorld
ModularWorldクラスは生成されたモジュラーワールドを表し、WorldGenerationFinishEventを通じて提供されます。生成されたワールド内のエンティティやコンテナをスポーンするためのすべての位置データとメソッドが含まれています。
主要メソッド:
getWorld()- BukkitのWorldインスタンスを返すgetWorldFolder()- ワールドのFileフォルダーを返すgetSpawnLocations()- マークされたすべてのスポーン位置を返すgetChestLocations()- すべてのチェストスポーン位置を返すgetBarrelLocations()- すべての樽スポーン位置を返すgetExitLocations()- すべての出口ポイント位置を返すspawnChests()- マークされた位置にチェストをスポーン、List of Blockを返すspawnBarrels()- マークされた位置に樽をスポーン、List of Blockを返すspawnInaccessibleExitLocations()- 上部エレベータースケマティックをスポーンspawnAccessibleExitLocations()- 下部エレベータースケマティックをスポーンspawnOtherEntities()- スポーンプールからカスタムエンティティをスポーン
WorldGuardクラスはWorldGuardリージョン保護を処理します。ユーティリティメソッドpublic static ProtectedRegion generateProtectedRegion(FitAnything fitAnything, String regionName)が開発者に提供され、BetterStructures上にカスタムリージョン保護スキームを簡単にフックできます。
その他の有用なメソッド:
checkArea(Location, Player)- 位置がBetterStructures保護リージョン内にあるかチェック(保護されている場合trueを返し、プレイヤーに警告メッセージを送信)Protect(...)- プログラムで保護リージョンを作成Unprotect(CustomBossEntity)- ボスが倒された時にリージョン保護を削除
WorldGuard
undefined
undefined