1391 Commits

Author SHA1 Message Date
Dylan K. Taylor
f3063e797f ChunkUtils: provide a more explicit parameter type 2020-06-15 23:05:52 +01:00
Dylan K. Taylor
8dcc88712c ChunkUtils: fixed phpstan level 7 type inference error 2020-06-15 23:04:12 +01:00
Dylan K. Taylor
6a7b77fee2 first look at making region writes reuse old space 2020-06-15 18:36:54 +01:00
Dylan K. Taylor
b902f9ded0 RegionLoader: fixed 2 phpstan level 7 errors (eof reading region header) 2020-06-15 15:09:37 +01:00
Dylan K. Taylor
9bb8a8f761 RegionLoader: added utility function getProportionUnusedSpace() 2020-06-15 13:49:03 +01:00
Dylan K. Taylor
63b14a083c RegionLoader: added utility function generateSectorMap()
this proved very useful while debugging some internal issues.
2020-06-15 13:48:17 +01:00
Dylan K. Taylor
627a7c951a RegionLoader: added missing const import 2020-06-15 13:46:03 +01:00
Dylan K. Taylor
bb2685ca65 RegionLocationTableEntry: cap firstSector at 16777216
this is the biggest sector start that the location table can represent, due to the binary format. Larger values than this will overflow and cause corruption.
This provides an effective limit of 64 GB on region files.
2020-06-15 13:23:08 +01:00
Dylan K. Taylor
d38709a7ae RegionLoader: remove unused variable 2020-06-15 12:26:20 +01:00
Dylan K. Taylor
b559a65346 RegionLoader: account for possible corrupted header pointing to itself 2020-06-15 12:13:42 +01:00
Dylan K. Taylor
b92a2ded8a RegionLoader: check for zero sector count when loading location table
implementations shouldn't be writing location entries that have an offset but zero sectors, but just in case they do, we need to be aware of it.
2020-06-15 12:08:55 +01:00
Dylan K. Taylor
22f25dfbdb RegionLocationTableEntry: require sector count to be at least 1 2020-06-15 12:05:48 +01:00
Dylan K. Taylor
6bf840c72e RegionLoader: use actual null instead of zeroed entry for non-allocated chunks
this forces the code to be properly aware of non-allocated chunks, because it'll crash with NPE if it isn't.
2020-06-15 12:02:03 +01:00
Dylan K. Taylor
745be19a56 RegionLoader: fixed regions ballooning when writing chunks to the end of file
we already have a region growth problem due to the lack of garbage collection, but this bug was making it worse. If the region already contained 1024 allocated chunks, 4MB of file space would get wasted before the next chunk would be appended to the file.
2020-06-14 23:40:33 +01:00
Dylan K. Taylor
e05bee5ffb RegionLoader: do a full check for chunk overlaps during initial load 2020-06-14 22:39:01 +01:00
Dylan K. Taylor
d8d994351b phpstan 0.12.29 2020-06-14 16:25:55 +01:00
Dylan K. Taylor
df13e967fd imports cleanup 2020-06-14 10:27:15 +01:00
Dylan K. Taylor
7255065106 LevelDB: stop passing false to places where it's not expected 2020-06-10 10:45:54 +01:00
Dylan K. Taylor
f24be2b055 Merge branch 'stable' into next-minor
# Conflicts:
#	src/pocketmine/Player.php
#	src/pocketmine/block/SnowLayer.php
2020-06-01 13:42:59 +01:00
Dylan K. Taylor
42e14f749e Do not blanket-ban all inventory transactions in spectator mode, fixes #2627
instead, we cancel the appropriate events before they are called, so that plugins can uncancel them if they choose.
2020-05-31 16:32:06 +01:00
Dylan K. Taylor
484557935e Level: remove dead block placement code (player movements are now always processed immediately, just not immediately broadcasted) 2020-05-31 16:06:48 +01:00
Dylan K. Taylor
22b5de09b4 added colours to EnchantParticle and InstantEnchantParticle, closes #3368 2020-05-18 20:00:51 +01:00
XenialDan
58e32086c0
Level: Updated TIME_* constants (#3385)
- Added Level::TIME_NOON
- Added Level::TIME_MIDNIGHT
- Changed values of Level::TIME_DAY and Level::TIME_NIGHT
2020-05-17 10:10:35 +01:00
Dylan K. Taylor
8c0d441a13 Merge branch 'stable' into next-minor 2020-05-17 10:03:17 +01:00
Dylan K. Taylor
f5a49b6d55 LightUpdate: improve quality of property type info 2020-05-17 09:33:18 +01:00
Kevin
ad2a39bf13 Merge #3489: fix spawn protection check for placement checking the wrong block, close #3488, close #3489 2020-05-14 00:30:11 +01:00
Dylan K. Taylor
8766d4050c Merge branch 'stable' into next-minor 2020-05-13 13:18:55 +01:00
Dylan K. Taylor
2f47597d75 BaseLevelProvider: stop crashing the server on invalid level.dat
broken userdata isn't a core bug, so it shouldn't be flooding our crash archives.
2020-05-11 15:34:53 +01:00
Dylan K. Taylor
f87e96026c Merge branch 'stable' into next-minor 2020-04-26 00:28:09 +01:00
Dylan K. Taylor
d9b0e373bb Populator: fix return type of populate() 2020-04-26 00:04:17 +01:00
Dylan K. Taylor
8e1b3edd2c Merge branch 'stable' into next-minor 2020-04-25 12:06:52 +01:00
Dylan K. Taylor
34a3e0d8b1 Level: fix sneaking use-item logic (thanks @95CivicSi)
inspired by, but closes #3403
fixes #3401
fixes #2539
fixes #1904
2020-04-19 15:38:12 +01:00
Dylan K. Taylor
619a9892e5 RCON: properly handle potential errors during socket setup 2020-04-16 01:29:28 +01:00
Dylan K. Taylor
a2543ff80d Position: add getLevelNonNull()
this allows assuming that a position has a valid world in places where it's never expected to not be valid. Since this is the vast majority of usages, it eliminates a lot of possible null-pointer warnings given by static analysers.
TODO: Consider whether we can make Position->getLevel/World use this behaviour out of the box in the next major version.
2020-04-14 11:08:37 +01:00
Dylan K. Taylor
604900d4c5 Merge branch 'stable' into next-minor 2020-04-14 01:38:01 +01:00
Dylan K. Taylor
ec949840b2 Do not crash on failure to decompress region chunks
this could happen when a chunk was partially overwritten with one of the same sector size.
2020-04-01 21:30:25 +01:00
Dylan K. Taylor
f8ce01e2fd ItemFactory: extract fromStringSingle() from fromString()
on PM4, the multiple functionality is removed, but on PM3 this is a problem for phpstan.
2020-03-13 17:54:25 +00:00
Dylan K. Taylor
b8caf34e62 Merge branch 'stable' into next-minor 2020-03-10 12:45:00 +00:00
Dylan K. Taylor
167492087f Chunk: specify expected bounds for Y coordinates 2020-03-10 12:33:53 +00:00
Dylan K. Taylor
dbaf851be7 Merge branch 'stable' into next-minor 2020-02-27 16:51:06 +00:00
Dylan K. Taylor
8ac7f7f11f Level: fix type of randomTickBlocks and friends 2020-02-17 15:13:40 +00:00
Dylan K. Taylor
2bb497b716 Chunk: flag hasChanged when changing generated/populated/light-populated flags 2020-02-11 08:26:12 +00:00
Dylan K. Taylor
613bd40601 PopulationTask: move setPopulated() call to make it more obvious what is going on 2020-02-10 18:22:19 +00:00
Dylan K. Taylor
398b636759 PopulationTask: fixed chunks being generated empty in flat worlds
the flat generator just clones a pregenerated chunk instead of modifying the provided chunks, which means that the references that population task has would be the outdated ones.
2020-02-10 18:21:08 +00:00
Dylan K. Taylor
15b76a24b7 scrub useless phpdoc 2020-02-10 12:21:07 +00:00
Dylan K. Taylor
f08e411cad Merge branch 'stable' into next-minor 2020-02-10 11:40:08 +00:00
Dylan K. Taylor
da3742b39e Remove useless typecasts 2020-02-06 16:00:57 +00:00
Dylan K. Taylor
812424a619 GroundCover: drop useless variable in calculating startY 2020-02-06 14:26:03 +00:00
Dylan K. Taylor
1bdc61dd5f Ore: do not destroy outer scope vars in for loops 2020-02-06 14:24:57 +00:00
Dylan K. Taylor
86fc33fe26 Level: add phpstan generics to getNearestEntity() 2020-02-06 14:20:19 +00:00