Commit Graph

1506 Commits

Author SHA1 Message Date
Owen 17c1c6c3e7
Add missing important BlockStateListPopulator methods (#7952) 2022-06-15 18:30:58 +02:00
Jake Potrebic 4a48ed306d
Add option for strict advancement dimension checks (#7954) 2022-06-14 16:31:20 -07:00
u9g 805423c90e
Add ARMOR tag to MaterialTags (1.19) (#7987) 2022-06-15 00:04:19 +01:00
chickeneer e3042d2506
Fix the growth modifier for glowberries (#7986) 2022-06-14 23:37:14 +01:00
Dustin 48f7a1a9ef
Add WardenAngerChangeEvent (#7943) 2022-06-14 12:34:41 +02:00
Jake Potrebic b844286f48
Fix command signs patch update (#7976) 2022-06-14 10:51:53 +02:00
Jake Potrebic 3d37b42a89
Couple config fixes (#7975) 2022-06-13 15:29:44 -07:00
froobynooby 8bae82db21
Use deserialised row keys in config tables (#7962) 2022-06-13 13:50:43 -07:00
Nassim Jahnke bd097b4323
Updated Upstream (Bukkit/CraftBukkit/Spigot)
Upstream has released updates that appear to apply and compile correctly.
This update has not been tested by PaperMC and as with ANY update, please do your own testing

Bukkit Changes:
4d37bf30 PR-762: Add SpawnReason and TransformReason for Tadpole metamorphosis into Frog
788174ae PR-761: Add Hangable interface to MangrovePropagule

CraftBukkit Changes:
3571ca8d1 PR-1070: Add SpawnReason and TransformReason for Tadpole metamorphosis into Frog
8f097b92f PR-1068: Add Hangable interface to MangrovePropagule

Spigot Changes:
56be6a84 Rebuild patches
c6c8886d PR-118: Add config option to disable hopper-chunk-loading
2022-06-13 18:06:25 +02:00
Shane Freeder e4f5e1c9ab
Bump netty 2022-06-12 23:53:18 +01:00
Josh Roy 90050ffd54
Update Adventure to 4.11.0 and implement ComponentLogger (#7937) 2022-06-12 23:07:40 +02:00
Jake Potrebic 4797e3a945
Dont reassign the hiddenConfigs field in TimingsManager (#7951) 2022-06-12 10:29:27 -07:00
Nassim Jahnke 8b6f4dd482
Add paper-settings-directory cl argument (#7949) 2022-06-12 10:07:43 +02:00
Jake Potrebic ee4916df7d
Fire kick event for out-of-order chat on main thread (#7942) 2022-06-11 18:11:18 -07:00
Shane Freeder 6c52b5e2c8
Ensure that Log4J is shutdown when stopping the server (Fixes #7932) 2022-06-12 01:59:24 +01:00
Shane Freeder c044b14efd
Add support for Velocity forwarding v2
This is strictly not needed, however, I wanted to write this in part
to test the new forwarding logic, parsing and advertising the latest
featureset is also not exactly a bad thing
2022-06-12 01:49:04 +01:00
Jake Potrebic 9ad94dcbc4
Adjust config headers 2022-06-11 13:43:59 -07:00
Spottedleaf dfc10448bb Fix keep spawn loaded patch
Needs to be in blocks
2022-06-11 08:03:56 -07:00
Spottedleaf 46954ee75b Don't explode on light data in the nether
It shouldn't be there but whatever
2022-06-11 08:03:56 -07:00
Jake Potrebic 55201f00e8
Updated Upstream (Bukkit/CraftBukkit) (#7936)
Upstream has released updates that appear to apply and compile correctly.
This update has not been tested by PaperMC and as with ANY update, please do your own testing

Bukkit Changes:
c1d911a2 Add compat constructor to PlayerAnimationEvent

CraftBukkit Changes:
effea36a2 PR-1065: Add missing calls for BlockSpreadEvent when Sculk spreads
2022-06-11 11:02:57 +02:00
Nassim Jahnke d7165b0d56
Fix some references to obfuscated code 2022-06-11 11:02:09 +02:00
Owen1212055 1ccff4f5d1
Readd mc-4 fix 2022-06-11 10:41:59 +02:00
Owen c80df849c2
Readd remove vec allocations diff (#7930) 2022-06-11 10:30:20 +02:00
Evan f8beab5e5e
correct argument check in PlayerHandshakeEvent#setFailMessage(String) (#7940) 2022-06-11 00:37:00 -07:00
Spottedleaf ee7d16111d Make starlight light read non-fatal if it throws
Brings behavior in line with the mod, we shouldn't kill the chunk
if the light data is corrupt, we can regenerate the light data
2022-06-10 21:08:37 -07:00
Spottedleaf 5a2973fd80 Correct dataconverter diff
Missed renames + game event listener walker stuff
2022-06-10 20:54:05 -07:00
Jake Potrebic 76f81aec25
Keep default keys in some maps
Fixes https://github.com/PaperMC/Paper/issues/7913#issuecomment-1152780671
2022-06-10 17:11:12 -07:00
Jake Potrebic 99aa5f2fa5
Fixes parsing tags in selectors in command functions
Fixes #7928
2022-06-10 10:02:09 -07:00
Jake Potrebic 698b3152cf
Improve migration file errors (#7929) 2022-06-10 10:01:09 -07:00
Owen1212055 8bca9190a4
Remove unneeded patch 2022-06-10 16:15:38 +02:00
Owen a8a01bbb52
port Significantly improve performance of the end generation (#7919) 2022-06-10 16:11:41 +02:00
Nassim Jahnke cf384f5269
Don't print stacktrace when client with invalid signature logs in 2022-06-10 16:03:48 +02:00
Nassim Jahnke 9b6fb2fe71
Remove bad warning 2022-06-10 14:58:25 +02:00
Nassim Jahnke 07548192b1
Updated Upstream (CraftBukkit)
Upstream has released updates that appear to apply and compile correctly.
This update has not been tested by PaperMC and as with ANY update, please do your own testing

CraftBukkit Changes:
cc7edd6bc SPIGOT-7051: Worldgen API does not run vanilla noise generation when shouldGenerateNoise is true
2022-06-10 14:45:58 +02:00
Nassim Jahnke 9a75a79edd
Readd PlayerAnimationEvent constructor removed by upstream 2022-06-10 14:44:40 +02:00
Jake Potrebic 8141349df1
improve packet config serializer (#7920) 2022-06-10 10:45:41 +02:00
Jake Potrebic dd6a8e9394
couple more migration issues 2022-06-09 22:03:37 -07:00
Jake Potrebic 02b5ec4c78
fix 2 more migration issues 2022-06-09 18:40:07 -07:00
Jake Potrebic cfe3ad1b0f
Updated Upstream (Bukkit/CraftBukkit/Spigot)
Upstream has released updates that appear to apply and compile correctly.
This update has not been tested by PaperMC and as with ANY update, please do your own testing

Bukkit Changes:
45d9c73c SPIGOT-7043: EnderChest does not implement Lidded
86b95f34 SPIGOT-7047: Add Player#getLastDeathLocation

CraftBukkit Changes:
b2557f6ac SPIGOT-7041: Custom BiomeProvider not used when world set to type FLAT
732c50cab SPIGOT-7043: EnderChest does not implement Lidded
6209029ea SPIGOT-7048: addPassenger() not working when vehicle is player
3aa7836df SPIGOT-7047: Add Player#getLastDeathLocation
7d522cd26 SPIGOT-7050: Enchantment data of items will not be saved correctly when saved in YAML configuration file

Spigot Changes:
1dffefb4 Rebuild patches
2022-06-09 18:20:55 -07:00
Owen 83e2a3582b
Fix light (#7917) 2022-06-10 02:09:55 +01:00
Jason Penilla 4a51a54896 Don't use deprecated permission message method 2022-06-09 17:03:05 -07:00
Nassim Jahnke 5ac29fcb93
Fix migration of packet limiter 2022-06-10 01:55:53 +02:00
Owen d833c0c39a
Update starlight + read null light data (#7912) 2022-06-10 01:49:23 +02:00
Jason Penilla 7c55e62abc Fix tests 2022-06-09 16:19:38 -07:00
Jason Penilla ade44f39ce Remove todo 2022-06-09 16:08:23 -07:00
Jason Penilla 0a21166a8b Update player chunk loader patch, re-add ticket level propagator patch 2022-06-09 16:01:48 -07:00
Noah van der Aa 181a8479b5
Make slime spawn checks use tag again and rename config option (#7910) 2022-06-10 00:48:46 +02:00
Jake Potrebic 6249dd5ecb
remove more unused config options 2022-06-09 15:15:01 -07:00
Jake Potrebic 77de07a15d
fix more config migration issues 2022-06-09 15:03:02 -07:00
Jake Potrebic e5ed99a29a
fix compile issue 2022-06-09 14:50:05 -07:00
Jake Potrebic 3f1c6a45da
move commands out of configuration 2022-06-09 14:44:20 -07:00
Shane Freeder ad51c406d5
Fix don't lookup profiles for blank names patch 2022-06-09 22:37:33 +01:00
Nassim Jahnke 09c9215b85
Add sendRichMessage and sendPlainMessage methods 2022-06-09 23:34:06 +02:00
Nassim Jahnke 5052a4515e
Minor patch changes 2022-06-09 23:27:06 +02:00
Jake Potrebic c946526ab1
minimessage conversion 2022-06-09 14:25:16 -07:00
Owen c34a306393
Remove old config options (#7908) 2022-06-09 22:48:35 +02:00
Owen acd50c5287
Keyed cat Type (#7901) 2022-06-09 22:38:59 +02:00
Jake Potrebic f27aa33aba
catch IAE from empty transformation builder 2022-06-09 13:06:08 -07:00
Owen d9fcf39f65
Remove locname (#7909) 2022-06-09 12:56:21 -07:00
Jake Potrebic 2e68ecc289
more configuration fixes/changes 2022-06-09 12:51:29 -07:00
Owen e47848f112
Correctly handle ElderGuardianAppearanceEvent canceling (#7902) 2022-06-09 21:04:10 +02:00
Noah van der Aa 84434e6ae9
Don't validate chunk before it's been run through DataConverter (#7907) 2022-06-09 17:39:02 +01:00
Nassim Jahnke a3a0390e3b
Fix config migration error preventing server startup
There's at least two more, but those are less pressing
2022-06-09 14:27:48 +02:00
Nassim Jahnke d385af0e01
Updated Upstream (Bukkit/CraftBukkit)
Upstream has released updates that appear to apply and compile correctly.
This update has not been tested by PaperMC and as with ANY update, please do your own testing

Bukkit Changes:
0a4b84d6 SPIGOT-7003: Add missing PlayerAnimationType
830db7d5 SPIGOT-5984: Add non deprecated / magic value way to set pixel in MapCanvas
20caf8ff PR-754: Add DamageCause.SONIC_BOOM

CraftBukkit Changes:
576a03704 SPIGOT-7003: Add missing PlayerAnimationType
0dcc5fdd0 SPIGOT-5984: Add non deprecated / magic value way to set pixel in MapCanvas
d75aacb43 Update Netty version
3b34c6bea SPIGOT-7044: Modified RandomSourceWrapper to ensure random is not null before setting seed
4b60bfd18 PR-1059: Add DamageCause.SONIC_BOOM
2022-06-09 13:55:33 +02:00
Nassim Jahnke e1c2939c11
Update configurable feature seed patch 2022-06-09 13:16:00 +02:00
Nassim Jahnke b26d590d0c
Fixes
Co-authored-by: Owen1212055 <23108066+Owen1212055@users.noreply.github.com>
2022-06-09 11:57:19 +02:00
Nassim Jahnke 7be0194157
Readd dummy PaperConfig and PaperWorldConfig classes 2022-06-09 11:46:41 +02:00
Jason d7cc306336
Update Optimise general POI access (#7903) 2022-06-09 11:37:28 +02:00
Jake Potrebic 172d260d67
Move to configurate for paper.yml (#7609) 2022-06-09 10:51:45 +02:00
Owen da8027352c
Deprecate origin for vibrations (#7898) 2022-06-08 13:44:59 -07:00
Jake Potrebic 467a16642a
fallback to default locate logic if no API found 2022-06-08 13:42:54 -07:00
Noah van der Aa 9107753202
(1.19) Make timings link clickable (#7897) 2022-06-08 13:27:24 -07:00
Owen cbb47cacdb
Add missing spawn eggs (#7896) 2022-06-08 13:25:47 -07:00
Nassim Jahnke 11c2705ac2
Slightly untrash Spigot chat handling
Vanilla technically allows chat messages with starting slashes now,
Spigot still accepts them as commands, most likely due to being too
lazy to properly differentiate between chat and command intent in
their implementation. This disallows modified clients to send chat
messages with slashes and makes sure chat validation always happens
on the netty event loop, rather than there and possibly being moved
to the main thread, thus having the delayed handling cause a bad
process order of message ids.
2022-06-08 21:42:49 +02:00
Owen 86c16504d6
Dont resent entity on art update (#7887) 2022-06-08 21:25:15 +02:00
Jake Potrebic 29e918948a
Fix structures issues/api (#7895) 2022-06-08 21:00:19 +02:00
Owen a93aa05bf8
Wrap NBTOps in RegistryOps (#7892) 2022-06-08 20:25:39 +02:00
Jake Potrebic e24a25097a
correct patch description 2022-06-08 11:06:52 -07:00
Nassim Jahnke 897cc27c8b
Remove no longer needed patch 2022-06-08 20:06:04 +02:00
Nassim Jahnke d1e1217a01
Only send empty chunk when player is dead
Currently not needed at all with chunk rewrites not yet updated, but considering it's only actually needed for dead players, no need to fuck up a chunk without the future applied patch
2022-06-08 19:50:57 +02:00
Noah van der Aa 44ccc15a30
Port Fix missing chunks due to integer overflow to 1.19 (#7891) 2022-06-08 19:39:07 +02:00
Nassim Jahnke 4c1b338e0f
Remove level propagator patch for now 2022-06-08 19:33:07 +02:00
Space Walker bd134f856b
Update Alternate Current patch (#7890) 2022-06-08 19:29:34 +02:00
Owen 222391f809
Check if is light status or above / isLightOn / starlight version fits (#7888) 2022-06-08 18:32:49 +02:00
Nassim Jahnke b3b63d3a02
Fix tests (again?) 2022-06-08 18:18:49 +02:00
Nassim Jahnke 57dfcdf4eb
Reorder some patches 2022-06-08 18:13:02 +02:00
Owen a02874e014
Remove painting desync (#7886) 2022-06-08 17:45:54 +02:00
MiniDigger | Martin 8399e10c43 fix reobf issues around randomsource impls
prolly should be fixed in a mapping patch instead but I don't wanna
2022-06-08 17:43:25 +02:00
Nassim Jahnke 02804a49a2
Fix tests 2022-06-08 17:31:27 +02:00
Jake Potrebic 7a165c9c5d
Add back fix swamp hut deadlock patch 2022-06-08 07:58:57 -07:00
Nassim Jahnke a6bc17b8bb
IT COMPILES BOIS 2022-06-08 16:51:37 +02:00
Nassim Jahnke 913d2ae0b8
Fix 2022-06-08 16:46:39 +02:00
Jake Potrebic 9ab6893183
Add back Fix locateNearestStructure patch 2022-06-08 07:46:01 -07:00
Jake Potrebic d5216d8588
Add back Fix NotePlayEvent patch 2022-06-08 07:36:43 -07:00
Jake Potrebic af4b5ee4f0
add back removed kelp modifier patch 2022-06-08 07:29:32 -07:00
Nassim Jahnke 1d5b298c19
More compilation error fixes 2022-06-08 16:24:55 +02:00
Nassim Jahnke b561fd8b25
Compilation error fixes 2022-06-08 15:59:48 +02:00
Owen 7ece9454f7
Use biome source method to prevent loading chunks (#7885) 2022-06-08 15:57:04 +02:00
Noah van der Aa b1f5e70075
Moar 1.19 fixes (#7884) 2022-06-08 15:38:56 +02:00
Nassim Jahnke 55d7f562b8
More more more more more more more more more more more patches 2022-06-08 15:36:56 +02:00
Nassim Jahnke beab8a32c1
More more more more more more more more more more patches 2022-06-08 15:12:28 +02:00
Owen 2259098789
Misc fixes (#7883) 2022-06-08 15:03:33 +02:00
Nassim Jahnke 301cf577c2
More more more more more more more more more patches 2022-06-08 14:33:46 +02:00
MiniDigger | Martin 391e65f1af more misc compile fixes 2022-06-08 14:19:54 +02:00
MiniDigger | Martin 2f0b2b93df Add missing DataConverter and fix some imports
not fully sure those imports (or well, those classes being outside of the mc package) are right, but who cares 🤷
2022-06-08 14:01:30 +02:00
Nassim Jahnke d28b20944b
Things, and Starlight (maybe) 2022-06-08 13:44:30 +02:00
Nassim Jahnke 8d5407b16f
Things, and DataConverter (maybe) 2022-06-08 13:12:14 +02:00
Nassim Jahnke 82f712c096
More more more more more more more more patches 2022-06-08 12:40:44 +02:00
Nassim Jahnke f0e575f445
More more more more more more more patches 2022-06-08 12:20:57 +02:00
Nassim Jahnke 0e06c77264
More more more more more more patches 2022-06-08 11:31:06 +02:00
Noah van der Aa b464e02ba4
Misc. 1.19 fixes (#7881) 2022-06-08 10:45:59 +02:00
Jake Potrebic cc7979a6e0
bale o' patches 2022-06-08 01:00:56 -07:00
Jake Potrebic aabbfcdf8d
Updated Upstream (Bukkit/CraftBukkit/Spigot)
Upstream has released updates that appear to apply and compile correctly.
This update has not been tested by PaperMC and as with ANY update, please do your own testing

Bukkit Changes:
4b08dbc5 PR-752: Make Leaves Waterlogged
de323fc9 Downgrade dependency version

CraftBukkit Changes:
c3f219edb Fix missing abstract in CraftLeaves
886e6d8c8 SPIGOT-7038: Setting title or subtitle to empty string causes the player to disconnect
6c302a5e3 Make Leaves Waterlogged
53b681be5 Downgrade dependency version

Spigot Changes:
ee737122 Fixed system messages shown in action bar
f343df82 SPIGOT-7036: Don't use CHAT message type
63a06049 SPIGOT-7035: Actionbar Sending in Main Chat
2022-06-08 00:49:02 -07:00
Jake Potrebic a1d0432c2c
batch o' patches 2022-06-08 00:40:34 -07:00
Jake Potrebic 89c3c31af9
bag o' patches 2022-06-08 00:30:41 -07:00
Jake Potrebic feca8d248c
bouquet o' patches 2022-06-07 23:25:32 -07:00
Jake Potrebic 2304bb3d6f
bundle o' patches 2022-06-07 23:06:17 -07:00
Jake Potrebic 0745f97bb5
bunch o' patches 2022-06-07 22:46:52 -07:00
Jake Potrebic dc12a6e9fe
a bunch more patches done 2022-06-07 22:02:19 -07:00
Jake Potrebic c3fc3de622
even moar patches 2022-06-07 21:39:43 -07:00
Jake Potrebic f04e64dfc6
moar patches 2022-06-07 21:22:42 -07:00
Spottedleaf f371b4e374 <3 jmp 2022-06-07 21:07:14 -07:00
Jake Potrebic c5db5371bf
Fix more issues 2022-06-07 20:59:40 -07:00
Spottedleaf 7bbeef26ba i really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really hate jmp 2022-06-07 20:42:55 -07:00
Jake Potrebic d41a026555
few more server decompile fixes 2022-06-07 20:12:24 -07:00
Spottedleaf 26ea0402d8 i really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really love jmp 2022-06-07 19:25:49 -07:00
Spottedleaf a27b508dea i really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really love jmp 2022-06-07 18:34:11 -07:00
Jake Potrebic 68b585fba7
Fix cook speed patch 2022-06-07 18:19:35 -07:00
Jake Potrebic a16970ac1b
Fix CanPlaceOn/CanDestroy API issues 2022-06-07 18:13:05 -07:00
Spottedleaf c515eb9a08 rebuild after rebase 2022-06-07 17:43:52 -07:00
Spottedleaf 32c195bd4f i love jmp 2022-06-07 17:43:03 -07:00
Spottedleaf 87ca0fa790 hate jmp and his gradle 2022-06-07 17:43:03 -07:00
Jake Potrebic 3a0b9487d4
temporary fixes for adventure chat 2022-06-07 16:49:14 -07:00
Owen1212055 58133bdfdf
Update PreCreatureSpawnEvent patch 2022-06-07 23:54:21 +02:00
Jake Potrebic 4e13355af1
some server compile fixes 2022-06-07 14:48:14 -07:00
Nassim Jahnke addf9c9155
More more more more more patches 2022-06-07 23:45:11 +02:00
Jake Potrebic 7d7779a667
Fix even more errors 2022-06-07 14:15:14 -07:00
Jake Potrebic 3773770230
Fix more errors 2022-06-07 14:01:17 -07:00
Nassim Jahnke aac58bb772
More more more more patches 2022-06-07 22:45:38 +02:00
Jake Potrebic c321ca57db
fix unmerged diff 2022-06-07 13:43:05 -07:00
Jake Potrebic 13fe88643e
API now compiles successfully 2022-06-07 13:31:10 -07:00
Jake Potrebic 88f74d1bac
Fix some api compilation errors 2022-06-07 13:23:21 -07:00
Nassim Jahnke cac4deb882
More more more patches 2022-06-07 22:12:48 +02:00
Nassim Jahnke 1669c6b097
More more patches 2022-06-07 21:55:39 +02:00
Nassim Jahnke 2710efc693
More patches 2022-06-07 21:15:06 +02:00
Nassim Jahnke a9c507310b
First server patches 2022-06-07 20:43:28 +02:00
Nassim Jahnke 028e2d9f00
API patches 2022-06-07 19:20:30 +02:00
Nassim Jahnke 56e64243ed
Patch cleanup 2022-06-07 19:03:07 +02:00
Nassim Jahnke cb05aa6b8b
Prepare for 1.19 dev 2022-06-07 18:52:56 +02:00
Joseph Burton 276d830d22 Fix campfire walker in V1920 2022-06-06 17:51:12 -07:00
Jake Potrebic 4b27254e6a
Fix treasure maps discovered settings (#7627) 2022-06-05 17:17:27 -07:00
Joseph Burton d8ef841114
[DataConverter] Fix generator options parsing 2022-06-05 22:49:42 +01:00
Jake Potrebic b3deb2589e
Move some methods to RegionAccessor (#7635) 2022-06-05 13:51:44 -07:00
Nassim Jahnke 5befb5586e
Updated Upstream (Bukkit/CraftBukkit) (#7875)
Upstream has released updates that appear to apply and compile correctly.
This update has not been tested by PaperMC and as with ANY update, please do your own testing

Bukkit Changes:
6a039faf PR-745: Expose more information about advancements
52148c47 PR-749: Various javadoc improvements
23c2d841 PR-748: Remove permissible recalculation from Permission constructor

CraftBukkit Changes:
a59dc59e SPIGOT-7025: Use existing item in hand for ranged Drowned attack
e4cca0ca PR-1050: Expose more information about advancements
2022-06-05 10:43:06 +02:00
froobynooby 5b6397af2c
Make leave messages for kicks the same as for quitting (#7874) 2022-06-05 08:43:35 +01:00
Jake Potrebic 071a4a2444
throw exception if worlds are created while being ticked (#7653) 2022-06-04 14:48:24 -07:00
Nassim Jahnke bed5cb2b81
Limit resolved selectors when enabled 2022-06-03 16:06:05 +02:00
Jake Potrebic fd069dd5af
Remove incorrect throws javadoc in Team (#7869) 2022-06-02 22:05:42 -07:00
Jake Potrebic 8fc0999b09
Fix some nullability things (#7275) 2022-06-02 21:42:00 -07:00
Jake Potrebic a3ad720749
Remove ChatColor usages (#7543) 2022-06-02 21:26:56 -07:00
Nassim Jahnke 1d08ce8583
Disable book selector resolving by default 2022-06-02 20:40:24 +02:00
Owen b1ac25fdb8
Respect x-ray permission in World#refreshChunk (#7214)
Co-authored-by: stonar96 <minecraft.stonar96@gmail.com>
2022-06-02 03:08:51 +01:00
Emily 71fe3c64f0
Add numeric string completion suggestions as int suggestions (#6360) 2022-06-02 02:56:24 +01:00
Owen c5caee307e
Prevent entity loading causing async lookups (#7553) 2022-06-02 02:35:57 +01:00
Jake Potrebic 2d17a50b8b
Add translation keys to GameMode enum (#7081) 2022-06-01 18:30:29 -07:00
Owen 7602dd2014
Sanitize Sent BlockEntity NBT (#7010) 2022-06-02 02:27:36 +01:00
Jake Potrebic 00c6ae8419
Implement Translatable on CreativeCategory (#7587) 2022-06-01 17:07:10 -07:00
PureGero 04e1b070ef
Check HAProxyMessage type is PROXY (#7864) 2022-06-01 22:58:22 +01:00
Jake Potrebic 78e6431008
Add default kick msg component (#6886) 2022-05-31 23:20:12 -07:00
Jake Potrebic 3f7111d4e1
Fix EntityEquipment and related javadocs (#7380) 2022-05-31 13:40:21 -07:00
Jake Potrebic f210f67c4a
Update the rewriteForIde for new cb package version (#7242) 2022-05-30 22:18:45 -07:00
Jake Potrebic 6b035fd9a1
Update default vanilla command perms (#7386) 2022-05-30 21:57:32 -07:00
Jake Potrebic f7382f5f4b
Remove unneeded UOE when copying biome sources (#7629) 2022-05-30 19:35:46 -07:00
Jake Potrebic c123915afc
Fix FurnaceInventory for smokers and blast furnaces (#7249) 2022-05-30 19:03:18 -07:00
Jake Potrebic 9667181d1d
Fix OfflinePlayer#getBedSpawnLocation (#7861) 2022-05-30 18:42:51 -07:00
Jason af3b3778f6
Update ForgeFlower (#7857) 2022-05-29 12:54:25 -07:00
Jake Potrebic 3f7fbe316d
Fix cb's janky level name in WorldCreator (#7851) 2022-05-27 16:42:36 +01:00
Jake Potrebic b6a6544ad1
Provide ComponentSerializer services (#7527) 2022-05-26 12:12:14 -07:00
Jake Potrebic 182a609b85
Fix duplicate world keys via createWorld (#7614) 2022-05-26 10:59:53 -07:00
Jake Potrebic 79e07f34ac
Fix addPassenger for Marker (#7762) 2022-05-25 18:00:47 -07:00
Jake Potrebic a90092e758
Updated Upstream (CraftBukkit/Spigot) (#7848)
Upstream has released updates that appear to apply and compile correctly.
This update has not been tested by PaperMC and as with ANY update, please do your own testing

CraftBukkit Changes:
95d233dc SPIGOT-1807: PlayerTeleportEvent is called twice

Spigot Changes:
b0819150 PR-116: Slightly reduce item merge radius in Y-direction
ef2aa765 PR-119: Fix off-by-one and allow disabling max-tnt-per-tick option
2022-05-25 21:21:51 +02:00
PanSzelescik 31ccc579b5
Add support for Proxy Protocol (#7710) 2022-05-24 05:56:58 +01:00
rgnter d8108b5416
team color parameter may be null, causing NPE 2022-05-24 05:27:24 +01:00
Jake Potrebic 123cad5d3e
Remove incorrect parent perm from debugstick.always (#7846) 2022-05-24 05:09:20 +01:00
Jake Potrebic fc1752ff15
Fix more upstream javadocs (#7837) 2022-05-20 09:57:07 -07:00
Noah van der Aa ed4e9163ef
[ci-skip] Update repository and API urls (#7835) 2022-05-20 08:12:30 -07:00
Owen 9b492cff36
Deprecate set/doesBounce from Projectile (#7800) 2022-05-19 01:46:01 +01:00
Noah van der Aa ca623865b0
Hide ores with deepslate at Y=4 and below (#7792)
Fixes #7771

Co-authored-by: stonar96 <minecraft.stonar96@gmail.com>
2022-05-18 22:16:12 +02:00
Nassim Jahnke 73bd35d076
Updated Upstream (Bukkit/CraftBukkit)
Upstream has released updates that appear to apply and compile correctly.
This update has not been tested by PaperMC and as with ANY update, please do your own testing

Bukkit Changes:
218294b1 PR-743: Support setting individual Wither head targets

CraftBukkit Changes:
d48f2d1a PR-1047: Support setting individual Wither head targets
518f1bee SPIGOT-6948: Motion from Explosion after Respawn
f3c7a6ac SPIGOT-7019: Add yaw in World#getSpawnLocation
2022-05-17 11:51:46 +02:00
Peter Crawley 0116751101
List world on tile entity placement exception (#7709) 2022-05-16 11:38:14 +01:00
Jake Potrebic 8d1de8de8d
deprecate old MaterialData api (#7585) 2022-05-15 19:33:03 -07:00
Jake Potrebic 9fd870db0b
Fix cancelling PlayerItemFrameChangeEvent (#7761) 2022-05-09 17:22:57 -07:00
Jake Potrebic 5928327f90
Remove unneeded patch (#7806) 2022-05-09 20:22:43 +02:00
Nassim Jahnke 18f0f8d1ca
Updated Upstream (Bukkit/CraftBukkit/Spigot)
Upstream has released updates that appear to apply and compile correctly.
This update has not been tested by PaperMC and as with ANY update, please do your own testing

Bukkit Changes:
312281ea PR-742: Make World implement Keyed

CraftBukkit Changes:
2ac7fa7a SPIGOT-7014: getLootTable API should not persistently update loot table
7fdd7941 PR-1046: Make World implement Keyed
7bc728a6 PR-1045: Revert changes to persistence required checks

Spigot Changes:
b6d12d17 Rebuild patches
2022-05-09 11:03:07 +02:00
Jason Penilla 268476bba3
Fix whitespace error in Alternate Current patch 2022-05-08 09:25:34 -07:00
Spottedleaf e399754320 Do not accept invalid client settings 2022-05-07 14:59:20 -07:00
Jake Potrebic 87d2eb2d3b
Fix door breaking difficulty defaults for vindicator (#7795) 2022-05-07 11:38:15 -07:00
Nassim Jahnke 1a17a83f8a
Move redstone config changes to Eigencraft patch 2022-05-07 19:52:32 +02:00
Space Walker 7a6163b41d
Add Alternate Current's redstone implementation as an alternative to Vanilla and Eigencraft's. (#7701) 2022-05-07 18:47:28 +02:00
Spottedleaf b831784aed Only log for passenger / vehicle world mismatch
Exception thrown may corrupt passenger/vehicle state
2022-05-07 08:48:29 -07:00
Pedro 8c9d98e100
Clean unused field for Configurable door breaking difficulty (#7793) 2022-05-07 06:57:41 +01:00
Pedro 2515bc4751
Improve configurable door difficulty (#6985) 2022-05-06 17:52:14 +02:00
Noah van der Aa 421938915c
Don't tick markers (#7299) 2022-05-06 17:33:07 +02:00
Owen f3a8a0b953
FallingBlock auto expire setting (#7037) 2022-05-06 17:21:24 +02:00
u9g a117da6b26
Add PlayerStopUsingItemEvent (#7787) 2022-05-06 17:14:06 +02:00
HexedHero f6a69dedb9
Undeprecate getOfflinePlayer (#7773) 2022-05-06 14:21:58 +02:00
Noah van der Aa 2ab0258b5a
Use mojang item ids for alternative item despawn rate (#6997) 2022-05-04 23:29:15 +01:00
Jake Potrebic e5da93a608
Deprecate duplicate SoundGroup API (#7509) 2022-04-30 13:44:22 -07:00
Jake Potrebic e564110f9e
Couple fixes/improvements to PlayerSetSpawnEvent (#6754) 2022-04-30 13:24:47 -07:00
Shane Freeder 4166632333
Updated Upstream (Bukkit/CraftBukkit) (#7776) 2022-04-30 17:27:41 +01:00
Shane Freeder 608482d512
cleanup filtered sign text (#7777) 2022-04-30 16:49:57 +01:00
Jason Penilla 6f5e6c60d3 Use setMessage instead of arraycopy
setMessage affects messages, filteredMessage, and renderMessages, we were only doing an arraycopy for messages

fixes #7774
2022-04-28 20:08:08 -07:00
Joseph Burton ce059b4f99
Fix V1451 dataconverter stat types 2022-04-25 18:06:04 +02:00
Jake Potrebic d70ac039e8
fix powder snow cauldrons not turning to water (#7229) 2022-04-24 11:35:24 -07:00
Jake Potrebic 0bf7c95c8d
Fix opening inv in PlayerRecipeBookClickEvent handler (#7552) 2022-04-23 18:48:00 -07:00
Jake Potrebic 4dc78ae8b9
Fix some team color docs and added hasColor (#7602) 2022-04-23 18:37:10 -07:00
Jake Potrebic 5b85ee37e2
Fire CauldronLevelChange on initial fill (#7678) 2022-04-23 13:40:34 -07:00
Jake Potrebic fbbc03a740
Add EntityDyeEvent and CollarColorable interface (#7625) 2022-04-23 12:38:42 -07:00
Jake Potrebic 47f43da438
Add missing javadoc deprecation msgs for PlayerProfile (#7688) 2022-04-23 07:40:37 -07:00
Nassim Jahnke caf4a6f0d6
Remove or replace a few dumb deprecations (#7760) 2022-04-23 11:25:30 +02:00
Jake Potrebic 16f224a79a
Trigger bee_nest_destroyed trigger in the correct place (#7436) 2022-04-22 18:17:14 -07:00
Jake Potrebic 0f8aa4e6fd
Fix NPE for BlockDataMeta#getBlockData (#7670) 2022-04-22 17:21:38 -07:00
Bjarne Koll ef6a1a5f99
Revert to old createProfile(UUID, String) logic (#7723) 2022-04-22 19:54:08 +01:00
Jason 567fce6c76
Don't apply previous potion when item is potion (fixes #7756) (#7757) 2022-04-21 17:07:56 -07:00
petersv5 76ed156764
Grant temporary immunity from EAR to moving entities (Fixes #7637) (#7644)
Co-authored-by: Peter Svensson <petersv@psv.nu>
2022-04-20 10:34:00 +01:00
Owen 873bfa6000
Remove World#refreshChunk deprecation (#7684) 2022-04-20 10:28:53 +01:00
Shane Freeder 4ecc338e09
WorldCreator#keepSpawnLoaded (#7673) 2022-04-20 10:26:09 +01:00
Shane Freeder c7d4c0188e
Ignore invalid jars inside of the updates folder (Fixes #7751)
This really needs a deeper look here, the way updates are handled is
fairly immature, but, this wasn't ever intended to be a large scale thing

Ideally, imho, we'd collect the list of update files into some form of Map,
that way we just have a reference of Name > File refs, and can filter out
cases where there are two versions of a plugin in there and warn expectidely,
but, that creates some complications, you would need to fall back to a dir
scan in the case of a plugin calling loadPlugin, but, it would at least
give us more defined behavior, as well as improve performance here vs
repeatidely trying to deserialise the plugin.yml defs for every file
in there on every load
2022-04-20 10:11:35 +01:00
Xemor c642d25f63
Improve update folder behavior (#7687)
Closes #6570
2022-04-18 18:12:39 +02:00
Noah van der Aa 86fb3d201d
Don't send itemmeta for books with the hide option enabled (#7734) 2022-04-18 12:23:37 +02:00
HexedHero c66b0f99f2
Add pre-unbreaking amount to PlayerItemDamageEvent (#7724) 2022-04-18 11:51:45 +02:00
Owen 8bfb1d22f8
Pass ServerLevel for gamerule callbacks (#7668) 2022-04-18 11:46:21 +02:00
Nassim Jahnke 6b9f7a073e
Don't fire worldborder events for virtual borders (#7749)
Fixes #7748
2022-04-18 11:26:18 +02:00
Jake Potrebic af943641e2
Fix slime spawners not spawning outside slime chunks (#7741) 2022-04-16 11:32:20 -07:00
Nassim Jahnke 1cfd363d32
Updated Upstream (Bukkit/CraftBukkit/Spigot)
Upstream has released updates that appear to apply and compile correctly.
This update has not been tested by PaperMC and as with ANY update, please do your own testing

Bukkit Changes:
fc460d1b PR-735: Add Villager#zombify
c8c8331e PR-690: Add method to read ItemStack input
62845f2f SPIGOT-6829: Add per-player world border API

CraftBukkit Changes:
a459f4d4 PR-1033: Add Villager#zombify
d65d1430 PR-975: Add method to read ItemStack input
b5559f8c SPIGOT-6990: Fix setRepairCost(0) in Anvil
6c308e1b SPIGOT-6829: Add per-player world border API

Spigot Changes:
42b61526 SPIGOT-7000: Generation and /locate issues when using custom structure seeds
2022-04-16 10:29:50 +02:00
Pedro c6e631aacb
Use username instead of display name in PlayerList#getPlayerStats (#7740) 2022-04-15 15:23:10 -07:00
Jason a9f252e56a
Replace third party repos with Paper repo (#7733)
we now mirror Fabric, Forge, and Mojang
2022-04-13 19:58:48 -07:00
Shane Freeder d4a712d957
[CI-SKIP] Remove unused import from last patch 2022-04-13 09:15:28 +01:00
Shane Freeder a9ee1046a5
Prevent tile entity copies loading chunks 2022-04-13 08:27:16 +01:00
Jason Penilla e42d683d75
Fix StructureGrowEvent species for RED_MUSHROOM 2022-04-12 16:40:30 -07:00
Owen f8e8d6c3cd
Strip enderpearl owners when they are no longer ticked (#7559) 2022-04-08 01:52:25 +01:00
Nassim Jahnke 2f16393ad9
Updated Upstream (CraftBukkit)
Upstream has released updates that appear to apply and compile correctly.
This update has not been tested by PaperMC and as with ANY update, please do your own testing

CraftBukkit Changes:
2542945e Remove broken quickMoveStack implementation
5631e8bf SPIGOT-6973: Setting biome calls String#intern for every biome placed
2022-04-07 10:56:36 +02:00
Etil 11e0dcdf86
Fix NBT pieces overriding a block entity during worldgen deadlock (#7692) 2022-04-07 10:42:20 +02:00
Pedro 29144573e6
Allow seting custom podium location for ender dragon (#7695) 2022-04-07 10:31:30 +02:00
Jason Penilla 820e9ca70b
Update decompiler & param mappings 2022-04-05 10:37:36 -07:00
Jake Potrebic 87e11bf7fd
Cache resource keys instead of trying to create them (#7643) 2022-04-02 18:10:13 -07:00
Nassim Jahnke ea2c81e4b9
Fix lectern quick move 2022-04-02 09:15:39 +02:00
Peter Crawley 443c5062c1
Fix Nullability Annotations for PrepareItemEnchantEvent (#7681) 2022-04-01 20:14:56 -07:00
Jake Potrebic 04c7b16bde
Undeprecate Material#isLegacy (#7679) 2022-03-31 09:13:19 -07:00
Spottedleaf 7bf9446d9e Add per player chunk loading limits
Configurable under "settings.chunk-loading.player-max-chunk-load-rate",
defaults to -1. This commit also changes the chunk loading to be
distributed equally for all players, rather than distance based. This is
to ensure players flying around do not take priority over everyone else.
The exception to this new rule is the min-load-radius, which still has
priority over everything else.
2022-03-31 06:33:13 -07:00
Jake Potrebic 7f47b9b7f8
Remove KeyedObject interface (#7680) 2022-03-30 13:28:38 -07:00
Jake Potrebic d3c102373f
fix player loottables running when mob loot gamerule is false (#7651) 2022-03-29 13:15:26 -07:00
Owen fa68bb1e81
Fix entity position desync for hanging entities (#7659) 2022-03-29 10:42:46 +02:00
Jake Potrebic 7fa8870043
Updated Upstream (Bukkit/CraftBukkit) (#7672)
Upstream has released updates that appear to apply and compile correctly.
This update has not been tested by PaperMC and as with ANY update, please do your own testing

Bukkit Changes:
7902647a PR-737: Update WorldCreator#generatorSettings docs
67556a50 PR-736: Update README

CraftBukkit Changes:
10922194 Java 18 support
d53c4fb6 PR-1039: Use correct ops in GeneratorSettings
a567e4ae PR-1038: Removed the no longer needed getChunkUnchecked method from ChunkProviderServer.
4ac8fcce SPIGOT-6980: Since 1.18.2, World#isChunkLoaded returned false for chunks that have just been loaded (e.g. inside ChunkLoadEvent).
e6cc7c70 PR-1035: Update README
3ec79a27 SPIGOT-5140: Call EntityChangeBlockEvent when a ChorusFlower is destroyed by a projectile
2022-03-29 10:32:18 +02:00
Jason e2f743d914
Fix PalettedContainer synchronization (#7663) 2022-03-27 10:51:39 -07:00
SoSeDiK e7d928a8e1
Fix EntityChangeBlockEvent#getBlockData for when sheep eats grass block (#7646) 2022-03-21 11:43:52 -07:00
Jake Potrebic ab666a48ee
Deprecating remaining blockkey methods (#7638) 2022-03-21 11:06:42 -07:00
Jake Potrebic a939d6e08e
Fix generator settings string for flat-type worlds (#7568) 2022-03-21 11:06:26 -07:00
Owen 993f8288fa
Add TameableDeathMessageEvent (#5392) 2022-03-20 00:50:33 +00:00
Owen a686ff5670
Add more missing entity API (#7592) 2022-03-19 15:30:16 +01:00
Bjarne Koll 7b46444bea
Properly create profiles with custom name/uuid (#7558) 2022-03-19 14:39:38 +01:00
Shane Freeder 5eb61dd432
Buffer OOB setBlock calls
lets debug mode throw a trace in order to potentially see where
such calls are cascading from easier, but, generally, if you see one setBlock
call, you're gonna see more, and this just potentially causes a flood of logs
which can cause issues for slower terminals, etc.

We can limit the flood by just allowing one for a single gen region,
we'll also only gen a trace for the first one, I see no real pressing need
to generate more, given that that would *massively* negate this patch otherwise
2022-03-19 12:35:56 +00:00
Jake Potrebic 855637f967
Updated Upstream (CraftBukkit) (#7624)
Upstream has released updates that appear to apply and compile correctly.
This update has not been tested by PaperMC and as with ANY update, please do your own testing

CraftBukkit Changes:
e9f972d6 Improve CreativeCategory conversion
c2698249 PR-1034: Fix exception on init of CraftCreativeCategory
f48739ca Add tests for material creative categories
2022-03-19 10:33:49 +01:00
Jason Penilla bc68ee09be Remove redundant GameProfileCache diff 2022-03-17 21:21:01 -07:00
Jason Penilla 319d5fa29f Fix state locking for getTopMRUProfiles & getProfileIfCached
Also add missing last access update in getProfileIfCached
2022-03-17 21:21:01 -07:00
Philip Kelley 2eeca6f108 Fix world saving in unloadWorld 2022-03-17 13:24:02 +01:00
Jason 8897cea0b0
Add enchantWithLevels API (#7615) 2022-03-17 09:51:43 +01:00
Jake Potrebic b8c90d2428
Added method to check snapshot state of TileStates (#7325) 2022-03-16 18:28:06 -07:00
Jake Potrebic 8788bf7441
fix datapacks not being able to modify nether/end (#7588) 2022-03-16 17:54:52 -07:00
Jason f0d0078deb
Add debug for invalid GameProfiles on skull blocks/items (#7512) 2022-03-16 13:34:09 -07:00
Jake Potrebic 1c5f8b0fce
Updated Upstream (Bukkit/CraftBukkit) (#7604)
Upstream has released updates that appear to apply and compile correctly.
This update has not been tested by PaperMC and as with ANY update, please do your own testing

Bukkit Changes:
33a2b476 PR-734: Make PlayerInventory#getItem Nullable

CraftBukkit Changes:
953d3ddc SPIGOT-3034: PlayerKickEvent.setLeaveMessage(String) doesn't actually do anything
2c47af0c SPIGOT-6963: CraftMetaBlockState#getBlockState applied TileEntity ids without the minecraft namespace prefix.
2022-03-16 16:57:51 +01:00
Nassim Jahnke f35a0ceb93
Remove Java version check once and for all (#7612)
Closes #7611
2022-03-16 14:10:32 +01:00
Bjarne Koll 2d3e8f7729
Properly lookup random-ticked precipitation blocks (#7606) 2022-03-15 19:44:25 +01:00
Jason 0ca80c7ee8
Add getComputedBiome API (#5668) 2022-03-15 11:38:36 -07:00
Spottedleaf a5be178ac3 Use correct toX/Y/Z in player move packet handling 2022-03-14 12:44:36 -07:00
Owen c8e49cc53e
Add get/set wait time for fish hooks. (#5595) 2022-03-13 22:33:01 +00:00
Nassim Jahnke 1358d1e914
Updated Upstream (CraftBukkit/Spigot) (#7580)
Upstream has released updates that appear to apply and compile correctly.
This update has not been tested by PaperMC and as with ANY update, please do your own testing

Bukkit Changes:
881e06e5 PR-725: Add Item Unlimited Lifetime APIs

CraftBukkit Changes:
74c08312 SPIGOT-6962: Call EntityChangeBlockEvent when when FallingBlockEntity starts to fall
64db5126 SPIGOT-6959: Make /loot command ignore empty items for spawn
2d760831 Increase outdated build delay
9ed7e4fb SPIGOT-6138, SPIGOT-6415: Don't call CreatureSpawnEvent after cross-dimensional travel
fc4ad813 SPIGOT-6895: Trees grown with applyBoneMeal() don't fire the StructureGrowthEvent
59733a2e SPIGOT-6961: Actually return a copy of the ItemMeta

Spigot Changes:
ffceeae3 SPIGOT-6956: Drop unload queue patch as attempt at fixing stop issue
e19ddabd PR-1011: Add Item Unlimited Lifetime APIs
34d40b0e SPIGOT-2942: give command fires PlayerDropItemEvent, cancelling it causes Item Duplication
2022-03-13 08:47:54 +01:00
Jason Penilla ab03538fa1
Fix colors in some console messages 2022-03-12 18:47:04 -07:00
Jake Potrebic 87927e176c
Fix CreativeCategory API (#7586) 2022-03-12 15:32:42 -08:00
Jason bfa33d955c
Various improvements to console color formatting (#7560) 2022-03-12 14:31:21 -07:00
Owen dc96bba6de
Ensure the item sent isn't air (#7584) 2022-03-12 21:34:03 +01:00
Spottedleaf aab1f8a74e Fix swamp hut cat generation deadlock
The worldgen thread will attempt to get structure references
via the world's getChunkAt method, which is fine if the gen is
not cancelled - but if the chunk was unloaded, the call will block
indefinitely. Instead of using the world state, we use the already
supplied generatoraccess which will always have the chunk available.

Missed patch from tuinity merge
2022-03-12 06:32:31 -08:00
Owen ea1efef116
Remove Patches (#7541) 2022-03-11 21:13:46 +01:00
Owen 1790528a61
More projectile API (#5731) 2022-03-11 17:37:08 +01:00
Nassim Jahnke d714682f8f
Add more entity api (#7564) 2022-03-11 15:24:45 +01:00
Owen 657d163740
Prevent despawned navigators being readded (#7574) 2022-03-11 02:39:11 +00:00
Noah van der Aa 4423e1221a
Update docs link in paper.yml (#7562) 2022-03-09 10:10:53 +01:00
froobynooby 7a21333019
Fix setting the view distance to 32 (#7503) 2022-03-09 10:09:20 +01:00
Max Lee 718fab1f6b
Add CPU name and JVM vendor info in timings (#7490) 2022-03-09 10:06:58 +01:00
Riley Park e0b3f3f8cb Adventure 4.10.1 2022-03-07 14:39:52 -08:00
Nassim Jahnke c34fb0942a
Add ghast api (#7554) 2022-03-06 22:20:38 +01:00
Jake Potrebic d9bf5e740b
Add method to set noclip on arrows (#7263) 2022-03-06 22:19:08 +01:00
Nassim Jahnke 7b9c30fb82
Fix scoreboard objective name length limit 2022-03-06 16:32:33 +01:00
Nassim Jahnke a36d7f6427
Updated Upstream (CraftBukkit)
Upstream has released updates that appear to apply and compile correctly.
This update has not been tested by PaperMC and as with ANY update, please do your own testing

CraftBukkit Changes:
808cb7ca PR-1023: Improve consistency of tag API
2022-03-06 09:08:26 +01:00
Spottedleaf 1e12cf8db6 Add more to the save fixes
- Set forceTicks to true, so that player packets are always
  processed so that the main process queue can be drained
2022-03-05 17:36:57 -08:00
Spottedleaf 196271de4e Fix save problems on shutdown
- Save level.dat first, in case the shutdown is killed later
- Force run minecraftserver tasks and the chunk source tasks
  while waiting for the chunk system to empty, as there's simply
  too much trash that could prevent them from executing during
  the chunk source tick (i.e "time left in tick" logic).
2022-03-05 17:29:47 -08:00
Jake Potrebic 6564f70f4c
Fix cancelling ProjectileHitEvent for piercing arrows (#7492) 2022-03-05 21:45:57 +01:00
Owen 935151388a
Fix handling message in PlayerHandshakeEvent (#7542) 2022-03-05 20:20:52 +00:00
Pheotis f9b05cc3f1
Expose furnace minecart push property. (#7548) 2022-03-05 21:15:24 +01:00
Spottedleaf 1d7a6a0732 Add missing glow_item_frame walkers
Needs one for ItemStack and Entity. It looks like I missed
the entity one because Mojang defined it as being simple,
which it certainly isn't (they "missed" it too).
2022-03-04 20:57:59 -08:00
Riley Park 42a9c3789d Move Adventure patch up 2022-03-04 13:45:31 -08:00
Jason 6d4784392d
replace bungeecord-chat dependency with deprecated version (#7539) 2022-03-04 13:53:36 -07:00
Nassim Jahnke b6616c8a18
Fix falling block spawn methods
For some reason Spigot broke both behavior and the method as a whole
2022-03-04 20:47:30 +01:00
JOO200 0ee6ddaf33
Add javadoc linking for adventure-text-minimessage (#7538) 2022-03-04 11:27:26 -07:00
Noah van der Aa 63aa4d3319
Clarify exception messages for invalid view distances (#7510) 2022-03-04 11:23:28 +01:00
Nassim Jahnke 719daa8bbf
Updated Upstream (CraftBukkit)
Upstream has released updates that appear to apply and compile correctly.
This update has not been tested by PaperMC and as with ANY update, please do your own testing

CraftBukkit Changes:
4ed5af5e SPIGOT-6956: Reduce differences caused by setKeepSpawnInMemory(false)
21fe78aa SPIGOT-6957: Bad default value for WorldCreator#generatorSettings
ce373be6 PR-1022: Fix get HighestBlockAt in chunk snapshot
2022-03-04 09:33:13 +01:00
Jason c09365aeac
Fix deadlock on watchdog crash (#7535) 2022-03-04 09:26:22 +01:00
Jake Potrebic 15b6b3db2c
Add StructuresLocateEvent as replacement for StructureLocateEvent (#7524) 2022-03-04 09:09:43 +01:00
Jake Potrebic d33cdcf2e6
Updated Upstream (Bukkit/CraftBukkit)
Upstream has released updates that appear to apply and compile correctly.
This update has not been tested by PaperMC and as with ANY update, please do your own testing

Bukkit Changes:
e25c6a75 PR-638: Add CreativeCategory API for Materials

CraftBukkit Changes:
86292d3e0 PR-876: Add CreativeCategory API for Materials
2022-03-03 10:21:48 -08:00
Jason Penilla 90788a556c
clean up prepareTickingChunk diff 2022-03-02 11:24:32 -07:00
Shane Freeder 12d89fe5ae
Revert chunk postprocessing back to 1.18.1 logic 2022-03-02 18:08:10 +00:00
Shane Freeder c6ea84c7fa
Drop unneeded desync patch
spigot no longer even fires the event for this case, so, this may
actually be a regression, not too sure here, but, as-is this patch
is dead
2022-03-02 09:44:22 +00:00
Nassim Jahnke d3caeeb6c2
Fix early registry access in xray patch 2022-03-02 10:28:32 +01:00
Nassim Jahnke b1afebbd52
Force close world loading screen on join (#7529)
Fixes infinite loading screens for dead players due to async chunk loading and player chunk loading patches and prevents players from missing messages and similar if chunk loading is slow
2022-03-02 10:21:30 +01:00
Jake Potrebic 178802ab94
Fix various 1.18.2 update issues (#7523) 2022-03-01 14:40:34 -08:00
Jason Penilla 0859f59469
1_18_R2 2022-03-01 00:10:23 -07:00
Jason Penilla ab8a139612
Configure javadoc overview and doc-files copying
closes #7462

Co-authored-by: Jake Potrebic <jake.m.potrebic@gmail.com>
2022-02-28 22:52:40 -07:00
Jason Penilla 126ca7376e
Add TODO for leaf 2022-02-28 22:52:40 -07:00
Jason Penilla b9037a5c7d
fix issue resulting from kenny's apatch addiction 2022-02-28 22:52:40 -07:00
Jake Potrebic 146ac7bcd6
address failing mob goals test 2022-02-28 22:52:40 -07:00
Jake Potrebic cc45a355a4
move decompile fixes to start of git history 2022-02-28 22:52:39 -07:00
Jake Potrebic 5071d50207
clean up view distance api diff 2022-02-28 22:52:39 -07:00
Jake Potrebic 3526f22211
move patch relying on TraceUtil to after its creation 2022-02-28 22:52:39 -07:00
Jake Potrebic fbe43d6a1d
clean up patch changes 2022-02-28 22:52:39 -07:00
Spottedleaf c6fc144ba0
Fix unload stall
Also added required tickets that should not be removed during
shutdown
2022-02-28 22:52:39 -07:00
Jason Penilla 37436ac61a
Move comment up 2022-02-28 22:52:38 -07:00
Riley Park 9a73213f88
Adventure 4.10.0 2022-02-28 22:52:38 -07:00
Jake Potrebic 9da236fe6a
re-add config for stronghold seed patch 2022-02-28 22:52:38 -07:00
Jake Potrebic 490517d31e
fixed flat bedrock patch 2022-02-28 22:52:38 -07:00
Nassim Jahnke c98499113f
Fix mc dev fix by removing it 2022-02-28 22:52:38 -07:00
Nassim Jahnke 706c98a603
Update Datafixer 2022-02-28 22:52:37 -07:00
Jake Potrebic f4eb08a477
Readd 'Fix entity type tags suggestions in selectors' 2022-02-28 22:52:37 -07:00
Jake Potrebic 19f9520b3a
1.18.2 compiles successfuly now 2022-02-28 22:52:37 -07:00
Jake Potrebic 60af9b0cb3
moar fixes 2022-02-28 22:52:37 -07:00
Nassim Jahnke 12efc3fcf5
Fixes 2022-02-28 22:52:36 -07:00
Nassim Jahnke c2e2281f29
Initial 1.18 update 2022-02-28 22:52:35 -07:00
Shane Freeder 30cb7d0407
ignore excessive vel for Minecarts (Fixes #7515) 2022-02-28 15:31:41 +00:00
Spottedleaf 7f65b0b589 Add DataConverter to StructureCheck, for structure lookups
Mojang added a partial conversion here to quickly check for
structures, which bypasses the chunk system. So we need a
hook here.
2022-02-25 08:46:35 -08:00
Jake Potrebic bfa50ad5b3
Custom Potion Mixes (#6744) 2022-02-22 19:09:15 -08:00
Jake Potrebic 2a55e35124
Option to have default CustomSpawners in custom worlds (#7493) 2022-02-23 02:44:06 +00:00
Owen b6dad9c903
Fix desync on teleporting entity on first tick (#7183) 2022-02-23 02:20:29 +00:00
Noah van der Aa 04a337af59
Add some missing deprecations to the adventure patch (#7500) 2022-02-23 02:11:52 +00:00
Jake Potrebic 501834e57a
Fix custom inventory holders (#6199) 2022-02-22 15:00:45 -08:00
Spottedleaf db811631ae Execute mid tick tasks during tile entity ticking
It was never done here in the past since the old TE management
system was barely functional, and could not handle chunk loading
remotely well
2022-02-22 14:42:00 -08:00
Spottedleaf 854f3d35c1 Put world into worldlist before initing the world
Some parts of legacy conversion will need the overworld
to get the legacy structure data storage
2022-02-22 14:28:34 -08:00
Spottedleaf cdb893bb9e Add mid-tick task execution to block ticking
Dropped from the ticking block list rewrite
2022-02-22 14:24:28 -08:00
Jason Penilla 9cab01ed1d
[ci skip] Update Gradle wrapper to 7.4 2022-02-21 13:44:17 -07:00
Jake Potrebic b757019dc5
Add missing block data mins and maxes (#6790) 2022-02-20 13:58:31 -08:00
Jake Potrebic 392acfdaa4
Configurable sculk sensor listener range (#6443) 2022-02-20 13:44:14 -08:00
Jake Potrebic 36a1650dbf
Furnace RecipesUsed API (#7399) 2022-02-19 14:00:33 -08:00