Commit graph

178 commits

Author SHA1 Message Date
Aikar
6ca5deba8b Don't sleep after profile lookups if not needed
Mojang was sleeping even if we had no more requests to go after
the current one finished, resulting in 100ms lost per profile lookup
2018-10-23 21:14:03 -04:00
Shane Freeder
18ac1d68c0 Update for Minecraft 1.13.2 2018-10-23 00:16:21 +01:00
Aikar
8593ac6ec5 Remove useless hashes from patches
This avoids annoying conflicts as well as gets rid of diff noise
from clients preferring different hash lengths
2018-10-18 22:36:03 -04:00
Aikar
ed7f9b32de [CI-SKIP] Fix build script for version detection
Apparently grep was being greedy even when it shouldn't.
This ensures it doesn't be too greedy.
2018-10-16 23:55:54 -04:00
Zach Brown
39d7c99598 [CI-SKIP] Remove debug echo statements from last 2018-10-16 20:41:07 -04:00
Zach Brown
963393ce85 Fix decompile script json regex
When Mojang added 1.13.2-pre2 to their manifest page it exposed a flaw
in the way the script's regex was getting the version json manifest.

I've tweaked the regex such that it will always first get the version
entry and then use that entry to get the json url, rather than trying to
do the whole thing in one shot.

Fixes GH-1582
2018-10-16 20:38:05 -04:00
Aikar
f481fac7c9 Improvements to DataFixers for performance
Mojang asked me to make some changes, so applied them here.
2018-10-12 01:29:28 -04:00
Aikar
f0ade197ea Fix rebuildPatches and grep colors not reverting junk changes
we've seen some index lines change in length in some PR's, though
this script was suppose to ignore those changes already.

The only way I can see that not working is if the color mode
of grep is breaking the pattern matching, as some people
default their grep to use color=always

this adds color=none to ensure colors are disabled, should ensure it.
2018-10-10 23:16:18 -04:00
Aikar
1800f3b561 [CI-SKIP] Update checkout-pr
Supports usage on any github repo now
2018-10-08 20:42:10 -04:00
Aikar
03d7841172 [CI-SKIP] Update test server rebuild logic
Many times I've ran paper test trying to SHUTDOWN
the existing test server, only for it to see that my target folder
is missing (for whatever reason), and it try to build paper to make
the jar exists.

Well, the patch process will wipe out any uncommitted changes, causing
loss of work.

Now we will only build patches if your missing your entire Paper-Server
folder, and only trigger a mvn compile if the jar is missing.
2018-10-02 21:44:03 -04:00
Aikar
1b44fd3c1b [CI-SKIP] Add copy of my checkout-pr script for other team members 2018-09-22 23:32:22 -04:00
Aikar
69b80568e9 Concurrency and Performance Improvements to DataFixers
Found some more unsafe operations in DataFixers.

Also replaced quite a few bad uses of Map.containsKey

containsKey is a common newbie mistake that "reads" cleaner, but
results in double the performance cost of all map operations as
containsKey in MOST cases where null values are not used is identical to get() == null

Considering how deep datafixers go in call stacks, with tons of map lookups,
this micro optimization could provide some gains.

Additionally, many of the containsKey/get/put style operations were
also a concurrency risk, resulting in multiple computation/insertions.
2018-09-15 13:22:14 -04:00
Aikar
c5811952b4 [CI-SKIP] adjust test server memory flags 2018-09-09 16:59:33 -04:00
Aikar
a1590d9769 Fix yet another issue with concurrency with datafixers 2018-09-04 01:50:14 -04:00
Aikar
0753080fe7 Fix concurrency issues in DataFixers
We are seeing issues with DataFixers being not thread safe in async chunks
and even in some spigot packet sending code.

There are a few more global objects that are mutated that need to
be synchronized to be safe for use over multiple threads.

There may be more cases, but these are extremely obvious ones.
2018-09-03 22:36:41 -04:00
Aikar
ce32154f65 [CI-SKIP] Download mojang libraries sources so we can modify them 2018-09-03 19:55:14 -04:00
Aikar
bc78ff210a [CI-SKIP] Improve last patch to not use wildcard
Since were having issues on windows for too many patch file names,
figured better use -R instead.

Also added $basedir back
2018-09-03 14:57:29 -04:00
Aikar
a289645aa9 [CI-SKIP] Fix the NMS Imports detecting our own files
the way I handled this on my fork was using the metadata in the
git "stats" output of patches, however we don't include stats in
the patch files for paper so the code didn't work.

Changed the code to detect our own file editions inside of NMS
to a method that works without stats.

So we no longer need to manually add files to this list
2018-09-03 14:52:26 -04:00
Aikar
6d1e141269 fix bug in needs redecomp deleting wrong directory 2018-08-31 23:59:03 -04:00
Aikar
e82ef9ec05 Switch to using ForgeFlower for Paper Only mc-dev imports
ForgeFlower is better than Spigots FernFlower at decompiling the source.

However, in order to maintain the CraftBukkit patches, we must keep
using spigots for the primary.

However, for any file that we import on top of Spigots imported files
there is nothing stopping us from using better decompiled files.

So these changes will use ForgeFlower to maintain a better set of
decomped files, so anything we add on top of Paper can start off
in a better spot.
2018-08-31 18:56:57 -04:00
Zach Brown
438e10fb48 Merge branch 'master' into pre/1.13 2018-08-24 11:57:11 -04:00
Aikar
356b56351e [CI-SKIP] Ensure symlink process never fails build
not sure if this is source of #1365, but doesn't hurt to make
this a non fatal error if the symlink command fails.
2018-08-23 21:50:36 -04:00
Aikar
45df85fc40 fix makemcdevsrc auto rebuild 2018-08-14 19:59:53 -04:00
Aikar
9ac6f9a94f [CI-SKIP] Avoid rebuilding Paper-Server if Paper-API did not apply
This scenario occurs when Paper-API fails, we then rebuild the patches,
however Paper-Server was left un an outdated state since the most
recent patches did not get applied to it.

This results in us reverting Paper-Server to an older state.

If Paper-API fails to apply, then Paper-Server has to be considered dirty.

This should avoid us having accidental patch reversions
2018-08-12 11:54:35 -04:00
Aikar
2cb4cf8d52 [CI-SKIP] If mc-dev src folder exists, rebuild it on apply
This ensures your local copy of this folder is up to date whenever
mcdev imports change on the project.

Before, as we/upstream add/remove's imports, your local folder could
be out of sync and you have to randomly check 'do i need to run this?'

This will just automate it. For those people who don't use this
folder (not sure why you don't!), it won't change anything.
2018-08-11 13:42:15 -04:00
Aikar
6ed32b2c2d [CI-SKIP] Add script to commit upstream changelogs
Paper team can do paper upcommit when manual upstream updates are needed
this will generate a changelog of everything that has changed between then and now.
2018-08-05 21:31:40 -04:00
Aikar
be0ed31821 [CI-SKIP] Merge branch 'master' into pre/1.13
* master:
  Properly forward exit 1 code from the paper root command
2018-07-30 17:40:54 -04:00
Aikar
15735117d7 Properly forward exit 1 code from the paper root command
This is so the CI server can pick up when applying patches fails,
and mark the build as a failure.
2018-07-30 17:37:24 -04:00
Aikar
1db0b7ed58 Readd configurable max chunk gens per tick 2018-07-21 17:24:18 -04:00
Aikar
7c13469d6c Merge branch 'master' into pre/1.13
* master:
  Duplicate UUID Resolve Option
  Add more information to Entity.toString
  change LAST_EDIT to PAPER_LAST_EDIT for edit commands
  Add more information to Entity.toString()
  Add Debug Entities option to debug dupe uuid issues
  Guard the Entity.SHARED_RANDOM from seed changes
  Create a symlink on not-windows to current minecraft decompile dir
2018-07-21 16:13:27 -04:00
Aikar
185b6b4c59 Create a symlink on not-windows to current minecraft decompile dir
This is useful for project developers switching back and forth between
1.12.2 and 1.13 so we can have our IDE automatically use the
current version we are working on for included mc-dev files.
2018-07-21 08:09:40 -04:00
Shane Freeder
bd34c3623b NOT FINISHED! She compiles, and she... suffers the wrath of chunkgen... 2018-07-19 05:42:43 +01:00
Aikar
0af7fd4996 build minecraft commit before applying CraftBukkit
allows us to see what craft bukkit changed
2018-07-18 00:45:27 -04:00
Aikar
6d1a918378 NOT FINISHED!!! Current Progress on 1.13-pre7 update
This work is 100% unfinished. I am pushing it up so that we as a team
can work on this update.

Do not try to use this branch. You will fail.
2018-07-14 21:53:17 -04:00
Aikar
898b8957a8 Initial Paper-API for Bukkit 1.13 Preview 4 - THIS IS NOT SERVER
This branch/commit is only useful to those who purely use a clean Bukkit/Spigot/Paper API
and does not use NMS/OBC references.

This will let you start updating your plugin to the latest 1.13 builds of Bukkit Preview (4 as of now)

Note that this release is not final!!! API breakages may occur!

It is up to you if you find use out of this work.
2018-07-13 21:44:35 -04:00
Aikar
3ed90751c5 Configurable Bed Search Radius
Allows you to increase how far to check for a safe place to respawn
a player near their bed, allowing a better chance to respawn the
player at their bed should it of became obstructed.

Defaults to vanilla 1.
2018-07-04 15:23:15 -04:00
BillyGalbreath
dcfc5893e7 Add config to disable ender dragon legacy check (#1167) 2018-06-22 10:49:10 -05:00
Aikar
278780623d RangedEntity API
Allows you to determine if an entity is capable of ranged attacks,
and to perform an attack.
2018-06-26 22:08:01 -04:00
Aikar
5bf1029d82 Fire EntityShootBowEvent for Illusioner 2018-06-18 22:19:59 -04:00
Aikar
43a2693ca0 Ignore Missing Recipes in RecipeBook to avoid data errors
This code was causing NPE's in saving player data, potentially related to reloads.
2018-06-16 16:30:29 -04:00
Aikar
133396a0c9 Configurable Alternative LootPool Luck Formula
Rewrites the Vanilla luck application formula so that luck can be
applied to items that do not have any quality defined.

See: https://luckformula.emc.gs for data and details
-----------

The rough summary is:
My goal was that in a pool, when luck was applied, the pool
rebalances so the percentages for bigger items is
lowered and smaller items is boosted.

Do this by boosting and then reducing the weight value,
so that larger numbers are penalized more than smaller numbers.
resulting in a larger reduction of entries for more common
items than the reduction on small weights,
giving smaller weights more of a chance

-----------

This work kind of obsoletes quality, but quality would be useful
for 2 items with same weight that you want luck to impact
in varying directions.

Fishing still falls into that as the weights are closer, so luck
will invalidate junk more.

This change will result in some major changes to fishing formulas.

-----------

I would love to see this change in Vanilla, so Mojang please pull :)
2018-06-15 00:32:35 -04:00
Kyle Wood
fdc7459143 Handle gpg signing better (#1123)
Instead of checking whether it was set previously, setting it to false,
then setting it back to true if it was true before, just use the
command-line argument in git to override the config for that command.
Using a variable makes it pretty painless to do.
2018-05-24 13:41:50 -05:00
Zach Brown
cf82968f35 Apply workaround for patch application on Windows (#1122)
This is not a perfect workaround but it seems to be the best solution
for the moment.

On Windows, this means that when a patch fails to apply, you would now
need to fix that patch, finish the apply (AM), then rebuild all patches,
and then finally re-run the patch apply procedure in order to continue.

This adds a small amount of overhead compared to the traditional method
(which will still work on *nix environments, including WSL). However, it
seems preferable to the build not working on Windows at all.
2018-05-16 20:41:10 -05:00
Aikar
9b4be61ac6 WitchConsumePotionEvent
Fires when a witch consumes the potion in their hand
2018-05-16 20:35:33 -04:00
Minecrell
99efa104db Call PaperServerListPingEvent for legacy pings (#1057)
* Make the legacy ping handler more reliable

The Minecraft server often fails to respond to old ("legacy") pings
from old Minecraft versions using the protocol used before the switch
to Netty in Minecraft 1.7.

Due to packet fragmentation[1], we might not have all needed bytes
available when the LegacyPingHandler is called. In this case, it will
run into an error, remove the handler and continue using the modern
protocol.

This is unlikely to happen for the first two revisions of the legacy
ping protocol (used in Minecraft 1.5.x and older) since the request
consists of only one or two bytes, but happens frequently for the
last/third revision introduced in Minecraft 1.6.

It has much larger, variable packet sizes due to the inclusion of
the virtual host (the hostname/port used to connect to the server).

The solution[2] is simple: If we find more than two matching bytes,
we buffer the remaining bytes until we have enough to fully read and
respond to the request.

[1]: https://netty.io/wiki/user-guide-for-4.x.html#wiki-h3-11
[2]: https://netty.io/wiki/user-guide-for-4.x.html#wiki-h4-13

* Add legacy ping support to PaperServerListPingEvent

Add a new method to StatusClient check if the client is a legacy
client that does not support all of the features provided in the
event.
2018-03-30 19:00:01 +02:00
Minecrell
5336a6b6bb Add extended PaperServerListPingEvent (#980)
* Drop original implementation for old player sample API

* Add extended PaperServerListPingEvent

Add a new event that extends the original ServerListPingEvent
and allows full control of the response sent to the client.

* Implement deprecated player sample API
2018-03-23 04:19:59 +01:00
Aikar
feaa8460b1 Fix Dragon Server Crashes
If the dragon tries to find "ground" and hits a hole, or off edge,
it will infinitely keep looking for non air and eventually crash.
2018-03-21 20:51:12 -04:00
Kyle Wood
b2eb1e7f00 Use a more general method of aliasing md5sum
Rather than checking the platform or operating system, simply check if
the command exists. If the check fails, check if the md5 command exists.
If that fails as well, cancel the build script. Otherwise, assign the
alias as before.
2018-02-23 18:58:45 -06:00
ShelLuser
f512fe2faa This patch allows Paper to be build on FreeBSD using the paper script. FreeBSD also doesn't have md5sum and uses md5, just like OS X. As such I added an extra check for the presence of FreeBSD. 2018-02-22 11:43:31 +01:00
Nikita Rudy
9105e06867 Added options to disable additional ore generation in Mesa and Extreme Hills (#1006) 2018-02-13 03:44:50 +03:00
Aikar
c3791a5225 Ability to apply mending to XP API
This allows plugins that give players the ability to apply the experience
points to the Item Mending formula, which will repair an item instead
of giving the player experience points.

Both an API To standalone mend, and apply mending logic to .giveExp has been added.
2017-12-20 17:50:26 -05:00
Shane Freeder
21e410d42e [CI-SKIP] Fix apatch zsh support 2017-12-20 13:17:32 +00:00
Aikar
036910d741 add latest copy of my apatch to the repo for easy access 2017-12-09 12:37:31 -05:00
Aikar
41afad51da Improve Structures Checking
Improves performance by keying every chunk thats part of a structure to a hashmap
instead of only the first one.

This allows us to avoid iterating the entire structures value set to see
if a block position is inside of a structure.

This should have pretty decent performance improvement to any standard world
that has been around for a whilewith lots of structures due to ineffeciencies
in how MC stores structures (even unloaded chunks has structured data loaded)
2017-11-11 18:47:30 -05:00
Zach Brown
9650c9dddc Add Obfuscation helper for armor change impl
Also alphabetize the importmcdev script... heathens, all of you
2017-11-11 00:07:45 -05:00
Zach Brown
689fdea2c7 Add command for listing entities in a world
Port of 303a775fc3

Will display a list of all entities in a world, as well as which chunks
they are in. Hopefully, this will make tracking down chunks with lots of
entities easier.

Only real change from the forge version is that instead of dimension
IDs, we accept world names in the form of a string.

/paper entity list - Lists all entities in the player's current world
/paper entity list minecraft:zombie - Lists all zombies in the player's
current world

/paper entity list * world_nether - Lists all entities in the nether
/paper entity list minecraft:ghast world_nether - Lists all ghasts in
the nether
2017-10-15 17:43:16 -04:00
stonar96
3a9f17bc4b Anti Xray v2 (#858) 2017-10-05 14:38:21 +01:00
DemonWav
f29c81c414 Add clean command and fix critical script issue 2017-09-28 17:52:05 -05:00
DemonWav
60f643684a Use absolute paths for pointing Paperclip to files 2017-09-23 13:30:55 -05:00
DemonWav
81d69d5889 Move eclipse compiler patch to POM changes patch
Also update to Paperclip 1.1-SNAPSHOT
2017-09-23 13:17:20 -05:00
Zach Brown
7a4c06e567 Update paperclip script for folder move 2017-08-13 15:44:27 -05:00
Zach Brown
67f96885aa Move mc decompile source to its own folder
Makes caching easier, ever so slightly more organized.
2017-08-12 18:56:59 -05:00
Zach Brown
b8cda19a77 Fix MC-117075: TE Unload Lag Spike
PaperMC port of https://github.com/MinecraftForge/MinecraftForge/pull/4281
2017-08-09 18:11:57 -05:00
Zach Brown
b39f2133a1 Update Paper to MC 1.12-pre5 2017-05-20 23:41:39 -05:00
Aikar
f73ec445b6 Update test server JVM flags. Bad me not even using my own flags! 2017-05-17 22:51:42 -04:00
Zach Brown
ab4ae72fd5 Update to MC 1.12-pre2 2017-05-14 13:05:01 -05:00
Aikar
7daac312a5 Shame on you Mojang
Someone wrote some horrible code that throws a world accessing task
onto the HTTP DOWNLOADER Thread Pool, for an activity that is not even
heavy enough to warrant async operation.

This then triggers async chunk loads!

What in the hell were you thinking?
2017-02-05 19:19:35 -05:00
Aikar
36ce1b950a Add more timings to Scheduler and other improvements 2017-02-05 00:13:16 -05:00
Zach Brown
21a724147a Do not allow a zero max height in BiomeJungle
Fixes GH-592

Thanks to the forge team who noticed this issue long ago
2017-01-23 15:11:07 -06:00
Zach Brown
ce10eb73f0 Assign the World in WorldGenStronghold
Fixes GH-580
2017-01-14 01:24:11 -06:00
Aikar
9db5f4c20a New Firework API's
Get the launcher of a Firework and who it is boosting
2016-12-28 02:25:35 -05:00
Aikar
3967ce4cb3 Activation Range Improvements
Fixes and adds new Immunities to improve gameplay behavior
2016-12-28 00:19:58 -05:00
Aikar
498c673952 Change default Debugging port to avoid conflicts 2016-12-27 16:12:39 -05:00
Zach Brown
4bfa933c52 Cleanup 'nerfed spawner mobs can float' patch 2016-12-20 21:57:07 -06:00
Zach Brown
b21c31c91d Update upstream B/CB 2016-12-09 18:07:35 -06:00
Aikar
e5b4e80232 Ignore "Unable to resolve BlockEntity" debug messages - Fixes #489 2016-12-02 00:02:18 -05:00
Mark Vainomaa
676d0e8bcf Fix building when directory with spaces is used 2016-11-20 23:58:20 +02:00
Zach Brown
2b8aa1a8f2 Simplify the affects spawning API implementation
Get the hell away from EntitySelectors, not that that one right anyway
Fixes GH-482
2016-11-18 18:55:14 -06:00
Zach Brown
4832b1a385 Update Paper to MC 1.11 2016-11-16 20:23:38 -06:00
Zach Brown
513118af55 Filter bad data from ArmorStand and SpawnEgg items
Fixes GH-478
2016-11-12 23:29:32 -06:00
Zach Brown
8fd92641f7 Remove log redirection in CB init script
This section seems to be a relatively common source of errors. We may as well be as
verbose as the command output, at least for this section.
2016-11-11 13:57:09 -06:00
Zach Brown
ca7a828688 Update upstrean CB/S 2016-09-11 14:55:02 -05:00
Zach Brown
4dcb73693a Add rate limiting to PacketPlayInUseItem as well
Also removes our toggle for Spigot's option, I doubt anyone uses it.
2016-09-10 21:42:47 -05:00
Zach Brown
89b26bb90d Commit CB changes as "Auto"
Helps when using git's annotate function
2016-09-10 21:31:32 -05:00
Aikar
f919bc9732 fix order of mc dev imports 2016-08-30 18:54:03 -04:00
killme
755861dfb6 Disable ticking of snow blocks 2016-08-30 16:42:17 +02:00
Zach Brown
2bf8ae3251 Add upstreamMerge script to paper tool 2016-08-19 16:00:59 -05:00
Alfie Cleveland
3820e163d4 Optimise BlockStateEnum 2016-08-19 01:53:36 +01:00
Zach Brown
96e8a799b4 Push based hoppers cleanup 2016-07-22 18:54:48 -05:00
Zach Brown
98c7a31d79 Stop overwriting block locations, root issue looks to be the TE fixer itself
Fixes GH-352
2016-06-26 18:38:39 -05:00
Zach Brown
afb1926947 Move setBlock tile->tile transition workaround into TE removal 2016-06-26 13:58:12 -05:00
Aikar
ba61e44475 Fix Old Sign Conversion
1) Sign loading code was trying to parse the JSON before the check for oldSign.
       That code could then skip the old sign converting code if it triggers a JSON parse exception.
    2) New Mojang Schematic system has Tile Entities in the new converted format, but missing the Bukkit.isConverted flag
       This causes Igloos and such to render broken signs. We fix this by ignoring sign conversion for Defined Structures
2016-06-22 22:56:57 -04:00
Techcable
94a6e8cb09 Make entities look for hoppers
Cherry-pick of PR GH-319
2016-06-18 01:03:40 -05:00
Zach Brown
9b192b2708 Update to Minecraft 1.10 2016-06-08 22:57:14 -05:00
Aikar
6025355569 clean up spigot working files out of our Paper folder 2016-05-12 22:11:11 -04:00
Aikar
5d952ffa7e Use a more reliable fixed width sequence for rebuild patches 2016-05-12 21:37:14 -04:00
Aikar
9bba4a53e5 Be more targetted with patch deletion 2016-05-12 21:24:19 -04:00
Zach Brown
3b4f1c9497 Merge pull request #279 from DemonWav/tmux
Add tmux support to Paper test and add test to paper command help.
2016-05-12 13:09:51 -05:00
DemonWav
2f8b09e1bd Add tmux support to Paper test and add test to paper command help. 2016-05-11 21:59:07 -05:00
Aikar
34fcd8ccc2 Paper 1.9.4 Update 2016-05-11 22:07:46 -04:00