エンドポータルとチャンクローダーを利用した砂無限増殖装置というのがある(通称: Sand Duper)。以下の動画を参考に作ったが、PaperMC + Multiverse-Core という環境だと動作しなかった。
問題と解決方法
問題点は以下のとおりでこれらを解決する必要がある。
- Sand Duper が動作しない
- チャンクローダーが動作しない
- エンドポータルを通った砂が別の箇所にスポーンする
Sand Duper が動作しない
まず、そもそも砂無限増殖装置の要である Sand Duper が動作しない(粘着ピストンでガチャガチャするとブロックが増殖する現象)。これは PaperMC で修正されてしまっているためである。これを解決するためには GravityControl というModを導入する。設定は特に必要ない。
GravityControl - Minecraft Plugin
チャンクローダーが動作しない
次にチャンクローダーが動作しないのでエンドに行ったり遠くに行くとSand Duperの装置が停止してしまう。どうもPaperMC環境だと動作しないチャンクローダーがある模様。そのため、PaperMCでも動作するチャンクローダーとして以下があるのでこれに置き換える。
エンドポータルを通った砂が別の箇所にスポーンする
エンドポータルを通った砂が別の箇所にスポーンする。これは Multiverse-Core
が原因で、転送された砂が worlds.yml
に記述されているエンドの spawnLocation
で指定された座標にスポーンしてしまうためである(なぜかプレイヤーは影響を受けない。リスポーンするときはここになる)。
これを解決するためには、spawnLocation
をエンドポータルで転送される座標に指定する必要がある。なお、このとき横方向の座標は+0.5
しないと微妙にズレてうまくいかない。これはおそらく座標はブロックの端を表すが、エンドポータルで転送される座標はエンティティの中心をもとにしているせいかもしれない。また縦方向に+1
するといいかもしれない。
plugins/Multiverse-Core/worlds.yml:
worlds: world_the_end: spawnLocation: ==: MVSpawnLocation x: 100.5 y: 50.0 z: 0.5 pitch: 0.0 yaw: 0.0
なお、別件だが Multiverse-Core
ではデフォルトではリスポーン位置はそのディメンジョンになるので、worlds.yml
のエンドの respawnWorld
は world
に変更しておかないとベッドを使っていない場合エンドから出れなくなるので注意が必要。
plugins/Multiverse-Core/worlds.yml:
worlds: world_the_end: respawnWorld: world
最後に
これでようやく砂無限装置が動作するようになる。なお、砂無限増殖装置を作成するときにエンドポータルフレームを破壊するが、PaperMC では unsupported-settings.allow-permanent-block-break-exploits
の設定を true
にしないと破壊できないので注意が必要(デフォルト false
)。ほかにもこういった怪しい動作が修正されていたりするので、unsupported-settings
以下の設定は有効にしておくとよい。
config/paper-global.yml:
unsupported-settings: allow-grindstone-overstacking: true allow-headless-pistons: true allow-permanent-block-break-exploits: true allow-piston-duplication: true