Artwork By vitawrap 
 

What is Blockland Rebuilt? 
    Blockland Rebuilt is the future of B4v21 - it is a version of Blockland that we have full source code access of, allowing us to create new feature updates the game has never seen before. Clay Hanson has been spending many months decompiling and reverse-engineering both v20 and v21, merging features of both into one game, while adding brand new features along the way. We have made a version of Blockland that lets you play on old maps while also running v21 shaders, use v21 environment controls, load v21 gamemodes, along with other brand new features Blockland has never seen before.

Want to see what the biggest new features of Rebuilt are? Watch this video showing them all off:




    The above video goes through all of Rebuilt's biggest features along with some smaller ones, but if you want an even more comprehensive list of changes and additions, see the very bottom of this page.

    Having source code access to Blockland is a dream come true. We are no longer having to put up with how restrictive it is to only have a compiled exe from over a decade ago - we can now fundamentally modify the engine, properly debug crashes, profile performance and more. So far our main focus has just been to try and replicate regular Blockland as best as we can, which has been a very long process. With this release we believe almost all functionality has been replicated. Most of all Blockland add-ons that work in v21 should work here too, but let us know in the discord if this isn't the case.

    Of course though we're still working with the old Torque Game Engine, and this is being created entirely out of passion in our free time, so don't expect miracles or Brickadia-level quality. We'll just keep adding cool new stuff, and see how far we can go. We don't have any intention to try and move the entirety of Blockland to a new game engine.

    Thank you all for the support, and for continuing to be a great community. This is a gigantic step forward for B4v21 - it shifts us away from having a specific focus on "old blockland", instead now focusing on just making the best Blockland we can. We have only been able to maintain motivation for this because of having such a great community to be with, free of the typical toxicity that has always plagued Blockland. Brickadia will be truly fantastic, but lets let Blockland live on too.

 

Where can I suggest features / report bugs? 
We are opening up an issue board for the community to be able to report any problems they encounter with the game. Please check if someone has reported your bug already as we don't want a whole lot of duplicated reports. You can also suggest new game features here, though keep suggestions realistic and only expect us to ever get to a few of them. Again, check if its already been suggested first.


 
 

Important Tidbits 

NOTE 1: Although we have the brick system working and looking nice, it isn't as performant as v20's or v21's brick system yet. Expect FPS to drop quickly with a lot of bricks. We will try our very best to address this over time.


NOTE 2: AMD graphics cards will have some amount of visual issues, but hopefully only minor ones. AMD updated their graphics drivers back around the summer of 2022 to completely redo OpenGL support, and in the process broke a lot of rendering for torque games. Nobody on the Rebuilt team has an AMD GPU so we can't personally debug this ourselves, but we believe we have solved the most major problems at least. We're really hoping no more major issues about this appear.
 
 

Downloads 
 File  Version  Size   
B4v21 Launcher (Recommended)v1.2.65.48 MB
Blockland Rebuilt (Direct Download)v2.758.62 MB
Blockland Rebuilt for Linux (Direct Download)N/AN/ANot Available
 

Official Screenshots 
 

Changelog 

All changes Rebuilt made from Retail Blockland v20/v21

 
 

v2.2

 - Added
/clearmusic
command
 - Added functions
getURLProtocol
,
getURLDomain
,
getURLPort
,
getURLPath
,
getURLQuery
and
getURLFragment
 - Added function
strMatch
 - GuiBackgroundCtrl: Added
keepCached
 - Added
GuiModalessProgressProfile
default profile
 - Added
GuiTextCtrl::getTextSize
,
getTextSizeFromFont
and
GuiControlProfile::getTextSize
 - ShapeBase: Sequences can now be played from a start position to an end position at a specific speed
 - StringArray: Added
findIndex
method
 
 

v2.1

 - Events: You can now use "setVehicle", "respawn" and "respawnVehicle" from "OnRelay"
 - GUI: Updated BlockWindow.png to have disabled buttons
  - GuiControlProfile: Added 'disabledButtons' field
 - Forcibly set current working directory to exe's path on startup. Can be disabled with '-portable' arg
 - MLText: Added
getSanitizedTextIDArg
function
 - Added
uGetSubStr
,
uStrLen
and
uStrPos
for UTF8 strings
 
 

v2.0

 - BL Rebuilt now runs as native 64-bit!
 - Entire localisation system added, letting you swap game language using language addon packs!
  - only English is included by default, but you can make your own custom languages - see the included "Locale_English" add-on to see how its done
  - the game now has far wider unicode support now, letting you use a far wider range of unicode characters
  - TorqueScript: Added "\u" escape sequence for unicode
 - Torque's CPU info method now retrieves CPU name properly
 - Torque's OS detection can now detect if running under Wine on linux
 - Added toggle in options menu for if to display seperate console window on game launch or not
 - ShapeBase: Implemented
getThreadCount
,
getThreadSequenceName
,
getThreadSequencePos
,
getThreadSequenceSpeed
,
isThreadPlaying
and
isThreadPlayingForward
.
 - GuiTextEditCtrl: Added Ctrl+A functionality, so you can now "select all" easily
 
 

v1.8

 - Added entirely new feature for bricks with missing brick icons to have icons generated for them automatically
  - Implemented as the add-on Client_RealBrickIcons so you can remove if wanted
  - Hovering over these with your mouse causes a 3d spin effect similar to Brickadia's brick menu
 - Removed the v20 demo brick restriction, now the demo functions just like modern v21
 - Dedicated servers can now upload crash logs using the function
UploadAllCrashLogs();
- feel free to do this to help us out in diagnosing server crashes
 - GuiButtonBaseCtrl: Implemented callback
onMouseLeave
 - GuiControl: Implemented
setScriptClassName
and
setSuperClassName
 - New function
VectorCreateFromAzimuthElevation
 
 

v1.7

 - Added entirely new 3D view on the main menu, showing brick saves
  - Implemented as the add-on Client_MainMenuBuildShowcase so you can remove if wanted
  - Uses a custom save format 'blrs' which allows for defining custom stuff like camera properties, environment options, etc
  - Uses GuiCustomSceneCtrl, now updated to be able to render entire builds, render skybox and have much better camera control
 - Multi-threaded the Windows Console, so the game no longer slows down when printing a lot of new lines
  - Added much better color support, so for example errors are now properly printed red, etc
  - Added live progress bar for manifest generation
  - Can be disabled using
-consoleNoThread
if this causes problems
 - Added
$Pref::Video::FrameLimit
which limits the max FPS the game renders at, by default this is set to
300
 - Added .GIF image support, on just GuiBitmapCtrl for now
  - Can be buggy at the moment - gifs can appear incorrectly or crash
 - Added entire new crash logging system to help us diagnose crashes
  - Generates crashlogs in 'crashlogs' folder
  - Asks if you wish to upload crashlogs to us automatically
 - Added
outlinea
tag for transparent outlines
 - Added new functions to help with Box3F calculations:
BoxCreate
,
BoxEncapsulate
,
BoxCenter
,
BoxLen
 - Fixed fileCopy not working for files inside zips
 - New function
getRandomF
 - New function
mInt2Hex
 
 

v1.5

 - Added seperate music volume slider, letting you adjust music volume seperate from game volume, with additional mute buttons
 - Added
isMusic
argument for sounds to be affected by seperate music volume slider
 - Added
minPitch
and
maxPitch
to AudioProfile to let sounds have a random pitch variation each play
 - Fixed console input not working on Wine
 - Added
/clearProjectiles
 - Implemented new feature
setScreenFlash(duration in MS, ColorF start color, ColorF end color)
to let you flash any color you'd like on clients rather than just red and white, can be used on GameConnection and ShapeBase
 - Increased font size limit from v20's default of 64 to 128
 - Added
ShapeBase::setShapeNameFx
, allowing text fx to be used on ShapeNames
 - Removed direct damage clamp on projectiles, no longer limited to 100 max
 - GuiBitmapCtrl can now spin around and the bitmap itself can be flipped
 
 

v1.4

 - Added 'find' function for finding functions rather than only relying on tab autocomplete
 - New functions:
getWelcomeMessageString(client)
,
getJoinMessageString(client)
and
getAdminLevelChangeString(client, rank, method)
- re-define these to change these messages easily
 - Merged Event_Vehicle into main scripts (Thanks z0w0 for permission)
 - Fixed not being able to see first-person shapes in mirrors
 - ObjectAnimator: Add ShapeBase_SmoothRecolorNode layer
 - ObjectAnimator: Added ability to specify ease method
 
 

v1.3

 - Fixed the specularity of brickSIDE texture, so bricks look properly shiny now
 - addDamageType error now errors to console instead of announcing in in-game chat
 - Removed hardcoded admin requirement for Event_Zone events
 - New GUI class GuiVerticalListCtrl
 - New GUI class GuiBackgroundCtrl, is now used for main menu screenshot slideshow background
 - Added ability to host servers that aren't listed on the server list using pref $Pref::Server::PostToMasterServer, also with launch arg
-noMasterServer
 - GuiTextCtrl: Added
getPixelHeight
method
 -
enableWinConsole
can now hide console window
 - Added
NetObject::setIsGhostable
,
NetObject::getIsGhostable
,
NetObject::getCanAutoScope
methods
 - Added
Player::setJumpForce
,
Player::resetJumpForce
and
Player::getJumpForce
methods
 
 

v1.2

 - Implemented Selective Ghosting
  -
NetObject::setCanAutoScope(bool)
controls whether an object can automatically be scoped to a client. If it's set to 'false', then you'll have to use
NetObject::scopeToClient(client)
to actually send it to a client
  -
NetObject::scopeToClient
and
NetObject::clearScopeToClient
have been updated to allow scoping / unscoping to all clients, not just local ones
 - Implemented Borderless graphics option, letting you have borderless fullscreen
 - AIPlayer: Added
setMoveYaw
,
clearMoveYaw
,
getMoveYaw
,
getAimVector
 - Added text effect <fx:5> for swirly
 
 

v1.1

 - Added cool text effects:
  - <fx:1> for rainbow
  - <fx:2> for wavy
  - <fx:3> for shaky
  - <fx:4> for blink
  - <fx:0> to clear
 
 

v1.0

 - Later version of the mission editor is here, due to starting on a newer torque version (1.5.1)
 - Incorrect terrain color channels isnt present
 - Completely messed up animated lighting on interiors not present
 - Game no longer crashes when deleting the sky object, now you get similar framebuffer effect as v21
 - Intentionally left out engine code to force game window focus (like when loading the main menu or when quitting a server)
 - Added pitched audio play methods (GameConnection::playPitched2D and GameConnection::playPitched3D) -- no longer have to constantly change timescale to play pitched sounds!
 - Implemented v21 FOV slider (changes live)
 - View distance limit isnt implemented, but game still crashes if too much terrain is rendered
 - Mirrors weren't removed from the engine, so they function again. Still buggy, slow and sometimes crashy though. These are disabled by default, you can enable in Options > Advanced
 - Functionality for v21 bot holes reimplemented back into the game
 - You can now embed bitmaps downloaded directly from online (uses URL rather than local filepath)
 - The game can now open png images larger than 2048px
 - Added extra downloading info when connecting to servers - telling you file transfer speed, filesizes and filepaths
 - Unhid the close and minimize buttons on the main game window
 - Big improvements to assert handling, fixing issues with the popup being unusable, and providing convenient ability to ignore various asserts
 - Implemented anti-aliasing option directly in the options menu
 - Implemented v21-like shaders back in alongside maps (not shadows though)
 - New functions
getFunctionSourceName
- returns the filename where the function / method is defined. Packaged functions return the package's filename.
 - Gravity vehicle code is now implemented in-engine, you can set completely custom gravity on individual vehicles
  - WheeledVehicle::setshiftinggravity(1); - enables "shifting gravity" effect, the same as "gravity jeep" add-on
  - the game also automatically applies this to vehicles which have the old gravity code, no need to update them
  - WheeledVehicle::setcustomgravity("x y z"); - sets a specific custom gravity
 - Reimplemented 'setmaxspeed' functions for specific players, just like v21
 - New 'outline' text tag - <outline:(width of outline):(color in hex -- alpha not supported)>
 - If a dts shape fails to load, it fallbacks to error.dts
 - Ability to create new basic brick sizes mid-game implemented, along with automatically generating previews for them
 - New GUI class GuiCustomSceneCtrl - load in models and position them, mount objects and even spawn particles
 - New GUI class GuiContextMenuCtrl - absolute black magic, need to make this easily moddable
 - New GUI class GuiCategoryListCtrl - like a GuiTextList but fancier with category headers
 - Added /clearLights, /clearEmitters, /clearItems, /clearShapeFx, /clearColorFx
 - "fast packets" has been reimplemented, allowing for faster ghosting of bricks when loading into servers
 - gotoWebPage now opens the preferred browser, rather than typically internet explorer
 - Intentionally excluded raytracer - it didn't look great with maps, and there isn't much interest in reimplementing
 - Game no longer destroys the inputmanager every time you tab out, making tabbing in+out of the game instant
 - Implemented "Rebuilt Plate" - a map that functions just like the v21 plate, letting you customise all the environment options you can on v21
 - New functions
saveServerPrefs()
,
saveClientPrefs()
and
saveAllPrefs()
- a more convenient method to save prefs
 - The ability to send new datablocks directly to clients mid-game has been implemented, where the clients download required assets before new objects are transmitted to them
  - RTB Mod Manager has been modified to let you enable add-ons mid-game
  - New method
%client.isDownloadingFile()
- Returns true if the client is downloading something mid-game
  - New method
%client.hasObjectSafeguard(object or datablock id)
- Returns true if the client cannot be ghosted the specified object / datablock at the moment due to downloading its dependencies
 - Mission objects inside of SimGroups within the main MissionGroup are now transmitted to clients properly, meaning some maps that used to require manual downloading can now be transmitted automatically
 - Added pref
$Pref::Server::AllowUnstableError
to allow you to remove the "Unstable" plant error
 - Reimplemented entire v21 gamemodes system, letting you use v21 gamemode addons without any modifications.
  - A ton of v21 functions and function edits were ported for compatibility, including all the new features of v21 minigames
 -
updatedependencies()
on playertype lets you change playertype models midgame
 - fxDTSBrick:
getCustomWrenchData
and
setCustomWrenchData
- Better way of handling custom wrench menu data
 - New function
formatDateTime(DateTimeString)
- Format a datetime string (like what is returned from getDateTime()) into a fancy format
 - New function
formatTimeDifference(seconds)
- Make a fancy string that tells how much time you inputted
 - New function
ClearAllBricks();
for use on dedicated servers
 - Added ability to disable player collisions
 - "Play Music" audio setting now disables music on players and vehicles too
 - WheeledVehicle: added
SetDatablock(datablock)
which lets you change the datablock of vehicles live
 - Added /EnableBrickPlantAnimation
 - WheeledVehicle: added
getWheelOpposite
 - GUIWindowCtrl: added
onWindowResized
callback
 - GUI Animation: added
GlobalObjectAnimator
object to help with animating UI elements.
 - New callback
onClientUseFXCan(swatchIndex)
- called when trying to use the spraycan and scrolling over an FX can entry (clientside only)
 - New callback
onClientUseSprayCan(canIndex)
- called when trying to use the spraycan (clientside only)
 - New callback
onPlayerSpawn(client, player, firstSpawn)
- called when a player spawns in (serverside only)
 - New function
getClosestColorSetMatch(color)
- gets the colorset index representing the closest match to the given color
 - Added "MoveHandler" functionality to the base game, so you can access players actual move actions
 - Completely new CURLObject class lets you make https requests - grabbing html or file data
 - OS string now actually says if you are running on Windows 10/11 rather than being empty
 - OS string (displayed in console log) now says if the user is running the game on Wine, and the Wine version its running on
 - New function
mLerpF(easeMethodName, float start, float end, float normalizedValue[, float rangeMultiplier])
- with methods defined as $Math::Lerp* globals
 - Toned down the plastic-like shine effect in the shaders from how it looks in v21
 
 

Changes ported from B4v21s v20 client

 - Updated OpenAL32 to a much newer version
 - Adjusted default server and client prefs
 - Added confirmation buttons to 'Quit' and 'Tutorial' buttons on main menu
 - Added ability to open the escape menu when loading into a game, instead of immediately quitting
 - Added extra fetch/find buttons to admin menu
 - Implemented tab shifting to the brick menu, instead of the tabs going off of the screen
 - Widened the playerlist GUI
 - Fixed issue where typing a message while spawning at the same time caused the text input to lock up completely
 - Added ability for newly installed add-ons to be enabled by default
 - Added sliders to the options GUI to adjust brick movement speed, edited brick movement code to support this
 - Fixed one of the sliders in the options menu being white for no reason. Very important
 - Set the default bind for UseLight to 'R' rather than 'L'
 - When loading music loops the console now logs when each datablock is about to be created, so it can be determined which loop is crashing the game. Also removed deleting stereo music files, and added a chat message if any loop is over the 1MB limit
 - Implemented Script_ClearSpam to the main game scripts
 - Merged the function within Support_PlayerPersistence to the base game
 - Changed a lot of default add-ons to their v21 versions, adding some small fixes
 - Edited v21 skis to no longer teleport the player on tumble/dismount
 - Included impact sounds in the base game instead of within Vehicle_Jeep, just like v21
 - Changed print plates, vehicle spawn and roads to all be able to be built on, instead of getting "float" error
 
 

Not included in release

 - Entire brick elevators system sorta implemented, allowing moving bricks carrying players
 - Somewhat fixed PathedInteriors (basically reimplemented entirely becuase the old code was so dysfunctional)
 - A very unfinished attempt at importing source engine bsps directly into the game
 


Service revived by the B4v21 Team.
Designed by Vjacheslav Trushkin and modified by RTB.