WorldBorder
Further releases for Spigot 1.13+ are now being posted on the Spigot site. I do not plan to release any further updates here on BukkitDev.
- Full list of Commands and Permissions
- Changelog
- Further Miscellaneous Information
- Source available on GitHub
- Old discussion on main Bukkit forum
If you appreciate this plugin and actually want to see it developed further by me rather than only receiving compatibility updates, you are welcome to
.
Thanks to the following people who have been kind enough to donate: jonDatz, xrobau, Gussi, Dizzy, R. Meijer, FoundationCraft, T. Bronner, R. Thompson, The Pokemon Server, legitplay.net, D. Senff, Vik1395, TagCraftMC, D. Strickner, M. Wilson, Rhythmatic, W. Downey, P. V. Gretener, MiniCraft Server, Cosmic Craft, ScarcityFree.com, polaris_iv (Forge port), matagin, T. Ahokas.
Also thanks to IMathe172I (Lang Lukas) for contributing code to support elliptic and rectangular border shapes, and Indiv0 for contributing code to support border wrapping.
Description
This plugin is intended to efficiently provide a border for each of your worlds, which only people granted special bypass access are allowed beyond. These borders can be round/elliptic or square/rectangular. As the plugin has been written with performance as the most important goal, it should have no performance impact on your server. Additional world trimming and filling commands are available as well.
Older plugins which originally inspired the creation of this one: rBorder and BorderGuard.
Features
- You can set up a separate border for each world, but only one border per world.
- You can have either round/elliptic or square/rectangular borders. Square/rectangular borders are slightly higher performance, round/elliptic borders make for nicer display maps. Different worlds can have different border shapes if you so choose.
- Configuration and border setup is done completely using commands in-game or through the server console. No need to ever edit the config file directly.
- Support for all permission plugins which interface with Bukkit's built-in "superperms" permission system.
- You can fully generate (fill) your world all the way to the border, filling in any missing chunks, including a configurable buffer zone just outside your border.
- You can trim off any world chunks beyond the border, getting rid of extraneous parts, with a configurable buffer zone left just outside your border.
- You can use a bypass command to allow specific players to go beyond all borders.
- Borders can be automatically displayed in DynMap if you use that plugin.
- All plugin data is automatically saved whenever any borders or settings are changed.
- If a player crosses a border while in a vehicle, the momentum of the vehicle is stopped and it is moved back inside the border with the player.
- When a player is moved back inside a border, they will be moved to a safe vertical location if needed.
- Borders for specific worlds can be set to wrap around instead of just knocking back players who cross the border, instead sending them to the opposite edge of the border.
English Tutorial:
Spanish Tutorial:
Of special interest are the Fill command and the Trim command features:

Borders are also displayed automatically by default in DynMap if you have it:


-
View User Profile
-
Send Message
Posted Jan 23, 2013@tulir293
1-2GB
-
View User Profile
-
Send Message
Posted Jan 21, 2013@fakmin
Those values must be integers, yes.
-
View User Profile
-
Send Message
Posted Jan 21, 2013Hi, after you enter / wb fill: confirm the frequency and padding values must integers?
-
View User Profile
-
Send Message
Posted Jan 20, 2013@xWallou
That has nothing to do with WorldBorder; the fact that WorldBorder is mentioned nowhere in your stack trace is a strong clue. It's happening within CraftBukkit itself.
-
View User Profile
-
Send Message
Posted Jan 20, 2013Sorry, it's not player async. It's this:
2013-01-19 17:05:58 [SEVERE] java.lang.ArrayIndexOutOfBoundsException -13
2013-01-19 17:05:58 [SEVERE] at net.minecraft.server.v1_4_6.ChunkSection.a(ChunkSection.java:41)
2013-01-19 17:05:58 [SEVERE] at net.minecraft.server.v1_4_6.Chunk.getTypeId(Chunk.java:350)
2013-01-19 17:05:58 [SEVERE] at net.minecraft.server.v1_4_6.Chunk.a(Chunk.java:640)
2013-01-19 17:05:58 [SEVERE] at net.minecraft.server.v1_4_6.Chunk.a(Chunk.java:627)
2013-01-19 17:05:58 [SEVERE] at net.minecraft.server.v1_4_6.ChunkRegionLoader.loadEntities(ChunkRegionLoader.java:350)
2013-01-19 17:05:58 [SEVERE] at org.bukkit.craftbukkit.v1_4_6.chunkio.ChunkIOProvider.callStage2(ChunkIOProvider.java:47)
2013-01-19 17:05:58 [SEVERE] at org.bukkit.craftbukkit.v1_4_6.chunkio.ChunkIOProvider.callStage2(ChunkIOProvider.java:13)
2013-01-19 17:05:58 [SEVERE] at org.bukkit.craftbukkit.v1_4_6.util.AsynchronousExecutor$Task.finish(AsynchronousExecutor.java:179)
2013-01-19 17:05:58 [SEVERE] at org.bukkit.craftbukkit.v1_4_6.util.AsynchronousExecutor.finishActive(AsynchronousExecutor.java:287)
2013-01-19 17:05:58 [SEVERE] at org.bukkit.craftbukkit.v1_4_6.chunkio.ChunkIOExecutor.tick(ChunkIOExecutor.java:30)
2013-01-19 17:05:58 [SEVERE] at net.minecraft.server.v1_4_6.MinecraftServer.r(MinecraftServer.java:537)
2013-01-19 17:05:58 [SEVERE] at net.minecraft.server.v1_4_6.DedicatedServer.r(DedicatedServer.java:224)
2013-01-19 17:05:58 [SEVERE] at net.minecraft.server.v1_4_6.MinecraftServer.q(MinecraftServer.java:494)
2013-01-19 17:05:58 [SEVERE] at net.minecraft.server.v1_4_6.MinecraftServer.run(MinecraftServer.java:427)
2013-01-19 17:05:58 [SEVERE] at net.minecraft.server.v1_4_6.ThreadServerApplication.run(SourceFile:849)
2013-01-19 17:05:58 [SEVERE] Encountered an unexpected exception ArrayIndexOutOfBoundsException
java.lang.ArrayIndexOutOfBoundsException -13
at net.minecraft.server.v1_4_6.ChunkSection.a(ChunkSection.java:41)
at net.minecraft.server.v1_4_6.Chunk.getTypeId(Chunk.java:350)
at net.minecraft.server.v1_4_6.Chunk.a(Chunk.java:640)
at net.minecraft.server.v1_4_6.Chunk.a(Chunk.java:627)
at net.minecraft.server.v1_4_6.ChunkRegionLoader.loadEntities(ChunkRegionLoader.java:350)
at org.bukkit.craftbukkit.v1_4_6.chunkio.ChunkIOProvider.callStage2(ChunkIOProvider.java:47)
at org.bukkit.craftbukkit.v1_4_6.chunkio.ChunkIOProvider.callStage2(ChunkIOProvider.java:13)
at org.bukkit.craftbukkit.v1_4_6.util.AsynchronousExecutor$Task.finish(AsynchronousExecutor.java:179)
at org.bukkit.craftbukkit.v1_4_6.util.AsynchronousExecutor.finishActive(AsynchronousExecutor.java:287)
at org.bukkit.craftbukkit.v1_4_6.chunkio.ChunkIOExecutor.tick(ChunkIOExecutor.java:30)
at net.minecraft.server.v1_4_6.MinecraftServer.r(MinecraftServer.java:537)
at net.minecraft.server.v1_4_6.DedicatedServer.r(DedicatedServer.java:224)
at net.minecraft.server.v1_4_6.MinecraftServer.q(MinecraftServer.java:494)
at net.minecraft.server.v1_4_6.MinecraftServer.run(MinecraftServer.java:427)
at net.minecraft.server.v1_4_6.ThreadServerApplication.run(SourceFile:849)
This isn't the first time it's happened although ever since this plugin has been disabled, this stopped showing.
-
View User Profile
-
Send Message
Posted Jan 20, 2013@xWallou
That would be helpful. I highly doubt it's Worldborder causing the problem.
-
View User Profile
-
Send Message
Posted Jan 20, 2013I used to use this plugin and it worked fine. However recently it's been giving me errors when I have a large amount of users logging in. I get a player async error and it's caused by the last person who logged in which seems to corrupt that player's dat. It then proceeds to crash the server. I'll provide an error code when I can as I don't have access to my console at the moment.
-
View User Profile
-
Send Message
Posted Jan 20, 2013Does anyone have an estimate of how much disk space would a 2000*2000 filled world take?
-
View User Profile
-
Send Message
Posted Jan 18, 2013@cvo1010
the radius extends from the center point of the shape to the edge. the diameter extends from edge to edge of the shape, crossing the center point in the process. Radius * 2 = Diameter, as Diameter / 2 = Radius. your radius is 6000 but your diameter is 12000. hence the 12000 x 12000
i know you have a square set for the border, but circles is all google would give me.
-
View User Profile
-
Send Message
Posted Jan 18, 2013@IcingMyYabba
Don't have time for it and not actively developing new features now, sorry.
-
View User Profile
-
Send Message
Posted Jan 18, 2013@cvo1010
Yes.
-
View User Profile
-
Send Message
Posted Jan 18, 2013@brettflan Hey, I've been working on this border and I have had it working properly, but I recently changed my world and I am a bit confused on the raidus. Sorry if this question seems dumb but I am really confused
I have set a 6000 radius in square Is this 12000*12000?
Thanks
-
View User Profile
-
Send Message
Posted Jan 17, 2013Hi, Think you could spare time to make a function that at the end of the world, you get teleported to the mirror edge of the world? E.G Go hereV __ / \ / \ / \
\ / \ / \____/ ^Teleported here Thanks, love your plugin!
-
View User Profile
-
Send Message
Posted Jan 17, 2013@metalman488
I've heard of certain versions of Essentials tying /wb to a workbench command and somehow overriding our base command /wborder in the process. Make sure you're using the latest public releases of both Essentials and WorldBorder.
-
View User Profile
-
Send Message
Posted Jan 16, 2013these commands dnt work. /wb brings up workbench and when i do it in console it says "only ingame players can use this" and in the config all it does it let me set size (max x, min x, max z, min z) it doesn't let me choose shape and when I do /help worldborder or /worldborder it says "unknown command". but it DID limit size. Please pm me with help if you have any.
-
View User Profile
-
Send Message
Posted Jan 15, 2013@Yoshinat0r
That NPE is occurring within the Bukkit / BukkitForge code rather than WorldBorder itself.
-
View User Profile
-
Send Message
Posted Jan 15, 2013I get this when I try to run the fill command:
2013-01-15 14:14:19 [WARNING] [BukkitForge] Task #3 for WorldBorder v1.6.1 gener ated an exception java.lang.NullPointerException at keepcalm.mods.bukkit.bukkitAPI.BukkitWorld.isChunkInUse(BukkitWorld.j ava:408) at keepcalm.mods.bukkit.bukkitAPI.BukkitWorld.unloadChunkRequest(BukkitW orld.java:295) at keepcalm.mods.bukkit.bukkitAPI.BukkitWorld.unloadChunkRequest(BukkitW orld.java:291) at com.wimbli.WorldBorder.WorldFillTask.run(WorldFillTask.java:205) at keepcalm.mods.bukkit.bukkitAPI.scheduler.B4VTask.run(B4VTask.java:53)
at keepcalm.mods.bukkit.bukkitAPI.scheduler.B4VScheduler.mainThreadHeart beat(B4VScheduler.java:347) at keepcalm.mods.bukkit.forgeHandler.SchedulerTickHandler.tickStart(Sche dulerTickHandler.java:28) at cpw.mods.fml.common.SingleIntervalHandler.tickStart(SingleIntervalHan dler.java:16) at cpw.mods.fml.common.FMLCommonHandler.tickStart(FMLCommonHandler.java: 119) at cpw.mods.fml.common.FMLCommonHandler.onPreServerTick(FMLCommonHandler .java:287) at net.minecraft.server.MinecraftServer.q(MinecraftServer.java:587) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:497) at fy.run(SourceFile:849)
I guess it's because I'm using bukkitforge :/ oh well
-
View User Profile
-
Send Message
Posted Jan 15, 2013@Brettflan
Ok works now..not perfect but fine for me.
Thx :)
-
View User Profile
-
Send Message
Posted Jan 15, 2013@Coldazz
So... set a border with radius 1024 at the necessary spot, then run the fill command. You'd need to figure out the positioning though.
I never did fully look into how in-game maps work, though.
-
View User Profile
-
Send Message
Posted Jan 15, 2013@Brettflan
Can you make that there is a way to make a square border that is the largest map size (2048 x 2048 blocks) and automatically create a map that has exactly the whole world on it (every thing inside the border)