PurpurMC / Purpur

Purpur is a drop-in replacement for Paper servers designed for configurability, and new fun and exciting gameplay features.
https://purpurmc.org
MIT License
2.01k stars 358 forks source link

[Suggestion] Disable note block updates server side #219

Closed Jacccop closed 3 years ago

Jacccop commented 3 years ago

Add config option to stop the note block from updating it's block state server side. This option already exists for mushroom blocks.

BillyGalbreath commented 3 years ago

The option exists for mushroom blocks so that resource packs can use those blocks to make fake "new" blocks. I dont think it is wise to use something like a noteblock or spawner cage because they are tile entities, which when used like this cause a lot of extra lag. Use mushroom blocks instead.

Jacccop commented 3 years ago

The option exists for mushroom blocks so that resource packs can use those blocks to make fake "new" blocks. I dont think it is wise to use something like a noteblock or spawner cage because they are tile entities, which when used like this cause a lot of extra lag. Use mushroom blocks instead.

Note block is a tile entity in bedrock edition but not in java (wiki says it as well). I Verified it by running /gc from essentials, printing all tile entities. While placing beehives and jukeboxes did increment the tile entity number, placing note block did not.

Malfrador commented 3 years ago

Yeah, the note block isn't a TE. It wouldn't need that many block states if it was one. They were TE's until 1.13, but Mojang changed that and added the block states instead.

Compared to mushroom blocks note blocks not only have a lot more block state combinations (800), they also are guaranteed to render correctly on the client. Mushroom blocks sometimes have weird client-side behavior when close to another mushroom block, which isn't the case with note blocks and makes them the preferred way of adding blocks that players can actually use.

There are several 1.16 custom forks out there that disable block updates for note blocks, so performance surely isn't an issue here & this would make a very useful addition to Purpur.

Jacccop commented 3 years ago

@BillyGalbreath Could you reopen this issue as it would be usefull for a lot of servers and objectively better than mushroom blocks?

BillyGalbreath commented 3 years ago

Can anyone point out a specific case where a plugin is unable to stop a block update to a noteblock?

The option for mushrooms exist because its not possible to stop every single block update on them using a plugin. In fact, using the mushroom option alone doesnt even stop all block updates. The option works together with plugins to fully stop block updates to mushroom blocks, and thats the only reason it even exists.

YouHaveTrouble commented 3 years ago

Can anyone point out a specific case where a plugin is unable to stop a block update to a noteblock?

Basically the same principle as mushrooms, you can't stop note block updating fully with a plugin without doing some roundabout stuff that sometimes works and is really buggy (see ItemsAdder and Lone's implementation of that). Having an option to disable all note block updates would make things infinitely easier for plugins.