Blueberry Plus - the safer, optimized, better alternative to Blueberry System

:warning:Due to the shutdown of Session 42 Studios, this module no longer receives updates and is no longer supported. Free support is no longer available.

Months after the release of my original product, Blueberry System, which dozens of users have rated, here I am releasing its better, safer, optimized alternative. I took all the constructive feedback from the classic Blueberry thread and used it to solve everyone’s concern(s).
Blueberry is a moderation framework meant to replace kicking with UI-based punishment screens. As most of us know, UIs aren’t efficient at all when it comes to exploiters. So security would be a big issue in moderating using this method. Therefore, Blueberry Plus will finally be able to teleport the moderated users to a reserved place, where they can do no harm.

As mentioned, this model is meant to operate in 2 different places (but still part of the same universe). One of the places will be your main experience, where the actual gameplay happens, and the other one will be a separate, reserved, isolated place where the moderated players will land.

Step 1: Install the model in the main game
You can get the Blueberry Plus model here;

Insert the folder into ServerScriptService. Make sure the folder is named as default. Changing its name may break the model.

Enable HTTP Requests and Studio Access to API Services in the Game Settings (make sure the game is saved or published to ROBLOX). These two are required for the Replicated API (panel) rank check and the DataStoreService.

Head to the Settings module and configure it as you like.

Step 2: Make a reserved place
You can see a full tutorial here:

Head to the Asset Manager and add a new place. After that, right-click on it and copy its ID.

Step 3: Paste the reserved place ID to the main game model
After you have the reserved place ID, head back to the main game model Settings file and paste the number in the indicated field (usually the first).

Step 4: Install the reserved place model
You can get the model for the reserved place here;

Just like before, insert it into ServerScriptService and configure the Settings module without modifying the name of the files.

Enable HTTP Requests and Studio Access to API Services in the Game Settings (make sure the game is saved or published to ROBLOX). These two are required for the webhook system and the DataStoreService.

In the required space, add the ID of the place where you wish the user to be teleported if they accepted a warning or if their temp-ban period has ended.

Step 5: Done.
If everything is set up as described above, everything should work well. If there are any kind of errors, please contact us via DevForum or the links at the bottom.

As said, Blueberry Plus no longer punishes the user inside the same server. The system will attempt to teleport the suspect to a reserved server where a punishment screen/UI will be shown. Exploiters can easily disable that punishment UI, but they can’t harm the gameplay as they are in an isolated server (yes, teleportation is handled by the server). It’s recommended that the reserved place is empty so they can’t abuse anything (such as RemoteEvents).

Of course that the moderation panel itself is a small part of Blueberry Plus. Just like the classic system, it comes with a set of API functions to allow you to use it in your own scripts.

Require the API module:

local BlueberryPlus = require(game:GetService("ServerScriptService"):WaitForChild("BlueberryPlus"):WaitForChild("API"))

API functions:

  • BlueberryPlus:createWarning(target, reason, moderator)
  • BlueberryPlus:removeWarning(target, reason, moderator)
  • BlueberryPlus:kick(target, reason, moderator)
  • BlueberryPlus:tempBan(target, duration, reason, moderator)
  • BlueberryPlus:removeTempBan(target, reason, moderator)
  • BlueberryPlus:permBan(target, reason, moderator)
  • BlueberryPlus:removeTempBan(target, reason, moderator)
  • BlueberryPlus:slock(min_rank, reason, moderator)
  • BlueberryPlus:unslock(reason, moderator)

target should be a player instance, player user ID (number), or player username (string).
reason should be a string.
moderator should be a string.
duration should be a number.
min_rank should be a number,

You can contribute by reporting system errors, issues, vulnerabilities, etc., or suggesting new features. You can do this via our Discord server, via the Session 42 Studios knowledge base, or via DevForum (messaging me).

Also, you could add credits to Session 42 Studios if you use the model (not mandatory, of course).



Thank you for stopping by. I really hope that this upgrade solved everyone’s concerns regarding security, optimization, memory usage, etc.
Please note that this product is distributed for free and all the work we do is voluntary. Please keep suggestions and reports in a friendly tone and do not hate.

There might be bugs as the system is new. Please report them on our server or via our support website.

:exclamation: Important: Roblox has a delay of a few seconds before it teleports the player to another server. Have that in mind when using Blueberry Plus. When using the panel, please be patient after submitting your request. It takes a while for us to check if the user’s rank is higher or lower than the target’s rank.

:exclamation: Important: We sometimes use our own Roblox API proxy, which can experience several downtimes. The panel requires the proxy to check the target’s rank. Server-side actions that you request via Blueberry+ API won’t be affected.

Updates should happen automatically.

19 Likes

Nice thanks for this awesome resource

1 Like

Much better than the other one, great job!

2 Likes

Just saw this while scrolling through Community Resources, this looks great! Can’t wait to use this in my next game!

1 Like

This is solid. Good work. Do you have a fallback for if/when a teleport fails, or will it simply allow the player to stay in the game?

4 Likes

I did not think about that yet, but thanks for bringing it to my attention. Will fix soon.

Update log 1.02

**Release date: 11/20/2022**
[/] Converted all ServerSync subscriptions into one to save up server subscriptions. Blueberry Plus now uses only one MessagingService subscription.
Update log - 1.01

Update log 1.01

**Release date: 09/22/2022**
[/] Added protected calls to all teleporation functions. If the teleporation fails, the player will be kicked.
2 Likes

Is there a reason why teleporting is better than just kicking the player? I really don’t see the difference.

Well, UX and customization. Besides, Roblox even added a new-line character restriction which made normal kicking a little worse.

3 Likes

Teleportservice might fail, what backup do you have if it does?

1 Like

As stated in the update log above, every teleportation function is inside a pcall. If it fails, the player will be kicked normally.

1 Like

Hey! I am not sure how frequently this is being updated but if you are still looking for ideas and have the time to continue adding to this excellent resource consider adding a votekick and arrest function. The arrest function would work like timeban but with limited minutes and would teleport into a jail place for a certain amount of time and the votekick would allow mods to start a votekick on abusers. I like this type of thing because many groups like introducing moderation tools slowly to group roles and transitioning more smoothly from LR to MR to HR and this type of thing would really be helpful. The group Target uses a similar system.

1 Like

@InfiniteBlackPIX Hi, how would I go about using player IDs instead of group IDs to handle permissions? The game doesn’t have a specific group, and I don’t want to give everyone above or equal to the minRank that I’d set access to the panel anyway

Hi! This feature is currently not available on Blueberry. However, we’ll clearly consider adding it in the future. Blueberry requires a group to count permissions at this moment.

What’s the difference between BlueBerry Plus and the other Blueberry version?

Pretty huge if you would read the post. Blueberry Plus teleports the player to an isolated server where they can do no harm, while Blueberry Classic only pushes an UI to the players and removes their character.

1 Like

Whilst the Developer has made a number of improvements, both visually and functionally, I would still advise against using this system for the following reasons:

  1. “:SetAsync” has a number of seemingly pointless and problematic obstacles, such as requiring the server to “:PublishAsync” to temporarily/permanently ban the player. I used the word “problematic,” as this addition requires that a second server exists before banning the player. See MessagingService | Roblox Creator Documentation
  2. There are a cluster of unnecessary and redundant scripts, such as having a script inside each button listening for events, rather than having one script listen for events.
  3. The UI still looks objectively bad, dark purple text on a dark background doesn’t fit, and is another eye-sore. (Learn about complimentary colors)
  4. Entering a UserID does not work for temp-ban/perm-ban/warn, and results in an obscure error about "not being valid.” This is a fairly basic mistake to make, and would have been caught with proper QA (that likely didn’t happen here).
  5. You can’t view someone’s warnings, (it only shows that they have been warned), making a warning system pointless.
  6. There’s zero permissions system besides that of group ranks; most players do not want to pay R$100 to use an “easy to use” Moderation System.
  7. Using a custom kick screen for a “kick” is pointless, and such only adds unnecessary complexity to an already simple matter (though, to be fair, new-lines being disabled makes this less-egregious).

If these issues are fixed, I will amend my review and recommendation accordingly.

2 Likes
  1. Assuming you’re talking about datastores, I am pretty sure it was mentioned that Blueberry Plus uses ProfileService internally to handle datastores so I don’t understand the issue
  2. I agree with this, and with 3. having only 1 script that handles the UIs would make customization easier, and the default UIs do honestly need a bit of help, though you can just edit the UIs in the mainmodule to have them look however you want them to.
  3. I’m pretty sure they only support usernames, but it’d be pretty easy to make a toggle that lets you input both usernames and UserIds. However if a staff member finds an exploiter or someone breaking the rules while playing the game, I don’t think they’d go to the target’s profile to get their UserId and just entering their username would be the best option in that case.
  1. I agree with this, I personally don’t understand why the warning system was implemented as it doesn’t really do anything; and even then, it’d be better to just show the player the UI like Blueberry Classic did for warnings for example so players don’t have to wait for the game to teleport them to the moderation place and then back again when agreeing to the warning.
  2. Agreed, though it’s fairly easy to find groups with no owner and claim them if they’re not locked (only works if you have “manage allies” permission in a group, so you can search for a group in the “add allies” thing, then check if the group has an owner, if not, you can claim it), and infact I got 5 or more groups using this method a few years ago
  3. I would agree but then again, newlines were disabled, so this is the best we got now, I guess

Just to clarify some things, I had a specific look at the internal code “Blueberry Plus” uses, and I can confirm that it uses MessagingService to send bans and temp bans, which requires that a second server exists (to receive that communication).

I also saw no remnants of ProfileService anywhere.

1 Like