Basic Player to Player in-game email support

That’d be a decent idea. Maybe just have a config that can enable or disable more specific groups of functions. Although I guess they may need to go through a lot of stuff with a fine tooth comb to make sure they handle everything.

1 Like

@octoshrimpy
Nice Idea. But the problem is that 50 plugins for each command take way too much RAM to use. I am currently rewriting UltimateCore and I will make it so when a command is disabled, it doesnt cost any CPU or RAM.

Nooonononoo… all the commands are in the same plugin, but all of them are toggleable from within a command file. of course, they’ be comented with explanations, and other command dependencies (/r won’t work without /msg and so forth)

When you toggle them off are they loaded into memory at start or does it selectively load assets and dependencies?

onStart it checks for which ones are active, and only loads the ones that are marked as true. :)

UltimateCore has a system to disable commands in the config.yml file. You can just add the command to the list :slight_smile:

1 Like

Essentials uses lazy class loading for commands, meaning that java doesn’t know the class file exists until someone tries to use it (it even checks permissions first!). That means if you don’t give anyone permission to use ‘/whois’ the code required to run ‘/whois’ won’t be loaded.

For non-command functions like Jails, this is slightly different. With this Essentials does a quick check to see if the feature is enabled, and if it is valid, for example, is there any jails set. If it isn’t Essentials will either skip registering or de-register the event listener meaning Essentials won’t even attempt to listen to unrequired events.

For people who use /timings at the moment, they would be able to test this by trying /setjail and /deljail, to create an delete jails, and seeing if the jail event listeners show up.

Assuming I get around to releasing a version of Essentials for Sponge, I will bake in the same features.

2 Likes

So you want to make sure offline players receive the message if they get online?
Can be done with a plugin WITHOUT having to worry about databases. So far I understood plugins will have access to NBT of entities. So its very simple.

If the player isn’t online, store message in NBT of the player. When player joins check messages and send them. No API functionality needed at all.

The problem is that you’re suggesting functionality that doesn’t translate to something generic. It has a single use case that cannot be attributed any sort of “reuse”, and thus has no place in Sponge. The functionality can be broken into three phases (online status detection on message sent, message storage, and message sending on player join), all of which can be not only handled by a plugin (all the required hotspots will exist), but abstracted away into an API by a plugin, if that’s what you want.

Or, you know, you could do things the right way and not fuck around with NBT stuff when there is absolutely no reason to do so.

1 Like

NBT is 100% safe (as long you don’t overwrite existing tags). Also notice, if sponge would have a offline message system I am positive that this will happen through NBT.

On the surface, I like the idea of using NBTs as a cleaner way (file storage wise) to do things, but what if someone sends tons and tons of messages to a user? Is it possible to make the NBT file large enough that the server suffers while loading the player data? Or is it possible to use such a feature to break the NBT format?

If both of those are negligible, then I wouldn’t mind. If you have a specific reason otherwise @garbagemule, it’d be nice if you elaborated on that rather than apparently flaming someone for their suggestions.

I’m sorry you misinterpreted my comment as “flaming someone”. I couldn’t care less about the “someone” posting a suggestion (we’re all nobodies here anyway), it’s the suggestion itself that is upsetting. However, if messing around with NBT is actually considered the “safer” or “cleaner” way to do persistent data storage, I have no interest in continuing a discussion down that road. I have no obligation to teach (sometimes I like to do so, other times I don’t), and this time I choose to throw my hands in the air and walk away. Why? Because the presented tone is as stubborn as my own, and a man convinced against his will is of the same opinion still. Proponents of bad practices will at some point burn themselves, and hopefully learn from their mistakes. Until then, they’re rubber, and I am glue (or should be), so take my sarcasm with a grain of salt.

I can’t speak for how stubborn @thomas15v is, but I’d like to know why modifying NBTs is a bad thing. Not that I intend to retort, because I’ve no idea if it is a good or bad thing. I’d simply like to know some potentially helpful information (maybe for others as well). Maybe even a source to your opinion would be nice.

The fact that you only want to state your opinion in such a blatant manner without backing it up makes you come across as inflammatory, and makes it seem like you don’t actually have evidence to support your claim, which could in fact (if true) be quite beneficial to this discussion.

People think modifying NBT is bad because bukkit never allowed it. Also when not used carefully it can break stuff (especially when used in forge). So far I know sponge will allow changing NBT, but off course a bit more limited. So you never can break the map with it.

So to describe it fast:
advantages:

  • No need to open a second stream to save data (+Speed)
  • Your player object contains the data you need (+less code lines)
    disadvantages:
  • Other plugins can edit your data easily
  • Usage of wrong key name can break the map (pluginname:key would solve this).

I can imagine it could be unsafe. It’d make sense that Sponge’s API only allow plugins to have access to NBT objects with the plugins name as a key. Maybe even embedded in a Sponge object, to keep from spamming the root object with entries.

I can see that setting some plugins to a disadvantage if for some reason they need access to other NBTs to perform certain functions, but I guess that’s what the API is for, and wouldn’t be such a bad thing if Sponge had a sane mutators for the other NBTs.

I’m not sure where I’m needed, as thomas15v does a great job of making nonsense claims and then contradicting himself. His arguments are akin to “stabbing yourself in the gut is 100% safe as long as you use a sterilized blade and don’t hit any vital organs”. It’s also 100% safe to send a perfectly constructed SQL update without any errors directly into your production DBMS. The problem is that humans are stupid and make mistakes. But like I said in my previous post, some people need to make those mistakes and get burnt by them before they learn.

The worst kind of programmer is the one who thinks he is incapable of error and justifies bad practices with “I know what I’m doing”.

*throws his hands in the air and walks away yet again*

1 Like

You sound like the self-righteous one here, @garbagemule, if there’s some definite issue with NBT alterations that you for some reason know that no one else here knows about, you’d think it’d help to fill us in. Instead you play the “I’m better than you and you can figure it out yourself” crap. If you don’t have anything constructive to say, perhaps the Sponge community isn’t somewhere you belong.

As far as I’m concerned, the worst kind of IT professional is the self-righteous sort that give others alike a bad name.

3 Likes

It would be nice if you could formulate your tantrum as a question, rather than a statement. That way I’d stand a chance at answering it. I figured my analogies were enough to explain the issues I’ve hinted at, but if they’re not, feel free to actually ask instead of lashing out :3

Agreed. No need for this kind of behavior.

2 Likes

This has been explained here.