SPIGOT-7380: Add PlayerInteractEvent#getClickedPosition and ChiseledBookshelf#getSlot
By: Jishuna <joshl5324@gmail.com>
This commit is contained in:
@@ -1,10 +1,15 @@
|
||||
package org.bukkit.craftbukkit.block;
|
||||
|
||||
import net.minecraft.world.level.block.ChiseledBookShelfBlock;
|
||||
import net.minecraft.world.level.block.entity.ChiseledBookShelfBlockEntity;
|
||||
import net.minecraft.world.phys.Vec2F;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.block.ChiseledBookshelf;
|
||||
import org.bukkit.block.data.Directional;
|
||||
import org.bukkit.craftbukkit.inventory.CraftInventoryChiseledBookshelf;
|
||||
import org.bukkit.inventory.ChiseledBookshelfInventory;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
public class CraftChiseledBookshelf extends CraftBlockEntityState<ChiseledBookShelfBlockEntity> implements ChiseledBookshelf {
|
||||
|
||||
@@ -35,4 +40,31 @@ public class CraftChiseledBookshelf extends CraftBlockEntityState<ChiseledBookSh
|
||||
|
||||
return new CraftInventoryChiseledBookshelf(this.getTileEntity());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSlot(Vector clickVector) {
|
||||
BlockFace facing = ((Directional) this.getBlockData()).getFacing();
|
||||
|
||||
Vec2F faceVector;
|
||||
switch (facing) {
|
||||
case NORTH:
|
||||
faceVector = new Vec2F((float) (1.0f - clickVector.getX()), (float) clickVector.getY());
|
||||
break;
|
||||
case SOUTH:
|
||||
faceVector = new Vec2F((float) clickVector.getX(), (float) clickVector.getY());
|
||||
break;
|
||||
case WEST:
|
||||
faceVector = new Vec2F((float) clickVector.getZ(), (float) clickVector.getY());
|
||||
break;
|
||||
case EAST:
|
||||
faceVector = new Vec2F((float) (1f - clickVector.getZ()), (float) clickVector.getY());
|
||||
break;
|
||||
case DOWN:
|
||||
case UP:
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
|
||||
return ChiseledBookShelfBlock.getHitSlot(faceVector);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user