Minecraftサーバーを動かす知識

ChestSafeの使い方と設定

投稿:  更新:  By: HimaJyun

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

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

スポンサーリンク

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と、メッセージに関する設定を行うmessage.ymlがあります。

config.yml

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

# ブロックをクリックした際に表示される保護情報をアクションバーに表示するか
actionBar: true
# 新しいバージョンを自動でチェックするか
versionCheck: 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
    FURNACE:
        # この設定はダミー設定。
        # デフォルトの設定をそのまま利用する際にyamlを正しくロードするため
        inherit: true
    # `_`から始まる値は特殊なワイルドカード
    # 複数の種類があるブロックをまとめて指定
    # ワイルドカードは次の通り: _CHEST, _SHULKER_BOX, _FENCE_GATE, _SIGN, _DOOR, _BANNER, _TRAPDOOR, _BED, *
    _SHULKER_BOX:
        auto: false
    _DOOR:
        auto: public
        flag:
            redstone: true

cleanup:
    # 存在しない保護を削除するための自動クリーンアップを有効にするか
    enable: false
    # 起動からの待ち時間。0にすると即座に実行
    delay: 60
    # クリーンアップの周期。0にすると定期実行を無効化
    interval: 86400
    # 1秒間にチェックする保護数
    checkPerSecond: 500
    # 警告: この機能はブロックの存在しない保護を削除します。
    # `protectable`から対象ブロックを削除するとそのブロックの保護はすべて削除されます。
    # また、ロードされていない世界の保護もすべて削除されます。

database:
    # データベースの種類 (sqlite/mysql)
    type: sqlite
    sqlite:
        file: "chestsafe.db"
    # MySQLの場合は接続情報が必要
    mysql:
        host: "localhost:3306"
        name: "chestsafe"
        username: "root"
        password: "your_mysql_password"
        # MySQLの場合はクエリキャッシュを無効化することを推奨
        # このプラグインがキャッシュしているのでクエリキャッシュはメモリの無駄遣いとなる
        init: "SET SESSION query_cache_type=0"
        # JDBCのプロパティ、良く分からないなら触らないこと
        properties:
            "useSSL": "false"
            # 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: 1

message.yml

日本語化した設定ファイルを掲載しておきます。

doNotHavePermission: "&cあなたには権限がありません!"
missingArgument: "&c引数が足りません!"
invalidArgument: "&c不正な引数が指定されました&r: {value}"
playerNotFound: "&cプレイヤーがみつかりません&r: {name}"

notice: "{type} {block}: {name}({uuid})"
denied: "&cこの{type} {block}はあなたの物ではありません!"
protected: "{type} {block}: 保護が作成されました"
removed: "{type} {block}: 保護が削除されました"
ready: "ブロックをクリックしてください"

notProtected: "&c{block}は保護されていません"
notProtectable: "&c{block}は保護できません"
alreadyProtected: "&c{block}はすでに保護されています"

persistEnabled: "連続モードが&a有効&rになりました"
persistDisabled: "連続モードが&c無効&rになりました"
flagSet: "フラグ: {flag}={value}"
memberChanged: "保護のメンバーが変更されました"
transferSuccess: "保護の譲渡に成功しました"
transferWarning: "&6警告&r: 保護を譲渡するとあなたは操作できなくなります!"
reloaded: "設定がリロードされました"

info:
    - "種類: {type}"
    - "オーナー: {owner}({uuid})"
    - "メンバー: [{members}]"
    - "フラグ: &{{flags}&}"

cleanup:
    start: "クリーンアップ: 開始しました ({speed}チェック/秒)"
    progress: "クリーンアップ: {checked}の保護を確認 / {removed}の保護を削除"
    removed: "クリーンアップ: 削除 world={world}, x={x}, y={y}, z={z}"
    end: "クリーンアップ: 完了しました"
    already: "クリーンアップ: 既に実行されています"
    cancelled: "クリーンアップ: キャンセルされました"

newVersion:
    - "新しいバージョンが利用可能: {old} -> {new}"
    - "ダウンロード: {url}"

help:
    private: "あなただけが使用できる保護を作成します"
    public: "他の人も使用できる保護を作成します"
    flag: "フラグを設定します"
    remove: "保護を削除します"
    info: "保護の詳細を確認します"
    member: "保護のメンバーを追加/削除します"
    transfer: "保護を譲渡します"
    persist: "連続モードの設定を切り替えます"
    cleanup: "存在しないブロックの保護を削除します"
    reload: "設定をリロードします"
    version: "バージョンを表示します"
    help: "使い方を表示します"
    example: "例:"
    availableFlags: "利用可能なフラグ: {flags}"

# //*<!-- syntax -->*/
# &0->Black(#000000)
# &1->Dark Blue(#0000AA)
# &2->Dark Green(#00AA00)
# &3->Dark Aqua(#00AAAA)
# &4->Dark Red(#AA0000)
# &5->Purple(#AA00AA)
# &6->Gold(#FFAA00)
# &7->Gray(#AAAAAA)
# &8->Dark Gray(#555555)
# &9->Blue(#5555FF)
# &a->Green(#55FF55)
# &b->Aqua(#55FFFF)
# &c->Red(#FF5555)
# &d->Light Purple(#FF55FF)
# &e->Yellow(#FFFF55)
# &f->White(#FFFFFF)
# &k->Obfuscated
# &l->Bold
# &m->Strikethrough
# &n->Underline
# &o->Italic
# &r->Reset
# &&->&
# {variable}->variable
# &{variable&}->{variable}

# 触らない
version: 1