メインコンテンツまでスキップ

開発者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