I've recently found myself wondering why the world border exists. There's plenty of information on the world border and many videos featuring it, but I haven't been able to find a single video or forum thread detailing why the world border even exists. If Minecraft is supposed to be an endless and infinite game, why would it be restricted like this?
Apparently the game can be modified to work normally out to about +/-1000,000,000 blocks but ±2,147,483,647 is the absolute maximum due to using 32 bit variables and earlier versions had problems much closer in.
So there has to be a limit somewhere, they picked +/- 30,000,000 and there's presumably no real reason to put ant effort into changing it.
For all intents and purposes it is infinite, because in survival gameplay it is rare that anyone would ever venture out to the world border at 30 million blocks from the center X and Z coordinates respectively in the overworld.
This world limit is fine and is not worth complaining about as it is obvious it is generous enough for any player no matter how ambitious your projects would be, also you've got to think about how much space the world file would take up the more of the world is explored. AntVenom on Youtube went into detail about the theoretical maximum file size would reach if all the world were to be generated and saved to the disk, the storage you'd need for it is far more than the average consumer would reasonably be expected to have in their computers, yes, even people with RAID HDD or SSD setups.
I actually removed the limits in my own mod, although mainly to remove unnecessary checks every time a block position is accessed, and while you can actually go out to billions of blocks the Far Lands appear as I also removed the code that fixed them (again, for efficiency), but due to other changes (I removed the first 6 octaves of noise, which have practically no effect) terrain generation works normally out to at least 30 million (I also tested 64 million and it was fine), which is all that really matters as this is the maximum world size in vanilla:
Of course, the game crashed as soon as I got close enough to the 32 bit limit to cause an overflow and wrap-around to negative coordinates; based on the stacktrace it appears that runaway chunk loading occurred (the game tries to access a block in a chunk that isn't loaded, which in turn loaded and when features are being placed even more chunks get loaded, and so on. This caused a crash in my "LightUpdater" class since if chunks get loaded and it is called again while it is updating light it will cause its chunk cache to become corrupted):
---- Minecraft Crash Report ----
// I bet Cylons wouldn't have this problem.
java.lang.NullPointerException
at net.minecraft.src.LightUpdater.getSkyLightValue(LightUpdater.java:1382)
at net.minecraft.src.LightUpdater.updateSkyLight_server(LightUpdater.java:241)
at net.minecraft.src.LightUpdater.updateSkyLight(LightUpdater.java:97)
at net.minecraft.src.World.updateAllLightTypes(World.java:2684)
at net.minecraft.src.World.setBlock(World.java:367)
at net.minecraft.src.WorldGenLakesAlt.generate(WorldGenLakesAlt.java:148)
at net.minecraft.src.ChunkProviderTMCW.populate(ChunkProviderTMCW.java:1221)
at net.minecraft.src.ChunkProviderServerFix.populate(ChunkProviderServerFix.java:66)
at net.minecraft.src.Chunk.populateChunk(Chunk.java:995)
at net.minecraft.src.ChunkProviderServer.loadChunk(ChunkProviderServer.java:128)
at net.minecraft.src.ChunkProviderServerFix.provideChunk(ChunkProviderServerFix.java:144)
at net.minecraft.src.World.getChunkFromChunkCoords(World.java:355)
at net.minecraft.src.LightUpdater.loadChunks(LightUpdater.java:43)
at net.minecraft.src.World.updateAllLightTypes(World.java:2683)
at net.minecraft.src.World.setBlock(World.java:367)
at net.minecraft.src.MineshaftCorridor.randomlyPlaceTorch(MineshaftCorridor.java:519)
at net.minecraft.src.MineshaftCorridor.addComponentParts(MineshaftCorridor.java:247)
at net.minecraft.src.MineshaftStart.generateStructure(MineshaftStart.java:39)
at net.minecraft.src.MapGenMineshaftTMCW.generateStructuresInChunk(MapGenMineshaftTMCW.java:116)
at net.minecraft.src.ChunkProviderTMCW.populate(ChunkProviderTMCW.java:1095)
at net.minecraft.src.ChunkProviderServerFix.populate(ChunkProviderServerFix.java:66)
at net.minecraft.src.Chunk.populateChunk(Chunk.java:1001)
at net.minecraft.src.ChunkProviderServer.loadChunk(ChunkProviderServer.java:128)
at net.minecraft.src.ChunkProviderServerFix.provideChunk(ChunkProviderServerFix.java:144)
at net.minecraft.src.World.getChunkFromChunkCoords(World.java:355)
at net.minecraft.src.LightUpdater.loadChunks(LightUpdater.java:43)
at net.minecraft.src.World.updateAllLightTypes(World.java:2683)
at net.minecraft.src.World.setBlock(World.java:367)
at net.minecraft.src.BlockSandFix.fall(BlockSandFix.java:86)
at net.minecraft.src.WorldGenOre.generateOre(WorldGenOre.java:447)
at net.minecraft.src.WorldGenOre.genStandardOre(WorldGenOre.java:178)
at net.minecraft.src.WorldGenOre.genStandardOre(WorldGenOre.java:165)
at net.minecraft.src.WorldGenOre.generateOres(WorldGenOre.java:52)
at net.minecraft.src.BiomeDecorator.decorate(BiomeDecorator.java:56)
at net.minecraft.src.BiomeGenBase.decorate(BiomeGenBase.java:531)
at net.minecraft.src.ChunkProviderTMCW.populate(ChunkProviderTMCW.java:1284)
at net.minecraft.src.ChunkProviderServerFix.populate(ChunkProviderServerFix.java:66)
at net.minecraft.src.Chunk.populateChunk(Chunk.java:1001)
at net.minecraft.src.ChunkProviderServer.loadChunk(ChunkProviderServer.java:128)
at net.minecraft.src.ChunkProviderServerFix.provideChunk(ChunkProviderServerFix.java:144)
at net.minecraft.src.World.getChunkFromChunkCoords(World.java:355)
at net.minecraft.src.LightUpdater.loadChunks(LightUpdater.java:43)
at net.minecraft.src.World.updateAllLightTypes(World.java:2683)
at net.minecraft.src.World.setBlock(World.java:367)
at net.minecraft.src.WorldGenNewFlowers.placeFlower(WorldGenNewFlowers.java:67)
at net.minecraft.src.WorldGenNewFlowers.generate(WorldGenNewFlowers.java:39)
at net.minecraft.src.BiomeDecorator.decorate(BiomeDecorator.java:175)
at net.minecraft.src.BiomeGenBase.decorate(BiomeGenBase.java:531)
at net.minecraft.src.ChunkProviderTMCW.populate(ChunkProviderTMCW.java:1284)
at net.minecraft.src.ChunkProviderServerFix.populate(ChunkProviderServerFix.java:66)
at net.minecraft.src.Chunk.populateChunk(Chunk.java:1007)
at net.minecraft.src.ChunkProviderServer.loadChunk(ChunkProviderServer.java:128)
at net.minecraft.src.ChunkProviderServerFix.provideChunk(ChunkProviderServerFix.java:144)
at net.minecraft.src.World.getChunkFromChunkCoords(World.java:355)
at net.minecraft.src.LightUpdater.loadChunks(LightUpdater.java:43)
at net.minecraft.src.World.updateAllLightTypes(World.java:2683)
at net.minecraft.src.World.setBlock(World.java:367)
at net.minecraft.src.BlockSandFix.fall(BlockSandFix.java:86)
at net.minecraft.src.WorldGenOre.generateOre(WorldGenOre.java:447)
at net.minecraft.src.WorldGenOre.genStandardOre(WorldGenOre.java:178)
at net.minecraft.src.WorldGenOre.genStandardOre(WorldGenOre.java:165)
at net.minecraft.src.WorldGenOre.generateOres(WorldGenOre.java:52)
at net.minecraft.src.BiomeDecorator.decorate(BiomeDecorator.java:56)
at net.minecraft.src.BiomeGenBase.decorate(BiomeGenBase.java:531)
at net.minecraft.src.ChunkProviderTMCW.populate(ChunkProviderTMCW.java:1284)
at net.minecraft.src.ChunkProviderServerFix.populate(ChunkProviderServerFix.java:66)
at net.minecraft.src.Chunk.populateChunk(Chunk.java:1007)
at net.minecraft.src.ChunkProviderServer.loadChunk(ChunkProviderServer.java:128)
at net.minecraft.src.ChunkProviderServerFix.provideChunk(ChunkProviderServerFix.java:144)
at net.minecraft.src.World.getChunkFromChunkCoords(World.java:355)
at net.minecraft.src.LightUpdater.loadChunks(LightUpdater.java:43)
at net.minecraft.src.World.updateAllLightTypes(World.java:2683)
at net.minecraft.src.World.setBlock(World.java:367)
at net.minecraft.src.WorldGenLakesAlt.generate(WorldGenLakesAlt.java:148)
at net.minecraft.src.ChunkProviderTMCW.populate(ChunkProviderTMCW.java:1221)
at net.minecraft.src.ChunkProviderServerFix.populate(ChunkProviderServerFix.java:66)
at net.minecraft.src.Chunk.populateChunk(Chunk.java:1007)
at net.minecraft.src.ChunkProviderServer.loadChunk(ChunkProviderServer.java:128)
at net.minecraft.src.ChunkProviderServerFix.provideChunk(ChunkProviderServerFix.java:144)
at net.minecraft.src.World.getChunkFromChunkCoords(World.java:355)
at net.minecraft.src.LightUpdater.loadChunks(LightUpdater.java:43)
at net.minecraft.src.World.updateAllLightTypes(World.java:2683)
at net.minecraft.src.World.setBlock(World.java:367)
at net.minecraft.src.BlockSandFix.fall(BlockSandFix.java:86)
at net.minecraft.src.WorldGenOre.generateOre(WorldGenOre.java:447)
at net.minecraft.src.WorldGenOre.genStandardOre(WorldGenOre.java:178)
at net.minecraft.src.WorldGenOre.genStandardOre(WorldGenOre.java:165)
at net.minecraft.src.WorldGenOre.generateOres(WorldGenOre.java:52)
at net.minecraft.src.BiomeDecorator.decorate(BiomeDecorator.java:56)
at net.minecraft.src.BiomeGenBase.decorate(BiomeGenBase.java:531)
at net.minecraft.src.ChunkProviderTMCW.populate(ChunkProviderTMCW.java:1284)
at net.minecraft.src.ChunkProviderServerFix.populate(ChunkProviderServerFix.java:66)
at net.minecraft.src.Chunk.populateChunk(Chunk.java:1007)
at net.minecraft.src.ChunkProviderServer.loadChunk(ChunkProviderServer.java:128)
at net.minecraft.src.ChunkProviderServerFix.provideChunk(ChunkProviderServerFix.java:144)
at net.minecraft.src.World.getChunkFromChunkCoords(World.java:355)
at net.minecraft.src.LightUpdater.loadChunks(LightUpdater.java:43)
at net.minecraft.src.World.updateAllLightTypes(World.java:2683)
at net.minecraft.src.World.setBlock(World.java:367)
at net.minecraft.src.BlockSandFix.fall(BlockSandFix.java:86)
at net.minecraft.src.WorldGenOre.generateOre(WorldGenOre.java:447)
at net.minecraft.src.WorldGenOre.genStandardOre(WorldGenOre.java:178)
at net.minecraft.src.WorldGenOre.genStandardOre(WorldGenOre.java:165)
at net.minecraft.src.WorldGenOre.generateOres(WorldGenOre.java:52)
at net.minecraft.src.BiomeDecorator.decorate(BiomeDecorator.java:56)
at net.minecraft.src.BiomeGenBase.decorate(BiomeGenBase.java:531)
at net.minecraft.src.ChunkProviderTMCW.populate(ChunkProviderTMCW.java:1284)
at net.minecraft.src.ChunkProviderServerFix.populate(ChunkProviderServerFix.java:66)
at net.minecraft.src.Chunk.populateChunk(Chunk.java:1007)
at net.minecraft.src.ChunkProviderServer.loadChunk(ChunkProviderServer.java:128)
at net.minecraft.src.ChunkProviderServerFix.provideChunk(ChunkProviderServerFix.java:144)
at net.minecraft.src.World.getChunkFromChunkCoords(World.java:355)
at net.minecraft.src.LightUpdater.loadChunks(LightUpdater.java:43)
at net.minecraft.src.World.updateAllLightTypes(World.java:2683)
at net.minecraft.src.World.setBlock(World.java:367)
at net.minecraft.src.BlockSandFix.fall(BlockSandFix.java:86)
at net.minecraft.src.WorldGenOre.generateOre(WorldGenOre.java:447)
at net.minecraft.src.WorldGenOre.genStandardOre(WorldGenOre.java:178)
at net.minecraft.src.WorldGenOre.genStandardOre(WorldGenOre.java:165)
at net.minecraft.src.WorldGenOre.generateOres(WorldGenOre.java:52)
at net.minecraft.src.BiomeDecorator.decorate(BiomeDecorator.java:56)
at net.minecraft.src.BiomeGenBase.decorate(BiomeGenBase.java:531)
at net.minecraft.src.ChunkProviderTMCW.populate(ChunkProviderTMCW.java:1284)
at net.minecraft.src.ChunkProviderServerFix.populate(ChunkProviderServerFix.java:66)
at net.minecraft.src.Chunk.populateChunk(Chunk.java:1001)
at net.minecraft.src.ChunkProviderServer.loadChunk(ChunkProviderServer.java:128)
at net.minecraft.src.ChunkProviderServerFix.provideChunk(ChunkProviderServerFix.java:144)
at net.minecraft.src.World.getChunkFromChunkCoords(World.java:355)
at net.minecraft.src.LightUpdater.loadChunks(LightUpdater.java:43)
at net.minecraft.src.World.updateAllLightTypes(World.java:2683)
at net.minecraft.src.World.setBlock(World.java:367)
at net.minecraft.src.WorldGenMushrooms.generate(WorldGenMushrooms.java:36)
at net.minecraft.src.BiomeDecorator.decorate(BiomeDecorator.java:246)
at net.minecraft.src.BiomeGenBase.decorate(BiomeGenBase.java:531)
at net.minecraft.src.ChunkProviderTMCW.populate(ChunkProviderTMCW.java:1284)
at net.minecraft.src.ChunkProviderServerFix.populate(ChunkProviderServerFix.java:66)
at net.minecraft.src.Chunk.populateChunk(Chunk.java:1013)
at net.minecraft.src.ChunkProviderServer.loadChunk(ChunkProviderServer.java:128)
at net.minecraft.src.PlayerInstance.<init>(PlayerInstance.java:31)
at net.minecraft.src.PlayerManager.getOrCreateChunkWatcher(PlayerManager.java:73)
at net.minecraft.src.PlayerManager.updateMountedMovingPlayer(PlayerManager.java:192)
at net.minecraft.src.ServerConfigurationManager.serverUpdateMountedMovingPlayer(ServerConfigurationManager.java:233)
at net.minecraft.src.NetServerHandler.handleFlying(NetServerHandler.java:276)
at net.minecraft.src.Packet10Flying.processPacket(Packet10Flying.java:48)
at net.minecraft.src.MemoryConnection.processReadPackets(MemoryConnection.java:74)
at net.minecraft.src.NetServerHandler.networkTick(NetServerHandler.java:46)
at net.minecraft.src.NetworkListenThread.networkTick(NetworkListenThread.java:48)
at net.minecraft.src.IntegratedServerListenThread.networkTick(IntegratedServerListenThread.java:99)
at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:672)
at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:562)
at net.minecraft.src.IntegratedServer.tick(IntegratedServer.java:125)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:461)
at net.minecraft.src.ThreadMinecraftServer.run(ThreadMinecraftServer.java:18)
Likewise, I tried to use Minutor to view the world and it crashed with an access violation (trying to access memory it isn't allowed to, which is actually not much different from a NullPointerException in Java):
Obviously, this wouldn't normally ever be an issue since there is no way you could ever possibly go that far out unless you edited the save files (the /tp command is still limited to 30 million so I used NBTExplorer to edit the player's position in level.dat). Either way, I've never gone more than about 3,300 blocks from the origin in any world so even if the world size were only, say, +/-10000 blocks I'd be fine with that - it would take me many years to fully explore such an area.
I actually removed the limits in my own mod, although mainly to remove unnecessary checks every time a block position is accessed, and while you can actually go out to billions of blocks the Far Lands appear as I also removed the code that fixed them (again, for efficiency), but due to other changes (I removed the first 6 octaves of noise, which have practically no effect) terrain generation works normally out to at least 30 million (I also tested 64 million and it was fine), which is all that really matters as this is the maximum world size in vanilla:
Of course, the game crashed as soon as I got close enough to the 32 bit limit to cause an overflow and wrap-around to negative coordinates; based on the stacktrace it appears that runaway chunk loading occurred (the game tries to access a block in a chunk that isn't loaded, which in turn loaded and when features are being placed even more chunks get loaded, and so on. This caused a crash in my "LightUpdater" class since if chunks get loaded and it is called again while it is updating light it will cause its chunk cache to become corrupted):
---- Minecraft Crash Report ----
// I bet Cylons wouldn't have this problem.
java.lang.NullPointerException
at net.minecraft.src.LightUpdater.getSkyLightValue(LightUpdater.java:1382)
at net.minecraft.src.LightUpdater.updateSkyLight_server(LightUpdater.java:241)
at net.minecraft.src.LightUpdater.updateSkyLight(LightUpdater.java:97)
at net.minecraft.src.World.updateAllLightTypes(World.java:2684)
at net.minecraft.src.World.setBlock(World.java:367)
at net.minecraft.src.WorldGenLakesAlt.generate(WorldGenLakesAlt.java:148)
at net.minecraft.src.ChunkProviderTMCW.populate(ChunkProviderTMCW.java:1221)
at net.minecraft.src.ChunkProviderServerFix.populate(ChunkProviderServerFix.java:66)
at net.minecraft.src.Chunk.populateChunk(Chunk.java:995)
at net.minecraft.src.ChunkProviderServer.loadChunk(ChunkProviderServer.java:128)
at net.minecraft.src.ChunkProviderServerFix.provideChunk(ChunkProviderServerFix.java:144)
at net.minecraft.src.World.getChunkFromChunkCoords(World.java:355)
at net.minecraft.src.LightUpdater.loadChunks(LightUpdater.java:43)
at net.minecraft.src.World.updateAllLightTypes(World.java:2683)
at net.minecraft.src.World.setBlock(World.java:367)
at net.minecraft.src.MineshaftCorridor.randomlyPlaceTorch(MineshaftCorridor.java:519)
at net.minecraft.src.MineshaftCorridor.addComponentParts(MineshaftCorridor.java:247)
at net.minecraft.src.MineshaftStart.generateStructure(MineshaftStart.java:39)
at net.minecraft.src.MapGenMineshaftTMCW.generateStructuresInChunk(MapGenMineshaftTMCW.java:116)
at net.minecraft.src.ChunkProviderTMCW.populate(ChunkProviderTMCW.java:1095)
at net.minecraft.src.ChunkProviderServerFix.populate(ChunkProviderServerFix.java:66)
at net.minecraft.src.Chunk.populateChunk(Chunk.java:1001)
at net.minecraft.src.ChunkProviderServer.loadChunk(ChunkProviderServer.java:128)
at net.minecraft.src.ChunkProviderServerFix.provideChunk(ChunkProviderServerFix.java:144)
at net.minecraft.src.World.getChunkFromChunkCoords(World.java:355)
at net.minecraft.src.LightUpdater.loadChunks(LightUpdater.java:43)
at net.minecraft.src.World.updateAllLightTypes(World.java:2683)
at net.minecraft.src.World.setBlock(World.java:367)
at net.minecraft.src.BlockSandFix.fall(BlockSandFix.java:86)
at net.minecraft.src.WorldGenOre.generateOre(WorldGenOre.java:447)
at net.minecraft.src.WorldGenOre.genStandardOre(WorldGenOre.java:178)
at net.minecraft.src.WorldGenOre.genStandardOre(WorldGenOre.java:165)
at net.minecraft.src.WorldGenOre.generateOres(WorldGenOre.java:52)
at net.minecraft.src.BiomeDecorator.decorate(BiomeDecorator.java:56)
at net.minecraft.src.BiomeGenBase.decorate(BiomeGenBase.java:531)
at net.minecraft.src.ChunkProviderTMCW.populate(ChunkProviderTMCW.java:1284)
at net.minecraft.src.ChunkProviderServerFix.populate(ChunkProviderServerFix.java:66)
at net.minecraft.src.Chunk.populateChunk(Chunk.java:1001)
at net.minecraft.src.ChunkProviderServer.loadChunk(ChunkProviderServer.java:128)
at net.minecraft.src.ChunkProviderServerFix.provideChunk(ChunkProviderServerFix.java:144)
at net.minecraft.src.World.getChunkFromChunkCoords(World.java:355)
at net.minecraft.src.LightUpdater.loadChunks(LightUpdater.java:43)
at net.minecraft.src.World.updateAllLightTypes(World.java:2683)
at net.minecraft.src.World.setBlock(World.java:367)
at net.minecraft.src.WorldGenNewFlowers.placeFlower(WorldGenNewFlowers.java:67)
at net.minecraft.src.WorldGenNewFlowers.generate(WorldGenNewFlowers.java:39)
at net.minecraft.src.BiomeDecorator.decorate(BiomeDecorator.java:175)
at net.minecraft.src.BiomeGenBase.decorate(BiomeGenBase.java:531)
at net.minecraft.src.ChunkProviderTMCW.populate(ChunkProviderTMCW.java:1284)
at net.minecraft.src.ChunkProviderServerFix.populate(ChunkProviderServerFix.java:66)
at net.minecraft.src.Chunk.populateChunk(Chunk.java:1007)
at net.minecraft.src.ChunkProviderServer.loadChunk(ChunkProviderServer.java:128)
at net.minecraft.src.ChunkProviderServerFix.provideChunk(ChunkProviderServerFix.java:144)
at net.minecraft.src.World.getChunkFromChunkCoords(World.java:355)
at net.minecraft.src.LightUpdater.loadChunks(LightUpdater.java:43)
at net.minecraft.src.World.updateAllLightTypes(World.java:2683)
at net.minecraft.src.World.setBlock(World.java:367)
at net.minecraft.src.BlockSandFix.fall(BlockSandFix.java:86)
at net.minecraft.src.WorldGenOre.generateOre(WorldGenOre.java:447)
at net.minecraft.src.WorldGenOre.genStandardOre(WorldGenOre.java:178)
at net.minecraft.src.WorldGenOre.genStandardOre(WorldGenOre.java:165)
at net.minecraft.src.WorldGenOre.generateOres(WorldGenOre.java:52)
at net.minecraft.src.BiomeDecorator.decorate(BiomeDecorator.java:56)
at net.minecraft.src.BiomeGenBase.decorate(BiomeGenBase.java:531)
at net.minecraft.src.ChunkProviderTMCW.populate(ChunkProviderTMCW.java:1284)
at net.minecraft.src.ChunkProviderServerFix.populate(ChunkProviderServerFix.java:66)
at net.minecraft.src.Chunk.populateChunk(Chunk.java:1007)
at net.minecraft.src.ChunkProviderServer.loadChunk(ChunkProviderServer.java:128)
at net.minecraft.src.ChunkProviderServerFix.provideChunk(ChunkProviderServerFix.java:144)
at net.minecraft.src.World.getChunkFromChunkCoords(World.java:355)
at net.minecraft.src.LightUpdater.loadChunks(LightUpdater.java:43)
at net.minecraft.src.World.updateAllLightTypes(World.java:2683)
at net.minecraft.src.World.setBlock(World.java:367)
at net.minecraft.src.WorldGenLakesAlt.generate(WorldGenLakesAlt.java:148)
at net.minecraft.src.ChunkProviderTMCW.populate(ChunkProviderTMCW.java:1221)
at net.minecraft.src.ChunkProviderServerFix.populate(ChunkProviderServerFix.java:66)
at net.minecraft.src.Chunk.populateChunk(Chunk.java:1007)
at net.minecraft.src.ChunkProviderServer.loadChunk(ChunkProviderServer.java:128)
at net.minecraft.src.ChunkProviderServerFix.provideChunk(ChunkProviderServerFix.java:144)
at net.minecraft.src.World.getChunkFromChunkCoords(World.java:355)
at net.minecraft.src.LightUpdater.loadChunks(LightUpdater.java:43)
at net.minecraft.src.World.updateAllLightTypes(World.java:2683)
at net.minecraft.src.World.setBlock(World.java:367)
at net.minecraft.src.BlockSandFix.fall(BlockSandFix.java:86)
at net.minecraft.src.WorldGenOre.generateOre(WorldGenOre.java:447)
at net.minecraft.src.WorldGenOre.genStandardOre(WorldGenOre.java:178)
at net.minecraft.src.WorldGenOre.genStandardOre(WorldGenOre.java:165)
at net.minecraft.src.WorldGenOre.generateOres(WorldGenOre.java:52)
at net.minecraft.src.BiomeDecorator.decorate(BiomeDecorator.java:56)
at net.minecraft.src.BiomeGenBase.decorate(BiomeGenBase.java:531)
at net.minecraft.src.ChunkProviderTMCW.populate(ChunkProviderTMCW.java:1284)
at net.minecraft.src.ChunkProviderServerFix.populate(ChunkProviderServerFix.java:66)
at net.minecraft.src.Chunk.populateChunk(Chunk.java:1007)
at net.minecraft.src.ChunkProviderServer.loadChunk(ChunkProviderServer.java:128)
at net.minecraft.src.ChunkProviderServerFix.provideChunk(ChunkProviderServerFix.java:144)
at net.minecraft.src.World.getChunkFromChunkCoords(World.java:355)
at net.minecraft.src.LightUpdater.loadChunks(LightUpdater.java:43)
at net.minecraft.src.World.updateAllLightTypes(World.java:2683)
at net.minecraft.src.World.setBlock(World.java:367)
at net.minecraft.src.BlockSandFix.fall(BlockSandFix.java:86)
at net.minecraft.src.WorldGenOre.generateOre(WorldGenOre.java:447)
at net.minecraft.src.WorldGenOre.genStandardOre(WorldGenOre.java:178)
at net.minecraft.src.WorldGenOre.genStandardOre(WorldGenOre.java:165)
at net.minecraft.src.WorldGenOre.generateOres(WorldGenOre.java:52)
at net.minecraft.src.BiomeDecorator.decorate(BiomeDecorator.java:56)
at net.minecraft.src.BiomeGenBase.decorate(BiomeGenBase.java:531)
at net.minecraft.src.ChunkProviderTMCW.populate(ChunkProviderTMCW.java:1284)
at net.minecraft.src.ChunkProviderServerFix.populate(ChunkProviderServerFix.java:66)
at net.minecraft.src.Chunk.populateChunk(Chunk.java:1007)
at net.minecraft.src.ChunkProviderServer.loadChunk(ChunkProviderServer.java:128)
at net.minecraft.src.ChunkProviderServerFix.provideChunk(ChunkProviderServerFix.java:144)
at net.minecraft.src.World.getChunkFromChunkCoords(World.java:355)
at net.minecraft.src.LightUpdater.loadChunks(LightUpdater.java:43)
at net.minecraft.src.World.updateAllLightTypes(World.java:2683)
at net.minecraft.src.World.setBlock(World.java:367)
at net.minecraft.src.BlockSandFix.fall(BlockSandFix.java:86)
at net.minecraft.src.WorldGenOre.generateOre(WorldGenOre.java:447)
at net.minecraft.src.WorldGenOre.genStandardOre(WorldGenOre.java:178)
at net.minecraft.src.WorldGenOre.genStandardOre(WorldGenOre.java:165)
at net.minecraft.src.WorldGenOre.generateOres(WorldGenOre.java:52)
at net.minecraft.src.BiomeDecorator.decorate(BiomeDecorator.java:56)
at net.minecraft.src.BiomeGenBase.decorate(BiomeGenBase.java:531)
at net.minecraft.src.ChunkProviderTMCW.populate(ChunkProviderTMCW.java:1284)
at net.minecraft.src.ChunkProviderServerFix.populate(ChunkProviderServerFix.java:66)
at net.minecraft.src.Chunk.populateChunk(Chunk.java:1001)
at net.minecraft.src.ChunkProviderServer.loadChunk(ChunkProviderServer.java:128)
at net.minecraft.src.ChunkProviderServerFix.provideChunk(ChunkProviderServerFix.java:144)
at net.minecraft.src.World.getChunkFromChunkCoords(World.java:355)
at net.minecraft.src.LightUpdater.loadChunks(LightUpdater.java:43)
at net.minecraft.src.World.updateAllLightTypes(World.java:2683)
at net.minecraft.src.World.setBlock(World.java:367)
at net.minecraft.src.WorldGenMushrooms.generate(WorldGenMushrooms.java:36)
at net.minecraft.src.BiomeDecorator.decorate(BiomeDecorator.java:246)
at net.minecraft.src.BiomeGenBase.decorate(BiomeGenBase.java:531)
at net.minecraft.src.ChunkProviderTMCW.populate(ChunkProviderTMCW.java:1284)
at net.minecraft.src.ChunkProviderServerFix.populate(ChunkProviderServerFix.java:66)
at net.minecraft.src.Chunk.populateChunk(Chunk.java:1013)
at net.minecraft.src.ChunkProviderServer.loadChunk(ChunkProviderServer.java:128)
at net.minecraft.src.PlayerInstance.<init>(PlayerInstance.java:31)
at net.minecraft.src.PlayerManager.getOrCreateChunkWatcher(PlayerManager.java:73)
at net.minecraft.src.PlayerManager.updateMountedMovingPlayer(PlayerManager.java:192)
at net.minecraft.src.ServerConfigurationManager.serverUpdateMountedMovingPlayer(ServerConfigurationManager.java:233)
at net.minecraft.src.NetServerHandler.handleFlying(NetServerHandler.java:276)
at net.minecraft.src.Packet10Flying.processPacket(Packet10Flying.java:48)
at net.minecraft.src.MemoryConnection.processReadPackets(MemoryConnection.java:74)
at net.minecraft.src.NetServerHandler.networkTick(NetServerHandler.java:46)
at net.minecraft.src.NetworkListenThread.networkTick(NetworkListenThread.java:48)
at net.minecraft.src.IntegratedServerListenThread.networkTick(IntegratedServerListenThread.java:99)
at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:672)
at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:562)
at net.minecraft.src.IntegratedServer.tick(IntegratedServer.java:125)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:461)
at net.minecraft.src.ThreadMinecraftServer.run(ThreadMinecraftServer.java:18)
Likewise, I tried to use Minutor to view the world and it crashed with an access violation (trying to access memory it isn't allowed to, which is actually not much different from a NullPointerException in Java):
Obviously, this wouldn't normally ever be an issue since there is no way you could ever possibly go that far out unless you edited the save files (the /tp command is still limited to 30 million so I used NBTExplorer to edit the player's position in level.dat). Either way, I've never gone more than about 3,300 blocks from the origin in any world so even if the world size were only, say, +/-10000 blocks I'd be fine with that - it would take me many years to fully explore such an area.
Bedrock edition has serious problems when you go more than 4 million blocks out from the center, but to be honest, on console editions of the game I would've been just as happy if the world sizes were limited to 500,000 by 500,000 X and Z respectively. This would give you 250,000 blocks from the center distance to travel which is plenty for most survival players. Even 30,000 by 30,000 on Xbox One edition would have been decent for the majority of players because in free multiplayer it is limited to 8 players online I believe, you need realms for a maximum of 11 players on consoles which only exists on bedrock edition.
Having world sizes too large is a burden on storage, even with friends on my servers I can't see myself needing more than a 500,000 by 500,000 sized world to be honest. It would literally take me years to fill even a 10th of that space up with my builds.
Infinity and computers don't mix well. Sure one can go to very large numbers with mathematical models, but MC is a game that should run more or less efficiently. 99.999% of MC players will never go more than 30,000 blocks from origin, let alone 30 million.
Others have mentioned the technical reasons for the border, but there still remains the question of why are you concerned? How exactly are you restricted by the VERY LARGE yet finite nature of Minecraft. What do you expect to find beyond this border that you would not have found already? If you can't find enough to be entertained by within that 30,000,000 block radius, why do you think the blocks beyond will be any better?
Other have mentioned the technical reasons for the border, but there still remains the question of why are you concerned? How exactly are you restricted by the VERY LARGE yet finite nature of Minecraft. What do you expect to find beyond this border that you would not have found already? If you can't find enough to be entertained by within that 30,000,000 block radius, why do you think the blocks beyond will be any better?
I think the 256 Y limit is far more restricting, that is easily noticeable, if we're lucky, we may end up with an increase to 512 Y on the maximum build height soon but it depends on if Mojang wants to. There is a technical border on the Y coordinate, although it isn't called this, it's pretty much the same thing, if you can't build past 256 Y then in survival gameplay anything above 256 Y except the sky and sun/moon may as well not be there, including rain and snow.
I'm not bothered about the 60 million by 60 million limitation X to Z, but I do wish the glitches involving the farlands were patched, if they are impossible to fix due to technical reasons, then we should at least have the option to set a smaller world border or barrier, which doesn't currently exist in bedrock edition for worlds set to "infinite".
I've recently found myself wondering why the world border exists. There's plenty of information on the world border and many videos featuring it, but I haven't been able to find a single video or forum thread detailing why the world border even exists. If Minecraft is supposed to be an endless and infinite game, why would it be restricted like this?
Thanks.
The World Boundary page in the Wiki gives a lot of info about problems going too far out.
https://minecraft.gamepedia.com/World_boundary
Apparently the game can be modified to work normally out to about +/-1000,000,000 blocks but ±2,147,483,647 is the absolute maximum due to using 32 bit variables and earlier versions had problems much closer in.
So there has to be a limit somewhere, they picked +/- 30,000,000 and there's presumably no real reason to put ant effort into changing it.
Just testing.
For all intents and purposes it is infinite, because in survival gameplay it is rare that anyone would ever venture out to the world border at 30 million blocks from the center X and Z coordinates respectively in the overworld.
This world limit is fine and is not worth complaining about as it is obvious it is generous enough for any player no matter how ambitious your projects would be, also you've got to think about how much space the world file would take up the more of the world is explored. AntVenom on Youtube went into detail about the theoretical maximum file size would reach if all the world were to be generated and saved to the disk, the storage you'd need for it is far more than the average consumer would reasonably be expected to have in their computers, yes, even people with RAID HDD or SSD setups.
I actually removed the limits in my own mod, although mainly to remove unnecessary checks every time a block position is accessed, and while you can actually go out to billions of blocks the Far Lands appear as I also removed the code that fixed them (again, for efficiency), but due to other changes (I removed the first 6 octaves of noise, which have practically no effect) terrain generation works normally out to at least 30 million (I also tested 64 million and it was fine), which is all that really matters as this is the maximum world size in vanilla:
Of course, the game crashed as soon as I got close enough to the 32 bit limit to cause an overflow and wrap-around to negative coordinates; based on the stacktrace it appears that runaway chunk loading occurred (the game tries to access a block in a chunk that isn't loaded, which in turn loaded and when features are being placed even more chunks get loaded, and so on. This caused a crash in my "LightUpdater" class since if chunks get loaded and it is called again while it is updating light it will cause its chunk cache to become corrupted):
---- Minecraft Crash Report ----
// I bet Cylons wouldn't have this problem.
Time: 8/1/20 7:03 PM
Description: Ticking memory connection
java.lang.NullPointerException
at net.minecraft.src.LightUpdater.getSkyLightValue(LightUpdater.java:1382)
at net.minecraft.src.LightUpdater.updateSkyLight_server(LightUpdater.java:241)
at net.minecraft.src.LightUpdater.updateSkyLight(LightUpdater.java:97)
at net.minecraft.src.World.updateAllLightTypes(World.java:2684)
at net.minecraft.src.World.setBlock(World.java:367)
at net.minecraft.src.WorldGenLakesAlt.generate(WorldGenLakesAlt.java:148)
at net.minecraft.src.ChunkProviderTMCW.populate(ChunkProviderTMCW.java:1221)
at net.minecraft.src.ChunkProviderServerFix.populate(ChunkProviderServerFix.java:66)
at net.minecraft.src.Chunk.populateChunk(Chunk.java:995)
at net.minecraft.src.ChunkProviderServer.loadChunk(ChunkProviderServer.java:128)
at net.minecraft.src.ChunkProviderServerFix.provideChunk(ChunkProviderServerFix.java:144)
at net.minecraft.src.World.getChunkFromChunkCoords(World.java:355)
at net.minecraft.src.LightUpdater.loadChunks(LightUpdater.java:43)
at net.minecraft.src.World.updateAllLightTypes(World.java:2683)
at net.minecraft.src.World.setBlock(World.java:367)
at net.minecraft.src.MineshaftCorridor.randomlyPlaceTorch(MineshaftCorridor.java:519)
at net.minecraft.src.MineshaftCorridor.addComponentParts(MineshaftCorridor.java:247)
at net.minecraft.src.MineshaftStart.generateStructure(MineshaftStart.java:39)
at net.minecraft.src.MapGenMineshaftTMCW.generateStructuresInChunk(MapGenMineshaftTMCW.java:116)
at net.minecraft.src.ChunkProviderTMCW.populate(ChunkProviderTMCW.java:1095)
at net.minecraft.src.ChunkProviderServerFix.populate(ChunkProviderServerFix.java:66)
at net.minecraft.src.Chunk.populateChunk(Chunk.java:1001)
at net.minecraft.src.ChunkProviderServer.loadChunk(ChunkProviderServer.java:128)
at net.minecraft.src.ChunkProviderServerFix.provideChunk(ChunkProviderServerFix.java:144)
at net.minecraft.src.World.getChunkFromChunkCoords(World.java:355)
at net.minecraft.src.LightUpdater.loadChunks(LightUpdater.java:43)
at net.minecraft.src.World.updateAllLightTypes(World.java:2683)
at net.minecraft.src.World.setBlock(World.java:367)
at net.minecraft.src.BlockSandFix.fall(BlockSandFix.java:86)
at net.minecraft.src.WorldGenOre.generateOre(WorldGenOre.java:447)
at net.minecraft.src.WorldGenOre.genStandardOre(WorldGenOre.java:178)
at net.minecraft.src.WorldGenOre.genStandardOre(WorldGenOre.java:165)
at net.minecraft.src.WorldGenOre.generateOres(WorldGenOre.java:52)
at net.minecraft.src.BiomeDecorator.decorate(BiomeDecorator.java:56)
at net.minecraft.src.BiomeGenBase.decorate(BiomeGenBase.java:531)
at net.minecraft.src.ChunkProviderTMCW.populate(ChunkProviderTMCW.java:1284)
at net.minecraft.src.ChunkProviderServerFix.populate(ChunkProviderServerFix.java:66)
at net.minecraft.src.Chunk.populateChunk(Chunk.java:1001)
at net.minecraft.src.ChunkProviderServer.loadChunk(ChunkProviderServer.java:128)
at net.minecraft.src.ChunkProviderServerFix.provideChunk(ChunkProviderServerFix.java:144)
at net.minecraft.src.World.getChunkFromChunkCoords(World.java:355)
at net.minecraft.src.LightUpdater.loadChunks(LightUpdater.java:43)
at net.minecraft.src.World.updateAllLightTypes(World.java:2683)
at net.minecraft.src.World.setBlock(World.java:367)
at net.minecraft.src.WorldGenNewFlowers.placeFlower(WorldGenNewFlowers.java:67)
at net.minecraft.src.WorldGenNewFlowers.generate(WorldGenNewFlowers.java:39)
at net.minecraft.src.BiomeDecorator.decorate(BiomeDecorator.java:175)
at net.minecraft.src.BiomeGenBase.decorate(BiomeGenBase.java:531)
at net.minecraft.src.ChunkProviderTMCW.populate(ChunkProviderTMCW.java:1284)
at net.minecraft.src.ChunkProviderServerFix.populate(ChunkProviderServerFix.java:66)
at net.minecraft.src.Chunk.populateChunk(Chunk.java:1007)
at net.minecraft.src.ChunkProviderServer.loadChunk(ChunkProviderServer.java:128)
at net.minecraft.src.ChunkProviderServerFix.provideChunk(ChunkProviderServerFix.java:144)
at net.minecraft.src.World.getChunkFromChunkCoords(World.java:355)
at net.minecraft.src.LightUpdater.loadChunks(LightUpdater.java:43)
at net.minecraft.src.World.updateAllLightTypes(World.java:2683)
at net.minecraft.src.World.setBlock(World.java:367)
at net.minecraft.src.BlockSandFix.fall(BlockSandFix.java:86)
at net.minecraft.src.WorldGenOre.generateOre(WorldGenOre.java:447)
at net.minecraft.src.WorldGenOre.genStandardOre(WorldGenOre.java:178)
at net.minecraft.src.WorldGenOre.genStandardOre(WorldGenOre.java:165)
at net.minecraft.src.WorldGenOre.generateOres(WorldGenOre.java:52)
at net.minecraft.src.BiomeDecorator.decorate(BiomeDecorator.java:56)
at net.minecraft.src.BiomeGenBase.decorate(BiomeGenBase.java:531)
at net.minecraft.src.ChunkProviderTMCW.populate(ChunkProviderTMCW.java:1284)
at net.minecraft.src.ChunkProviderServerFix.populate(ChunkProviderServerFix.java:66)
at net.minecraft.src.Chunk.populateChunk(Chunk.java:1007)
at net.minecraft.src.ChunkProviderServer.loadChunk(ChunkProviderServer.java:128)
at net.minecraft.src.ChunkProviderServerFix.provideChunk(ChunkProviderServerFix.java:144)
at net.minecraft.src.World.getChunkFromChunkCoords(World.java:355)
at net.minecraft.src.LightUpdater.loadChunks(LightUpdater.java:43)
at net.minecraft.src.World.updateAllLightTypes(World.java:2683)
at net.minecraft.src.World.setBlock(World.java:367)
at net.minecraft.src.WorldGenLakesAlt.generate(WorldGenLakesAlt.java:148)
at net.minecraft.src.ChunkProviderTMCW.populate(ChunkProviderTMCW.java:1221)
at net.minecraft.src.ChunkProviderServerFix.populate(ChunkProviderServerFix.java:66)
at net.minecraft.src.Chunk.populateChunk(Chunk.java:1007)
at net.minecraft.src.ChunkProviderServer.loadChunk(ChunkProviderServer.java:128)
at net.minecraft.src.ChunkProviderServerFix.provideChunk(ChunkProviderServerFix.java:144)
at net.minecraft.src.World.getChunkFromChunkCoords(World.java:355)
at net.minecraft.src.LightUpdater.loadChunks(LightUpdater.java:43)
at net.minecraft.src.World.updateAllLightTypes(World.java:2683)
at net.minecraft.src.World.setBlock(World.java:367)
at net.minecraft.src.BlockSandFix.fall(BlockSandFix.java:86)
at net.minecraft.src.WorldGenOre.generateOre(WorldGenOre.java:447)
at net.minecraft.src.WorldGenOre.genStandardOre(WorldGenOre.java:178)
at net.minecraft.src.WorldGenOre.genStandardOre(WorldGenOre.java:165)
at net.minecraft.src.WorldGenOre.generateOres(WorldGenOre.java:52)
at net.minecraft.src.BiomeDecorator.decorate(BiomeDecorator.java:56)
at net.minecraft.src.BiomeGenBase.decorate(BiomeGenBase.java:531)
at net.minecraft.src.ChunkProviderTMCW.populate(ChunkProviderTMCW.java:1284)
at net.minecraft.src.ChunkProviderServerFix.populate(ChunkProviderServerFix.java:66)
at net.minecraft.src.Chunk.populateChunk(Chunk.java:1007)
at net.minecraft.src.ChunkProviderServer.loadChunk(ChunkProviderServer.java:128)
at net.minecraft.src.ChunkProviderServerFix.provideChunk(ChunkProviderServerFix.java:144)
at net.minecraft.src.World.getChunkFromChunkCoords(World.java:355)
at net.minecraft.src.LightUpdater.loadChunks(LightUpdater.java:43)
at net.minecraft.src.World.updateAllLightTypes(World.java:2683)
at net.minecraft.src.World.setBlock(World.java:367)
at net.minecraft.src.BlockSandFix.fall(BlockSandFix.java:86)
at net.minecraft.src.WorldGenOre.generateOre(WorldGenOre.java:447)
at net.minecraft.src.WorldGenOre.genStandardOre(WorldGenOre.java:178)
at net.minecraft.src.WorldGenOre.genStandardOre(WorldGenOre.java:165)
at net.minecraft.src.WorldGenOre.generateOres(WorldGenOre.java:52)
at net.minecraft.src.BiomeDecorator.decorate(BiomeDecorator.java:56)
at net.minecraft.src.BiomeGenBase.decorate(BiomeGenBase.java:531)
at net.minecraft.src.ChunkProviderTMCW.populate(ChunkProviderTMCW.java:1284)
at net.minecraft.src.ChunkProviderServerFix.populate(ChunkProviderServerFix.java:66)
at net.minecraft.src.Chunk.populateChunk(Chunk.java:1007)
at net.minecraft.src.ChunkProviderServer.loadChunk(ChunkProviderServer.java:128)
at net.minecraft.src.ChunkProviderServerFix.provideChunk(ChunkProviderServerFix.java:144)
at net.minecraft.src.World.getChunkFromChunkCoords(World.java:355)
at net.minecraft.src.LightUpdater.loadChunks(LightUpdater.java:43)
at net.minecraft.src.World.updateAllLightTypes(World.java:2683)
at net.minecraft.src.World.setBlock(World.java:367)
at net.minecraft.src.BlockSandFix.fall(BlockSandFix.java:86)
at net.minecraft.src.WorldGenOre.generateOre(WorldGenOre.java:447)
at net.minecraft.src.WorldGenOre.genStandardOre(WorldGenOre.java:178)
at net.minecraft.src.WorldGenOre.genStandardOre(WorldGenOre.java:165)
at net.minecraft.src.WorldGenOre.generateOres(WorldGenOre.java:52)
at net.minecraft.src.BiomeDecorator.decorate(BiomeDecorator.java:56)
at net.minecraft.src.BiomeGenBase.decorate(BiomeGenBase.java:531)
at net.minecraft.src.ChunkProviderTMCW.populate(ChunkProviderTMCW.java:1284)
at net.minecraft.src.ChunkProviderServerFix.populate(ChunkProviderServerFix.java:66)
at net.minecraft.src.Chunk.populateChunk(Chunk.java:1001)
at net.minecraft.src.ChunkProviderServer.loadChunk(ChunkProviderServer.java:128)
at net.minecraft.src.ChunkProviderServerFix.provideChunk(ChunkProviderServerFix.java:144)
at net.minecraft.src.World.getChunkFromChunkCoords(World.java:355)
at net.minecraft.src.LightUpdater.loadChunks(LightUpdater.java:43)
at net.minecraft.src.World.updateAllLightTypes(World.java:2683)
at net.minecraft.src.World.setBlock(World.java:367)
at net.minecraft.src.WorldGenMushrooms.generate(WorldGenMushrooms.java:36)
at net.minecraft.src.BiomeDecorator.decorate(BiomeDecorator.java:246)
at net.minecraft.src.BiomeGenBase.decorate(BiomeGenBase.java:531)
at net.minecraft.src.ChunkProviderTMCW.populate(ChunkProviderTMCW.java:1284)
at net.minecraft.src.ChunkProviderServerFix.populate(ChunkProviderServerFix.java:66)
at net.minecraft.src.Chunk.populateChunk(Chunk.java:1013)
at net.minecraft.src.ChunkProviderServer.loadChunk(ChunkProviderServer.java:128)
at net.minecraft.src.PlayerInstance.<init>(PlayerInstance.java:31)
at net.minecraft.src.PlayerManager.getOrCreateChunkWatcher(PlayerManager.java:73)
at net.minecraft.src.PlayerManager.updateMountedMovingPlayer(PlayerManager.java:192)
at net.minecraft.src.ServerConfigurationManager.serverUpdateMountedMovingPlayer(ServerConfigurationManager.java:233)
at net.minecraft.src.NetServerHandler.handleFlying(NetServerHandler.java:276)
at net.minecraft.src.Packet10Flying.processPacket(Packet10Flying.java:48)
at net.minecraft.src.MemoryConnection.processReadPackets(MemoryConnection.java:74)
at net.minecraft.src.NetServerHandler.networkTick(NetServerHandler.java:46)
at net.minecraft.src.NetworkListenThread.networkTick(NetworkListenThread.java:48)
at net.minecraft.src.IntegratedServerListenThread.networkTick(IntegratedServerListenThread.java:99)
at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:672)
at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:562)
at net.minecraft.src.IntegratedServer.tick(IntegratedServer.java:125)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:461)
at net.minecraft.src.ThreadMinecraftServer.run(ThreadMinecraftServer.java:18)
Likewise, I tried to use Minutor to view the world and it crashed with an access violation (trying to access memory it isn't allowed to, which is actually not much different from a NullPointerException in Java):
Faulting module name: minutor.exe, version: 0.0.0.0, time stamp: 0x5271d4c5
Exception code: 0xc0000005
Fault offset: 0x00001a01
Faulting process id: 0x1364
Faulting application start time: 0x01d66857a6cf4cd4
Faulting application path: C:\Data\Minecraft\Mapping\minutor.exe
Faulting module path: C:\Data\Minecraft\Mapping\minutor.exe
Report Id: 264c2afe-4dea-4c91-b46a-d8d29eeb9577
Faulting package full name:
Faulting package-relative application ID:
Obviously, this wouldn't normally ever be an issue since there is no way you could ever possibly go that far out unless you edited the save files (the /tp command is still limited to 30 million so I used NBTExplorer to edit the player's position in level.dat). Either way, I've never gone more than about 3,300 blocks from the origin in any world so even if the world size were only, say, +/-10000 blocks I'd be fine with that - it would take me many years to fully explore such an area.
TheMasterCaver's First World - possibly the most caved-out world in Minecraft history - includes world download.
TheMasterCaver's World - my own version of Minecraft largely based on my views of how the game should have evolved since 1.6.4.
Why do I still play in 1.6.4?
Bedrock edition has serious problems when you go more than 4 million blocks out from the center, but to be honest, on console editions of the game I would've been just as happy if the world sizes were limited to 500,000 by 500,000 X and Z respectively. This would give you 250,000 blocks from the center distance to travel which is plenty for most survival players. Even 30,000 by 30,000 on Xbox One edition would have been decent for the majority of players because in free multiplayer it is limited to 8 players online I believe, you need realms for a maximum of 11 players on consoles which only exists on bedrock edition.
Having world sizes too large is a burden on storage, even with friends on my servers I can't see myself needing more than a 500,000 by 500,000 sized world to be honest. It would literally take me years to fill even a 10th of that space up with my builds.
Infinity and computers don't mix well. Sure one can go to very large numbers with mathematical models, but MC is a game that should run more or less efficiently. 99.999% of MC players will never go more than 30,000 blocks from origin, let alone 30 million.
Others have mentioned the technical reasons for the border, but there still remains the question of why are you concerned? How exactly are you restricted by the VERY LARGE yet finite nature of Minecraft. What do you expect to find beyond this border that you would not have found already? If you can't find enough to be entertained by within that 30,000,000 block radius, why do you think the blocks beyond will be any better?
I think the 256 Y limit is far more restricting, that is easily noticeable, if we're lucky, we may end up with an increase to 512 Y on the maximum build height soon but it depends on if Mojang wants to. There is a technical border on the Y coordinate, although it isn't called this, it's pretty much the same thing, if you can't build past 256 Y then in survival gameplay anything above 256 Y except the sky and sun/moon may as well not be there, including rain and snow.
I'm not bothered about the 60 million by 60 million limitation X to Z, but I do wish the glitches involving the farlands were patched, if they are impossible to fix due to technical reasons, then we should at least have the option to set a smaller world border or barrier, which doesn't currently exist in bedrock edition for worlds set to "infinite".