@Override public SpongeBlockFilter getBlockFilter() { return allowedBlocks.getValue(); }
@Override public SpongeBlockFilter getBlockFilter() { return allowedBlocks.getValue(); }
private int getMultiplier(Sign sign) { int multiplier; try { multiplier = Integer.parseInt(SignUtil.getTextRaw(sign, 3)); } catch (Exception e) { multiplier = requireFuel.getValue() ? 0 : 1; setMultiplier(sign, multiplier); } if (multiplier <= 0 && !requireFuel.getValue()) return 1; return Math.max(0, multiplier); }
@Listener public void onCollision(CollideEntityEvent event, @First Minecart minecart) { if (event.getEntities().stream().filter(entity -> entity instanceof Minecart).anyMatch(entity -> ( (emptyCarts.getValue() && entity instanceof RideableMinecart && entity.getPassengers().isEmpty())) || (fullCarts.getValue() && (!(entity instanceof RideableMinecart) || !entity.getPassengers().isEmpty()))) ) { event.setCancelled(true); } }
private boolean isValidFernFarming(Location<?> location) { return fernFarming.getValue() && location.getBlockType().equals(BlockTypes.TALLGRASS) && ShrubTypes.FERN.equals(location.get(Keys.SHRUB_TYPE).orElse(null)) && location.getRelative(Direction.UP).getBlockType() == BlockTypes.AIR; }
private void setMultiplier(Sign sign, int amount) { if(!requireFuel.getValue()) amount = Math.max(amount, 1); List<Text> lines = sign.lines().get(); lines.set(3, Text.of(amount)); sign.offer(Keys.SIGN_LINES, lines); }
@Override public boolean verifyLines(Location<World> location, List<Text> lines, @Nullable Player player) { ((SpongeSelfTriggerManager) CraftBookPlugin.inst().getSelfTriggerManager().get()).register(this, location); lines.set(2, Text.of("0")); lines.set(3, requireFuel.getValue() ? Text.of("0") : Text.of("1")); return true; }
@Override public void onInitialize() throws CraftBookException { super.onInitialize(); fernFarming.load(config); if (fernFarming.getValue()) { BlockTypes.TALLGRASS.setTickRandomly(true); } }
@Listener public void onEntityCreate(SpawnEntityEvent event) { if(onlyOnExit.getValue()) return; event.getEntities().stream().filter(entity -> entity instanceof RideableMinecart).forEach(entity -> Sponge.getGame().getScheduler().createTaskBuilder().delayTicks(emptyTicks.getValue()).execute(new MinecartDecay((Minecart) entity)).submit(CraftBookPlugin.inst())); }
@Listener public void onEntityCreate(SpawnEntityEvent event) { if(onlyOnExit.getValue()) return; event.getEntities().stream().filter(entity -> entity instanceof Boat).forEach(entity -> Sponge.getGame().getScheduler().createTaskBuilder() .delayTicks(emptyTicks.getValue()).execute(new BoatDecay((Boat) entity)).submit(CraftBookPlugin.inst())); }
GateColumn(Location<World> topBlock, ConfigValue<List<SpongeBlockFilter>> allowedBlocks) { while (BlockUtil.doesStatePassFilters(allowedBlocks.getValue(), topBlock.getBlock())) { topBlock = topBlock.getRelative(Direction.UP); } topBlock = topBlock.getRelative(Direction.DOWN); this.topBlock = topBlock; }
@Override public boolean isValid(Location<World> location) { return BlockUtil.doesStatePassFilters(allowedBlocks.getValue(), location.getBlock()) && (location.getBlockY() == 0 || !location.getRelative(Direction.DOWN).getBlockType().equals(BlockTypes.AIR)) && location.getRelative(Direction.UP).getBlockType().equals(BlockTypes.AIR); }
private void toggleColumns(BlockState state, Sign sign, @Nullable Humanoid human, Set<GateColumn> columns, Boolean forceState) { if (state == null) { state = BlockTypes.FENCE.getDefaultState(); } for (GateColumn vec : columns) { Location<World> col = vec.getBlock(); if (forceState == null) { forceState = !BlockUtil.doesStatePassFilters(allowedBlocks.getValue(), col.getRelative(Direction.DOWN).getBlock()); } toggleColumn(col, sign, human, forceState, state); } }
@Listener public void onPlayerInteract(InteractBlockEvent.Secondary event, @First Player player) { event.getTargetBlock().getLocation().ifPresent((location) -> { int powerLevel = BlockUtil.getDirectBlockPowerLevel(location).orElse(-1); HandType hand = event instanceof InteractBlockEvent.Secondary.MainHand ? HandTypes.MAIN_HAND : HandTypes.OFF_HAND; if (powerLevel >= 0 && permissionNode.hasPermission(player) && player.getItemInHand(hand).isPresent() && player.getItemInHand(hand).get().getType() == ammeterItem.getValue().getType()) { player.sendMessage(getCurrentLine(powerLevel)); event.setCancelled(true); } }); }
@Override public BlockBag getBlockBag(Location<World> location) { BlockBag mainBlockBag = super.getBlockBag(location); Location<World> next = BlockUtil.getNextMatchingSign(location, SignUtil.getBack(location), maximumLength.getValue() + 2, this::isMechanicSign); if (next != null) { BlockBag nextBlockBag = super.getBlockBag(next); if (nextBlockBag != null) { return new MultiBlockBag(mainBlockBag, nextBlockBag); } } return mainBlockBag; }
@Listener public void onPlayerInteract(InteractBlockEvent.Secondary event, @First Player player) { event.getTargetBlock().getLocation().ifPresent((location) -> { int lightLevel = BlockUtil.getLightLevel(location.getRelative(event.getTargetSide())); HandType hand = event instanceof InteractBlockEvent.Secondary.MainHand ? HandTypes.MAIN_HAND : HandTypes.OFF_HAND; if (lightLevel >= 0 && permissionNode.hasPermission(player) && player.getItemInHand(hand).isPresent() && player.getItemInHand(hand).get().getType() == lightstoneItem.getValue().getType()) { player.sendMessage(getCurrentLine(lightLevel)); event.setCancelled(true); } }); }
private void checkForPhysics(Location<World> block) { if(fallingLadders.getValue() && FallingLadders.isValid(block)) { Sponge.getScheduler().createTaskBuilder() .execute(new FallingLadders(this, block)) .submit(CraftBookPlugin.spongeInst().getContainer()); } }
@Listener public void onSnowballHit(CollideBlockEvent.Impact event, @First Snowball snowball) { if (!placement.getValue()) { return; } Location<World> block = event.getTargetLocation(); if (!isSnowBlock(block)) { block = block.getBlockRelative(Direction.UP); } if (isSnowBlock(block) || canPlaceSnowAt(block)) { increaseSnow(block, true); } }
@Listener public void onVehicleExit(RideEntityEvent.Dismount event) { if (event.getTargetEntity() instanceof Boat) { Sponge.getGame().getScheduler().createTaskBuilder().delayTicks(emptyTicks.getValue()).execute( new BoatDecay((Boat) event.getTargetEntity())).submit(CraftBookPlugin.inst()); } }
@Listener public void onVehicleExit(RideEntityEvent.Dismount event) { if (event.getTargetEntity() instanceof RideableMinecart) { Sponge.getGame().getScheduler().createTaskBuilder().delayTicks(emptyTicks.getValue()).execute(new MinecartDecay((Minecart) event.getTargetEntity())).submit(CraftBookPlugin.inst()); } }