@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()))); }
/** * 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); }
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); }
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); }
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); }
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(); } }
@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(); } }
@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(); }
@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! ")); }
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; }
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; }
@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); } }
@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; } }
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); }
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); }
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); }
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); }
@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); } }
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); }
@Override public WorldBorder getWorldBorder() { return TaskManager.IMP.sync(new RunnableVal<WorldBorder>() { @Override public void run(WorldBorder value) { this.value = parent.getWorldBorder(); } }); }
@Override public WorldBorder getWorldBorder() { if (this.worldBorder == null) { this.worldBorder = new CraftWorldBorder(this); } return this.worldBorder; }
@Override public WorldBorder getWorldBorder() { // TODO Auto-generated method stub throw new UnimplementedOperationException(); }
@Nonnull private static String handleWorldBorder(WorldBorder border) { return "[size=" + border.getSize() + " " + "center=" + border.getCenter().getBlockX() + "," + border.getCenter().getBlockY() + "," + border.getCenter().getBlockZ() + " " + "dmgAmt=" + border.getDamageAmount() + "]"; }
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); }
@Override protected Number[] get(Event event) { WorldBorder border = worldExpression.getSingle(event).getWorldBorder(); return new Number[]{getProperty(border, borderProperty)}; }
@Override public WorldBorder getWorldBorder() { throw Pokkit.unsupported(); }
public WorldBorder getWorldBorder() { throw new NotImplementedException("getWorldBorder()"); }
public BukkitWorldBorder(WorldBorder border) { this.border = border; }
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!"); }
@Override public WorldBorder getWorldBorder() { return PoreWorldBorder.of(getHandle().getWorldBorder(), this); }