Fork3X - A solo-driven and open-source F3X (BTools) mod

Free model | Testing place | GitHub


THIS PAGE IS LIKELY OUTDATED

Due to Roblox’s plan to age gate the DevForum as of March 18th, this post is no longer maintained as I do not tolerate age gating to share open-source material. Open-source is open, and doesn’t deserve to be age gated to be shared.

If you want to ask a question, you’re invited to consult my GitHub’s discussions category. With a GitHub account, you’ll be able to suggest things, ask for support, and etc…

I am not abandoning Fork3X as a whole because it’s a project for which I still have fun and motivation to work on. Because it’s free, stopping it will have no influence on Roblox’s future, and is just a way to stop me from having fun developing.

Thanks for understanding my choice, and feel free to ask anything in the GitHub!


Current version: v3.2.0 [LIKELY OUTDATED INFORMATION; CHECK THE GITHUB]

Check the latest announcement here

Introduction:

Fork3X is a mod of F3X’s building tools that aims to offer a wonderfully simple set of tools, alongside better customisability and control.

This fork’s main goal is to allow developers to choose how they want their building tools to work, look like, and also to manage their game in a better way (if used in-game).

Note Fork3X doesn’t aim to surpass built-in tools, and should be used in studio only to simplify.

Some features inside Fork3X
  • Marketplace Tool: mostly for in-game use, allows players to search images and meshes without opening the creator store.
  • Text Tool: write text on parts, without headache.
  • Transformation Tool: an unique union system that allows separation and saving without built-in tools.
  • Many security features to prevent various issues (griefing, lag bombing)
  • New UI system that allows optimal customisability.
  • A bunch of settings that allows you to apply lots of tweaks in a single place.
  • New features in tools here and there.
  • Saving and loading: as of v3.2.0, reduces greatly the size of builds without missing parts (or, you know, of what I hope).
  • Better mobile support: rectangle and soft selecting support out of the box.
  • With APIs set up, no more F3X servers issues
  • A few yet considerable optimisations, mostly regarding the explorer.
  • A wiki: okay, at the time writing, there’s just a nothingburger, but I’m working on expanding it.

Is Fork3X BETTER than F3X?

It’s all about expectations.

Fork3X might be a more interesting option if you want a simple way to modify F3X (aka letting me suffer in my side), new features, fixes, and a wiki that’s still being worked on.

Use F3X if you don’t want a potential bug terrarium, but rather a rock-solid tool that’s promised to always work.

The best is to try both and see which one fits you.


I have raidRoleplay in my game, is Fork3X a good idea?

Although raidRoleplay is old, it seems to work very well when used with Fork3X. Just expect the log to not print actions done with the new tools.


How do I get Fork3X?

As you may know, Roblox’s moderation does an EXCELLENT job, and forbids Fork3X from being uploaded on the creator store.

Instead, I prefer sharing Fork3X in the following ways:

On GitHub (plugin and in-game):

Click on the latest version in the right tab, and install the file according to your needs.

For in-game use, insert the downloaded file by right clicking on the desired location in your game and selecting the file in Insert → Import Roblox Model (in the new UI, this might be different in the old one).

On Roblox (in-game):

Open the test place in studio, and find your desired version in ServerStorage → Version.


In order to mount the plugin, head to %localappdata%/Roblox/Plugins, and drop the file you installed.

Remember to check the Options module when used in-game! There’s a lot of stuff you can tweak, mostly the old UI (you can find out how in the Q&A).


Can I make my own fork of Fork3X?

Of course! Fork3X is under a public license (unlicense), which basically means “Here’s what I made, do whatever you want with.”

So, yes, you can make your fork, use it in your admin system, or even sell it (wait, no, don’t do it, bad idea).


Q&A:

Click the arrow to open the Q&A
Q: What are every new features in Fork3X?
Tools

Resize Tool:
• Scaling with the resize tool: keep proportions while resizing
• Mesh resizing
• Increments limitations will remain up-to-date with Roblox’s

Material Tool:
• Shadow and massless settings wit the material tool
• Every single new materials are added and will be added if Roblox adds any automatically
• MaterialVariants support (can be blacklisted)
• Previews (NOTE: If Roblox adds any material or if you want to add material variants, please check the wiki to add their resepective previews)

New Part Tool:
• Specific instances can be blacklisted in the Options module
• New creatable instances can also be added via the Options module
Mesh Tool:
• Without an API key nor HTTP requests enabled, you can convert any accessorie, gear, or mesh the creator owns to a mesh ID, a texture ID, and VertexColor in rare cases (the Firebrand e. g.)
• After setting up an API key, you can convert any meshpart or mesh to their respective mesh ID and texture ID
• If enabled in the settings, players can choose how they want a mesh to fit their part (if the mesh isn’t returned by the F3X servers)
Texture Tool:
• Textures and decals can now have their tint changed
• A new thumbnail mode setting (formerly fast mode) to display images of other kinds of assets (or even players)
• Decal IDs will be converted into image IDs in any situation

Constraint Tool (formerly Weld Tool):
• 3 new constraints: ropes, rods and motors (I advise you to be careful with ropes and rods in public servers as people tend to use them for bad purposes)
Decorate Tool:
• 3 new effects: highlights, selection boxes and particle emitters
Marketplace Tool:
→ This tool allows people to search decals (with the very bad InsertService:GetFreeDecalsAsync() function) without an API key, and meshes (and also a better search system) with one
Text Tool:
→ This tool allows people to put filtered text on their parts, along with various settings and rich text support
Transformation Tool:
→ This tool can create unions and intersections that can be saved afterwards (as long as it isn’t split)
Attachment Tool:
→ This (seemingly simple and useless) tool allows you to add and access a part’s attachments without the explorer, and so offer more possibilities with certain tools

Security

• Permissions (with CheckPermission and SetPermission functions)
• Anti-unanchor bombing
• Anti-effects bombing
• Anti-player deleting (yes, you can kick people that way + it might bug so be careful)
• Anti-player characters selecting (with PlayerTolerance)
• Anti-player ungrouping (protects from death loops caused by humanoids parented in workspace)
• Anti-mesh absurd sizing (creates Z-Fighting + regularly used by hackers)
• Image blacklisting
• Anti-events overflowing (so spamming events to crash a server)
• Doom-meshes protection (spamming meshes with high triangle counts will be blocked)

• A ConsiderPart function to not allow people to select specific parts and not consider them when pointing at them
• Prism selections (aka select parts in a part) won’t select forbidden objects anymore (mostly objects in terrain)
• Names given to parts in-game will be filtered

Optimisations

• Removal of getfenv() from the code
• Most deprecated functions are gone
• Replaced most functions from SupportLibrary with their Roblox counterpart (QueryInstance is included by the way)
• Major explorer optimisations
• A few optimisations in the selection rectangle algorithm
• Various changes in the tools’ code: use of BulkMoveTo, transition from Vector3 to vector, etc…

Miscellaneous

• Saving/Loading utility that can be managed from the Options module
• A grouping utility to make grouping and ungrouping more intuitive
• Better access to the built-in notifications system with V2 UI (just add any notification you want via CustomCoreConnections with the Core.Notifications table and Core.NewNotification event)
• A button for prism selection (aka select parts in a part)
• A rectangle selection toggle for mobile users (so their camera locks when rectangle selecting)
• Several improvements concerning the explorer’s children’s label
• Better documentation for multiple tools
• Themes and profiles to customise the UI
• Sounds (you can put their volume to 0 if it disturbs you)
• Attachments support
• Webhook support: send messages to a webhook through your own module or the built-in one (made by someone whose resource has been scrapped)
• Added an option to not cause handles to lock the camera

PS: this list needs to be update with v3.2.0. Sorry for the inconvenience!

Q: Your fork damaged my game!

Fork3X is under a public license, which means I take no responsibility on a misuse or aftereffects of Fork3X. You can get some tips for a good implementation below.

Q: How shall I implement Fork3X?

The UI is a major issue of a bad implementation of Fork3X. Use GigsDark (the old UI) first and make CementDark optional.

As a reminder, I’m a solo developer, and have very limited timetables. I cannot promise Fork3X to be 100% bug-free, so be careful to not implement it too quickly (keep F3X as an option).

Bug reports and questions concerning setting up certain things in Fork3X are always welcome here.

Remember to not make the security too harsh. Try to use a strike system instead, or just send messages via a webhook (yes, there’s built-in support!)

Q: How do I ... in Fork3X?

Note this is only a non-exhaustive list of “tutorials” that can be found in the wiki and in the replies here:


How to add previews for material variants

You have to add a “ColorMap” attribute to each MaterialVariant. You can simply set this up in a matter of seconds with this command:

for _, MaterialVariant in game:GetService("MaterialService"):GetDescendants() do 	
	if MaterialVariant:IsA("MaterialVariant") then 
		MaterialVariant:SetAttribute("ColorMap",MaterialVariant.ColorMap) 
	end 
end

This should be the result (this screenshot is pretty old):

How to modify a function in the core module

You will be able to find a list of each core module’s functions very soon. Stay tuned!

Once you found the name of the function you want to erase (Core.ExportSelection → ExportSelection), you can put its name inside the CustomCoreFunctions table, along with your new function.

If you just want to change the function, remember to add the keybind as a second argument in your table.

Here is an example where I changed exporting with a new function:

CustomCoreFunctions = {
		ExportSelection = {function()
			print("This shouldn't export if done correctly.") -- You can remove this tho.
		end} -- OR end, "K"} if you want to keep/change the keybind (to K in this example).
	};

Q: Difference between profiles and themes?

Profiles were the former nightmare fuel of customisability. It consists to:

  • Drop two “Interfaces” and “UI” folders into another folder.
  • Dive into 3 hours of mental struggle to add illogical attributes to make it work well.
  • …look, it’s just bad, okay?

Themes are the new alternative that consists to modify the UI with components and a CSS (cascading style sheets) system. It’s just:

  • Using a Roblox built-in tool to edit different types of UI item.
  • Learn how to use selectors and be able to inject UI objects inside the UI.

You need little to no scripting knowledges to do so. You can even edit Roact (UI inside scripts very briefly) objects without Roact, which is really reassuring for most people (me included).

One of the first tutorials (after the API keys one) I’ll make will be centered on this. Stay tuned!

Q: What security features can be covered with Fork3X?

Taken from “Q: What are every new features in Fork3X?”:
• Permissions (with CheckPermission and SetPermission functions)
• Anti-unanchor bombing
• Anti-effects bombing
• Anti-player deleting (yes, you can kick people that way + it might bug so be careful)
• Anti-player characters selecting (with PlayerTolerance)
• Anti-player ungrouping (protects from death loops caused by humanoids parented in workspace)
• Anti-mesh absurd sizing (creates Z-Fighting + regularly used by hackers)
• Image blacklisting
• Anti-events overflowing (so spamming events to crash a server)
• Doom-meshes protection (spamming meshes with high triangle counts will be blocked)

	• A ConsiderPart function to not allow people to select specific parts and not consider them 			when pointing at them
	• Prism selections (aka select parts in a part) won't select forbidden objects anymore (mostly 			objects in terrain)
	• Names given to parts in-game will be filtered
Q: I am using v3.1.1 or lower and experience build losses!

This is due to table encoding, modifying the way elements are saved when there are blanks. Everything should be fixed in v3.2.0 and above.

Q: Do I have to credit you in the description?

Doing so would be very nice, but it’s not necessary since credits are found in the building tools.

Q: I hate the new UI!

Even if v3.2.0 brings essential improvements to the UI, note that UI designing isn’t my thing and that it’s completely fine to not like it.

You can use back the old UI this way (from “Q: How do I … in Fork3X?”):

Q: Why do the yellow/blue/any color bubbles stay even after unselecting?

This is not normal. That’s a common tomfoolery of mine. Please report it here if it ever happens.

Q: How is Fork3X's code?

I’d consider it as average. Although there is no type checking, the code should be mostly clean.

Anyway, don’t tire yourself trying to find crap in the code. It’s just F3X.

Q: Can I use a module inside Fork3X for my own projects?

I will try by 2026 to extract a few parts of Fork3X and open-source them alone. This allows me to offer the cleanest samples for uses outside Fork3X.

Q: Can you help me for a project?

I know it’s an unserious way to say it, but I am not made for communities. At all. You’re better off checking tutorials here or ask how to do something.

Q: Can I change the number of save slots?

Yes! As of v3.2.0, this can be changed, along with size limits.
Note that Roblox has a built-in datastore size limit of 1 MB, so avoid going over this quota with all saves together, despite the server’s effort to encode and reduce the save’s size.

Q: Can I use my own serialization module?

This is a feature that will probably get added. In the meantime, this is very possible. Simply replace the latest serialization module with your module and everything should work as expected.

Q: Are there flaws hackers can use?

The only particularity a hacker has compared to players is firing high rates of functions, causing the server to lag.

If too many events are fired, throttling will occur, making spamming useless, in addition of general securities.

Q: I want to support Fork3X!

I don’t want to earn money from Fork3X. I totally develop it as a passion, so simply using it in your game is the best way to support Fork3X.

Q: Why is there no files in my Fork3X tools?

This is a problem in early v3.2.0 versions caused by the StoreFilesInPlayer setting.

I’ll quote the part of the announcement that addresses the forementioned issue:

Q: I want to contact you for something

I can be reached in the following ways depending on the scenario:

This thread (you need a DevForum account with a member trust level):

  • Report bugs
  • Give feedback
  • Ask questions about Fork3X’s development and scripting

Private messages (you only need a DevForum account to do so):

  • Small help requests (if you try to accomplish something with Fork3X)

→ I DON’T take commissions. I just don’t want to earn money off Fork3X, and if I have to work with people for free, everyone can hire me for free. This is something I want to avoid, hence why I will refuse any request.

GitHub:

  • Bug reports
  • Pull requests: if you know how to fix something, you can suggest your fix here
Q: If I update to the newest version, will my saves be erased?

No! Every saves will remain intact and loadable normally. Once you save again, anything that got added in v3.2.0 will be saved as well.


Polls:

In order to allow people to give out a quick feedback, you can answer the following polls:

Do you use F3X?
  • They’re my daily building tools
  • I use them eventually
  • I know what it is, but I (almost) never use(d) it
  • What’s F3X?
0 voters
If you’re interested in using Fork3X, what’s the main reason?
  • I love the new UI
  • The new tools are life changing
  • Less lag
  • More customisability
  • The creator is helpful
  • It makes things simpler
0 voters

↓ (sorry for the typo)

If there had to be something that disturbs you with Fork3X, what it is?
  • It’s buggy
  • The updates aren’t frequent enough
  • It’s less “optimised” than I expected
  • The amount of settings disturbs me
  • It has become viral now
  • It’s more complicated than I thought
0 voters
If you used Fork3X, how did you install it?
  • I used the GitHub
  • I used the testing place
0 voters
How do you rate your scripting skills?
  • I’m experienced
  • I’m a beginner
  • I’m not a scripter
0 voters
Do you think Fork3X should have a different handle (the block you hold)?
  • Yes
  • No
0 voters

Thanks for reading. Feel free to write your feedback, doubts, and bug reports if you have any.

78 Likes

as someone who has tried to pick apart the original F3X tools for my own use, having someone else do it and opensource it is quite nice, I do wonder if you changed the box collision detection, since it was written back in 2013-14, and wasn’t using any of the modern methods, it was just math checking for intersections, and the original writer(AxisAngle) for the collision detection they were using said WorldRoot:GetPartsInPart(and similar) would be better to use when I asked him about it.

so I guess mostly what I’m asking, is did you replace all the deprecated stuff with the newer variants(swapping to task library, Connect vs connect, etc)?

10 Likes

I still didn’t do a lot for that. I wanted to release the plugin in some time and patch those things. However I can promise that what’s new has some fresh code. I just first wanted to have a first review on the stability, but thanks for pointing out!

It uses the new method tho. F3X released some silent updates, including one with this.

5 Likes

what is going on with the takedown of resources, seriously

99% of plugins get taken down for no reason once in their lifespan

3 Likes

it’s roblox “preventing” virus/hack systems from free models, meaning they pretty much just block anything with a script that requires via ID(instead of explorer path), uses loadstring, or genfenv, instead of doing a more indepth investigation as to what it’s requiring/loading/generating.
the annoying part is I believe it’s an automated system, so it often gets false claims as well

1 Like

really? the version of the tool I have doesn’t, guess it could just be an outdated version

2 Likes

Well, I remember it doesn’t use the old method, but the latest release on GitHub is from 2017, and it got updated last time in 2025.

EDIT: For your consideration, the Region module (which is AxisAngle’s module) is still in the Building tools, however it isn’t used at all.

1 Like

I just released a minuscule change to the GitHub. I recreated it as a fork from the F3X’s GitHub to respect their work.

Anyway, the v.3.0.1 released, alongside with the plugin! You can learn how to set it up by looking at the update log. I’ll quote it for you:

Enjoy the update!

1 Like

bug
There’s an issue on the help pane of Anchor tools, shown in the image attached. Can you fix?

3 Likes

I am aware of this issue and will fix in in v3.0.2.

I developed this product and in order to get feedback, I developed it in a game that had some fame. I wanted to re-use the rich text from the anchor tool and mistakely took it as the decoration tool.

By the way, next update will fix the scale mode when selecting multiple parts, a bug where you get both resize and move handles at the same time when using resize tool on an attachment, and update the documentation (this one included).

Also, remember this project may look stable, but it’s actually more “beta” than you may think. Your feedback is very thankful! :+1:

Just as a note, I am not sure if the update will come today or tomorrow, but all I can promise is that it will be fixed soon.

1 Like

v3.0.2 just released!


For the third release, I’ll remind that three is the charm. So what does that mean? That a lot of stuff has been done, mostly concerning the documentation!


What’s added in v.3.0.2

  • Greatly fixed the scale mode for the resize tool, that didn’t work correctly with multi-parts selections, and even increments with meshes.
  • Made the global mode for the move tool giving the possibility to move attachments globally (instead of the error displayed).
  • Added global rotation for attachments, albeit potentially buggy.
  • Most “F3X” logos have been replaced with “Fork3X” to allow people to recognize the Fork3X more easily.
  • Changed the non-fitting documentation window’s background, with “Fork3X” written in the background to improve aesthetics.
  • Made the documentation window’s tool’s title better-looking.
  • Greatly expanded the documentation for the Paint Tool, the Surface Tool, the Material Tool, the Texture Tool and for the Transformation Tool.
  • Fixed the wrong text in the Anchor Tool (thank you @sytesn)
  • New optimizations, mostly concerning wait() (-> task.wait)

Oh, and about the GitHub, I’ll be updating the files from the original F3X fork those next days. Enjoy!

4 Likes

v3.0.3 is under testing, and I need your opinion!


The v3.0.3 will attempt to make the UI more modern. The F3X building tools, which were developed for a good time now, do have a lot of things that aren’t harmonious at all: like, compare the selection rectangle to the dock! It seems very strange for most of you.

So I decided to refresh the UI a bit, and here are some previews:


Screenshot 2025-04-27 120549!

I need your opinion on that new UI you can find on the GitHub or in the test place. Your feedback is precious! Oh, and do you prefer the dock found above (not rounded) or the one below (rounded):

Which one do you prefer?
  • Non-rounded one
  • Rounded one

0 voters

2 Likes

do you think it would be possible to add support for MaterialVariants?

1 Like

Nice question you ask. I actually planned to support it in the future. The code I made is already almost ready to support MaterialVariant, and it’s great you remind me to add this in the v3.0.3!

EDIT: I added MaterialVariants in the system, but because of the extreme MaterialService’s constraints, you cannot have previews out of the box in-game.

So I managed to add a workaround which is to add a “ColorMap” attribute to the MaterialVariants. You’ll be able to simply set this up in a matter of seconds with this command:

for _, MaterialVariant in game:GetService("MaterialService"):GetDescendants() do 	
	if MaterialVariant:IsA("MaterialVariant") then 
		MaterialVariant:SetAttribute("ColorMap",MaterialVariant.ColorMap) 
	end 
end

Whatsoever, the result seems pretty functional:

3 Likes

Im very interested in implementing this in my game! Would you add me so we could talk more about this, your help would be greatly appreciated :smiley:

3 Likes

You can also ask for help here or via DMs if it’s specific to your game! There’s 0 problem.

To set this up, like I said before:

So you can download the file from the GitHub depending on your need, or if you want something safer, you can also open the uncopylocked place, take the Building Tools, and use them for your own purposes.

If you wonder about the plugin, you can also download the .rbxmx file and put it in Users → YourUserNameHere → AppData (it’s hidden, you can simply add it to the address bar) → Local → Roblox → Plugins, or just, in the uncopylocked place, right-click the building tools and click on “Save as Local Plugin…”

You can also have fun doing whatever you want with the code. It is 100% open-source. Otherwisely, I think that this will fit your game very well.

2 Likes

thank you so much omg as an f3x connoisseur this is the highlight of my month

only took a quick peek at the post, so dont know if there is plot support for this yet

1 Like

I think it’s already supported before. It’s just because the code is horrible and doesn’t let us understand how to make plots.

I personally never experienced them. I planned to make a documentation, so maybe will this help.

1 Like

Behold, the v3.0.3-

Oh, nevermind, it will be skipped! Actually, I will directly aim for a bigger update which is v3.1.0. It will include a whole UI overhaul (with the choice of keeping the old one and adding themes), hence why it takes a lot of time to come.

You know, I don’t want to ruin a product because of a UI. Lots of you prefer the blocky UI, whereas other people might prefer the rounded one. It’s completely normal. I don’t want to force something no one asked, so I rather taking my time to really make this an update, not a revamp.


Here’s a list of the things that are promised to be added in this version:

  • A new default interface that’s made to fit the Chrome UI better.
  • Themes: create your own Roact modules, interfaces, and share them to everyone in ease.
  • Support for material variants (thank you @xNick25 for the idea!)
  • Mesh resizing: I noticed that resizing doesn’t change meshes, which is pretty annoying.
  • Removal of many deprecated properties (Velocity → AssemblyLinearVelocity)
  • Ability to disable some properties on tools (disable particle emitters and highlights, etc…)
  • More flexibility in the code: the indicator text will have the possibility to be tweened, and other things like that.

About optimizations, I might maybe optimize rectangle selection to only search from unlocked parts to prevent freezes upon ending rectange selection (mostly thinking about games like BYBAT which has a lot of instances).

I hope this list will excite you for the next update! I can send some sneek peaks of the new yet unfinished UI. The samples I posted a week ago are strictly different.

1 Like

hey, i found very easy to replicate bug(s)

just select a part, delete it, then undo, then your kicked.

if you select 10K+ parts, the game kicks you as a fatal error occurs

mby also expand the decal search box, since its very small

ALSO btw if you could, let us be able to play sounds when a user selects/clicks, deselects, deletes, and copies a part.

tysm this project is amazing

2 Likes