Minecraftサーバーを動かす知識

ChestSafeの使い方と設定

投稿:  更新:  By: HimaJyun

このページではChestSafeの使い方、導入方法、コマンド、パーミッション、設定などを解説します。

プラグイン名Jecon
開発者HimaJyun
配布場所GitHub
ライセンスApache License 2.0
ソースコードGitHub(HimaJyun/ChestSafe)
執筆時バージョン1.2.1 (Spigot 1.17)
備考当サイト管理人作

スポンサーリンク

ChestSafeとは

ChestSafeはチェストやシュルカーボックスを保護するプラグインです。

SQLiteに対応しているため簡単に使えるのはもちろんのこと、MySQLにも対応しているためサーバーの規模に合わせた選択が可能です。

設定さえすればあらゆるブロックを保護対象にできる(新種のブロックに対応しやすい)という特徴もあります。

使い方

対象のブロックを置くだけで保護されるため、普段は意識せずに使えます(もちろん自動で保護しない設定も可能)

自分以外の人がチェストなどを使えるようにするメンバー機能、ホッパーなどを使えるようにするフラグ機能などもあります。

これらの保護設定を変更するには/chestsafeコマンドを利用します。

各種コマンドは実行してから、操作を適用したいブロックをクリックします。/chestsafe persistでいちいちコマンドを実行せずとも連続で操作を適用できます。

導入方法

ChestSafeには前提プラグインなどは必要ありません。

GitHubからプラグインをダウンロードして設定を行ってください。

また、ChestSafe-Converterを使用することでLWCから保護を移行することも可能です。

コマンド

< >は必須、[ ]はオプションの引数です。

コマンドパーミッション説明
/chestsafe private [プレイヤー名 ...]chestsafe.create.privateプライベート保護を作成。プレイヤーを指定するとメンバーに追加
/chestsafe publicchestsafe.create.publicパブリック保護を作成
/chestsafe flag <フラグ名> [true/false]chestsafe.flag.*フラグを設定。値が未指定だと現在値を反転
/chestsafe removechestsafe.remove保護を削除
/chestsafe infochestsafe.info保護情報を表示
/chestsafe member <add/remove/modify> [値 ...]chestsafe.member保護メンバーを編集
addは指定したプレイヤーを保護に追加、removeは削除
modifyは一括指定、プレイヤー名の前にハイフン(-)を付けると削除、付けなければ追加
/chestsafe transfer <新しいオーナー>chestsafe.transfer保護を譲渡
/chestsafe persist [true/false]chestsafe.persist連続設定モードを切り替え。値が未指定だと現在値を反転
/chestsafe cleanup [cancel/速度]chestsafe.cleanupブロックが存在しない保護を削除
速度には1秒にチェックする保護数を数値で指定
/chestsafe reloadchestsafe.reload設定をリロード
/chestsafe versionchestsafe.version現在のバージョンを表示して新しいバージョンを確認
/chestsafe help [コマンド]なし使い方を表示。コマンドを指定すると詳細表示

フラグ

設定可能なフラグは/chestsafe help flagで確認できます。例として次のようなものがあります。

フラグパーミッション説明
hopperchestsafe.flag.hopperホッパーが使用可能になる
explosionchestsafe.flag.explosion爆発で破壊されるようになる
firechestsafe.flag.fire炎で消失するようになる
redstonechestsafe.flag.redstoneレッドストーンに反応するようになる
mobchestsafe.flag.mobMOBが破壊できるようになる

エイリアス

古いプラグインなど使っているユーザーが違和感なく移行できるようにするため、エイリアス機能が搭載されています。

コマンド実際に動作するコマンド
/c/chestsafe
/lock/chestsafe private
/unlock/chestsafe remove
/cprivate/chestsafe private
/cpublic/chestsafe public
/cremove/chestsafe remove
/cinfo/chestsafe info
/cmodify/chestsafe member modify
/cpersist/chestsafe persist
/chopper/chestsafe flag hopper
/callowexplosions/chestsafe flag explosion
/ctnt/chestsafe flag explosion
/cfire/chestsafe flag fire
/credstone/chestsafe flag redstone
/cmob/chestsafe flag mob

パーミッション

コマンド以外のパーミッションには主に以下のような物があります。

パーミッション説明
chestsafe.*すべてのパーミッションの一括設定
chestsafe.create.*保護作成パーミッションの一括設定
chestsafe.flag.*各種フラグ用パーミッションの一括設定
chestsafe.op管理者向けパーミッションの一括設定
chestsafe.userユーザー向けパーミッションの一括設定
chestsafe.noticeブロックをクリックした際に保護の情報を自動で表示
chestsafe.passthrough自分以外の保護が操作できる

設定

ChestSafeには動作に関する設定を行うconfig.ymlがあります。その他メッセージの設定はlocale/<言語>.ymlにあります。

config.yml

コメントを参考に設定してください。

# ブロックをクリックした際に表示される保護情報をアクションバーに表示するか?
actionBar: true
# 新しいバージョンを自動でチェックするか?
versionCheck: true
# 保護されたブロックにホッパーでアイテムを転送した際にホッパーを破壊するか?
# trueにする事により動作しないホッパーの処理を減らし負荷を低減する
# 注意: default.flag.hopperのデフォルト値をtrueからfalseに変更すると世界中のホッパーが壊れることになるでしょう。
hopperDestroy: true

default:
  auto: false
  flag:
    mob: false
    fire: false
    hopper: false
    redstone: false
    explosion: false

# https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/Material.html
protectable:
  CHEST:
    auto: private
  TRAPPED_CHEST:
    auto: private
  BARREL:
    auto: private
  FURNACE: { } # 保護対象として追加し、デフォルト値を継承するためには空のオブジェクトを指定する必要がある。
  _SHULKER_BOX:
    auto: false
  #_DOOR:
  #  auto: public
  #  flag:
  #      redstone: true

cleanup:
  # 存在しない保護を削除するための自動クリーンアップを有効にするか。
  enable: false
  # 起動からの待ち時間。0にすると即座に実行
  delay: 60 # seconds
  # クリーンアップの周期。0にすると定期実行を無効化
  interval: 86400 # seconds
  # 1秒につきどれくらいの時間を存在チェックに使うか?
  # 値を大きくすると処理が速くなり、小さくすると処理中の負荷が軽くなる
  limit: 50 # ミリ秒
  # trueの場合はアンロードされた世界もチェック対象に含める。
  # これはすなわちロードされていない世界の保護が全て削除されることを意味するので、よく理解してから変更すること
  unloaded: false

# 多言語サポート
locale:
  enable: true
  default: "en_us"

database:
  # データベースの種類 (sqlite/mysql)
  type: sqlite
  sqlite:
    file: "chestsafe.db"
  mysql:
    host: "localhost:3306"
    name: "chestsafe"
    username: "root"
    password: "your_mysql_password"
    # MySQLのクエリキャッシュを無効化する事を推奨
    # プラグインにキャッシュ機能が備わっているためクエリキャッシュはメモリの無駄になる。
    #init: "SET SESSION query_cache_type=0"
    init: "/* ChestSafe */SELECT 1"
    # JDBCのプロパティ、良く分からないなら触らないこと
    properties:
      "useSSL": "false"
      #"allowPublicKeyRetrieval": "true" # for MySQL 8
      # encoding
      #"useUnicode": "true"
      #"characterEncoding": "UTF-8"
      #"characterSetResults": "UTF-8"
      # performance
      "maintainTimeStats": "false"
      "elideSetAutoCommits": "true"
      "useLocalSessionState": "true"
      "alwaysSendSetIsolation": "false"
      "cacheServerConfiguration": "true"
      "cachePrepStmts": "true"
      "prepStmtCacheSize": "250"
      "prepStmtCacheSqlLimit": "2048"
      #"useServerPrepStmts": "true"
  # コネクションプーリングの設定、良く分からないなら触らないこと
  connectionPool:
    # -1はデフォルト設定を使用
    maximumPoolSize: -1
    minimumIdle: -1
    maxLifetime: -1
    connectionTimeout: -1
    idleTimeout: -1

# キャッシュの設定
cache:
  # +n == 指定した数のLRUキャッシュを使用(メモリ節約)
  # -1 == 無限にキャッシュする(高速)
  #  0 == キャッシュを無効化(テスト用、詳しい人向け)
  id: -1
  # `location`は「保護が存在しない」を意味するためのネガティブキャッシュが含まれる
  # そのため、`protection`よりも大きな値を設定することを推奨
  location: 30000
  protection: 10000

# サワルナァ
version: 2