/** * Returns the direction a dispenser is facing. * @param block a dispenser block * @return the facing direction */ public static BlockFace getFacing(GlowBlock block) { GlowBlockState state = block.getState(); MaterialData data = state.getData(); if (!(data instanceof Dispenser)) { return BlockFace.SELF; } Dispenser dispenserData = (Dispenser) data; return dispenserData.getFacing(); }
public Dispenser(BlockFace direction) { this(); setFacingDirection(direction); }
public BlockFace getFacing() { int data = getData() & 0x7; switch (data) { case 0x0: return BlockFace.DOWN; case 0x1: return BlockFace.UP; case 0x2: return BlockFace.NORTH; case 0x3: return BlockFace.SOUTH; case 0x4: return BlockFace.WEST; case 0x5: default: return BlockFace.EAST; } }
Dispenser dispenser = new Dispenser(Material.DISPENSER, fromBlock.getData()); Block toBlock = fromBlock.getRelative(dispenser.getFacing()); Claim fromClaim = this.dataStore.getClaimAt(fromBlock.getLocation(), false, null); Claim toClaim = this.dataStore.getClaimAt(toBlock.getLocation(), false, fromClaim);
public void setFacingDirection(BlockFace face) { byte data; switch (face) { case DOWN: data = 0x0; break; case UP: data = 0x1; break; case NORTH: data = 0x2; break; case SOUTH: data = 0x3; break; case WEST: data = 0x4; break; case EAST: default: data = 0x5; } setData(data); }
public void setFacingDirection(BlockFace face) { byte data; switch (face) { case DOWN: data = 0x0; break; case UP: data = 0x1; break; case NORTH: data = 0x2; break; case SOUTH: data = 0x3; break; case WEST: data = 0x4; break; case EAST: default: data = 0x5; } setData(data); }
@EventHandler(ignoreCancelled = true) public void onBlockDispense(BlockDispenseEvent event) { Cause cause = create(event.getBlock()); Block dispenserBlock = event.getBlock(); ItemStack item = event.getItem(); MaterialData materialData = dispenserBlock.getState().getData(); Events.fireToCancel(event, new UseItemEvent(event, cause, dispenserBlock.getWorld(), item)); // Simulate right click event as players have it if (materialData instanceof Dispenser) { Dispenser dispenser = (Dispenser) materialData; Block placed = dispenserBlock.getRelative(dispenser.getFacing()); Block clicked = placed.getRelative(dispenser.getFacing()); handleBlockRightClick(event, cause, item, clicked, dispenser.getFacing().getOppositeFace(), placed); } }
@Override public void placeBlock(GlowPlayer player, GlowBlockState state, BlockFace face, ItemStack holding, Vector clickedLoc) { super.placeBlock(player, state, face, holding, clickedLoc); MaterialData data = state.getData(); if (data instanceof Dispenser) { ((Dispenser) data).setFacingDirection(getOppositeBlockFace(player.getLocation(), true)); state.setData(data); } else { warnMaterialData(Dispenser.class, data); } }
public BlockFace getFacing() { int data = getData() & 0x7; switch (data) { case 0x0: return BlockFace.DOWN; case 0x1: return BlockFace.UP; case 0x2: return BlockFace.NORTH; case 0x3: return BlockFace.SOUTH; case 0x4: return BlockFace.WEST; case 0x5: default: return BlockFace.EAST; } }
BlockFace directionFacing = dis.getFacing();
public Dispenser(BlockFace direction) { this(); setFacingDirection(direction); }