PaperMC / PaperLib

Plugin Library for interfacing with Paper Specific API's with graceful fallback that maintains Spigot Compatibility, such as Async Chunk Loading.
MIT License
275 stars 32 forks source link

SpigotMC has assessed that plugins calling SuggestPaper() are advertising #41

Open Narimm opened 3 years ago

Narimm commented 3 years ago

I raise this to suggest that the wording of the Paperlib.suggestPaper() be modified to not breach the SpigotMC advertising rules. I actually tried to get an idea from them as to what that actually is ...but I couldnt get answer. I think removing the link is probably a start. At the end of the day no alternative reliable and safe plugin marketplace exists. If plugins that call this method breach the guidelines they get removed and in the end they are not assisting spreading the word about Paper's benefits.

HexedHero commented 3 years ago

Any source for Spigot removing any plugin that runs this? Because I've never seen any removed due to it.

MiniDigger commented 3 years ago

At the end of the day no alternative reliable and safe plugin marketplace exists

yet! am trying...

has somebody tried to approach spigot resource staff about this? the intend here isn't malicious for advertising, its to inform users (in a standardized manner) that the given plugin utilizes features of the paper api and thus runs noticeable better on paper servers. I view that in the same realm of a soft dependency. "hey my cool plugin a works better if you pair it with cool lib b". Its not telling everybody to install lib b, just suggesting that, in order to use the plugin in the way it was designed, its better to install it.

maybe the text could be reworded to put more emphasis on that? Put the "normal" benefits of paper a step back and put the actual benefits of the plugin into the foreground (while still mentioning stuff like timings v2, just put the focus elsewhere)

Any source for Spigot removing any plugin that runs this? Because I've never seen any removed due to it.

in typical spigot fashion rule enforcement isn't consistent. some mod seems to have had a bad day and send out a bunch of punishments (to authors that really only want the best for their users...)

FrankHeijden commented 3 years ago

Easy, next to the rewording, make the suggestPaper() method not print anything if a file by the name .I_Really_Dont_Want_To_Use_Paper_Because_IDC_About_Performance is present in the plugin root, also removes immediately the "argument" of it being spam in the console.

benkerllenevich commented 3 years ago

It would make more sense to add a startup flag for that like -DPaperLib.dontSuggestPaper=true

Trigary commented 3 years ago

It exists: -Dpaperlib.shown-benefits No clue whether it's actually documented - whether it's part of the plugin's "contract". It definitely isn't advertised in the "suggest message" itself, which is a poor choice if you ask me.

Narimm commented 3 years ago

Unfortunately I doubt a flag will meet the guidelines of SpigotMC - what would be helpful is if someone where able to get a clear indication if any sort of Paper suggestion would not breach SpigotMC's guidelines. @SpigotMC could comment that would be great

MiniDigger commented 3 years ago

does pinging an org even do anything? lol

I think the best approach would be, if a resource update gets rejected, reply to that and ask staff how to change the wording so that its covered by spigot rules but still convey the message of hey, if you do this, this plugin will be even nicer!

Narimm commented 3 years ago

I did I got told I was trying to bypass the report

MiniDigger commented 3 years ago

many helpful, such wow. ill try talking to somebody at spigot

MiniDigger commented 3 years ago

ok, so it seems like at least some ppl at spigot agree with my viewpoint that this is basically just saying that there is a soft dependency.

so, we should come up with a new message, that focuses on that fact more than just straight up advertising paper like it is right now. something like

"plugin will provide a better experience if you would use paper as your server software.

it would enable to usage of features such as async chunk loading, async teleportation and faster block state manipulation.

you can learn more about paper and its features and improvements here" (I am bad at writing messages)

once we formulate a message that both plugin devs and the paper team likes, ill run that by spigot again and hopefully get their blessing, so that this can be resolved nicely.

soooooo any volunteers for coming up with such a message? :P

Narimm commented 3 years ago

"This plugin optionally supports an extended API, Paper-API. Using a server software that supports this API will ensure you can enable the full features of this plugin. This includes advanced timings management, extended events, and asynchronous functions that will improve the speed at which this plugin can function, thus reducing the load on your hardware. You can read more here (link - not to a download page - info page like a gist or wiki that can be changed.)"

My suggesting would be that we mention that multiple forks support that API (officially and unofficially) This dilutes the argument its advertising,

The other option if SpigotMC was not willing to budge was to reverse it. I generally dislike negativity but it may actually be the only way any sort of message is allowed - it isn't advertising because it doesn't mention alternate server software.

"You are operating on server software that is not optimized and runs a reduced API that will increase the load on your CPU. Adittionally it runs a outdated version of /timings and is missing newer event classes that can improve functionality in this Plugin. Please contact your plugin support for more information. "

mbax commented 3 years ago

Idea: Plugins specify exactly which features require Paper.

Plugin usage:

PaperLib.suggestPaper(PaperFeature.ASYNC_CHUNKLOADING, PaperFeature.ASYNC_TELEPORT, "Raw byte item serialization");

With those being String constants.

In console:

=================================================================================
KittehPlugin works better if you use Paper as your server software because 
with Paper (https://papermc.io) present, it makes use of the following features:
 * Asynchronous chunk loading
 * Asynchronous teleporting
 * Raw byte item serialization
=================================================================================
jacobsandersen commented 3 years ago

Chiming in to say I think a combo of @Narimm's message and @mbax's idea for enumerating the benefits would be really nice.

i.e.:

PaperLib.suggestPaper(PaperFeature.ASYNC_CHUNKLOADING, PaperFeature.ASYNC_TELEPORT, "Raw byte item serialization");

=================================================================================
KittehPlugin is running on server software that is not as feature-rich as one that provides the Paper API. 
There are numerous benefits to using a server software with Paper support (such as one of these: <link to page of all (safe/recommended, i.e. not Yatopia or any other 'dangerous' impl>). 
Specifically, this plugin is currently unable to use the following features:
 * Asynchronous chunk loading
 * Asynchronous teleporting
 * Raw byte item serialization
=================================================================================
Narimm commented 3 years ago

Chiming in to say I think a combo of @Narimm's message and @mbax's idea for enumerating the benefits would be really nice.

i.e.:

PaperLib.suggestPaper(PaperFeature.ASYNC_CHUNKLOADING, PaperFeature.ASYNC_TELEPORT, "Raw byte item serialization");
=================================================================================
KittehPlugin is running on server software that is not as feature-rich as one that provides the Paper API. 
There are numerous benefits to using a server software with Paper support (such as one of these: <link to page of all (safe/recommended, i.e. not Yatopia or any other 'dangerous' impl>). 
Specifically, this plugin is currently unable to use the following features:
 * Asynchronous chunk loading
 * Asynchronous teleporting
 * Raw byte item serialization
=================================================================================

I think this might be the way to go - Mini did you want to propose it to Choco?