e59a4296f8
LevelDB: fixed crash on corrupted level.dat
2020-08-22 19:36:22 +01:00
b53f88027e
Explosion: fixed blocks getting updated too early
...
this bug became painfully obvious when testing bamboo. Detonating TNT near tall bamboo canes would result in bamboo canes not deleting themselves in some circumstances, because the non-destroyed parts of the cane would be updated before their supporting block was deleted, and subsequently would not be re-updated afterwards.
I think this bug should also reproduce with cacti, but I have not tested.
2020-08-16 00:09:17 +01:00
e990c5a0a5
Protocol changes for 1.16.0
2020-06-26 14:06:41 +01:00
89521f166d
Explosion: account for multi-block structures, fixes #2767
2020-06-21 17:28:38 +01:00
b0b1b29de4
Chunk: specify list<int> for heightMap
2020-06-15 23:07:35 +01:00
f3063e797f
ChunkUtils: provide a more explicit parameter type
2020-06-15 23:05:52 +01:00
8dcc88712c
ChunkUtils: fixed phpstan level 7 type inference error
2020-06-15 23:04:12 +01:00
6a7b77fee2
first look at making region writes reuse old space
2020-06-15 18:36:54 +01:00
b902f9ded0
RegionLoader: fixed 2 phpstan level 7 errors (eof reading region header)
2020-06-15 15:09:37 +01:00
9bb8a8f761
RegionLoader: added utility function getProportionUnusedSpace()
2020-06-15 13:49:03 +01:00
63b14a083c
RegionLoader: added utility function generateSectorMap()
...
this proved very useful while debugging some internal issues.
2020-06-15 13:48:17 +01:00
627a7c951a
RegionLoader: added missing const import
2020-06-15 13:46:03 +01:00
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
d38709a7ae
RegionLoader: remove unused variable
2020-06-15 12:26:20 +01:00
b559a65346
RegionLoader: account for possible corrupted header pointing to itself
2020-06-15 12:13:42 +01:00
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
22f25dfbdb
RegionLocationTableEntry: require sector count to be at least 1
2020-06-15 12:05:48 +01:00
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
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
e05bee5ffb
RegionLoader: do a full check for chunk overlaps during initial load
2020-06-14 22:39:01 +01:00
d8d994351b
phpstan 0.12.29
2020-06-14 16:25:55 +01:00
df13e967fd
imports cleanup
2020-06-14 10:27:15 +01:00
7255065106
LevelDB: stop passing false to places where it's not expected
2020-06-10 10:45:54 +01:00
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
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
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
22b5de09b4
added colours to EnchantParticle and InstantEnchantParticle, closes #3368
2020-05-18 20:00:51 +01:00
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
8c0d441a13
Merge branch 'stable' into next-minor
2020-05-17 10:03:17 +01:00
f5a49b6d55
LightUpdate: improve quality of property type info
2020-05-17 09:33:18 +01:00
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
8766d4050c
Merge branch 'stable' into next-minor
2020-05-13 13:18:55 +01:00
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
f87e96026c
Merge branch 'stable' into next-minor
2020-04-26 00:28:09 +01:00
d9b0e373bb
Populator: fix return type of populate()
2020-04-26 00:04:17 +01:00
8e1b3edd2c
Merge branch 'stable' into next-minor
2020-04-25 12:06:52 +01:00
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
619a9892e5
RCON: properly handle potential errors during socket setup
2020-04-16 01:29:28 +01:00
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
604900d4c5
Merge branch 'stable' into next-minor
2020-04-14 01:38:01 +01:00
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
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
b8caf34e62
Merge branch 'stable' into next-minor
2020-03-10 12:45:00 +00:00
167492087f
Chunk: specify expected bounds for Y coordinates
2020-03-10 12:33:53 +00:00
dbaf851be7
Merge branch 'stable' into next-minor
2020-02-27 16:51:06 +00:00
8ac7f7f11f
Level: fix type of randomTickBlocks and friends
2020-02-17 15:13:40 +00:00
2bb497b716
Chunk: flag hasChanged when changing generated/populated/light-populated flags
2020-02-11 08:26:12 +00:00
613bd40601
PopulationTask: move setPopulated() call to make it more obvious what is going on
2020-02-10 18:22:19 +00:00
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
15b76a24b7
scrub useless phpdoc
2020-02-10 12:21:07 +00:00