Commit Graph

1340 Commits

Author SHA1 Message Date
Dylan K. Taylor
7607e484dd Expose chunk locking to the API 2018-10-28 16:32:56 +00:00
Dylan K. Taylor
1e8b153662 Further cleanup to Simplex/Noise hierarchy 2018-10-28 16:30:18 +00:00
Dylan K. Taylor
f4105fd91a Noise: remove a ton of dead code 2018-10-27 17:04:53 +01:00
Dylan K. Taylor
ff28c982ac Kick out unnecessary Perlin class
the code in here isn't used anywhere except as a base for Simplex, so it makes more sense to flatten it and get rid of the crap.
2018-10-27 16:33:58 +01:00
Dylan K. Taylor
a7eaec13b9 Merge branch 'release/3.4' 2018-10-24 15:53:13 +01:00
Dylan K. Taylor
f61e099828 Merge branch 'release/3.3' into release/3.4 2018-10-24 15:52:04 +01:00
Dylan K. Taylor
925da62afa Merge branch 'release/3.2' into release/3.3 2018-10-24 15:49:09 +01:00
Dylan K. Taylor
09985c5763 Fixed async light population producing garbage when generator isn't registered, closes #2488 2018-10-24 15:49:00 +01:00
Dylan K. Taylor
011b9ae159 Update to latest NBT lib version 2018-10-23 16:47:00 +01:00
Dylan K. Taylor
a49abff099 Merge remote-tracking branch 'origin/release/3.4' 2018-10-22 17:46:37 +01:00
Dylan K. Taylor
cac21c2caf SubChunk: implement branchless read/write for nibble arrays (#2489)
this was inspired by https://hub.spigotmc.org/stash/projects/SPIGOT/repos/spigot/browse/CraftBukkit-Patches/0121-Branchless-NibbleArray.patch
2018-10-22 17:46:14 +01:00
Dylan K. Taylor
90482e79bc Merge branch 'release/3.4' 2018-10-21 18:23:54 +01:00
Dylan K. Taylor
6dd2597934 Merge branch 'release/3.3' into release/3.4 2018-10-21 18:17:07 +01:00
Dylan K. Taylor
5e68858ebf Merge branch 'release/3.2' into release/3.3 2018-10-21 18:16:59 +01:00
Dylan K. Taylor
45c9caa38c Fixup some formatting issues 2018-10-21 18:15:25 +01:00
Dylan K. Taylor
159c3a1a91 Merge branch 'release/3.4' 2018-10-20 19:20:22 +01:00
Dylan K. Taylor
8ac1b18b17 Level: add API method isInLoadedTerrain() 2018-10-20 19:09:53 +01:00
Dylan K. Taylor
fb128d0276 Merge branch 'release/3.4' 2018-10-20 16:43:25 +01:00
Dylan K. Taylor
43426a4c5c Level: Add API method getViewersForPosition()
This returns all players who have the given position within their view radius.
2018-10-20 16:25:56 +01:00
Dylan K. Taylor
9f8a2dc61a Make use of new API method getChunkAtPosition() 2018-10-20 15:58:29 +01:00
Dylan K. Taylor
d9ebe6f321 Level: Added API method getChunkAtPosition()
This returns the chunk containing the given vector.
2018-10-20 15:54:13 +01:00
Dylan K. Taylor
605e7e08ed Remove some deprecated methods 2018-10-20 15:29:43 +01:00
Dylan K. Taylor
e035be8498 Remove some master-only usages of addGlobalPacket() 2018-10-20 15:27:08 +01:00
Dylan K. Taylor
831a35ec69 Merge branch 'release/3.4' 2018-10-20 15:26:17 +01:00
Dylan K. Taylor
cb1eb1ee09 Level: Rename addGlobalPacket() to broadcastGlobalPacket()
this name makes the intention more clear and consistent with other functions.
2018-10-20 15:24:33 +01:00
Dylan K. Taylor
d563b9e31b Level: Added API method broadcastPacketToViewers()
This supersedes addChunkPacket() in most cases, and has a more clear name. It broadcasts the given packet to every player who has the target position within their chunk load radius.
2018-10-20 15:14:41 +01:00
Dylan K. Taylor
517a21c418 RegionLoader: remove unused constant 2018-10-20 14:19:27 +01:00
Dylan K. Taylor
d60c19551b Merge branch 'release/3.4' 2018-10-19 18:53:24 +01:00
Dylan K. Taylor
7c44eea625 Merge branch 'release/3.3' into release/3.4 2018-10-19 18:53:18 +01:00
Dylan K. Taylor
d749f19c73 Merge branch 'release/3.2' into release/3.3 2018-10-19 18:53:12 +01:00
Dylan K. Taylor
41fd03f329 LightUpdate: fixed double-updated nodes not getting light propagated appropriately
This can happen when a light source is removed and later encountering another light source to fill the gap. A higher light level may get set and then not propagated. This bug is difficult to explain, but fairly easy to reproduce.
2018-10-19 18:53:04 +01:00
Dylan K. Taylor
93b8a6c44a Level: fix light removal bugs caused by 48a5eeb3a4 and 19e68f98a7
BlockFactory::\$lightFilter and Block->getLightFilter() are not equivalent.
2018-10-19 18:52:42 +01:00
Dylan K. Taylor
7642298b4f Merge branch 'release/3.4' 2018-10-19 15:56:07 +01:00
Dylan K. Taylor
646c8970b8 Merge branch 'release/3.3' into release/3.4 2018-10-19 15:56:01 +01:00
Dylan K. Taylor
58067b2ad1 Merge branch 'release/3.2' into release/3.3 2018-10-19 15:55:53 +01:00
Dylan K. Taylor
0c9946621c Level: Do not tick chunks which have unloaded adjacent chunks
Grass can cause issues here by requesting blocks randomly offset away from itself, which can cause silent chunk loading on chunk ticking. It also causes crashes if chunk autoloading is taken away, which is obviously undesired.

It was also noticed that player chunkloaders cause chunks to start getting ticked as soon as they load their first chunk, which is before the entity is visible to everyone else on the server. This is probably undesired behaviour.
2018-10-19 15:48:46 +01:00
Dylan K. Taylor
39808dd94f Actually merge branch 'release/3.4' this time 2018-10-19 15:35:23 +01:00
Dylan K. Taylor
20b87b7875 Level: reduce complexity of populateChunk() 2018-10-19 15:29:01 +01:00
Dylan K. Taylor
4221e274d6 Merge branch 'release/3.3' into release/3.4 2018-10-16 18:20:14 +01:00
Dylan K. Taylor
839d5eab7b Protocol changes for 1.7
there's also some new cases in stats, but we don't care about those anyway.
2018-10-16 17:13:52 +01:00
Dylan K. Taylor
70054de575 Clean up garbage in Tree populators 2018-10-15 19:42:16 +01:00
Dylan K. Taylor
1b572d3e40 Level: rename unload to onUnload()
again, this is an intentional rug-jerk, along with a clearer naming.
2018-10-13 15:43:43 +01:00
Dylan K. Taylor
2e265423c7 Fixed NBT leveldata fixer never getting called 2018-10-10 04:44:45 -04:00
Dylan K. Taylor
e2af394c81 Revert "Level: Identify chunk loaders by their object ID"
This reverts commit 3bb450244f.

PhpStorm you lying piece of shit... you only showed me the usages in Level!

This change should be revised and redone later.
2018-10-10 03:59:07 -04:00
Dylan K. Taylor
3bb450244f Level: Identify chunk loaders by their object ID
chunkloader ID is completely unnecessary extra complication. spl_object_hash() would be fine for this as well, but a number is better. Since it's unique for the object lifetime (and the Level keeps a ref to loaders) this system should work just fine.
2018-10-09 16:32:34 +01:00
Dylan K. Taylor
8d1400115e fixed unsupported leveldb format versions crashing the server 2018-10-07 15:42:59 +01:00
Dylan K. Taylor
7c1432526f Remove pointless ID maths from Level 2018-10-07 15:28:10 +01:00
Dylan K. Taylor
706082deb1 Fixed Flat generator using item ID/damage to build block layers 2018-10-07 12:01:43 +01:00
Dylan K. Taylor
14ef4558c2 Allow BlockFactory to handle position setting of newly created blocks 2018-10-06 19:06:49 +01:00
Dylan K. Taylor
a430f7f4f7 Allow static properties and state masks to vary based on variant 2018-10-06 17:33:28 +01:00