/** * Gets a copy of the current {@link GameModeData} for this {@link Player}. * * @return A copy of the current game mode data */ default GameModeData getGameModeData() { return get(GameModeData.class).get(); }
@Listener public void onPlayerInteract(InteractBlockEvent.Secondary.MainHand event, @First Player player) { event.getTargetBlock().getLocation().filter((this::isValid)).ifPresent(location -> { if (!sneakState.getValue().doesPass(player.get(Keys.IS_SNEAKING).orElse(false) || !usePermissions.hasPermission(player))) { return; //Don't alert the player with this mechanic. } if (!readWhenHoldingBlock.getValue()) { ItemStack stack = player.getItemInHand(HandTypes.MAIN_HAND).filter((itemStack -> itemStack.getType().getBlock().isPresent())).orElse(null); if (stack != null) return; } String line = bookLines[ThreadLocalRandom.current().nextInt(bookLines.length)]; player.sendMessage(Text.of(TextColors.YELLOW, "You pick up a book...")); for (String lineSegment : line.split("\\\\n")) { player.sendMessage(TextSerializers.FORMATTING_CODE.deserialize(lineSegment)); } }); }
Collection<Player> cplayers = new ArrayList<>(); Sponge.getServer().getOnlinePlayers().forEach(p -> { if (!p.get(Keys.VANISH).orElse(false)) { cplayers.add(p);
@Listener public void onBlockClick(InteractBlockEvent.Secondary.MainHand event, @First Player player) { event.getTargetBlock().getLocation().ifPresent(location -> { if (!isValid(location)) return; if (player.get(Keys.IS_SNEAKING).orElse(false)) return; if (!usePermissions.hasPermission(player)) { player.sendMessage(USE_PERMISSIONS); return; } if (requireSigns.getValue() && !hasSign(location, new ArrayList<>(), location)) { return; } if (getChair(location) != null) { player.sendMessage(Text.of(TextColors.RED, "Chair already occupied!")); return; } if (chairs.containsKey(player.getUniqueId())) { removeChair(chairs.get(player.getUniqueId()), true); } addChair(player, location); }); }
live.get(ExperienceHolderData.class).ifPresent(exp -> live.offer(exp.totalExperience().set(req.getTotalExperience()))); live.get(ExperienceHolderData.class).ifPresent(exp -> live.offer(exp.level().set(req.getLevel()))); live.get(ExperienceHolderData.class).ifPresent(exp -> live.offer(exp.experienceSinceLevel().set(req.getExperienceSinceLevel())));
@Listener public void onPlayerInteract(InteractBlockEvent.Secondary.MainHand event, @First Player player) { event.getTargetBlock().getLocation().filter(this::isValid).ifPresent(location -> { if (!sneakState.getValue().doesPass(player.get(Keys.IS_SNEAKING).orElse(false)) || player.get(Keys.EXPERIENCE_LEVEL).orElse(0) < 1 || !usePermissions.hasPermission(player)) { return; int xp = player.get(Keys.TOTAL_EXPERIENCE).orElse(0);
if (MagiBridge.getConfig().CORE.HIDE_VANISHED_CHAT && p.get(Keys.VANISH).orElse(false)) return;
/** * Gets a copy of the current {@link DisplayNameData} for this * {@link Player}. * * @return A copy of the current display name data */ default DisplayNameData getDisplayNameData() { return get(DisplayNameData.class).get(); }
/** * Gets a copy of the current {@link JoinData}. * * <p>Since a {@link Player} is already online, it means that the player * has joined the server at least once, meaning there is a guaranteed * initial join {@link Instant}. Users may not have ever joined a server * before.</p> * * @return A copy of the join data */ default JoinData getJoinData() { return get(JoinData.class).get(); }
/** * Gets a copy of the current {@link JoinData}. * * <p>Since a {@link Player} is already online, it means that the player * has joined the server at least once, meaning there is a guaranteed * initial join {@link Instant}. Users may not have ever joined a server * before.</p> * * @return A copy of the join data */ default JoinData getJoinData() { return get(JoinData.class).get(); }
/** * Gets a copy of the current {@link DisplayNameData} for this * {@link Player}. * * @return A copy of the current display name data */ default DisplayNameData getDisplayNameData() { return get(DisplayNameData.class).get(); }
/** * Gets a copy of the current {@link GameModeData} for this {@link Player}. * * @return A copy of the current game mode data */ default GameModeData getGameModeData() { return get(GameModeData.class).get(); }
@Override public boolean getFlight() { Optional<Boolean> flying = player.get(Keys.CAN_FLY); return flying.isPresent() && flying.get(); }
@Override public void onInitialize() throws CraftBookException { super.onInitialize(); chairs = new HashMap<>(); allowedBlocks.load(config); exitAtEntry.load(config); requireSigns.load(config); maxSignDistance.load(config); faceCorrectDirection.load(config); healPassenger.load(config); healAmount.load(config); usePermissions.register(); Sponge.getGame().getScheduler().createTaskBuilder().intervalTicks(10).execute(task -> { for (Map.Entry<UUID, Chair<?>> chair : new HashSet<>(chairs.entrySet())) { Player player = Sponge.getGame().getServer().getPlayer(chair.getKey()).orElse(null); if (player == null) { removeChair(chair.getValue(), false); return; } if (healPassenger.getValue()) { if (player.get(Keys.HEALTH).orElse(0d) < player.get(Keys.MAX_HEALTH).orElse(0d)) { player.offer(Keys.HEALTH, Math.min(player.get(Keys.HEALTH).orElse(0d) + healAmount.getValue(), player.get(Keys.MAX_HEALTH).orElse(0d))); } } if (player.get(Keys.EXHAUSTION).orElse(-20d) > -20d) { player.offer(Keys.EXHAUSTION, player.get(Keys.EXHAUSTION).orElse(-20d) - 0.1d); } } }).submit(CraftBookPlugin.inst()); }
@Listener public void onClientConnectionJoin(ClientConnectionEvent.Join event) { Player player = event.getTargetEntity(); player.get(DEFAULT_HOME).ifPresent(home -> { player.setTransform(home.getTransform()); player.sendMessage(ChatTypes.ACTION_BAR, Text.of("Teleported to home - ", TextStyles.BOLD, home.getName())); }); } }
@Listener public void onBlockBreak(ChangeBlockEvent.Break event, @First Player player) { event.getTransactions().stream() .map(Transaction::getOriginal) .filter(snapshot -> snapshot.getState().getType() == BlockTypes.DOUBLE_PLANT) .filter(snapshot -> snapshot.getState().get(Keys.DOUBLE_PLANT_TYPE).orElse(DoublePlantTypes.GRASS).equals(DoublePlantTypes.FERN)) .filter(snapshot -> snapshot.getState().get(Keys.PORTION_TYPE).orElse(PortionTypes.BOTTOM).equals(PortionTypes.TOP)) .forEach(snapshot -> Sponge.getScheduler().createTaskBuilder().execute(task -> { snapshot.getLocation().get().getRelative(Direction.DOWN) .setBlock(BlockState.builder().blockType(BlockTypes.TALLGRASS).add(Keys.SHRUB_TYPE, ShrubTypes.FERN).build()); if (player.get(Keys.GAME_MODE).orElse(GameModes.SURVIVAL) != GameModes.CREATIVE) { Item item = (Item) snapshot.getLocation().get().getExtent().createEntity(EntityTypes.ITEM, snapshot.getPosition()); item.offer(Keys.REPRESENTED_ITEM, ItemStack.builder().itemType(ItemTypes.TALLGRASS).add(Keys.SHRUB_TYPE, ShrubTypes.FERN).build().createSnapshot()); snapshot.getLocation().get().spawnEntity(item); } }).submit(CraftBookPlugin.spongeInst().getContainer())); }
@Listener public void onMessage(SendChannelMessageEvent e) { if (!e.getSender().hasPermission("magibridge.chat")) return; // Tell if (e.getChannel() == null) return; String channel = getKey(e.getChannel().getName().toLowerCase()); if (channel == null) return; Player p = e.getSender() instanceof Player ? (Player) e.getSender() : null; if (p != null && MagiBridge.getConfig().CORE.HIDE_VANISHED_CHAT && p.get(Keys.VANISH).orElse(false)) return; FormatType format = FormatType.SERVER_TO_DISCORD_FORMAT; Map<String, String> placeholders = new HashMap<>(); placeholders.put("%prefix%", e.getSender().getOption("prefix").orElse("")); placeholders.put("%player%", e.getSender().getName()); placeholders.put("%message%", e.getMessage().toPlain()); placeholders.put("%topgroup%", p != null ? GroupUtil.getHighestGroup(p) : ""); if (p != null && Sponge.getPluginManager().getPlugin("nucleus").isPresent()) { placeholders.put("%nick%", NucleusHandler.getNick(p)); } boolean removeEveryone = !e.getSender().hasPermission("magibridge.everyone"); DiscordHandler.sendMessageToDiscord(channel, format, placeholders, removeEveryone, 0, e.getSender().hasPermission("magibridge.mention")); }
if (player.get(Keys.IS_SNEAKING).orElse(false)) { Location<World> targetBlock = null; SnipeAction snipeAction = sniperTool.getActionAssigned(itemInHand.getType());