Anvil/Chest Manipulation/ja
金床の当たり判定は一定ではなく、代わりに全ての状態(東西南北向き)に共通の当たり判定が1種類あり、金床に視点を合わせる(それ以外の行為は後述)と更新される。通常の金床、少し壊れた金床、かなり壊れた金床の当たり判定は全て共通。
チェストにも同様の特性があるが、当たり判定が変化するのはラージチェストのみ。チェストとトラップチェストの当たり判定はそれぞれ独立している。
金床/チェストの真横に立ち、それと別状態の金床/チェストを見ることで、当たり判定を更新してブロック内に「めり込む」ことができる。同じ手法で、金床/チェストの長さを人為的に延長し、想定されているよりも1/2ドット先に立つことができる。
元のブロックを見てしまうと当たり判定が通常に戻ってしまうので注意が必要。
上から見た当たり判定の比較
金床のbounding boxはシンプルな1×0.75(16×12ドット)で、X/Z方向に回転できる。
単体のチェストのbounding boxはシンプルな0.875×0.875(14×14ドット)。「ラージチェスト」では片側が1ドット長い。
In the graphic, darker colors indicate collision areas that are common to all variants : you should stand there in order not to fall during manipulation.
Lighter colors indicate collision areas that are specific to one variant: you should stand there in order to clip inside the block during manipulation.
解説
/* Simplified code */
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
/* In BlockAnvil.java */
public void setBlockBoundsBasedOnState(BlockPos pos)
{
EnumFacing enumfacing = getBlockState(pos).getValue(FACING);
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
if (enumfacing.getAxis() == EnumFacing.Axis.X)
{
this.setBlockBounds(0.0, 0.0, 0.125, 1.0, 1.0, 0.875);
}
else
{
this.setBlockBounds(0.125, 0.0, 0.0, 0.875, 1.0, 1.0);
}
}
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
/* In BlockChest.java */
public void setBlockBoundsBasedOnState(BlockPos pos)
{
if (getBlockState(pos.north()).getBlock() == this)
{
this.setBlockBounds(0.0625, 0.0, 0.0, 0.9375, 0.875, 0.9375);
}
else if (getBlockState(pos.south()).getBlock() == this)
{
this.setBlockBounds(0.0625, 0.0, 0.0625, 0.9375, 0.875, 1.0);
}
else if (getBlockState(pos.west()).getBlock() == this)
{
this.setBlockBounds(0.0, 0.0, 0.0625, 0.9375, 0.875, 0.9375);
}
else if (getBlockState(pos.east()).getBlock() == this)
{
this.setBlockBounds(0.0625, 0.0, 0.0625, 1.0, 0.875, 0.9375);
}
else //single chest
{
this.setBlockBounds(0.0625, 0.0, 0.0625, 0.9375, 0.875, 0.9375);
}
}
This method is called from these other places (same for BlockChest):
Notably, the following actions can be used for manipulation:
- Simply looking at the block (without necessarily drawing its selection box)
- Shooting an arrow at the block (has a persistent effect).
- Causing the block to re-render, which can be done by updating the surroundings.
- Using rain to update the block (randomly).
制約
シングルプレイヤーでは、チェスト/金床にめり込んでしまえば通常は通り抜けられる。
マルチプレイヤーでは、通常はアンチチートの影響で完全に通り抜けることはできない。
1.9でこの仕組みは修正された(それぞれの状態が独自の当たり判定を持つようになった)。