类org.bukkit.material.Crops源码实例Demo

下面列出了怎么用org.bukkit.material.Crops的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: IridiumSkyblock   文件: BlockGrowListener.java
@EventHandler
public void onBlockGrow(BlockGrowEvent event) {
    try {
        final Block block = event.getBlock();
        final Location location = block.getLocation();
        final IslandManager islandManager = IridiumSkyblock.getIslandManager();
        final Island island = islandManager.getIslandViaLocation(location);
        if (island == null) return;

        if (island.getFarmingBooster() == 0) return;

        final Material material = block.getType();
        if (!XBlock.isCrops(material)) return;

        event.setCancelled(true);

        final Crops crops = new Crops(CropState.RIPE);
        final BlockState blockState = block.getState();
        blockState.setData(crops);
        blockState.update();
    } catch (Exception e) {
        IridiumSkyblock.getInstance().sendErrorMessage(e);
    }
}
 
源代码2 项目: RedProtect   文件: Region.java
public boolean canCrops(Block b) {
    return flagExists("cropsfarm") && (
            b instanceof Crops ||
                    b.getType().equals(Material.PUMPKIN_STEM) ||
                    b.getType().equals(Material.MELON_STEM) ||
                    b.getType().toString().contains("CARROTS") ||
                    b.getType().toString().contains("CROPS") ||
                    b.getType().toString().contains("_BERRIES") ||
                    b.getType().toString().contains("SOIL") ||
                    b.getType().toString().contains("CHORUS_") ||
                    b.getType().toString().contains("BEETROOT_") ||
                    b.getType().toString().contains("BEETROOTS") ||
                    b.getType().toString().contains("SUGAR_CANE") ||
                    b.getType().toString().contains("FARMLAND") ||
                    b.getType().toString().contains("WHEAT"))
            && getFlagBool("cropsfarm");
}
 
源代码3 项目: RedProtect   文件: BlockListener.java
@EventHandler(ignoreCancelled = true, priority = EventPriority.LOWEST)
public void onPlayerInteract(PlayerInteractEvent e) {
    RedProtect.get().logger.debug(LogLevel.BLOCKS, "BlockListener - Is PlayerInteractEvent event!");

    Player p = e.getPlayer();
    Location l = e.getClickedBlock().getLocation();
    Region r = RedProtect.get().rm.getTopRegion(l);

    Block b = p.getLocation().getBlock();
    if (r != null && (b instanceof Crops
            || b.getType().equals(Material.PUMPKIN_STEM)
            || b.getType().equals(Material.MELON_STEM)
            || b.getType().toString().contains("CARROTS")
            || b.getType().toString().contains("_BERRIES")
            || b.getType().toString().contains("CROPS")
            || b.getType().toString().contains("SOIL")
            || b.getType().toString().contains("FARMLAND")
            || b.getType().toString().contains("CHORUS_")
            || b.getType().toString().contains("BEETROOT_")
            || b.getType().toString().contains("BEETROOTS")
            || b.getType().toString().contains("SUGAR_CANE")
            || p.getInventory().getItemInHand().getType().name().contains("_HOE"))
            && !r.canCrops() && !r.canBuild(p)) {
        RedProtect.get().lang.sendMessage(p, "blocklistener.region.cantbreak");
        e.setCancelled(true);
        return;
    }

    Block relative = e.getClickedBlock().getRelative(e.getBlockFace());
    if (relative.getType().equals(Material.FIRE)) {
        Region r1 = RedProtect.get().rm.getTopRegion(relative.getLocation());
        if (r1 != null && !r1.canBuild(e.getPlayer())) {
            e.setCancelled(true);
            RedProtect.get().lang.sendMessage(e.getPlayer(), "playerlistener.region.cantinteract");
        }
    }
}
 
源代码4 项目: IridiumSkyblock   文件: BlockPlaceListener.java
@EventHandler
public void onBlockPlace(BlockPlaceEvent event) {
    try {
        final Block block = event.getBlock();
        final Location location = block.getLocation();
        final IslandManager islandManager = IridiumSkyblock.getIslandManager();
        final Island island = islandManager.getIslandViaLocation(location);
        if (island == null) return;

        final Player player = event.getPlayer();
        final User user = User.getUser(player);

        final Material material = block.getType();
        final XMaterial xmaterial = XMaterial.matchXMaterial(material);
        final Config config = IridiumSkyblock.getConfiguration();
        final Integer max = config.limitedBlocks.get(xmaterial);
        if (max != null) {
            if (island.valuableBlocks.getOrDefault(xmaterial.name(), 0) >= max) {
                player.sendMessage(Utils.color(IridiumSkyblock.getMessages().blockLimitReached
                        .replace("%prefix%", config.prefix)));
                event.setCancelled(true);
                return;
            }
        }

        if (user.islandID == island.getId()) {
            for (Mission mission : IridiumSkyblock.getMissions().missions) {
                final Map<String, Integer> levels = island.getMissionLevels();
                levels.putIfAbsent(mission.name, 1);

                final MissionData level = mission.levels.get(levels.get(mission.name));
                if (level == null) continue;
                if (level.type != MissionType.BLOCK_PLACE) continue;

                final List<String> conditions = level.conditions;

                if (
                        conditions.isEmpty()
                                ||
                                conditions.contains(xmaterial.name())
                                ||
                                conditions.contains(((Crops) block.getState().getData()).getState().toString())
                )
                    island.addMission(mission.name, 1);
            }
        }

        if (!island.getPermissions(user).placeBlocks)
            event.setCancelled(true);
    } catch (Exception e) {
        IridiumSkyblock.getInstance().sendErrorMessage(e);
    }
}
 
源代码5 项目: IridiumSkyblock   文件: BlockBreakListener.java
@EventHandler
public void onBlockBreak(BlockBreakEvent event) {
    try {
        if (event.isCancelled()) return;
        final Block block = event.getBlock();
        final Location location = block.getLocation();
        final IslandManager islandManager = IridiumSkyblock.getIslandManager();
        final Island island = islandManager.getIslandViaLocation(location);
        if (island == null) return;

        final Player player = event.getPlayer();
        final User user = User.getUser(player);

        if (user.islandID == island.getId()) {
            for (Missions.Mission mission : IridiumSkyblock.getMissions().missions) {
                final int key = island.getMissionLevels().computeIfAbsent(mission.name, (name) -> 1);
                final Map<Integer, Missions.MissionData> levels = mission.levels;
                final Missions.MissionData level = levels.get(key);

                if (level == null) continue;
                if (level.type != MissionType.BLOCK_BREAK) continue;

                final List<String> conditions = level.conditions;

                if (
                        conditions.isEmpty()
                                ||
                                conditions.contains(XMaterial.matchXMaterial(block.getType()).name())
                                ||
                                (
                                        block.getState().getData() instanceof Crops
                                                &&
                                                conditions.contains(((Crops) block.getState().getData()).getState().toString())
                                )
                )
                    island.addMission(mission.name, 1);
            }
        }

        if (!island.getPermissions(user).breakBlocks || (!island.getPermissions(user).breakSpawners && XMaterial.matchXMaterial(block.getType()).equals(XMaterial.SPAWNER))) {
            if (XMaterial.matchXMaterial(block.getType()).equals(XMaterial.SPAWNER)) {
                player.sendMessage(Utils.color(IridiumSkyblock.getMessages().noPermissionBreakSpawners.replace("%prefix%", IridiumSkyblock.getConfiguration().prefix)));
            } else {
                player.sendMessage(Utils.color(IridiumSkyblock.getMessages().noPermissionBuild.replace("%prefix%", IridiumSkyblock.getConfiguration().prefix)));
            }
            event.setCancelled(true);
        }
    } catch (Exception e) {
        IridiumSkyblock.getInstance().sendErrorMessage(e);
    }
}
 
源代码6 项目: Quests   文件: FarmingTaskType.java
@SuppressWarnings("deprecation")
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onBlockBreak(BlockBreakEvent event) {
    //TODO: finish this
    if (!(event.getBlock().getState() instanceof Crops)) {
        return;
    }
    Crops crop = (Crops) event.getBlock().getState();

    QPlayer qPlayer = QuestsAPI.getPlayerManager().getPlayer(event.getPlayer().getUniqueId(), true);
    QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile();

    for (Quest quest : super.getRegisteredQuests()) {
        if (questProgressFile.hasStartedQuest(quest)) {
            QuestProgress questProgress = questProgressFile.getQuestProgress(quest);

            for (Task task : quest.getTasksOfType(super.getType())) {
                TaskProgress taskProgress = questProgress.getTaskProgress(task.getId());

                if (taskProgress.isCompleted()) {
                    continue;
                }

                Material material;
                Object configBlock = task.getConfigValue("block");
                Object configData = task.getConfigValue("data");

                material = Material.matchMaterial(String.valueOf(configBlock));


                if (material != null && event.getBlock().getType().equals(material)) {

                    if (configData != null && (((int) event.getBlock().getData()) != ((int) configData))) {
                        continue;
                    }
                    int brokenBlocksNeeded = (int) task.getConfigValue("amount");

                    int progressBlocksBroken;
                    if (taskProgress.getProgress() == null) {
                        progressBlocksBroken = 0;
                    } else {
                        progressBlocksBroken = (int) taskProgress.getProgress();
                    }

                    taskProgress.setProgress(progressBlocksBroken + 1);

                    if (((int) taskProgress.getProgress()) >= brokenBlocksNeeded) {
                        taskProgress.setCompleted(true);
                    }
                }
            }
        }
    }
}
 
 类所在包
 同包方法