Java 类org.bukkit.WorldBorder 实例源码

项目:Debuggery    文件:OutputFormatterTest.java   
@Test
public void testWorldBorder() {
    int size = 500;
    int damageAmt = 5;
    Location loc = TestLocation.LOC_ZERO;

    WorldBorder border = new TestWorldBorder(size, damageAmt, loc);

    String out = OutputFormatter.getOutput(border);

    assertNotNull(out);
    assertTrue(out.contains(String.valueOf(size)));
    assertTrue(out.contains(String.valueOf(damageAmt)));

    assertTrue(out.contains(String.valueOf(loc.getBlockZ())));
    assertTrue(out.contains(String.valueOf(loc.getBlockY())));
    assertTrue(out.contains(String.valueOf(loc.getBlockZ())));
}
项目:SurvivalAPI    文件:SafePortalsUtils.java   
/**
 * Checks if the given location is inside the world border of his world.
 *
 * @param location The location.
 *
 * @return The result of the check.
 */
public static boolean isInsideBorder(Location location)
{
    World world = location.getWorld();
    WorldBorder border = world.getWorldBorder();

    Double borderRadius = border.getSize() / 2;

    Double xMin = border.getCenter().getX() - borderRadius;
    Double xMax = border.getCenter().getX() + borderRadius;
    Double zMin = border.getCenter().getZ() - borderRadius;
    Double zMax = border.getCenter().getZ() + borderRadius;

    Double x = location.getX();
    Double z = location.getZ();

    return (x > xMin && x < xMax) && (z > zMin && z < zMax);
}
项目:McPlayUHC    文件:McPlayUHC.java   
public void onEnable() {
    registerListeners();
    registerCommands();
    ConfigManager.getInstance().setup(this);

    WorldBorder b = Bukkit.getWorld("world").getWorldBorder();
    b.setCenter(new Location(Bukkit.getWorld("world"), 0, 64, 0));
    b.setSize(SettingsManager.border);

    BukkitScheduler scheduler = getServer().getScheduler();
    scheduler.scheduleSyncRepeatingTask(this, new Runnable() {
        @Override
        public void run() {
            Bukkit.broadcastMessage("loop all players: :kappa:");
            if(GameManager.getGameSituation()) {
                if(GameManager.getStartTime() + 600000 > System.currentTimeMillis()) {
                    b.setSize(b.getSize() - 1);
                }
            }
        }
    }, 0L, 1 * 20L);
}
项目:ExtremeSurvival    文件:BorderManagement.java   
public BorderManagement(int size, int decreaseSize, Location loc, int triggerTime){
    if(size<1 && decreaseSize>size){
        System.out.println("Wielkosc granicy musi byc >1");
        this.size = 1000;
        this.loc = loc;
        this.decreasedSize = 100;
        this.triggerTime = 60;
    }else{
        this.size = size;
        this.loc = loc;
        this.decreasedSize = decreaseSize;
        this.triggerTime = triggerTime;
    }

    WorldBorder wb = loc.getWorld().getWorldBorder();
    wb.setCenter(loc);
    wb.setDamageAmount(2);
    wb.setWarningTime(5);
    wb.setSize(size);
    wb.setWarningDistance(30);
}
项目:MagicLib    文件:BaseSpell.java   
public boolean canCast(Location location) {
    if (location == null) return true;
    if (!hasCastPermission(mage.getCommandSender())) return false;
    Entity entity = mage.getEntity();
    if (disguiseRestricted && entity != null && entity instanceof Player && controller.isDisguised(entity)) return false;
    Boolean regionPermission = controller.getRegionCastPermission(mage.getPlayer(), this, location);
    if (regionPermission != null && regionPermission == true) return true;
    Boolean personalPermission = controller.getPersonalCastPermission(mage.getPlayer(), this, location);
    if (personalPermission != null && personalPermission == true) return true;
    if (regionPermission != null && regionPermission == false) return false;
    if (requiresBuildPermission() && !hasBuildPermission(location.getBlock())) return false;
    if (requiresBreakPermission() && !hasBreakPermission(location.getBlock())) return false;
    if (worldBorderRestricted)
    {
        WorldBorder border = location.getWorld().getWorldBorder();
        double borderSize = border.getSize() / 2 - border.getWarningDistance();
        Location offset = location.subtract(border.getCenter());
        if (offset.getX() < -borderSize || offset.getX() > borderSize || offset.getZ() < -borderSize || offset.getZ() > borderSize) return false;
    }
    return !pvpRestricted || bypassPvpRestriction || mage.isPVPAllowed(location);
}
项目:ColorCube    文件:V1_8_R3WorldBorderHandler.java   
public void resetWorldBorder(Player player) {
    try {
        WorldBorder originalWorldBorder = player.getWorld().getWorldBorder();

        Constructor packetWorldBorderConstructor = NMSUtil.getNmsClass("PacketPlayOutWorldBorder").getConstructor(NMSUtil.getNmsClass("WorldBorder"), NMSUtil.getNmsClass("PacketPlayOutWorldBorder$EnumWorldBorderAction"));

        Object worldBorder = NMSUtil.getNmsClass("WorldBorder").getConstructor().newInstance();
        worldBorder.getClass().getMethod("setCenter", double.class, double.class).invoke(worldBorder, originalWorldBorder.getCenter().getX(), originalWorldBorder.getCenter().getZ());
        worldBorder.getClass().getMethod("setSize", double.class).invoke(worldBorder, originalWorldBorder.getSize());
        worldBorder.getClass().getMethod("setDamageBuffer", double.class).invoke(worldBorder, originalWorldBorder.getDamageBuffer());
        worldBorder.getClass().getMethod("setDamageAmount", double.class).invoke(worldBorder, originalWorldBorder.getDamageAmount());
        worldBorder.getClass().getMethod("setWarningDistance", int.class).invoke(worldBorder, originalWorldBorder.getWarningDistance());
        worldBorder.getClass().getMethod("setWarningTime", int.class).invoke(worldBorder, originalWorldBorder.getWarningTime());


        Object[] enums = NMSUtil.getNmsClass("PacketPlayOutWorldBorder$EnumWorldBorderAction").getEnumConstants();

        Object packet = packetWorldBorderConstructor.newInstance(worldBorder, enums[3]);
        NMSUtil.sendPacket(player, packet);

    } catch (ClassNotFoundException | NoSuchMethodException | NoSuchFieldException | InvocationTargetException | InstantiationException | IllegalAccessException e) {
        e.printStackTrace();
    }
}
项目:ColorCube    文件:V1_11_R1WorldBorderHandler.java   
public void resetWorldBorder(Player player) {
    try {
        WorldBorder originalWorldBorder = player.getWorld().getWorldBorder();

        Constructor packetWorldBorderConstructor = NMSUtil.getNmsClass("PacketPlayOutWorldBorder").getConstructor(NMSUtil.getNmsClass("WorldBorder"), NMSUtil.getNmsClass("PacketPlayOutWorldBorder$EnumWorldBorderAction"));

        Object worldBorder = NMSUtil.getNmsClass("WorldBorder").getConstructor().newInstance();
        worldBorder.getClass().getMethod("setCenter", double.class, double.class).invoke(worldBorder, originalWorldBorder.getCenter().getX(), originalWorldBorder.getCenter().getZ());
        worldBorder.getClass().getMethod("setSize", double.class).invoke(worldBorder, originalWorldBorder.getSize());
        worldBorder.getClass().getMethod("setDamageBuffer", double.class).invoke(worldBorder, originalWorldBorder.getDamageBuffer());
        worldBorder.getClass().getMethod("setDamageAmount", double.class).invoke(worldBorder, originalWorldBorder.getDamageAmount());
        worldBorder.getClass().getMethod("setWarningDistance", int.class).invoke(worldBorder, originalWorldBorder.getWarningDistance());
        worldBorder.getClass().getMethod("setWarningTime", int.class).invoke(worldBorder, originalWorldBorder.getWarningTime());


        Object[] enums = NMSUtil.getNmsClass("PacketPlayOutWorldBorder$EnumWorldBorderAction").getEnumConstants();

        Object packet = packetWorldBorderConstructor.newInstance(worldBorder, enums[3]);
        NMSUtil.sendPacket(player, packet);

    } catch (ClassNotFoundException | NoSuchMethodException | NoSuchFieldException | InvocationTargetException | InstantiationException | IllegalAccessException e) {
        e.printStackTrace();
    }
}
项目:ColorCube    文件:V1_9_R2WorldBorderHandler.java   
@Override
public void resetWorldBorder(Player player) {
    try {
        WorldBorder originalWorldBorder = player.getWorld().getWorldBorder();

        Constructor packetWorldBorderConstructor = NMSUtil.getNmsClass("PacketPlayOutWorldBorder").getConstructor(NMSUtil.getNmsClass("WorldBorder"), NMSUtil.getNmsClass("PacketPlayOutWorldBorder$EnumWorldBorderAction"));

        Object worldBorder = NMSUtil.getNmsClass("WorldBorder").getConstructor().newInstance();
        worldBorder.getClass().getMethod("setCenter", double.class, double.class).invoke(worldBorder, originalWorldBorder.getCenter().getX(), originalWorldBorder.getCenter().getZ());
        worldBorder.getClass().getMethod("setSize", double.class).invoke(worldBorder, originalWorldBorder.getSize());
        worldBorder.getClass().getMethod("setDamageBuffer", double.class).invoke(worldBorder, originalWorldBorder.getDamageBuffer());
        worldBorder.getClass().getMethod("setDamageAmount", double.class).invoke(worldBorder, originalWorldBorder.getDamageAmount());
        worldBorder.getClass().getMethod("setWarningDistance", int.class).invoke(worldBorder, originalWorldBorder.getWarningDistance());
        worldBorder.getClass().getMethod("setWarningTime", int.class).invoke(worldBorder, originalWorldBorder.getWarningTime());


        Object[] enums = NMSUtil.getNmsClass("PacketPlayOutWorldBorder$EnumWorldBorderAction").getEnumConstants();

        Object packet = packetWorldBorderConstructor.newInstance(worldBorder, enums[3]);
        NMSUtil.sendPacket(player, packet);

    } catch (ClassNotFoundException | NoSuchMethodException | NoSuchFieldException | InvocationTargetException | InstantiationException | IllegalAccessException e) {
        e.printStackTrace();
    }
}
项目:ColorCube    文件:V1_10_R1WorldBorderHandler.java   
@Override
public void resetWorldBorder(Player player) {
    try {
        WorldBorder originalWorldBorder = player.getWorld().getWorldBorder();

        Constructor packetWorldBorderConstructor = NMSUtil.getNmsClass("PacketPlayOutWorldBorder").getConstructor(NMSUtil.getNmsClass("WorldBorder"), NMSUtil.getNmsClass("PacketPlayOutWorldBorder$EnumWorldBorderAction"));

        Object worldBorder = NMSUtil.getNmsClass("WorldBorder").getConstructor().newInstance();
        worldBorder.getClass().getMethod("setCenter", double.class, double.class).invoke(worldBorder, originalWorldBorder.getCenter().getX(), originalWorldBorder.getCenter().getZ());
        worldBorder.getClass().getMethod("setSize", double.class).invoke(worldBorder, originalWorldBorder.getSize());
        worldBorder.getClass().getMethod("setDamageBuffer", double.class).invoke(worldBorder, originalWorldBorder.getDamageBuffer());
        worldBorder.getClass().getMethod("setDamageAmount", double.class).invoke(worldBorder, originalWorldBorder.getDamageAmount());
        worldBorder.getClass().getMethod("setWarningDistance", int.class).invoke(worldBorder, originalWorldBorder.getWarningDistance());
        worldBorder.getClass().getMethod("setWarningTime", int.class).invoke(worldBorder, originalWorldBorder.getWarningTime());


        Object[] enums = NMSUtil.getNmsClass("PacketPlayOutWorldBorder$EnumWorldBorderAction").getEnumConstants();

        Object packet = packetWorldBorderConstructor.newInstance(worldBorder, enums[3]);
        NMSUtil.sendPacket(player, packet);

    } catch (ClassNotFoundException | NoSuchMethodException | NoSuchFieldException | InvocationTargetException | InstantiationException | IllegalAccessException e) {
        e.printStackTrace();
    }
}
项目:PlayerStevesBattleGrounds    文件:ShrinkBorderTask.java   
@Override
public void run() {
    plugin.getServer().getOnlinePlayers().forEach(p ->
        Lang.sendMessage(p, "messages.game.shrinking")
    );
    times--;
    WorldBorder wb = battles.getWorld().getWorldBorder();
    double newSize = wb.getSize() - amount;
    if(newSize > 0) {
        wb.setSize(newSize, shrinkTime);
    }

    if(times <= 0) cancel();
}
项目:PlayerStevesBattleGrounds    文件:StaticWorldListener.java   
@EventHandler
private void onWorldLoad(WorldLoadEvent e){
    e.getWorld().setAutoSave(false);
    WorldBorder b = e.getWorld().getWorldBorder();
    b.setCenter(0d, 0d);
    b.setSize(3000000d);
    plugin.getLogger().info(String.format("Auto-save for world [" + e.getWorld().getName() + "] is prevented! "));
}
项目:ProjectAres    文件:WorldBorderUtils.java   
public static boolean isInsideBorder(Location location) {
    WorldBorder border = location.getWorld().getWorldBorder();
    Location center = border.getCenter();
    double radius = border.getSize() / 2d;
    return Math.abs(location.getX() - center.getX()) < radius &&
           Math.abs(location.getZ() - center.getZ()) < radius;
}
项目:ProjectAres    文件:WorldBorderUtils.java   
public static boolean clampToBorder(Location location) {
    WorldBorder border = location.getWorld().getWorldBorder();
    Location center = border.getCenter();
    double radius = border.getSize() / 2d;
    double xMin = center.getX() - radius;
    double xMax = center.getX() + radius;
    double zMin = center.getZ() - radius;
    double zMax = center.getZ() + radius;

    boolean moved = false;

    if(location.getX() < xMin) {
        location.setX(xMin);
        moved = true;
    }

    if(location.getX() > xMax) {
        location.setX(xMax);
        moved = true;
    }

    if(location.getZ() < zMin) {
        location.setZ(zMin);
        moved = true;
    }

    if(location.getZ() > zMax) {
        location.setZ(zMax);
        moved = true;
    }

    return moved;
}
项目:Debuggery    文件:OutputFormatter.java   
@Nullable
public static String getOutput(@Nullable Object object) {

    if (object == null) {
        return null;
    }

    if (object instanceof String) {
        return (String) object;
    } else if (object instanceof Collection) {
        return handleCollection((Collection) object);
    } else if (object instanceof Map) {
        return handleMap((Map) object);
    } else if (object.getClass().isArray()) {
        return handleArray(object);
    } else if (object instanceof OfflinePlayer) {
        return handleOfflinePlayer((OfflinePlayer) object);
    } else if (object instanceof BlockState) {
        return handleBlockState((BlockState) object);
    } else if (object instanceof Inventory) {
        return handleInventory((Inventory) object);
    } else if (object instanceof WorldBorder) {
        return handleWorldBorder((WorldBorder) object);
    } else if (object instanceof CommandSender) {
        return handleCommandSender((CommandSender) object);
    } else if (object instanceof Messenger) {
        return handleMessenger((Messenger) object);
    } else if (object instanceof HelpMap) {
        return handleHelpMap((HelpMap) object);
    } else {
        return String.valueOf(object);
    }
}
项目:MundoSK    文件:EffChangeBorderDiameter.java   
@Override
protected void execute(Event event) {
    World world = worldExpression.getSingle(event);
    WorldBorder border = world.getWorldBorder();
    double value = numberExpression.getSingle(event).doubleValue();
    long seconds = timespanExpression.getSingle(event).getMilliSeconds() / 1000;
    switch (changeMode) {
        case SET: border.setSize(value, seconds); break;
        case ADD: border.setSize(border.getSize() + value, seconds); break;
        case REMOVE: border.setSize(border.getSize() - value, seconds); break;
    }
}
项目:MundoSK    文件:WorldBorderMundo.java   
private static WorldBorder getBorderReplacement(World world) {
    if (BORDER_REPLACER == null) {
        if (Reflection.methodExists(WorldBorder.class, "isInside", Location.class)) {
            BORDER_REPLACER = WorldBorderImplExt::new;
        } else {
            BORDER_REPLACER = WorldBorderImpl::new;
        }
    }
    return BORDER_REPLACER.apply(world);
}
项目:MundoSK    文件:ExprPropertyOfBorder.java   
public static Number getProperty(WorldBorder border, BorderProperty borderProperty) {
    switch (borderProperty) {
        case DIAMETER: return border.getSize();
        case DAMAGE_AMOUNT: return border.getDamageAmount();
        case DAMAGE_BUFFER: return border.getDamageBuffer();
        case WARNING_DISTANCE: return border.getWarningDistance();
        case WARNING_TIME: return border.getWarningTime();
    }
    throw new IllegalArgumentException("Illegal BorderProperty: " + borderProperty);
}
项目:MundoSK    文件:ExprPropertyOfBorder.java   
public static void setProperty(WorldBorder border, BorderProperty borderProperty, Number value) {
    switch (borderProperty) {
        case DIAMETER: border.setSize(value.doubleValue()); return;
        case DAMAGE_AMOUNT: border.setDamageAmount(value.doubleValue()); return;
        case DAMAGE_BUFFER: border.setDamageBuffer(value.doubleValue()); return;
        case WARNING_DISTANCE: border.setWarningDistance(value.intValue()); return;
        case WARNING_TIME: border.setWarningTime(value.intValue()); return;
    }
    throw new IllegalArgumentException("Illegal BorderProperty: " + borderProperty);
}
项目:MundoSK    文件:ExprPropertyOfBorder.java   
public static void resetProperty(WorldBorder border, BorderProperty borderProperty) {
    switch (borderProperty) {
        case DIAMETER: border.setSize(60000000); return;
        case DAMAGE_AMOUNT: border.setDamageAmount(0.2); return;
        case DAMAGE_BUFFER: border.setDamageBuffer(5); return;
        case WARNING_DISTANCE: border.setWarningDistance(5); return;
        case WARNING_TIME: border.setWarningTime(15); return;
    }
    throw new IllegalArgumentException("Illegal BorderProperty: " + borderProperty);
}
项目:AthenaGM    文件:WorldBorderModule.java   
@EventHandler
public void onMatchCreate(MatchCreateEvent event) {
    GameMap map = event.getMatch().getMap();
    if (map.getWorldBorder().isEnabled()) {
        WorldBorder wb = event.getMatch().getWorld().getWorldBorder();
        wb.setCenter(map.getWorldBorder().getCenterX(), map.getWorldBorder().getCenterY());
        wb.setSize(map.getWorldBorder().getRadius()*2);
    }
}
项目:ExtremeSurvival    文件:BorderManagement.java   
public void resetBorder(){
    WorldBorder wb = this.loc.getWorld().getWorldBorder();
    wb.setCenter(this.loc);
    wb.setDamageAmount(2);
    wb.setWarningTime(5);
    wb.setSize(this.size);
    wb.setWarningDistance(30);
}
项目:FastAsyncWorldedit    文件:AsyncWorld.java   
@Override
public WorldBorder getWorldBorder() {
    return TaskManager.IMP.sync(new RunnableVal<WorldBorder>() {
        @Override
        public void run(WorldBorder value) {
            this.value = parent.getWorldBorder();
        }
    });
}
项目:Craftbukkit    文件:CraftWorld.java   
@Override
public WorldBorder getWorldBorder() {
    if (this.worldBorder == null) {
        this.worldBorder = new CraftWorldBorder(this);
    }

    return this.worldBorder;
}
项目:SpigotSource    文件:CraftWorld.java   
@Override
public WorldBorder getWorldBorder() {
    if (this.worldBorder == null) {
        this.worldBorder = new CraftWorldBorder(this);
    }

    return this.worldBorder;
}
项目:MockBukkit    文件:WorldMock.java   
@Override
public WorldBorder getWorldBorder()
{
    // TODO Auto-generated method stub
    throw new UnimplementedOperationException();
}
项目:Debuggery    文件:OutputFormatter.java   
@Nonnull
private static String handleWorldBorder(WorldBorder border) {
    return "[size=" + border.getSize() + " " +
            "center=" + border.getCenter().getBlockX() + "," + border.getCenter().getBlockY() + "," + border.getCenter().getBlockZ() + " " +
            "dmgAmt=" + border.getDamageAmount() + "]";
}
项目:MundoSK    文件:WorldBorderMundo.java   
private static void setWorldBorderField(World world, WorldBorder value) {
    if (CRAFT_WORLD_WORLD_BORDER == null) {
        CRAFT_WORLD_WORLD_BORDER = Reflection.getField(Reflection.getCraftBukkitClass("CraftWorld"), "worldBorder", WorldBorder.class);
    }
    CRAFT_WORLD_WORLD_BORDER.set(world, value);
}
项目:MundoSK    文件:ExprPropertyOfBorder.java   
@Override
protected Number[] get(Event event) {
    WorldBorder border = worldExpression.getSingle(event).getWorldBorder();
    return new Number[]{getProperty(border, borderProperty)};
}
项目:Pokkit    文件:PokkitWorld.java   
@Override
public WorldBorder getWorldBorder() {
    throw Pokkit.unsupported();

}
项目:CanaryBukkit    文件:CanaryWorld.java   
public WorldBorder getWorldBorder() {
    throw new NotImplementedException("getWorldBorder()");
}
项目:PlotMe-Core    文件:BukkitWorldBorder.java   
public BukkitWorldBorder(WorldBorder border) {
    this.border = border;
}
项目:MagicArenas    文件:Arena.java   
public void start() {
    if (!isValid()) return;

    state = ArenaState.ACTIVE;
    started = System.currentTimeMillis();
    lastTick = started;

    if (startCommands != null && !startCommands.isEmpty()) {
        String[] commands = StringUtils.split(startCommands, ',');
        CommandSender sender = Bukkit.getConsoleSender();
        for (String command : commands) {
            org.bukkit.Bukkit.getLogger().info("RUNNING: " + command);
            controller.getPlugin().getServer().dispatchCommand(sender, command);
        }
    }
    if (borderMax > 0 && duration > 0) {
        World world = getCenter().getWorld();
        WorldBorder border = world.getWorldBorder();
        border.setSize(borderMax);
        border.setSize(borderMin, duration / 1000);
    }

    int num = 0;
    clearPlayers();
    while (queue.size() > 0 && players.size() < maxPlayers) {
        ArenaPlayer queuedPlayer = queue.remove();
        if (queuedPlayer.isValid() && !queuedPlayer.isDead()) {
            players.add(queuedPlayer);
        }
    }
    if (players.size() < minPlayers) {
        queue.addAll(players);
        players.clear();
        state = ArenaState.LOBBY;
        messagePlayers(ChatColor.RED + " the match did not have enough players to start.");
        return;
    }
    List<Location> spawns = getSpawns();
    for (ArenaPlayer arenaPlayer : players) {
        Player player = arenaPlayer.getPlayer();
        if (player == null) {
            continue;
        }

        arenaPlayer.heal();
        player.sendMessage(ChatColor.GOLD + "BEGIN!");

        Location spawn = spawns.get(num);
        if (randomizeSpawn != null) {
            spawn = spawn.clone();
            spawn.add
            (
                (2 * random.nextDouble() - 1) * randomizeSpawn.getX(),
                (2 * random.nextDouble() - 1) * randomizeSpawn.getY(),
                (2 * random.nextDouble() - 1) * randomizeSpawn.getZ()
            );
        }

        // Wrap index around to player
        num = (num + 1) % spawns.size();
        arenaPlayer.teleport(spawn);
    }

    ArenaStage currentStage = getCurrentStage();
    if (currentStage != null) {
        currentStage.start();
    }

    messageNextRoundPlayerList(ChatColor.GOLD + "You are up for the next round!");
}
项目:Pore    文件:PoreWorld.java   
@Override
public WorldBorder getWorldBorder() {
    return PoreWorldBorder.of(getHandle().getWorldBorder(), this);
}