Commit Graph

389 Commits

Author SHA1 Message Date
Jake Potrebic 371a422567 Remove a bunch more experimental annotations (#12712) 2025-06-30 11:49:19 +02:00
Owen 7f60924390 Configuration API (#12301)
This implements a solution that preemptively exits the tick loop if we have already marked the connection as disconnecting. This avoids changing the result of Connection#isConnected in order to avoid other possibly unintentional changes. Fundamentally it should be investigated if closing the connection async is really still needed.

This also additionally removes the login disconnecting logic for server stopping, as this was also a possible issue in the config stage but also shouldn't be an issue as connections are closed on server stop very early.

Additionally, do not check for isConnecting() on VERIFYING, as that seemed to be an old diff originally trying to resolve this code, however isConnected is not updated at this point so it pretty much was useless.
2025-06-30 11:49:15 +02:00
FlorianMichael bd79e20c66 [ci skip] PluginManager#getPlugin and PluginManager#isPluginEnabled are case-insensitive (#12723) 2025-06-26 21:17:20 +02:00
wiicart e454fef40e Add support for private constructors in plugin main classes (#12652) 2025-06-23 22:50:59 -04:00
Jason Penilla 62b7f86dae Avoid and discourage use of Maven Central as a CDN (#12689)
* Default LibraryLoader to Google's Maven Central mirror, add MavenLibraryResolver.MAVEN_CENTRAL_DEFAULT_MIRROR, and warn on use of Maven Central with MavenLibraryResolver

* Account for both Maven Central URLs

* Update Javadoc
2025-06-18 10:47:21 -07:00
Shane Freeder 5613ed6dfb Provide env environment variable and copy spigots sys prop for overriding default repository 2025-06-18 11:04:48 +01:00
A248 🇵🇸🇪🇭 7774243d11 Add plugin details to zip file errors (#12580)
Helps debug classloading across plugin boundaries. Zip file errors
can be thrown for multiple reasons, and they are capable of
affecting other plugins' classloading.
2025-05-24 21:18:41 +02:00
Nassim Jahnke f00727c57e 1.21.5
Co-authored-by: Bjarne Koll <git@lynxplay.dev>
Co-authored-by: Jake Potrebic <jake.m.potrebic@gmail.com>
Co-authored-by: Lulu13022002 <41980282+Lulu13022002@users.noreply.github.com>
Co-authored-by: MiniDigger | Martin <admin@minidigger.dev>
Co-authored-by: Nassim Jahnke <nassim@njahnke.dev>
Co-authored-by: Noah van der Aa <ndvdaa@gmail.com>
Co-authored-by: Owen1212055 <23108066+Owen1212055@users.noreply.github.com>
Co-authored-by: Shane Freeder <theboyetronic@gmail.com>
Co-authored-by: Spottedleaf <Spottedleaf@users.noreply.github.com>
Co-authored-by: Tamion <70228790+notTamion@users.noreply.github.com>
Co-authored-by: Warrior <50800980+Warriorrrr@users.noreply.github.com>
2025-04-12 17:27:00 +02:00
Nassim Jahnke 9f00461456 Update a whole lot of deprecated annotations 2025-03-21 17:50:04 +01:00
Jake Potrebic b386a8f527 Add simpler JavaPlugin command registration (#12142) 2025-02-18 00:21:29 +01:00
Noah van der Aa ed75b0e54b Disallow calling JavaPlugin#getCommand during onEnable for Paper plugins (#11914)
Co-authored-by: leguan <longboard.noah@gmail.com>
2025-01-11 22:46:36 +01:00
Bjarne Koll 887f3f74d1 [ci skip] Replace FQN with import in EventExecutor 2024-12-29 00:34:45 +01:00
Hannes Greule 287eb52fa4 Use hidden classes for event executors (#11848)
Static final MethodHandles perform similar to direct calls. Additionally,
hidden classes simplify logic around ClassLoaders as they can be defined
weakly coupled to their defining class loader. All variants of methods
(static, private, non-void) can be covered by this mechanism.
2024-12-29 00:11:09 +01:00
Jake Potrebic ca8709b30f Fix more incorrect array nullability annotations (#11836) 2024-12-27 22:24:16 +01:00
Nassim Jahnke 8769723fb3 Improve StandardMessenger exception messages 2024-08-12 18:38:19 +02:00
powercas_gamer e8e8c4f7c2 add Plugin#getDataPath 2024-07-15 02:07:49 +00:00
Jason Penilla 236fa2126f Allow Bukkit plugin to use Paper PluginLoader API 2024-05-21 13:18:00 -07:00
Jason Penilla cbb0d28ebe Add hook to remap library jars 2024-04-28 13:51:08 -07:00
Jason Penilla d9e51980e6 Allow modifying library loader jars bytecode 2024-04-28 11:11:26 -07:00
Jake Potrebic eb68d0e1b5 Add Lifecycle Event system
This event system is separate from Bukkit's event system and is
meant for managing resources across reloads and from points in the
PluginBootstrap.
2023-07-18 14:47:02 -07:00
Warrior 8636a7d5a4 Add /paper dumplisteners command 2022-11-19 19:46:44 +01:00
Nick Hensel 9b6aadff54 Also load resources from LibraryLoader 2022-08-28 23:44:18 +02:00
Jason Penilla 91a7982c46 Warn on strange @EventHandler return types 2022-01-18 11:07:54 -07:00
SirYwell 896a9e601a Rewrite LogEvents to contain the source jars in stack traces 2021-07-10 11:11:43 +02:00
Shane Freeder 2cee31307e Set true custom payload channel size limit
This fixes compatibility with some mods that are sending very long channel names. Also gives developers the ability to send longer channel names.
2019-10-18 17:39:05 +01:00
DoNotSpamPls ad83a72cf5 Change the reserved channel check to be sensible 2018-10-23 19:32:55 +03:00
Minecrell c85ea66260 Add workaround for plugins modifying the parent of the plugin logger
Essentials uses a custom logger name ("Essentials") instead of the
plugin logger. Log messages are redirected to the plugin logger by
setting the parent of the "Essentials" logger to the plugin logger.

With our changes, the plugin logger is now also called "Essentials",
resulting in an infinite loop. Make sure plugins can't change the
parent of the plugin logger to avoid this.
2017-09-21 19:41:20 +02:00
Minecrell 31a575f5f7 Handle plugin prefixes in implementation logging configuration
Currently, plugin prefixes are prepended to the log message in
the PluginLogger before passing the message to the underlying
logging framework. This is bad design because they need to be
stripped manually when using custom appenders to log messages
in a different format.

Additionally, it makes integration of alternative logging APIs hard
because all logging must go through the PluginLogger. Avoid using
PluginLogger and create a regular logger using the plugin name.
The implementation should handle plugin prefixes by displaying
logger names when appropriate.
2017-09-21 16:14:13 +02:00
Minecrell 1caeaef01d Allow plugins to use SLF4J for logging
SLF4J is a commonly used abstraction for various logging frameworks
such as java.util.logging (JUL) or Log4j. Currently, plugins are
required to do all their logging using the provided JUL logger.
This is annoying for plugins that target multiple platforms or when
using libraries that log messages using SLF4J.

Expose SLF4J as optional logging API for plugins, so they can use
it without having to shade it in the plugin and going through
several layers of logging abstraction.
2017-09-21 16:33:12 +02:00
Zach Brown 0c37d20354 Fix upstream javadocs 2017-06-10 16:59:40 -05:00
Zach Brown 7c31d0a39b Add exception reporting event 2016-02-29 20:24:35 -06:00
Jason Penilla e183355647 Add command line option to load extra plugin jars not in the plugins folder
ex: java -jar paperclip.jar nogui -add-plugin=/path/to/plugin.jar -add-plugin=/path/to/another/plugin_jar.jar
2021-05-18 14:42:26 -07:00
Aikar d4d8262f6e Timings v2
TODO: Add #isStopping to FullServerTickHandler#stopTiming in patch 191
expose isRunning
2016-02-29 18:48:17 -06:00
Owen1212055 23095683d0 Paper Plugins 2022-07-06 23:00:36 -04:00
Techcable 844bc6c46a Use ASM for event executors.
Uses method handles for private or static methods.
2016-03-03 13:20:33 -07:00
Riley Park 15081a5912 Adventure
Co-authored-by: zml <zml@stellardrift.ca>
Co-authored-by: Jake Potrebic <jake.m.potrebic@gmail.com>
Co-authored-by: Yannick Lamprecht <yannicklamprecht@live.de>
2021-01-29 17:21:55 +01:00
Bukkit/Spigot c2123d2080 Spigot Timings
Adds performance tracking timings all around the Minecraft Server, and improves the usability of the /timings command

Plugins can track their own timings with CustomTimingsHandler

By: Aikar <aikar@aikar.co>
2013-06-02 10:42:57 +10:00
Bukkit/Spigot 0023e5549a #1082: Add "since" to Deprecation annotations
By: DerFrZocker <derrieple@gmail.com>
2024-11-25 07:52:33 +11:00
Bukkit/Spigot ecf335eebe SPIGOT-7829: Increase maximum outgoing plugin message size to match Vanilla intention
By: md_5 <git@md-5.net>
2024-07-16 19:59:14 +10:00
Bukkit/Spigot a3fb15bc23 SPIGOT-7676: Enforce locale parameter in toLowerCase and toUpperCase method calls and always use root locale
By: DerFrZocker <derrieple@gmail.com>
2024-06-03 07:18:14 +10:00
Bukkit/Spigot d89271b470 SPIGOT-7638: Library loader does not seem to resolve every dependency
By: DerFrZocker <derrieple@gmail.com>
2024-04-27 09:23:19 +10:00
Bukkit/Spigot afe543345e #991: Add PluginManager#loadPlugins(File[])
By: MikChan <georgeendo0@gmail.com>
2024-04-13 17:01:48 +10:00
Bukkit/Spigot a1daa7077c Increase clarity of errors when loading malformed plugin main classes
By: md_5 <git@md-5.net>
2023-10-15 10:59:48 +11:00
Bukkit/Spigot 943fb1db3d #914: Make use of ApiStatus.Internal reather than deprecation
By: Doc <nachito94@msn.com>
2023-10-13 20:33:28 +11:00
Bukkit/Spigot 156224dbfa #912: Update Minecraft Wiki URLs
By: Doc <nachito94@msn.com>
2023-09-25 18:53:42 +10:00
Bukkit/Spigot f16f465a47 SPIGOT-7370: Remove float value conversion in plugin.yml
By: Doc <nachito94@msn.com>
2023-06-27 07:35:56 +10:00
Bukkit/Spigot dcd02753e8 #279: Minor edits to various Javadocs
By: ShanerX <shanerx@shanerx.org>
2023-04-16 09:54:51 +10:00
Bukkit/Spigot b76cbe36c5 Update to Minecraft 1.19.4
By: md_5 <git@md-5.net>
2023-03-15 03:30:00 +11:00
Bukkit/Spigot 8c38fbb68a #771: Throw IllegalAccessException with non-static getHandlerList
Also add specifier for which event causes the issue

By: Martoph <sager1018@gmail.com>
2022-07-12 21:32:00 +10:00
Bukkit/Spigot ec575f5252 Update to Minecraft 1.19
By: md_5 <git@md-5.net>
2022-06-08 02:00:00 +10:00