13
0
geforkt von Mirrors/Paper
Datei suchen
Aikar 0d1ca37436
Remove MOST Synchronization from Chunk Map
This will provide quite a major performance boost by avoiding
synchronizing on EVERY chunk lookup.

Synchronize, even without contention, incurs processor cache flushes.

Considering this is the 2nd hottest method in the code base, lets
avoid doing that...

Additionally, chunk conversion operations were occuring while
under synchronization which lead to deadlocks.

Now the conversion will occur outside of the lock, and fix
that issue, resolving #1586

Note, that the chunk map is still thread safe for get operations!

The chunk map was never intended to be modified async with our
changes, as we post to main to modify the map, however
we do still synchronize for write operations (put, remove)

We also synchronize for async get operations, ensuring that
async gets are safe.

We do not need to synchronize main thread gets as the processor
cache will be insync since the map is only updated on the main thread.

However, if someone does try to delete or put concurrently, we
will force their operation back to the main thread.
2018-10-18 22:41:23 -04:00
.github/ISSUE_TEMPLATE [CI-SKIP] Update Issue template 2018-09-26 17:22:20 -04:00
licenses [CI-SKIP] Clarify project licensing 2018-03-06 20:41:03 -05:00
removed [CI-SKIP] Move removed patches back down a level 2018-09-01 15:39:16 -04:00
scripts Remove useless hashes from patches 2018-10-18 22:37:06 -04:00
Spigot-API-Patches Add events for player changing spectator target (#1498) 2018-10-18 16:53:10 -04:00
Spigot-Server-Patches Remove MOST Synchronization from Chunk Map 2018-10-18 22:41:23 -04:00
work [Auto] Updated Upstream (CraftBukkit) 2018-10-16 17:21:46 -04:00
.editorconfig [CI-SKIP] add .editorconfig for base code style settings 2018-08-07 01:14:22 -04:00
.gitignore Switch to using ForgeFlower for Paper Only mc-dev imports 2018-08-31 23:47:57 -04:00
.gitmodules Cleanup and restructure the project 2016-04-01 23:15:41 -05:00
.travis.yml Move mc decompile source to its own folder 2017-08-12 18:56:59 -05:00
CONTRIBUTING.md [CI-SKIP] Add note on 1.12.2 status to CONTRIBUTING.md 2018-09-11 18:11:28 -04:00
LICENSE.md Fix view distance API (#1419) 2018-09-09 14:38:27 -04:00
paper Updated Upstream (Bukkit/CraftBukkit) 2018-08-31 23:53:54 -04:00
pom.xml Fix up maven stuff hopefully 2018-09-22 12:58:09 -04:00
README.md [CI-SKIP] Add more detailed information for plugin devs 2018-09-23 13:52:37 -04:00

Paper Build Status

High performance Spigot fork that aims to fix gameplay and mechanics inconsistencies.

Support and Project Discussion:

How To (Server Admins)

Paperclip is a jar file that you can download and run just like a normal jar file.

Download a copy of paperclip.jar from our build server, here.

Run the Paperclip jar directly from your server. Just like old times

How To (Plugin Developers)

  • See our API patches here
  • See upcoming, pending, and recently added API here
  • Paper API javadocs here: papermc.io/javadocs
  • Maven Repo (for paper-api):
<repository>
    <id>papermc</id>
    <url>https://papermc.io/repo/repository/maven-public/</url>
</repository>
  • Artifact Information:
<dependency>
    <groupId>com.destroystokyo.paper</groupId>
    <artifactId>paper-api</artifactId>
    <version>1.13.1-R0.1-SNAPSHOT</version>
    <scope>provided</scope>
 </dependency>

How To (Compiling Jar From Source)

To compile Paper, you need JDK 8, maven, and an internet connection.

Clone this repo, run ./paper jar from bash, get files.

How To (Pull Request)

See Contributing

Special Thanks To:

YourKit-Logo

YourKit, makers of the outstanding java profiler, support open source projects of all kinds with their full featured Java and .NET application profilers. We thank them for granting Paper an OSS license so that we can make our software the best it can be.