Uh oh!
There was an error while loading. Please reload this page.
Paper Plugins, Bootstrappers, Loaders and More? - #8108
Conversation
lokka30
commented
Jul 7, 2022
Although I like the library loading feature, I've heard it's against Maven Central's TOS. I believe Paper should adhere to that in order to avoid potential issues down the line. It's also important to factor in that lots of servers are floating around, hopefully they aren't already putting too much strain on Central. For now, I am quite certain only a small amount of plugins use library-loading, so the damage shouldn't be too bad, I assume. |
electronicboy
commented
Jul 7, 2022
the library loader is fine, bar the fact that it's pointed directly to central, ideally what we do is just flip it over to our own repo at some point, just some pending stuff in the works, etc |
underscore11code
commented
Jul 7, 2022
While I'm fully aware of how non-trivial it is, having checks on all the adventure-deprecated methods ( |
Owen1212055
commented
Jul 8, 2022
lokka30
commented
Jul 8, 2022
Looks awesome Owen! |
Lulu13022002
left a comment
There was a problem hiding this comment.
A first quick glance, i can't really help you with configurate
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Plugin Loaders publicclassTestPluginLoaderimplementsPluginLoader {
@Overridepublicvoidclassloader(PluginClasspathBuilderclasspathBuilder) {
classpathBuilder.addLibrary(newJarLibrary(Path.of("bob.jar")));
MavenLibraryResolverresolver = newMavenLibraryResolver();
resolver.addDependency(newDependency(newDefaultArtifact("com.owen1212055:particlehelper:1.0.0-SNAPSHOT"), null));
resolver.addRepository(newRemoteRepository.Builder("bytecode", "default", "https://repo.bytecode.space/repository/maven-public/").build());
resolver.setFilter(newDependencyFilter() {
@Overridepublicbooleanaccept(DependencyNodenode, List<DependencyNode> parents) {
returntrue;
}
});
classpathBuilder.addLibrary(resolver);
}
}Plugin loaders allow you to configure certain things about your plugin before it is created at all. In this case, a new robust way of adding libraries to your plugin! This allows you to add jars/dependencies before your plugin is created, making it a bit nicer for plugins that may require a lot of complex library logic. Plugin Initializers have also been renamed to PluginBootstrappers.
|
Owen1212055
commented
Jul 9, 2022
TheFruxz
commented
Jul 9, 2022
Owen1212055
commented
Jul 9, 2022
TheFruxz
commented
Jul 9, 2022
I don't think linking to our own site like this is "advertising". We can choose to link Hanagar or not, personally I think it's a good idea, but a config option for this seems like totally unnecessary bloat. |
I would definitely say that promoting another product/service (no matter how strongly related to the manufacturer) is advertisement. |
jpenilla
commented
Jul 10, 2022
In the literal sense sure, hence the quotes in my comment, but using that word to describe this is somewhat disingenuous in my opinion and implies unfair comparisons. You could also argue /ver is advertising our downloads site. Additionally there is the precedent of Bukkit, Spigot, and Paper linking to their various sites such as forums, discord, irc, etc. in their config files. |
electronicboy
commented
Jul 10, 2022
I think in the config files makes sense, or maybe if there's 0 plugins installed, but, otherwise, chat is a limited space and it just feels like extra pointless fluff which should be on the "getting started" guide |
It's a hover text, not a chat message, which I would agree would be too much. Again I don't feel super strongly for or against linking Hangar here, just pointing out the "advertising" point is not really relevant to that decision in my mind. |
I've implemented dependency loading, would appreciate if anyone would like to look over that. There are now two "plugin loaders", legacy and modern. Modern plugin loading (default) does not allow infinite dependency loops, as this caused issues in the past. If infinite dependency loops are detected the servers shuts down. Optionally, this can be switched by using the LEGACY plugin loader in paper global config (misc.plugin-loading-strategy) Please feel free to test if plugins correctly load in order. |
Owen1212055
commented
Jul 17, 2022
The test plugin has been relocated to This can be reverted, but currently applies for: |
Owen1212055
commented
Jul 17, 2022
I'm going to mark this as ready for review, most of the larger requirements have been resolved. The api support has been finished, and PluginLoader has been deprecated. |
I like the improved plugin thing, tho it feels a bit much... Maybe keep it closer to the original but like this? Then have hover text displaying plugin info and what plugin type it is. Just an idea tho. Also regarding the yaml file: Example I had imagined: 2022-08-05.17-55-03.mp4 |
Amejonah1200
commented
Feb 19, 2023
@Owen1212055 Congratulations! I hope you will continue to drive this project onward! 🥳 |
kangarko
commented
Mar 9, 2023
This seems to break the async chat listener priorities, I got multiple reports regarding this such as kangarko/ChatControl#2306 |
electronicboy
commented
Mar 9, 2023
via email
Priorities have 0 bearing on this system outside of plugins load order,
that would generally suggest that plugins which are fragile to the load
order are in the mix, which is one of those long term bukkit issues …On Thu, 9 Mar 2023, 10:14 Matej Pacan, ***@***.***> wrote:
This seems to break the async chat listener priorities, I got multiple
reports regarding this such as kangarko/ChatControl#2306
<kangarko/ChatControl#2306>
—
Reply to this email directly, view it on GitHub
<#8108 (comment)>, or
unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAJMAZGX4JC32AGLYCMW4LTW3GURZANCNFSM5232E54Q>
.
You are receiving this because you commented.Message ID:
***@***.***>
|
"Schematic versioning" is not a real thing. The intended versioning scheme is "semantic versioning". Introduced in PaperMC#8108.
"Schematic versioning" is not a real thing. The intended versioning scheme is "semantic versioning". Introduced in #8108.
"Schematic versioning" is not a real thing. The intended versioning scheme is "semantic versioning". Introduced in PaperMC#8108.
"Schematic versioning" is not a real thing. The intended versioning scheme is "semantic versioning". Introduced in PaperMC#8108.



This implements paper plugins, which can be created by
paper-plugin.ymlin your plugin resources.At runtime, they are all in the end the same "JavaPlugins". However, in the future, it is possible that this can be expanded.
Note: You can have both paper plugin and spigot plugin ymls and paper will prioritize the paper yml. The goal is to also have paper and spigot plugins work fine together (because again, they are the same at run time).
This was opened to collect a lot of feedback
Difference between paper plugins:
bootstrapperfield, allowing code to be executed even before a Minecraft server is created!Resolves:
#5992
#7961
#7955
Final testing process
Hoping to target this release to allow for future API to move forward. Please test this on your servers to ensure that all spigot plugins work.
Paper plugins will be experimental.
Download the paperclip jar for this pull request: paper-8108.zip