Commit Graph

2107 Commits

Author SHA1 Message Date
Shane Freeder
55844cd88e Improve timings around chunk loading
Timers such as syncChunkLoad are hit persistently due to changes in how
this mechanism works which impacts the usablity of timings
2019-07-12 05:04:38 +01:00
Shane Freeder
dd07f4de85 Updated Upstream (Bukkit/CraftBukkit/Spigot)
Upstream has released updates that appears 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:
e99c9444 Add Plugin Chunk Ticket API
6a235f06 Fix incorrect nullability annotations for PlayerJoinEvent's join message

CraftBukkit Changes:
5f889388 Tweak build expiration to 7 days
572c02b0 MC-155077, SPIGOT-5113: EntityTracker desync
7ad3a1f4 SPIGOT-5146: BlockDataMeta does not work
60860983 SPIGOT-5155: Setting EntityExplodeEvent yield to 0 still causes blocks to drop
087a2cf4 Print number of force loaded chunks per plugin in crash reports
07b5b06d Add Plugin Chunk Ticket API
7ffb2a27 SPIGOT-5149: resetRecipes does nothing
a2275f19 SPIGOT-5141: World.generateTree() causes ClassCastException with huge mushrooms
31d4a777 SPIGOT-5142: Ignore invalid firework effects

Spigot Changes:
5e4e7f32 BUILDTOOLS-471: Rebuild patches
6e944739 SPIGOT-5159: Raider activation range overridden by Monster range
2019-07-11 17:59:21 +01:00
Riley Park
d9f670f940 Merge pull request #2240 from Spottedleaf/anti-xray
Re-Add Anti-Xray
2019-07-09 18:11:34 -07:00
Spottedleaf
f06dcdb847 Fix entity count in timings graph (#2293) 2019-07-08 06:29:22 -07:00
Shane Freeder
88377b6fdf Fix more issues with timings
- fixed usage of timings IDs (fixes region view)
- fixed more duplicated tick handlers
2019-07-08 03:54:40 +01:00
Shane Freeder
93dacdccc5 Cleanup ChunkMapDistance patch 2019-07-05 03:23:33 +01:00
Shane Freeder
443dad0d3c Updated Upstream (Bukkit/CraftBukkit/Spigot)
Upstream has released updates that appears 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:
c2d72c82 SPIGOT-3102: Add EXPLOSION SpawnReason

CraftBukkit Changes:
fca41573 SPIGOT-5136: EntityPortalEvent getting called on interdimensional entity teleports
604c8bf0 SPIGOT-3102: Add EXPLOSION SpawnReason
375969a6 Re-add chunk GC for plugin chunk loads
58151368 SPIGOT-5123: Snapshot tile entities can end up with a non-null world
491c8482 SPIGOT-5130: PersistentDataContainer not removing values on TileEntities

Spigot Changes:
d05d3c1f Rebuild patches
2019-07-05 03:13:38 +01:00
Jonathan Frederick
0827bcd007 Remove unused fire-physics-event-for-redstone config option (#2277) 2019-07-03 13:44:07 -07:00
Shane Freeder
c204872eb4 use a Queue in ChunkMapDistance
An oversight in this patch may be to blame for several issues in certain
cases, we'll opt to using a queue as this will fall in line with what is
expected and may help some issues where chunks remain loaded or fail to
load
2019-07-02 19:50:03 +01:00
Spottedleaf
ef1951f4b0 Merge branch 'ver/1.14' of github.com:PaperMC/Paper into anti-xray 2019-07-01 22:24:09 -07:00
Zach Brown
63edda8ed6 Update upstream B/CB/S
--- work/Bukkit
Submodule work/Bukkit aba2aaaf..949124e0:
  > SPIGOT-5121: Method to set PierceLevel of arrows

--- work/CraftBukkit
Submodule work/CraftBukkit c6997924..bf329334:
  > SPIGOT-5133: Throwing items into secondary end world portal causes crash
  > SPIGOT-5121: Method to set PierceLevel of arrows
  > SPIGOT-5122: Skip world#notify if sign has no world.
  > SPIGOT-5105: The EntityTag nbt tag disappears from preset armor_stand items.
  > SPIGOT-5106: Config option to prevent plugins with incompatible API's from loading

--- work/Spigot
Submodule work/Spigot 595711b0..935adb34:
  > SPIGOT-5088: Additional growth modifiers
2019-07-01 23:51:06 -05:00
Spottedleaf
d575c87c82 Config migrations 2019-07-01 14:53:51 -07:00
Spottedleaf
698001f796 Resolve crash issue by shoving chunk loads onto the next tick 2019-07-01 14:36:31 -07:00
Spottedleaf
5efeb3be4a Merge branch 'ver/1.14' of github.com:PaperMC/Paper into anti-xray 2019-07-01 12:53:51 -07:00
Shane Freeder
8cd854bce5 Don't double-start the tickEntities Timing 2019-06-30 21:18:04 +01:00
Spottedleaf
807b8a4c50 Actually use our log full policy 2019-06-29 20:38:27 -07:00
Spottedleaf
d19b667346 Queue log events when log buffer is full
This should resolve out of order logs when the buffer is full
2019-06-29 10:04:38 -07:00
Spottedleaf
9fd79c5479 Do not force load chunks for plugin constructed packets 2019-06-28 08:05:52 -07:00
Spottedleaf
30bf6e01f7 Merge branch 'ver/1.14' of github.com:PaperMC/Paper into anti-xray 2019-06-28 06:37:28 -07:00
Shane Freeder
b61c6a3958 Updated Upstream (CraftBukkit)
Upstream has released updates that appears 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:
c6997924 SPIGOT-5110: Zombies converting to drowned too quickly
0c575603 SPIGOT-5101: Raids crash
2019-06-28 14:02:49 +01:00
BillyGalbreath
a54890fe8c Fix #2232 - Passive mobs don't move (#2253) 2019-06-28 05:33:17 -05:00
Spottedleaf
59cef70173 Keep neighbour chunks loaded while obfuscating 2019-06-26 19:04:28 -07:00
Shane Freeder
baf28f8bab Only save world data during a full save (Fixes #2243) 2019-06-26 15:21:16 +01:00
Spottedleaf
8a544afc81 Fix build? 2019-06-25 22:27:22 -07:00
Spottedleaf
c6a49e85f0 Use getChunkIfLoadedImmediately not getChunkIfCachedImmediately 2019-06-25 22:20:20 -07:00
Spottedleaf
4d410bac8e Re-Add Anti-Xray 2019-06-25 21:50:57 -07:00
Shane Freeder
979c900640 Fix raids throwing an UnsupportedOperationException 2019-06-26 03:11:29 +01:00
Shane Freeder
55897098d6 Fix CME from raids
Use the iterator to remove elements
2019-06-26 01:31:26 +01:00
Shane Freeder
9f6ea786bc Revert "Optimize Pathfinding"
This patch appears to be causing some issues with 1.14.3 entity AI
2019-06-25 20:18:50 +01:00
Shane Freeder
2fd8cba9f4 Updated Upstream (Bukkit/CraftBukkit/Spigot)
Upstream has released updates that appears 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:
aba2aaaf Correct pom.xml version

CraftBukkit Changes:
e8b39d43 SPIGOT-5103: World.save does not save gamerules
3164e531 Correct pom.xml version

Spigot Changes:
595711b0 Correct pom.xml version
2019-06-25 14:55:44 +01:00
Shane Freeder
6cbdc109ab Revert "Update VersionFetcher regex for upstream versioning changes"
This reverts commit dd553fa4e2.
2019-06-25 14:40:54 +01:00
Shane Freeder
da6d8e9da9 Revert "Optimize Persistent Data loading" (Fixes #2229) 2019-06-25 05:14:30 +01:00
Zach Brown
dd553fa4e2 Update VersionFetcher regex for upstream versioning changes
Spigot dropped the -R0.1 from their version.
`1.14.2-R0.1-SNAPSHOT` -> `1.14.3-SNAPSHOT`

If this is changed upstream this commit can be reverted.
2019-06-24 22:24:57 -05:00
Shane Freeder
40748b3c8d Updated Upstream (Bukkit/CraftBukkit/Spigot)
Upstream has released updates that appears 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:
3dc4cdcd Update to Minecraft 1.14.3-pre4
88b25a8c SPIGOT-5098: Add a method to allow colored sign changes
6d913552 Update to Minecraft 1.14.3-pre4

CraftBukkit Changes:
f1f33559 Update to Minecraft 1.14.3
8a3d3f49 SPIGOT-5098: Add a method to allow colored sign changes
533290e2 SPIGOT-5100: Console warning from pig zombie targeting
6dde4b9f SPIGOT-5094: Allow opening merchant for wandering traders and hide the xp bar for custom merchants
9af90077 SPIGOT-5097: Bukkit.clearRecipes() no longer working
38fa220f Fix setting game rules via the API
fe3930ce Update to Minecraft 1.14.3-pre4
da071ec5 Remove outdated build delay.

Spigot Changes:
4d2f30f1 Update to Minecraft 1.14.3
f16400e3 Update to Minecraft 1.14.3-pre4
2019-06-25 02:47:58 +01:00
Spottedleaf
651932f299 Fix tracker desync issue (#2224) 2019-06-23 19:32:10 -07:00
William Blake Galbreath
347defbe7a Rework fix for MC-114618 so not break map maker's workflow. Fixes #2221 2019-06-23 14:31:33 -05:00
Spottedleaf
f34c1b5fe2 Optimize protochunk saving (#2218)
Use a chunk status cache to check if we could potentially overwrite
a levelchunk.
The check could be entirely elided at the risk of overwriting chunk data,
however most protochunks should have their corresponding regionfile loaded
with their chunk status.
2019-06-22 13:17:40 -07:00
Spottedleaf
413757949e Fix verified-loaded-count being off for chunk debug command (#2219)
We need to bypass ticket checks when counting
2019-06-22 13:07:31 -07:00
Spottedleaf
83d1978402 Fix performance regression in loadChunk(x, z, false) (#2211)
Resolve a regression where calling loadChunk(x, z, false) would
potentially double-load chunk data
2019-06-22 13:04:26 -07:00
Zach Brown
a29a43a4ab Rebuild patches 2019-06-22 14:04:26 -05:00
Byteflux
b17d06866e Add support for OpenJ9 heap dumps in /paper heap 2019-06-22 14:01:49 -05:00
Zach Brown
db023f4bee Rebuild patches 2019-06-22 13:06:08 -05:00
Spottedleaf
6bac289d83 Fix vanished players don't have rights patch 2019-06-22 13:04:58 -05:00
Omer Uddin
0b2d50ae2e Rework bed dismount mechanics (#2145)
Fixes #1726
2019-06-22 13:59:47 -04:00
Spottedleaf
4d67bf0055 Log other thread in DataPaletteBlock lock failure 2019-06-21 14:45:20 -07:00
Spottedleaf
8e00f47527 Fix MC-154214 (#2195)
This should resolve unloading issues.
2019-06-19 15:48:48 -07:00
Shane Freeder
4606139d59 Updated Upstream (Bukkit/CraftBukkit)
Upstream has released updates that appears 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:
fd317e44 Fix javadoc mistakes in previous commit
70e4c23d SPIGOT-5061: Add explode and ignite methods to Creeper

CraftBukkit Changes:
efd8a2b5 SPIGOT-5089: UnsupportedOperationException on setting villager memory to null
8003ced5 SPIGOT-5061: Add explode and ignite methods to Creeper
2019-06-19 12:55:03 +01:00
Spottedleaf
30fbda1376 Better format 2019-06-17 17:43:18 -07:00
Spottedleaf
ec6ade68e0 Add WorldName to blockstate location 2019-06-17 17:41:53 -07:00
Spottedleaf
a4a1cae173 Fix chunks refusing to save (#2196)
We should only set hasBeenLoaded to false potentially after saving a chunk
other wise we will not save it. The method to do this is
PlayerChunk#l(), which we were potentially calling for chunks we were not saving.
2019-06-17 00:47:51 -07:00
Spottedleaf
bf2043b339 Fix World#isChunkGenerated calls (#2186)
* Fix World#isChunkGenerated calls

Optimize World#loadChunk() too
This patch also adds a chunk status cache on region files (note that
its only purpose is to cache the status on DISK)

* Ensure correct regionfile usage

This also bumps the minimum region file cache to 4 files given
readChunkData can load potentially 4 files.

* Fix closed check

* Better checks for invalid regionfile usage
2019-06-16 20:52:34 -07:00
Shane Freeder
c4e610e33c Fix out of bounds falling block removal (#2188) 2019-06-16 14:47:23 +01:00
Shane Freeder
5968b5c6e0 Fix enderchests not playing close sound (#2190) 2019-06-16 14:00:08 +01:00
Shane Freeder
75b8a71f9e Updated Upstream (Bukkit/CraftBukkit)
Upstream has released updates that appears 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:
04405534 SPIGOT-5034: FoodLevelChangeEvent add getItem method
8154c64c SPIGOT-4984: EnchantmentOffer.getCost() documentation is misleading

CraftBukkit Changes:
f2757f95 SPIGOT-5071: Player loot tables not triggered
f4242226 Optimize getEntitiesByClasses slightly
e81013d7 SPIGOT-5072: Process phantom, cat and patrol spawning in CustomChunkGenerator
30a63379 SPIGOT-5010: World#getEntitiesByClass/es also return entities in border chunks.
43431ba6 SPIGOT-5034: FoodLevelChangeEvent add getItem method
2019-06-16 11:15:21 +01:00
Spottedleaf
b1b5cc1713 fix exception message 2019-06-15 11:07:03 -07:00
Spottedleaf
1cda6342bf Proper paper commenting 2019-06-15 10:36:09 -07:00
Spottedleaf
7d67870905 Show blockstate location if we failed to read it 2019-06-15 10:30:43 -07:00
wizjany
08bd3b86b7 Use the entity registry id instead of translation key when posting PreCreatureSpawnEvent and PreSpawnerSpawnEvent 2019-06-14 22:06:36 -07:00
Spottedleaf
1cad29b3e2 Change format 2019-06-14 21:21:39 -07:00
Spottedleaf
5947d0b315 Add chunkinfo command
Used so that server owners can tell what types of chunks are loaded
without requiring to use a tool to analyse a debug report
2019-06-13 22:51:37 -07:00
Spottedleaf
e8de107ca0 Update upstream & fix some chunk related issues (#2177)
* Updated Upstream (Bukkit/CraftBukkit)

Upstream has released updates that appears 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:
45690fe9 SPIGOT-5047: Correct slot types for 1.14 inventories

CraftBukkit Changes:
4090d01f SPIGOT-5047: Correct slot types for 1.14 inventories
e8c08362 SPIGOT-5046: World#getLoadedChunks returning inaccessible cached chunks.
d445af3b SPIGOT-5067: Add item meta for 1.14 spawn eggs

* Bring Chunk load checks in-line with spigot

As of the last upstream merge spigot now checks ticket level status
when returning loaded chunks for a world from api. Now our checks
will respect that decision.

* Fix spawn ticket levels

Vanilla would keep the inner chunks of spawn available for ticking,
however my changes made all chunks non-ticking. Resolve by changing
ticket levels for spawn chunks inside the border to respect this
behavior.


* Make World#getChunkIfLoadedImmediately return only entity ticking chunks

Mojang appears to be using chunks with level > 33 (non-ticking chunks)
as cached chunks and not actually loaded chunks.

* Bring all loaded checks in line with spigot

Loaded chunks must be at least border  chunks, or level <= 33
2019-06-13 19:27:40 -07:00
Omer Uddin
c180ef4b12 Stop natural spawning after limit has been reached (#2127) 2019-06-12 22:34:18 -04:00
Shane Freeder
4a0148ba4e Updated Upstream (CraftBukkit)
Upstream has released updates that appears 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:
9e95da12 SPIGOT-5052: PlayerPortalEvent not called when nether is disabled
28ea3fd1 SPIGOT-5062: end_portal on an non-default end world crashes the server
4a07dc69 SPIGOT-5058: ClassCastException when getting InventoryHolder of lectern when it's destroyed
2019-06-12 09:45:30 +01:00
Shane Freeder
5ded82125d Fix async calls to getChunkAtIfLoadedImmediately 2019-06-11 04:17:39 +01:00
Shane Freeder
b579218f93 Fix PlayerNaturallySpawnCreaturesEvent
Trivia: Did you know that events need to be called to work?
2019-06-11 02:45:46 +01:00
Spottedleaf
522cb2b4d1 Improve chunk loaded checks 2019-06-10 17:29:30 -07:00
Shane Freeder
0616199cad Only fire WorldSaveEvent on full chunk saves (Fixes #2161) 2019-06-10 21:45:17 +01:00
Shane Freeder
bb5f617e9b Merge branch 'master' into ver/1.14 2019-06-10 10:11:29 +01:00
Shane Freeder
48f6e45add Catch exceptions from dispenser entity spawns 2019-06-10 09:52:34 +01:00
Shane Freeder
b1167a458a Improve autosave
- don't trip manual save warning
- respect world#isSavingDisabled
2019-06-10 06:39:04 +01:00
Shane Freeder
bdd1dc6535 Incremental chunk saving 2019-06-09 20:22:44 +01:00
Zach Brown
0e0501c9df Update upstream B/CB/S
--- work/Bukkit
Submodule work/Bukkit 6eac6d70..1ef8b9d9:
  > Add Player#openBook(ItemStack) method

--- work/CraftBukkit
Submodule work/CraftBukkit 17543ecf..649921e5:
  > Add Player#openBook(ItemStack) method
  > SPIGOT-2000: Picking up items to shield slot working inconsistently when inventory is full
  > SPIGOT-5037: Player.openMerchant does not show merchant level
  > SPIGOT-5038: Inventory.getHolder returns null for wandering traders

--- work/Spigot
Submodule work/Spigot baafee91..df0eb250:
  > SPIGOT-5043: Desync if world is changed in PlayerSpawnLocationEvent
  > Rebuild patches

Implementation developer note:
This patch adds a "pre-source" patch system for fixing malformed patches
from upstream directly. This seems to keep happening so it's best we
have some way to deal with them. This system brings those issues into
our domain rather than needing to wait for upstream to fix their
malformed files.
2019-06-08 15:33:05 -05:00
Spottedleaf
4d6f73449f Updated Upstream (CraftBukkit)
Upstream has released updates that appears 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:
17543ecf SPIGOT-5035: Error Using Virtual Merchant GUI
0fc6922b SPIGOT-5028: Villager#setVillagerExperience() doesn't work
bdbdbe44 SPIGOT-5024: Fox error - Unknown target reason
2019-06-06 08:36:57 -07:00
Shane Freeder
b97ec2bf45 Fix chunk ticking range 2019-06-06 06:13:00 +01:00
Zach Brown
692aedda04 Update upstream BD/CB/S
--- work/BuildData
Submodule work/BuildData 633897ca..f0032df4:
  > Mappings Update

--- work/CraftBukkit
Submodule work/CraftBukkit b7fea427..043d31de:
  > SPIGOT-5015: Players in spectator mode prevent block placement and block projectiles
  > Make bukkitEntity private to prevent incorrect usage

--- work/Spigot
Submodule work/Spigot 01d0f046..baafee91:
  > Rebuild patches
2019-06-02 22:26:25 -05:00
Mark Vainomaa
69c044e1b7 Set connection thottle to -1 when Velocity IP forwarding is enabled
Port of 3c6f46936e
2019-06-02 21:58:14 -05:00
Zach Brown
d03adac48b Backport MC-114618 - EntityAreaEffectCloud negative size fix 2019-06-02 21:49:14 -05:00
Spottedleaf
fffe000496 Fix tabcomplete firing off-main
Also rebuild patches
2019-06-02 19:19:44 -07:00
Spottedleaf
da7a69cec3 Chunk debug command (#2118)
* Chunk debug command

Prints all chunk information to a text file into the debug
folder in the root server folder.

Will output server version and all online players to the
file as well. We do not log anything but the location,
world and username of the player.

Also logs the value of these config values (note not all are paper's):
- keep spawn loaded value
- spawn radius
- view distance

Each chunk has the following logged:
- Coordinate
- Ticket level & its corresponding state
- Whether it is queued for unload
- Chunk status (may be unloaded)
- All tickets on the chunk

Example log:
https://gist.github.com/Spottedleaf/203bd211020a3a04da0e574fb57dab45

For references on certain keywords (ticket, status, etc), please see:

https://bugs.mojang.com/browse/MC-141484?focusedCommentId=528273&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-528273
https://bugs.mojang.com/browse/MC-141484?focusedCommentId=528577&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-528577

* Use JSON for the chunk dump

* Fix obfhelper naming

* Fix incorrect JSON spec
2019-06-02 18:25:12 -07:00
Riley Park
d8aa9c7970 Merge pull request #2097 from simpleauthority/add-get-step-sound
Add BlockSoundGroup to Block & Implement
2019-06-01 21:13:31 -07:00
Spottedleaf
4ce3dc1b76 Fix memory leak if the server is constantly overloaded (#2109) 2019-05-30 20:19:06 -07:00
Zach Brown
b270fb08ff Update upstream CB/S
--- work/CraftBukkit
Submodule work/CraftBukkit ba575a5a..b7fea427:
  > SPIGOT-5010: World.getEntities returns entities in border chunks
  > Show incorrect size passed into createInventory

--- work/Spigot
Submodule work/Spigot 093165d1..01d0f046:
  > SPIGOT-4986: EntityActivationRange - Raiders
  > SPIGOT-4988: Setting "mob-spawn-range" in spigot.yml also effects random block ticks
2019-05-30 18:54:25 -05:00
Zach Brown
0e9230e80c Fix null display when no version history
Should've been null checked since I made it nullable. String concat
saved us any real damage and so all we saw was "null" shown to users.
Quick check and now we don't.
2019-05-30 18:31:48 -05:00
Zach Brown
f501069d24 Allow proto chunks to be saved again
Appear to be used more extensively in 1.14. Subject to further review.
2019-05-30 18:22:34 -05:00
Mark Vainomaa
e8b7718afe Set connection thottle to -1 when Velocity IP forwarding is enabled 2019-05-30 18:46:47 +03:00
Shane Freeder
18794d2123 Don't replace entries in the tracked player map (Fixes #2102) 2019-05-29 05:54:11 +01:00
Shane Freeder
35226c96e4 ChunkMapDistance-CME 2019-05-29 04:25:08 +01:00
Riley Park
e3e0ca14b6 Merge pull request #2089 from BillyGalbreath/GH2088
MC-114618 - Fix EntityAreaEffectCloud from going negative size
2019-05-28 17:44:32 -07:00
simpleauthority
cb0e26829f Add BlockSoundGroup to Block and implement 2019-05-28 03:53:48 -07:00
Spottedleaf
9f4fe93a9a Update to 1.14.2 2019-05-27 16:01:45 -07:00
William Blake Galbreath
b1fe87eb4a MC-114618 - Fix EntityAreaEffectCloud from going negative size 2019-05-27 17:36:06 -05:00
Spottedleaf
4d1f9bd463 Updated Upstream (Bukkit/CraftBukkit)
Upstream has released updates that appears 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:
e041de28 SPIGOT-4946: Add VillagerCareerChangeEvent

CraftBukkit Changes:
fcb9f90b SPIGOT-4946: Add VillagerCareerChangeEvent
a4a2f679 SPIGOT-4987: Shulkerbox does not save empty slots
2019-05-27 03:57:28 -07:00
Zach Brown
7a5a4fd400 Move version command update checking to the implementation
This makes it easier for downstream projects (forks) to replace the
version fetching system with their own. It is as simple as implementing
an interface and overriding the default implementation of
org.bukkit.UnsafeValues#getVersionFetcher()

It also makes it easier for us to organize things like the version
history feature.

Lastly I have updated the paper implementation to check against the site
API rather than against jenkins.
2019-05-27 04:13:41 -05:00
Spottedleaf
66554efabb Improve MT-Safety of UserCache (#2080)
We were missing a synchronize on a get if cached method, however
it appears that using a ConcurrentHashMap is a better solution
so readers can avoid locking if they just want a cached value.

Existing synchronization for writers remains untouched, the
ConcurrentHashMap is just so readers can safely read without
synchronization
2019-05-26 23:17:50 -07:00
Spottedleaf
78a4e64734 Move getTypeIfLoaded and friends to IBlockAccess (#2077) 2019-05-26 23:14:14 -07:00
Spottedleaf
4a65bd4b04 Handle gen flag for placeholder getChunkAtAsync (#2079)
Also fix a loadChunk call in heightmap api
2019-05-26 22:17:12 -07:00
Zach Brown
4acb916956 Check property exists before playing chest close sound
There is an artificial delay added to chest close sounds (of 10 ticks)
to make them "feel" more true to vanilla. The problem is that because of
this delay it is possible for the block to be removed by the time the
sound plays.

With 1.14 in the state it is the timing necessary to encounter this
issue has increased.

The correct fix is to just return early if the property checked for in
the TileEntityChest sound method does not exist for the block at the
current location.

Fixes GH-2074
2019-05-26 23:36:37 -05:00
Shane Freeder
70e671043a Merge branch 'master' into ver/1.14 2019-05-27 01:16:47 +01:00
Spottedleaf
3e0027e482 Revert Don-t-recheck-type-after-setting-a-block.patch 2019-05-26 10:40:12 -07:00
Shane Freeder
db3bafc4d1 Updated Upstream (CraftBukkit)
Upstream has released updates that appears 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:
17da3420 Fix reading custom persistent entity data
83783357 SPIGOT-4980: Shields will not be put on cooldown when hit with an axe
8d0f3722 SPIGOT-4752: Fixed inconsistency between isChunkLoaded and chunk load/unload events
3f9f31c3 SPIGOT-4982: Armor disappearing while breaking the armor stand
2019-05-26 02:56:30 +01:00
Shane Freeder
d1f29dbbe3 Fix some concurrency issues around world generation (Fixes #2052, #2037) 2019-05-24 11:16:03 +01:00
Shane Freeder
12a934315c Updated Upstream (CraftBukkit)
Upstream has released updates that appears 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:
c45c0a98 SPIGOT-4972: Cannot add contextual data to loot table API
2019-05-24 04:49:27 +01:00
Spottedleaf
b8fb51a017 Add configurable spawn loaded range back (#2051) 2019-05-23 20:12:57 -07:00
Spottedleaf
50c66c63aa Fix /tps (#2066) 2019-05-22 11:57:27 -07:00
Shane Freeder
8353831ea5 Fix compilation 2019-05-22 05:14:56 +01:00
Shane Freeder
504a4d9c6e Remove TPS catchup improvements
These changes are incompatbile as-is with 1.14 due to the Thread.sleep
call, this should ideally be brought back in the future
2019-05-22 04:58:00 +01:00
Shane Freeder
8b5a606f59 improve CraftWorld#isChunkLoaded to use the chunk status
vs just checking that it exists as an updating chunk, as this appears to
be a "the chunk should be loaded, but might not be"
2019-05-21 21:32:47 +01:00
Shane Freeder
ad0f730861 stop CraftWorld#isChunkLoaded from loading chunks 2019-05-21 02:37:47 +01:00
Spottedleaf
6fef4e1b23 Fix RegionFileCache#hasRegionFile (#2062)
also remove the pointless synchronization on
RegionFileCache#getRegionFileName
2019-05-19 19:26:17 -07:00
Shane Freeder
9b1c65cf48 try-with-resources on populate timer (Fixes #2061)
Lets also ignore the fixup patch, that never existed, right? Right.
2019-05-20 02:32:41 +01:00
Shane Freeder
a24e98859f Don't run death logic on dupe entity removals 2019-05-19 20:48:54 +01:00
Shane Freeder
059e210728 Updated Upstream (Bukkit/CraftBukkit/Spigot)
Upstream has released updates that appears 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:
4543fb40 SPIGOT-4943: Zombie villager conversion player API.

CraftBukkit Changes:
585b2ebd Tweak thresholds for can't keep up message
91ada5c2 SPIGOT-4956: EntityTameEvent not triggered when taming a Cat
9bda4134 SPIGOT-4943: Zombie villager conversion player API.
5a027071 SPIGOT-4947: Allow setting the content on a lectern
09d00e9f SPIGOT-4938: Call EntityPickupItemEvent for dolphins
a278e445 SPIGOT-4948: Lectern.getInventory should return a LecternInventory

Spigot Changes:
4f661b22 Rebuild patches
2019-05-19 04:16:22 +01:00
Shane Freeder
98314712f0 Restore some entity duplication fix patches 2019-05-18 06:01:44 +01:00
Spottedleaf
63233b4c4c Fix MinecraftServer#isMainThread (#2046)
See patch notes
2019-05-16 15:27:36 -07:00
Zach Brown
13313f9bb6 Fix logic issue with no save proto chunks patch
Should be returning true as a no-op "yes it was saved" rather than false
as a "there was an issue saving"
2019-05-16 16:53:17 -05:00
Shane Freeder
6a951ff79a Remove leftover line from spigots tick limiters
Looking over the code, this appears to be one "high risk but hopefully
unlikely that plugins are causing this to break", this line is however
redundant leftovers from spigots tick limiter patch, which should be
doing nothing as-is.
2019-05-15 22:53:13 +01:00
Shane Freeder
ee7b1a66d0 Updated Upstream (CraftBukkit)
Upstream has released updates that appears 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:
f6909573 SPIGOT-4935: Lore deserializes incorrectly from previous versions
dd99c5bb SPIGOT-4929: Beacon inventory getType() returns CHEST
2019-05-15 19:12:22 +01:00
Riley Park
1801baec4d Merge pull request #2029 from Spottedleaf/optimize-datawatcher
Optimize DataWatcher
2019-05-15 01:13:05 -07:00
Spottedleaf
b10550736e Resolve memory leak involving TileEntities
Their chunk is set to null before removal, so we kept them around.
2019-05-14 14:54:32 -07:00
Spottedleaf
8ff0f5c10d Fix CraftServer#isPrimaryThread
md_5 changed it so he could shut down the server asynchronously
from watchdog, although we have patches that prevent that type
of behavior for this exact reason.
2019-05-13 21:13:31 -07:00
Zach Brown
b3cf37c102 Re-add dropped keep alive disconnect
Should fix the terminal spam
2019-05-13 23:17:05 -05:00
Spottedleaf
b56a982756 Optimize DataWatcher
The lock in DataWatcher is used to prevent concurrent modifications
to the 'd' field (entries in MCP). However any modifications to
this map only occur on initialization of an Entity in its
constructor. This modification is write-locked.

Every other access is through a readlock, which allows
the threads to pass if there is no thread holding the
writelock.

Since the writelock is only obtained in the constructor
of the Entity, the further readlocks are actually
useless (which get obtained on set, get, etc calls).

The entries field ('d' currently) has also been declared as
Int2ObjectOpenHashMap to avoid autoboxing on put(), get(), etc
calls.
2019-05-13 20:37:18 -07:00
Zach Brown
1ea2c3b4be MC 1.14.1 2019-05-13 21:20:58 -05:00
Zach Brown
d1310ddac5 Add comment to MC-151674 fix
[11:00 PM] kashike: <snip> missed // Paper - MC-151674 comment here
2019-05-12 23:06:28 -05:00
Spottedleaf
ecafb51908 Fix MC-151674 Close RegionFiles when they get evicted from cache
https://bugs.mojang.com/browse/MC-151674
2019-05-12 19:30:57 -07:00
Spottedleaf
6635ae643e Review EntityPathfindEvent
Add missing target forward
2019-05-12 18:39:06 -07:00
Spottedleaf
e36079cf6f Remove TODO on Add more Zombie API
Testing in game verified the zombie's arms raise and fall correctly
when using the API.
Renamed the OBFHELPER since the method is placed on EntityInsentient
(since we want to conflict on changes).
2019-05-12 18:04:29 -07:00
Spottedleaf
1936613b92 Remove TODO on Add ray tracing methods to LivingEntity
Note: The entity parameter stays 'this' since we want the block the
entity is targetting. This can change based on the block the player
has in their hand (see scaffholding). With a scaffhold in hand, the
scaffhold blocks in the world become solid 1x1x1 cubes, and without they
follow their model's shape.
2019-05-12 17:23:21 -07:00
Spottedleaf
79a43cd2a2 Fix TODOs in Optional TNT doesn't move in water
Turns out the doWaterMovement method was never called.
Moved the tracker updates into tick() and delete doWaterMovement
2019-05-12 16:42:49 -07:00
Spottedleaf
8d7a074503 Resolve TODO on PlayerNaturallySpawnCreaturesEvent
- Add missing isCancelled check

We don't need to worry about going out of range of int
since the value is clamped to view distance, and view
distance is clamped to 33
2019-05-12 15:34:42 -07:00
Shane Freeder
a13710cccf Merge branch 'master' into ver/1.14 2019-05-10 20:03:43 +01:00
Shane Freeder
cd96c09a94 Updated Upstream (CraftBukkit)
Upstream has released updates that appears 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:
7d29eb5e SPIGOT-4899: Horse inventory title not set
2019-05-10 19:11:17 +01:00
Shane Freeder
86be055929 Fix MCUtils and other calls to postTaskOnMain
Method changed changed it's role to providing a TickTask object which
isn't automatically scheduled onto the server
2019-05-10 18:42:33 +01:00
Spottedleaf
396186a950 Fix patch "Faster redstone torch rapid clock removal" (#2014)
Tux pointed out the patch still has O(n^2) time complexity since
the sublist class in arraylist does not override clear() from
AbstractList, which uses a forward moving iterator to clear
the list.

Resolved by using a peek and poll from ArrayDeque.

This patch also removes the useless WeakHashMap which holds
the list (it mapped world->list) and replaces it with a
field on World.
2019-05-10 08:48:58 -07:00
Shane Freeder
eb03bf7e66 Fix accidental reversion of patches, oops 2019-05-09 15:23:52 +01:00
Shane Freeder
a17bbb4560 Updated Upstream (Bukkit/CraftBukkit)
Upstream has released updates that appears 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:
fe0cadf0 Add BlockShearEntityEvent for Dispensers shearing Sheep
90e5cca3 SPIGOT-4892: Allow to set the currently viewed page of a book on a lectern inventory
a30337f7 SPIGOT-4887: Villager level minimum is 1
d88d828c SPIGOT-4886: Villager type SNOWY should be named SNOW

CraftBukkit Changes:
6ceffb0d SPIGOT-4895: Bed doesn't explode in Nether and The End
ee881847 SPIGOT-4888: setSleepingIgnored resets the night even when there is no one in a bed
15e02b40 SPIGOT-4890: EntityDeathEvent fires twice when breaking an armor stand in survival mode
b38a3c33 Add BlockShearEntityEvent for Dispensers shearing Sheep
70ebefca SPIGOT-4891: LecternInventory.getType() should return InventoryType.LECTERN
0036d1b7 SPIGOT-4887: Villager level minimum is 1
2019-05-09 08:20:01 +01:00
Spottedleaf
c0f92870ab Use WorldServer#entitesById for entity iteration
WorldServer#globalEntityList is not the actual list of entities in a world
2019-05-07 18:49:41 -07:00
Spottedleaf
665bb10aaa Actually write to the tracker field on entity
perhaps we can also look into removing this modification altogether
2019-05-07 18:13:24 -07:00
Shane Freeder
ca0b6b5337 Fix a ClassCastException from shooting fireworks 2019-05-07 19:56:32 +01:00
Shane Freeder
aa5d287e4f Fix RegionFileCache write logic 2019-05-07 16:26:37 +01:00
Spottedleaf
e052a9deff Fix foxes not dropping items 2019-05-07 08:20:32 -07:00
Spottedleaf
f1e494aba9 Fix tracking dead entities 2019-05-07 06:50:02 -07:00
Shane Freeder
55b60646bc Don't double set air in BlockFire 2019-05-07 13:16:22 +01:00
Spottedleaf
71b1db46b1 Fix entities refusing to die and portal search not working 2019-05-07 05:00:51 -07:00
Spottedleaf
5a6ef6ed50 Update upstream 2019-05-06 17:33:26 -07:00
Spottedleaf
96b32aa6bc Fix more runtime stuff
Remove chunk neighbour system until we can figure out the chunk system
2019-05-06 17:05:41 -07:00
Spottedleaf
b372f891aa Fix some runtime issues 2019-05-06 13:45:02 -07:00
Spottedleaf
b64ce880b7 It compiles 2019-05-06 12:30:27 -07:00
Zach Brown
1fa1246a1e More compile fixes
- Re-removes Bukkit#getServerName - This was (hopefully?) only added back
  for Timings v2. It should be kept in that scope.

- Intend to let PlayerViewDistance API slip. Given the scope of the
  changes in this area it seems best to let this slip past initial
  release. It can be re-added when there is additional time to focus on it
  and the changed systems it relies on. If it is fixed prior to release
  this is implemented as a single shim patch that can be dropped.
2019-05-06 03:20:16 -04:00
Spottedleaf
6281fc8f11 Fix some more compile errors 2019-05-05 20:53:47 -07:00