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

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.

11 Likes

Nice thanks for this awesome resource

1 Like

Much better than the other one, great job!

1 Like

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.

updates

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.
1 Like

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.

2 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.