Minecraft Java Edition 1.20 + PaperMC + Multiverse-Core 環境での砂無限増殖装置(Sand Duper)

エンドポータルとチャンクローダーを利用した砂無限増殖装置というのがある(通称: Sand Duper)。以下の動画を参考に作ったが、PaperMC + Multiverse-Core という環境だと動作しなかった。

問題と解決方法

問題点は以下のとおりでこれらを解決する必要がある。

  1. Sand Duper が動作しない
  2. チャンクローダーが動作しない
  3. エンドポータルを通った砂が別の箇所にスポーンする

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 のエンドの respawnWorldworld に変更しておかないとベッドを使っていない場合エンドから出れなくなるので注意が必要。

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

動作環境

  • Minecraft:
  • Server:
    • PaperMC: 1.20.1
  • Mod:
    • Multiverse-Core: 4.3.1
    • GravityControl: 2.0.0