※日本語説明はページ下部にあります。
*The following instructions are based on translations using a translator.
Features
- Lightning rod pipes that can transport items over long distances.
- Three types of filters.
- Functions as a Shulker loader/unloader using hoppers.
- Caches item transmission route information in memory (can be used with very large and complex item sorter with low load).
- This plugin does not add metadata to blocks, entities or others. (You can always restore the server to its original state by removing the plugin)
Outline
- HopperPipes
- ItemFrameFilter
- ChestFilter
- RegularExpressionFilter
- ShulkerBoxLoader
- ShulkerBoxUnloader
- RemoteChest
- AutoCraftingHopper
- RoutingDebugger
- stack_push option
Description
The processing timing of the hopper will be explained using the following notation.
[Pickup]: When a hopper picks up an item entity directly above itself.
[Receive]: When a hopper receives an item from another hopper or from a chest directly above it.
[Send]: When a hopper passes an item to another hopper or chest.
HopperPipes
[Send]:
Hopper can be connected to a distant chest using a
lightning rod as a pipe. (Maximum 100 blocks)
The pipe is unidirectional. If you want to make the length more than 100 blocks, please change the configuration file (pipe.max_length) or insert a hopper in between.
If you branch the pipe, install an additional hopper directly below the pipe.
If there is a hopper directly below the pipe, items will flow there preferentially.
If a hopper at a branching point is full, the system will bypass that hopper and look for the next destination. However, if a hopper with filtering functionality is in use, it won't search for the next destination even if it's full. It will cancel item transmission.
To
furnace /
blast furnace /
smoker /
brewing stand
When connected, the hopper orientation determines the item destination slot, not the pipe orientation.
ItemFrameFilter
[Pickup]
[Receive]:
By attaching a
item frame to the hopper, you can set a filter to only receive that item.
The item frame works as a filter no matter where you attach it in the top, bottom, or side of the hopper.
If there are no items in the frame, the hopper will not accept any type of item.
By attaching multiple item frames to the hopper, the hopper receives one of the appropriate kind of items.
It can also be used at the same time as chest filters and regular expression filters.
ChestFilter
[Pickup]
[Receive]:
By attaching an
observer facing the hopper side next to the hopper and a
chest next to it, you can set a filter to only receive the types of items that are in the chest.
If a chest is empty, its hopper will not receive any items of any kind.
Also, the filter must be installed horizontally in the hopper; it will not work above or below.
You can also place a
redstone comparator instead of an observer.
RegularExpressionFilter
[Pickup]
[Receive]:
By attaching a wall
sign on the hopper and writing a regular expression after
"r:", you can set a filter that only passes items with item IDs that match the regular expression.
For example, if you write "r:glass$" on a sign, that hopper will accept glass, tinted glass, stained glass, and spyglass, but not glass pane.
By writing tow or more regular expressions filter in a wall sign, the hopper receives an item that matches one of the regular expressions.
Please refer to the wiki etc. for the item ID set for each item.
ShulkerBoxLoader
Attach a wall sign on the hopper and write "shulker_loader" on it to activate the Shulker Box Loader functionality.
[Receive]:
You will only receive an empty shulker box.
[Send]:
When: There is an empty shulker in the hopper and there are no empty slots in the chest directly above it.
Fill the shulker with the first 27 stacks of the contents of the chest directly above the hopper and send it to the destination chest.
ShulkerBoxUnloader
Attach a wall sign on the hopper and write "shulker_unloader" on it to activate the Shulker Box Unoader functionality.
[Send]:
When: The item inside the hopper is a shulker box with contents inside.
While holding the shulker box, remove the contents of the shulker box one stack at a time and send it to the destination chest.
For other items or empty shulker boxes, send them to the destination chest as usual.
ShulkerBoxPicker
Attach a wall sign on the hopper and write "shulker_picker" on it to activate the Shulker Box Picker functionality.
[Pickup]
[Receive]:
Then: If the item the hopper is scheduled to receive is a shulker box with an item inside.
If the final destination chest for the item in the first slot in that shulker box is not empty, the hopper will cancel the Receive of that shulker box.
This is used in conjunction with a shulker unloader.
Example of use
By combining them as shown in the screenshot, the following behavior occurs.
- If the upper chest is full, fill the first 27 stacks into an empty shulker box, then send that shulker box to the lower chest.
- If the upper chest is empty, take the contents from the shulker box of the lower chest and send it to the upper chest.
AutoCraftingHopper
[Receive]:
By placing a
CraftingTable attached a
ItemFrame on top of the
hopper and a
container on top of it, the automatic crafting function will be activated.
If the materials necessary to craft an item are in the container above, the item will be crafted using the materials and the crafted item will be received by the hopper.
Hopper common specifications
[Pickup]:
If there is a lightning rod directly above the hopper, it will not pick up the item.
RemoteChest
Attach the item frame on the pipe for transporting items, set the item, and right-click.
Open the chest where the items attached to the picture frame are stored.
You can put one block in between.
RoutingDebugger
Attach a wall sign on the hopper and write "routing_debugger" on it to activate the RoutingDebugger functionality.
Right-click on the RoutingDebugger hopper to see a list of all vanilla items menu.
When you click on an item from the list, route information to the chest where that item is sorted will be displayed.
These also work when clicking on items in the player inventory.
stack_push option
[Receive][Send]:
If "hopper.stack_push" in the config.yml is set to true, all hoppers in the world will send one stack of items at a time.
However, items between two hoppers facing each other will still be passed one at a time.
(The hopper is part of the hopper timer.)
*Warning: If enabled this, existing equipment that uses the hopper may not function properly.
*I have confirmed that this does not work correctly when the stack_push option is set to true on the PaperMC.
This is a bug in PaperMC.
It has been confirmed that it works correctly in Bukkit and Spigot environments.
Other notes
- The current version is a prototype. There may be bugs. In addition, specifications may change without notice.
- Connecting to a composter using pipes is not supported. Please connect the hopper directly.
- Avoid pipes that circulate endlessly or pipes that face each other as they cause load.
- If the destination chest for the first slot in the hopper cannot be found, the hopper will stop searching for destination chests for subsequent items. Connect the end of the pipe to the chest that will drain the "other items".
- The arrow on the hopper in the screenshot is provided by resourcepack, not my plugin. My plugin does not change the skin of the blocks.
---------------------------- Original text below (japanese)
特徴
- 避雷針を使い、ホッパーのアイテムを遠くまで運べます。
- ホッパーに対し、用途に合わせて3種類のフィルターが設定できます
- 高速なシュルカーローダー/アンローダーを簡単に実装できます。
- アイテムの送信経路情報をメモリ上にキャッシュします。非常に大規模で複雑なアイテムソーターでも低コストで運用可能です。
- このプラグインはブロックやエンティティにメタ情報を追加しません。プラグインを削除すればいつでも元の状態に戻すことが出来ます。
機能
- ホッパーパイプ
- 額縁フィルター
- チェストフィルター
- 正規表現フィルター
- シュルカーローダー
- シュルカーアンローダー
- リモートチェスト
- 自動クラフトホッパー
- RoutingDebugger
- stack_pushオプション
説明
以降、以下の表記を用いてホッパーの処理タイミングの説明を行います
[Pickup]: ホッパーが、自身の真上にあるアイテムエンティティを拾う時。
[Receive]: ホッパーが、別のホッパーや自身の真上にあるチェストからアイテムを受け取る時。
[Send]: ホッパーが別のホッパーやチェストにアイテムを渡す時
ホッパーパイプ
[Send]:
避雷針をパイプ代わりにして遠くのチェストに繋ぐことができます。(最大100ブロック)
パイプは一方向です。100ブロック以上の長さにしたい場合は、設定ファイル(pipe.max_length)を変更するか、間にホッパーを挟んでください。
パイプを分岐する場合は、パイプの真下に追加のホッパーを設置します。
パイプの真下にホッパーがある場合、そちらに優先的にアイテムが流れます。
分岐地点のホッパーが満タンの場合、そのホッパーを無視して次の送信先を探します。
ただし、フィルター機能が有効なホッパーの場合は満タンでも迂回せずにアイテム送信をキャンセルします。
(かまど/溶鉱炉/燻製機/醸造台への接続)
かまど/溶鉱炉/燻製機/醸造台へ接続する場合は、
パイプの向きではなく送信元ホッパーの向きによってアイテムの格納先スロットが決定されます。
額縁フィルター
[Pickup]
[Receive]:
ホッパーに額縁を貼り付けることで、そのアイテムのみを受け取るフィルターを設定することができます。
額縁は、ホッパーの上下左右どの方向に貼り付けてもフィルターとして動作します。
額縁にアイテムを入れない状態だと、どの種類のアイテムも受け取りません。
複数の額縁を張り付けることで、そのうちいずれかに該当する種類のアイテムを受け取ることが出来ます。
また、チェストフィルター、正規表現フィルターと同時に利用できます。
チェストフィルター
[Pickup]
[Receive]:
ホッパーの真横にホッパーを向いたオブザーバー、その横にチェストを配置することで、チェスト内にある種類のアイテムのみを受け取るフィルターを設定することができます。
チェストが空の状態だと、どの種類のアイテムも受け取りません。
またフィルターはホッパーに対して水平方向に配置してください。真上や真下に設置しても効果がありません。
オブザーバーの代わりにレッドストーンコンパレーターを使うこともできます。
額縁フィルター、正規表現フィルターと同時に利用できます。
正規表現フィルター
[Pickup]
[Receive]:
ホッパーに看板を貼り付け、「r:」の後に正規表現を記述することで、正規表現に一致するアイテムIDを持つアイテムのみを通過させるフィルターを設定できます。たとえば、看板に「r:glass$」と書くと、そのホッパーはガラス、色付きガラス、ステンドグラス、望遠鏡を受け取りますが、ガラス板やその他アイテムは受け取りません。
一つの看板に複数行記述することで、複数のフィルターを設定できます。その場合、いずれかの正規表現に当てはまるアイテムIDのアイテムを受け取ります。
額縁フィルター、チェストフィルターと同時に利用できます。
各アイテムに設定されたアイテムIDはwikiなどを参照してください。
シュルカーローダー
ホッパーに「shulker_loader」と書かれた看板を貼り付けることで、シュルカーローダーにできます。
[Receive]:
中身の入っていない、空のシュルカーのみを受け取ります。
[Send]:
ホッパー内に空のシュルカーが存在し、真上のチェストに空きスロットがない場合、真上のチェストの中身のうち最初の27スタックをシュルカーに詰めて送信します。
シュルカーアンローダー
ホッパーに「shulker_unloader」と書かれた看板を貼り付けることで、シュルカーアンローダーにできます。
[Send]:
ホッパー内のアイテムが中身の入ったシュルカーボックスの場合、シュルカーボックスを保持したままシュルカーボックスの中身を1スタックずつ取り出し送信します。
それ以外のアイテムや空のシュルカーボックスの場合、通常通り送信します。
シュルカーピッカー
ホッパーに「shulker_picker」と書かれた看板を貼り付けることで、シュルカーピッカーにできます。
[Pickup]
[Receive]:
受け取り予定アイテムが中にアイテムの入ったシュルカーボックスの場合、そのシュルカーボックスの最初のアイテムの最終的な格納先チェストに1つ以上のアイテムが入ってる場合は受け取りをキャンセルします。
シュルカーアンローダーと組み合わせて利用します。
使用例
下の図のように組み合わせることで、以下のような挙動をします。
・上のチェスがいっぱいになった場合、空のシュルカーボックスに詰めて下のチェストに格納する。
・上のチェストが空になった場合、下のチェストのシュルカーボックスから中身を取り出して上のチェストに格納する。
自動クラフトホッパー
[Receive]:
ホッパーの上に額縁の貼られた作業台を、その上にコンテナを置くことで、自動クラフト機能が有効になります。
アイテムのクラフトに必要な材料が上のコンテナ内に揃っていると、素材を使ってアイテムをクラフトし、クラフトアイテムをホッパーが受け取ります。
ホッパー共通仕様
[Pickup]:
ホッパーの真上に避雷針が存在する場合、アイテムを拾いません。
リモートチェスト
アイテム輸送用のパイプに額縁を貼り付け、アイテムをセットして右クリックすることで、額縁に貼り付けられたアイテムの仕分け先を開きます。
間にブロックを一つ挟むことができます。
RoutingDebugger
ホッパーに「routing_debugger」と書かれた看板を貼り付けることで、RoutingDebugger機能が有効になります。
RoutingDebugger ホッパーを右クリックすると、すべてのバニラアイテムが一覧表示されます。
一覧からアイテムをクリックすると、そのアイテムの仕分け先チェストまでのルート情報を表示します。
また、プレイヤーインベントリ内のアイテムをクリックしてもこれらは動作します
stack_pushオプション
[Receive][Send]:
設定ファイルの「hopper.stack_push」がtrueに設定されている場合、ワールド内のすべてのホッパーは一度に1スタックずつアイテムを送受信します。
ただし、向かい合っている2つのホッパー(ホッパータイマー)の間のアイテムは、通常通り1つずつ渡されます。
※これを有効にすると、ホッパーを使う既存の装置の一部が機能しなくなる恐れがあります。
※PaperMCサーバーでstack_pushオプションをtrueに設定した場合、正しく動作しないことを確認しています。
これは PaperMC のバグによるものです。
Bukkit、Spigot環境で正常に動作することを確認してます。
その他注意事項
- 現在のバージョンは試作版です。バグがあるかもしれません。また、予告なく仕様が変更になる可能性があります。
- パイプを使ったコンポスターへの接続はサポートされていません。ホッパーを直接繋いでください。
- 無限に循環するパイプや、向かい合わせのパイプは処理落ちの原因になるため避けてください。
- ホッパー内の最初のスロットの送信先チェストが見つからない場合、2 つ目以降のアイテムの送信先を探す処理は行わずホッパーが停止します。 パイプの終端は「それ以外のアイテム」を流すチェストに接続してください。
- 画像に含まれるホッパー上の矢印はリソースパックによるものです。このプラグインはブロックの見た目を変更しません。