【问题标题】:Checking if a different region exists at the specified radius检查指定半径处是否存在不同的区域
【发布时间】:2018-09-30 11:07:29
【问题描述】:

我根据世界守卫地区创建情节。我正在寻找一种很好的方法来检查在每个方向 50 个计数的半径内是否没有其他区域。我的观点是,没有人创造一个情节和别人的情节。目前,我以一种奇怪的方式检查了它,但它确实有效。

    Location p3 = p.getLocation();
    p3.setX(p3.getBlockX());
    p3.setY(60);
    p3.setZ(p3.getBlockZ()+size);
    if(region.getApplicableRegions(p3).size() == 0) {
        plotsCheck.put(p.getUniqueId(), plotsCheck.get(p.getUniqueId())+1);
    }

    Location p3a = p.getLocation();
    p3a.setX(p3a.getBlockX());
    p3a.setY(60);
    p3a.setZ(p3a.getBlockZ()+10);
    if(region.getApplicableRegions(p3a).size() == 0) {
        plotsCheck.put(p.getUniqueId(), plotsCheck.get(p.getUniqueId())+1);
    }

    Location p4 = p.getLocation();
    p4.setX(p4.getBlockX());
    p4.setY(60);
    p4.setZ(p4.getBlockZ()-size);
    if(region.getApplicableRegions(p4).size() == 0) {
        plotsCheck.put(p.getUniqueId(), plotsCheck.get(p.getUniqueId())+1);
    }

这样,我检查了它是否为空。如果是这样,我在哈希图中添加了 1 个点。 不幸的是,这并不总是有效,并以几个情节属于 2 人的事实而告终。你们有没有人为此提出不同的解决方案?

【问题讨论】:

    标签: java bukkit


    【解决方案1】:

    WorldGuard 已经为此提供了一些内置功能。

    RegionContainer container = getWorldGuard().getRegionContainer();
    RegionManager manager = container.get(world);
    
    Region newRegion = //create your region somehow
    manager.addRegion(newRegion);
    
    List<ProtectedRegion> regions = new ArrayList<ProtectedRegion>(manager.getRegions().values());
    
    List<ProtectedRegion> overlappingRegions = newRegion.getIntersectingRegions(regions);
    
    if (overlappingRegions.size() > 0) {
        //delete region newRegion
    } else {
       //region is valid 
    }
    

    这当然只有在区域已经创建之后才有效。

    代码尚未经过测试。刚刚搜索了 WorldGuard API wiki。

    https://worldguard.enginehub.org/en/latest/developer/regions/protected-region/#finding-intersecting-regions

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-02
      • 1970-01-01
      • 2019-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-10
      相关资源
      最近更新 更多