[1.0][1.1] Building Platform v1.2
Posted: Fri Jul 29, 2016 1:51 am
by Neemys
Type: Mod
Name: Building Platform
Description: Add map-generated building platform and some building can only be placed on them. Now you must do your best to manage available space !
License: GPLv3
Version: 1.2.1
Release: 2020-09-19
Tested-With-Factorio-Version:0.13.20 and 0.14.13 and 0.15.35 and 0.16.0 and 1.0.0 and 1.1.1
Category: Gameplay
Tags: Building, restriction, surface
Git repository: http://git.neemys.name/Neemys/building-platform
Download-Url:
Building platform on Mod Portal !
Building Platform Tweaks on Mod Portal !
Building Platform :
Factorio 1.1.0+ :
Factorio 1.0.0+ :
Factorio 0.16.0+ :
Factorio 0.16.0+ :
Factorio 0.15.10+ :
Building Platform Tweaks
Factorio 0.15.0+ :
Factorio 0.14.0+ :
Compatibility mod for those who have a v1.0.4 game with m2cengine concentric-circle generation.
Name: Building Platform
Description: Add map-generated building platform and some building can only be placed on them. Now you must do your best to manage available space !
License: GPLv3
Version: 1.2.1
Release: 2020-09-19
Tested-With-Factorio-Version:0.13.20 and 0.14.13 and 0.15.35 and 0.16.0 and 1.0.0 and 1.1.1
Category: Gameplay
Tags: Building, restriction, surface
Git repository: http://git.neemys.name/Neemys/building-platform
Download-Url:
Building platform on Mod Portal !
Building Platform Tweaks on Mod Portal !
Building Platform :
Factorio 1.1.0+ :
- building-platform_1.3.0.zip
- Building Platform Mod for 1.1.0+
- (2.21 MiB) Downloaded 164 times
- building-platform_1.2.2.zip
- Building Platform Mod for 1.0.0+
- (2.21 MiB) Downloaded 148 times
- building-platform_1.1.12.zip
- Building Platform Mod for 0.17.0+
- (1.92 MiB) Downloaded 220 times
- building-platform_1.1.11.zip
- Building Platform Mod for 0.16.0+
- (1.92 MiB) Downloaded 275 times
- building-platform_1.1.10.zip
- Building Platform Mod for 0.15.10+
- (1.91 MiB) Downloaded 277 times
Factorio 0.15.0+ :
- building-platform-tweaks_1.1.2.zip
- Building Platform Tweaks Mod for 0.15.0+ (last release, compatibility purpose)
- (1.02 MiB) Downloaded 279 times
- building-platform-tweaks_1.0.2.zip
- Building Platform Tweaks Mod for 0.14.0+
- (1.02 MiB) Downloaded 249 times
- building-platform-old-concentric-circle-compatibility_0.0.1.zip
- Compatibility mod to make game started with m2cengine's concentric-circle in building-platform 1.0.4 still working the same.
- (15.34 KiB) Downloaded 268 times
Pictures
Pictures
In the early game you will stick to the platform in starting area with belt to move resources.
Here part of a starting base which make science, steel, belt and green circuit. I don't really optimize setup here as I will move to other bigger platform later.
Hastely build steam setup for the starting area base. Again, not optimized either. Those first two screenshot were using the new texture. The following ones use the old texture.
When Railroad is researched, I begin to move to bigger platform, building mostly specialized area bit by bit. Everything move by train, even science packs.
Here an example of late game smelting. For space reason I don't use electric furnaces. There is space for some more furnaces, but I don't really need them and I like aligned furnaces.
Late game steam engines platform. There is four 1/13/10 steam setup. As no lake is near, I import water with train.
Science Labs Platform. The three first pack are made someplace else and brought by train. I use a mixed belt to hold the four pack and only space lab by two tile. Circuit network condition (no combinator) take care of pack insertion. In short, when a pack is not at the end of the loop, insert it. Purple pack are made on site as I have no space left for it on the platform that make the three other. Apart from the spot taken by the purple pack factory, I doubt another lab can be added even if the setup is completely redone. Looks like I need purple science !
As a bonus, here a screenshot of my train network before making rocket part:
I used that game to test multiple train intersection, the 2x2 lane part is not really necessary for the network to work well at the moment, but I plan to keep this save to send as more rocket as I can so it will be necessary in the future. The base under the train stop A_spawn is my starting base, not used anymore but haven't bother to deconstruct it. A bitter base spawn long ago near the lake and the base but haven't destroy anything they seem to like human base ruin.
Screen of Concentric-circle generation made by m2cengine.
In the early game you will stick to the platform in starting area with belt to move resources.
Here part of a starting base which make science, steel, belt and green circuit. I don't really optimize setup here as I will move to other bigger platform later.
Hastely build steam setup for the starting area base. Again, not optimized either. Those first two screenshot were using the new texture. The following ones use the old texture.
When Railroad is researched, I begin to move to bigger platform, building mostly specialized area bit by bit. Everything move by train, even science packs.
Here an example of late game smelting. For space reason I don't use electric furnaces. There is space for some more furnaces, but I don't really need them and I like aligned furnaces.
Late game steam engines platform. There is four 1/13/10 steam setup. As no lake is near, I import water with train.
Science Labs Platform. The three first pack are made someplace else and brought by train. I use a mixed belt to hold the four pack and only space lab by two tile. Circuit network condition (no combinator) take care of pack insertion. In short, when a pack is not at the end of the loop, insert it. Purple pack are made on site as I have no space left for it on the platform that make the three other. Apart from the spot taken by the purple pack factory, I doubt another lab can be added even if the setup is completely redone. Looks like I need purple science !
As a bonus, here a screenshot of my train network before making rocket part:
I used that game to test multiple train intersection, the 2x2 lane part is not really necessary for the network to work well at the moment, but I plan to keep this save to send as more rocket as I can so it will be necessary in the future. The base under the train stop A_spawn is my starting base, not used anymore but haven't bother to deconstruct it. A bitter base spawn long ago near the lake and the base but haven't destroy anything they seem to like human base ruin.
Screen of Concentric-circle generation made by m2cengine.
Version history for Building Platform mod
Version history for Building Platform mod
Legend :
Legend :
- {u} : The update can safely be applied to existing savegame from the previous version. Contiguous update that have this tag can be skip to the latest having the tag. When an update does not have this tag, the changelog provides more information about what will break in existing savegame.
- {c} :
- For version 1.1.7+ : No need to reconfig ingame the mod.
- For version up to 1.1.6 : You can overwrite the config file with one from the previous version. Contiguous update that have this tag have the same config structure. When an update does not have this tag, the changelog provide more informations about what change occur in the config file.
{c}{u} 17-12-2020 - 1.2.2 (for 1.0) and 1.3.0 (for 1.1) (no commit) :- Fix that platforms weren't craftable even with config activated.
- Make change to be compatible with factorio 1.1(.1 and hopefully later minor release)
- API to add custom platforms now limted to 10 platforms instead of 5.
- Now use custom layer 55 to 46 instead of 15 to 10.
19-09-2020 - 1.2.0 (for 1.0.0) (no commit) :- Make change to be compatible with factorio 1.0.0
- Fix base game concrete tile not being used as a template if it exists.
- Now use stone-path instead of concrete to define the tile.
- Now require base game stone path to be present. Will not load if not present.
- Temporary removed ability to set a custom picture when defining custom platform tile
- Added ability to set the tint when defining custom platform tile.
- Platforms tile are now tinted stone path.
- Removed platform graphics and old platform graphics as they are incompatible with new tile definition.
- Removed mod option to choose platform graphic.
- Added custom invisible resource "dummy platform" if normal generation is selected in options.
- Normal platform generation now use custom vanilla like resource generation (via the dummy platform).
- Dummy platform are replaced by normal platform tile when chunk are generated.
- Add factorio compatible changelog.
- Make necessary change for Factorio 0.17, map generation is weird, the autoplace will need major rewrite. Using this version with existing old save will make new chunk have next to none platform or way too many.
- Make necessary change for Factorio 0.16
- Any platform made using API call isn't based after actual concrete anymore. Instead use a copy of the concrete declaration from Factorio 0.15.35. (Until the API is updated to reflect 0.16 change to how tile are defined.)
- Any tile made using API with an autoplace setting is set to the terrain category.
- Platforms can now be placed next to water.
- Add support for other surface than nauvis to custom platform generation. The default surface nauvis is allowed custom placement of platforms by default. (#9)
- Add three API functions accessible in controls.lua to building-platform's interface :
- addSurfacesToCustomPlacementList : Add one or multiple surface to the list of allowed surface for custom platform generation.
- removeSurfacesToCustomPlacementList : Remove one or multiple surface to the list of allowed surface for custom platform generation.
- getCustomPlacementAllowedSurfacesList : Get the list of surfaces allowed for custom platforms generation. The list is a table in the form [surface]=>true.
- All 1.0.10 changes ported to 0.15.
- Added expensive recipe awareness. This mod don't add expensive recipe, but they shouldn't create bug anymore.
- Added AAI Industry compatibility. Restricted by default.
- Added AAI Programmable Structures compatibility. Restricted by default.
- Added AAI Programmable Vehicles compatibility. Restricted by default. Vehicle depot has its own separate config to choose if it is restricted or not.
- Added Quarry compatibility mod. Restricted by default.
- Added the whole changelog in markdown format.
- Edited Building Platform tile recipe to only take the category from the concrete recipe if it exists and fall back to crafting-with-fluid if no concrete recipe was found.
- Edited public functions' comments to use the new comment format for auto-generating API documentation.
- Fixed AAI Programmable Vehicles's Vehicle Deployer can become uninteractable when radars were restricted.
- Fixed Long Range Radar missing locale entries.
- Fixed long range radar and building platform tile not appearing in craft list if their template recipes were using the new recipe declaration.
- Fixed long range radar not appearing in craft list if vanilla radar was behind a technology. (#7)
- Fixed blocking tile under a platform was blocking building placement. (#5)
{u} 23-05-2017 - 1.1.9 (for 0.15) (commit 7a463f8fb2) :- All 1.0.9 changes ported to 0.15.
- Add compatibility with High Voltage mod, not blocked by default.
- Fix picked up Factorissimo building not restricted by platform when they should be.
- Fix new platform icon for recipe appear on old platform recipe.
- Add compatibility with Water Well mod, blocked by default.
- Add compatibility with Stone Water Well mod, blocked by default.
- Add compatibility with Warehousing mod, blocked by default.
- Add compatibility with Teleportation mod, blocked by default.
- All 1.0.8 changes ported to 0.15.
- Not compatible for Factorio version under 0.15.10. (using the new "mods" global added in 0.15.10)
- Config entries in ingame menu are now ordered as follow : crafting, misc, unrestrict, generation, mods.
- Compatible mods are now detected during loading screen and only detected mods rules will be applied.
- Mods config moved to ingame menu. Only detected (and active) mods will have their option listed.
- Dropped Factorissimo (the first) compatibility as it have been discontinued by the author in favor of Factorissimo2.
- "Reactors" and "AlertCombinator" compatibility are still present even though their mods are not 0.15 compatible.
- The mod prefix for all element added to the game to avoid collision is now defined as a constant.
- Changed how custom generation is handle. Now each custom generation is a single function which recieve a x and y coordinate and return the name of the tile it want to place here or nil otherwise.
- Added "grid" custom generation. It will place square of platform with a config defined side length spaced by a number (config defined) of tile vertically and horizontally.
{u} 30-04-2017 - 1.1.7 (for 0.15) (commit 5ad456e1a5) :- All 1.0.7 changes ported to 0.15.
- Edited copyright mention to include 2017 year and no longer have ShadowTheAge name. He is still present in CREDITS.txt.
- Transfered long range radar from building platform tweaks mod. Will only be active in this mod if the config for it is enabled AND building platform tweaks mod is not active.
- Configuration is now done mostly using the new ingame option menu for mods. They all require a restart when you change them. They will have their default value when you update to this version, edit them before loading your save. Config that have not been moved to ingame option menu :
- All mod blocking config (unrestrictMod entry in config.lua). Integrating them will make the option menu unnecessarily cluttered. They will be added in a later release.
- disableOwnPlatform entry. This config is not for users, but for other mod to interact with mine. No need to add it ingame.
- factorissimo2FactoryAsPlatform entry. As it's a mod specific config, it will be added alongside other mods specific config in a later release.
- Added full French localization. I will maintain this one personally alongside the english one.
- Placement of entity with collision_mask not set will no longer crash the game (#2)
- Added possibility to set aliases for a particlar platform in addPlatform function. All tile that are aliases of a platform allow buildings that platform allow.
- Added Factorissimo2 compatibility. All three factory, bulk pipes, circuit Input and output and the requester chest are affected by unrestrictMod.factorissimo2 config option. All blocked outside platform by default.
- Added a config option to make factorissimo2 factory floor act as platform (factorissimo2FactoryAsPlatform). By default they act as platform. (#3)
- Made necessary change to make the mod working as in 0.14 in 0.15. No 0.15 feature currently implemented. This release is only for those who wants to play with my mod as soon as possible.
- Steam-turbine blocking rule moved from reactors.lua file to vanilla.lua as it is now a vanilla entity. It is blocked by default (unblock it with unrestrictPower config).
- Heat exchanger is blocked by platform by default. Unblock it with unrestrictPower or unrestrictBoiler config.
- Nuclear reactor is blocked by platform by default. Unblock it with unrestrictPower config.
- Centrifuge is blocked by platform by default. Unblock it with unrestrictAssemblingMachine config.
- Added "buildingplatform.config.blockTileOnPlatform" config option that make building platform block all tile placement. The same gap as between water and tiles will be present. It is a game restriction that I cannot change without making tile replace water. If you want the gap to disappear, use water-fix mod.
- Reduced the number of platform addable by addPlatform function to 4 from 5.
- Fix case of building not blocked on minable tile that have no ground under it.
- Dropped support for factorio 0.13 as 0.14 is stable for long enough.
- Added a new (optional) generation named "Concentric Circle" made by m2cengine. Not activated by default, it can be done by editing the config entry "buildingplatform.config.platformGenerator" to "concentric-circle". This generation use a custom function to spawn two platform. The usual blocking platform in concentric circle shape with a big patch at the spawn. Also a speed platform will spawn (pale yellow concrete). For building placement this speed platform act as a ground, but provide a huge boost to speed if activated in config. The shape/size is not tweakable using new world option. People who used this generation made by m2cengine using the modified building-platform v1.0.4 will need to add the compatibility mod alongside the actual building-platform mod to migrate the speed platform and keep the same world generation. It must be kept as long as your save exist. People that start a new game with this release don't need the compatibility mod.
- Added a config to choose which generation for the platform you want (buildingplatform.config.platformGenerator). Vanilla placement by default.
- Added a config to reduce the overall speed of the player by 35% (buildingplatform.config.speedPenalty). This config, only taken into account if the generation is "concentric circle", is on (true) by default.
- Added a config to boost the speed bonus of all tile that already have a bonus greater than the ground by 45% (buildingplatform.config.tilesSpeedBonus). This config, only taken into account if the generation is "concentric circle", is on (true) by default.
- Added a config to boost the speed bonus of the speed platform by 150% (base speed bonus of this platform is concrete if not edited by other mod) (buildingplatform.config.speedPlatformSpeedBonus). This config, only taken into account if the generation is "concentric circle", is on (true) by default.
- Added a config to disable the creation of my mod's platform (buildingplatform.config.disableOwnPlatform). Not activated (false) by default. Only usefull if you want to create your own platforms set in another mod using my mod's functions.
- Added support for Reactors mod in config 'buildingplatform.config.unrestrictMod'. Reactors's building not blocked by default until the fix to make them blocked in all case is added to Reactor or I found another solution.
- Fixed the bug that made Reactors's reactor controller be drawn under the boiler if either furnaces or generators were configured to be blocked by a platform.
- Added more comment here and there to explain to those reading my mod's code how things work.
- Added a new public function, accessible after my mod data.lua phase to create new platform. This function is callable using the name 'buildingplatform.addPlatform'. Parameters are listed and explained in the addPlatform.lua file and will be added soon to the Function documention section of this thread. With a call to this function you can tell my mod to create the platform tile, tell the game how it should place it if you want to use the game world generation and edit the tile's property. It return an object that can be use to add blocking rules. Unfortunately any mod that want to add a platform with a custom placement function should do the placement itself (you can't give this function the placement function). If your platform need an item/recipe to be placeable, you need to create them yourself too. The actual state of this function might change in futur release as I'm not satisfied with it. But for now it do it's job. Only 5 platforms can be added by this function (included this mod's own platform). Different platforms will not make each other buildings's footprint red but a script will still check if a building is correctly placed. For the moment only building not listed by at least one platform will be placeable on ground, I intend to add more flexibility on platforms rules in the future.
- Added a public function accessible after data.lua phase (buildingplatform.addTileToDefaultInitialization). Take one parameter, the object returned by addPlatform function and return nothing. When called it make the mod adding all default blocking and mod compatibility to the provided platform. Can be called multiple time for multiple platform.
- Added a public function accessible after data.lua phase (buildingplatform.disableDefaultPlatform). Take no parameter and return nothing. When called it make the mod not initializing it's own platforms (they will never be added to the game's data) and deactivate any platform placement function if one was selected in the config. You can still add your own using addPlatform function.
- Edited blockAll blockAllBut and blockOnly functions to take one more parameter than before, a tileObject returned by addPlatform function. It will apply the rule to this specific platform. If not provided, the rule will apply to all platform added to default initialization. It's backward compatible if you used it to add rules to the default platform.
- Moved constants 'buildingplatform.modRoot' and 'buildingplatform.tileName' to respectively 'buildingplatform.constants.modRoot' and 'buildingplatform.constants.tileName'
- Added two new constants : 'buildingplatform.constants.speedTileName' which hold the speed-platform name and 'buildingplatform.constants.dummyPrefix' which hold the prefix for the dummy objects name.
- The mod should now consistently use 'buildingplatform.constants.tileName' constant as the default platform's tile, recipe and item name instead of a string in each file. I recommend other mod to do the same if they use my platform's tile, recipe and item name.
- Removed leftover logs in data-final-fixes.lua.
- Added a 'private' function to handle more easily other mods compatibility and blocking config, but I'm not satisfied with it. This function shouldn't be used by other mods unless they want to edit their mod again in a futur release as I don't intend to make it backward compatible with the actual version.
- Edited control.lua placement checks to add the possibility for other mod to call it through an interface.
- Fixed a misplaced condition that made multiple blockAllBut rules on a same building type not working in certain case.
- Added a config to block/unblock building by mod (buildingplatform.config.unrestrictMod). Only existing for mod that I have set rules for already. You can ask for more mod compatibility using the forum or the mod portal discussion.
- Edited Alert Combinator blocking rule to be blocked only if using the new buildingplatform.config.unrestrictMod config instead of using the buildingplatform.config.unrestrictCombinator. Alert Combinator not restricted by default.
- Added block rules for Factorissimo mod's buildings. Blocked by default they can be unblocked by setting the right boolean in buildingplatform.config.unrestrictMod to true.
- Added block rules for Flow Control mod's buildings and Flow Control for Bobs pipes's buildings. Not blocked by default they can be blocked by setting the right boolean in buildingplatform.config.unrestrictMod to false.
- Added block rules for Circuit Network Switch mod's building. Not blocked by default it can be blocked by setting the right boolean in buildingplatform.config.unrestrictMod to false.
{u} 26-10-2016 - 1.0.3 (for 0.14); 0.9.3 (for 0.13) :- New Building Platform texture made by Earendel (thank you again) and sligthly edited by me. It's not the final texture but it's better than white concrete. Minimap color hasn't change, I keep the old color to make them distinguishable.
- If you still want white concrete, there is a new config entry "oldTexture". When set to true, the old texture is used instead of the new one.
- Removed ShadowTheAge name in author list in the mod as he shouldn't be contacted if a problem occur.
- Added a credits file with a line for ShadowTheAge idea and Earendel's texture.
- Added a key sequence to reload building platform recipe. If you activate the recipe midgame, you should press it. IT's "CTRL + ALT + K" by default but you can change it in controls options. It does not deactivate achievement. It only give the recipe if you researched the proper technology. Either concrete for default config or another technology if a mod move it. It check for every forces and only unlock for forces that should have it.
- All restricted buildings should now be properly blocked on modded and vanilla tile if there is no platform under those tile. Thanks to Usernm for reporting it.
- Fix checking area for placing building was offset by one on negative position (was a temporary fix for a bug that was fixed some time ago).
{u}{c} 07-10-2016 - 1.0.1 (for 0.14); 0.9.1 (for 0.13) :- Alert Combinator from the Alert combinator mod are now properly blocked.
- High tier Labs from Science Cost Tweaker Mod are now properly blocked.
{u} (under conditions) 06-10-2016 - 0.9.0 (for 0.13) :- Splitting the mod in two part, this mod will only hold the platform mechanics and building restriction. A new mod available in the same topic, named Building Platform Tweak will take care of modifying vanilla gameplay to add QoL improvement for Building Platform. The tweaks mod is optional. The rest of this changelog from this version and later only list Building Platform changes. For Building Platform Tweaks changes, it have his own changelog.
- Building platform's tile, item and recipe should now properly exist even if the modded game don't have concrete. It still take concrete data if it exist.
- Added base game dependency in info.json so it is not loaded on unsupported factorio version. The mod only support 0.13.18 and later version since 0.1.2.
- Rework of how the mod represent restriction rules. If you made a mod that edit/use them, you need to update your mod.
- Add public function to add custom rules, callable in data-updates phase by other mod to override the default ones. More information in the "Mods compatibility" section of this post. Those functions should be used only for non released mod compatibility or for big mod/modpack custom rules. If you want to make your mod compatible with Building Platform you better contact me so I edit default rules to take into account your mod by default.
- To make an existing savegame not breaking from the update, add the tweaks mod if you used Water/Lubricant Barrel or the oil barreling machine to properly migrate. If you do not add the mod, those buildings/items will disappear. Building platform mechanics
- Config change :
- Added unrestrictBoiler config to make boiler placeable outside platform when other power related building are still restricted. Default to false (restricted by platform)
- Added unrestrictRoboport config to make roboport placeable outside platform. Default to true (not restricted by platform).
- Edited unrestrictLogistic config to only (un)restrict logistics chest. Default to true (not restricted by platform).
- Added unrestrictSubstation to make substation placeable outside platform. Default to false (restricted by platform).
- Added unrestrictFurnace to make furnaces placeable outside platform. Default to false (restricted by platform).
- Added unrestrictAssemblingMachine to make assembling machines placeable outside platform. Default to false (restricted by platform).
- Added unrestrictLab to make Labs placeable outside platform. Default to false (restricted by platform).
- Added unrestrictBeacon to make beacon placeable outside platform. Default to false (restricted by platform).
- Added unrestrictRocketSilo to make Rocket Silo placeable outside platform. Default to false (restricted by platform).
{u} 30-08-2016 - 0.1.2 (for 0.13) :- You can now build over any tile that are over building platform, don't need to remove them anymore.
- Added internal capability to unrestrict buildings per pattern in case some other mod need it to unrestrict some building.
- New building, the oil barreling machine, placeable anywhere on map, 2x2, can only fill and empty oil from barrel. Crafting speed of 1, unlocked with automation 2 (if a mod remove or rename this tech, it is unlocked from the beginning, if you want me to add compatibility with a mod's tech tree, just ask). The recipe to craft it is more expensive : 10 iron plate, 5 electronics circuit, 5 iron gear and 1 assembling machine 2. The actual graphics is a glitchy placeholder, don't look at it too closely. This building is activated by default, you can deactivate it in the config file.
- New barreling capability. Normal assembling machine can now fill and empty barrel with water and lubricant. If you only need lubricant somewhere or if your steam engine have no lake around that's the solution. Beware feeding steam engine require lot's of barrel. The recipe for lubricant barrel is the same as oil barrel. But I change speed and capacity of barrel for water.
In theory, you *could* feed 10 steam engine with only 1 assembly 3 working 100% (it give you 60 water/second) but only in theory, it don't work in my save (fluid mystery or my math is wrong). Expect some tweaking for water barrel in next release.(you can feed 10 steam engine with one assembly 3 on certain condition see this post). I recommend that you power water barreling with solar or accumulator, if your steam engine can't keep up with the power demand, the power plant will auto-shutdown VERY quickly. Those new recipe are active by default and unlocked with fluid handling (again, if the tech doesn't exist it is unlocked from the start, if you need to add specific tech unlocking for a mod, just ask). - When upgrading from previous version of the mod, new building and recipe should be added automatically if you have already unlock the tech.
- Config change :
- Logistic chest and roboport are now unrestricted by default, if you want to keep them restricted, change the "unrestrictLogistic" to false.
- You can now unrestrict storage tank if you want, juste change "unrestrictStorageTank" to true (still restricted by default).
- You can toggle new barrel recipe on or off with "moreBarrelRecipe" (on by default).
- You can toggle new barrelling machine on or off with "oilBarrelingBuilding" (on by default).
{u}{c} 01-08-2016 - 0.1.0 : Reimplemented visual interdiction to place building using newly added collision-layer. When you try to place a restricted building outside platform, it footprint should be red. The only place that the footprint is not red is if you try to place on any craftable tile as I keep it disabled for them. if I enable it, when you place tile over building platform, buiilding just vanish.
{u}{c} 01-08-2016 - 0.0.4 :- Removed leading zero on last number in mod version.
- Code cleanup as it is the last version of this mod for factorio 0.13.0 to 0.13.12
29-07-2016 - 0.0.02 :- Sligthly changed platform spawning in starting area. They should be a bit larger and the area should contain more patch. Save with previous version will only "break" if you haven't discover all the starting area. It will still be playable, just some path might be cut.
- Adding more config option to control which building will be restricted :
- unrestrictPower : make boiler, solar panel, steam engine and accumulator placeable outside platform.
- unrestrictCombinator : make combinator placeable outside platform.
- unrestrictLogistic: make roboport and logistic chests placeable outside platform.
- unrestrictRadar: make radar placeable outside platform.
- Removed some debug line I forget at release.
Version history for Building Platform tweaks mod
Version history for Building Platform tweaks mod
Legend :
{c} 24-04-2017 - 1.1.2 (for 0.15) :
{u}{c} 06-11-2016 - 1.0.2 (for 0.14); 0.9.2 (for 0.13) :
{u}{c} 06-10-2016 - 1.0.0 (for 0.14) : 0.14 version of Building Platform Tweaks 0.9.0. For Factorio 0.14.0+.
06-10-2016 - 0.9.0 (for 0.13) :
Legend :
- {u} : The update can safely be applied to existing savegame from the previous version. Contiguous update that have this tag can be skip to the latest having the tag. When an update does not have this tag, the changelog provides more information about what will break in existing savegame.
- {c} : You can overwrite the config file with one from the previous version. Contiguous update that have this tag have the same config structure. When an update does not have this tag, the changelog provide more information about what change occur in the config file.
{c} 24-04-2017 - 1.1.2 (for 0.15) :
- Made necessary change to make this mod work in 0.15.
- Known bug : Barreling recipes for water and lubricant still exist alongside vanilla ones but generate and consume crude oil barrel. I will not fix that recipe as you should switch to vanilla recipe. It will not break your save as assembling machine remember recipes. But if you use to move by train or stockpile barrel of different type at the same time, they will mix.
- This mod is now discontinued as you can now move liquid by train with the new fluid wagon (no need for the barreling machine) and vanilla create barreling recipe for all liquid by default. I will move the radar in building-platform mod in a futur release.
{u}{c} 06-11-2016 - 1.0.2 (for 0.14); 0.9.2 (for 0.13) :
- Added a key sequence to reload building platform tweaks recipes. If you activate the recipes midgame, you should press it. IT's "CTRL + ALT + L" by default but you can change it in controls options. It does not deactivate achievement. It only give the recipe if you researched the proper technology. It check for every forces and only unlock for forces that should have it.
- The Oil Barreling machine now wait data-updates phase to edit Oil barrel empty and fill recipes in case another mod (like bob) redefine them completly. Those playing with bobs mods should now be able to use the oil barreling machine properly.
- The new barrel recipes now wait data-updates phase to create themselves in case Oil barrel empty and fill recipes were edited by another mod as they take them as a template.
- The Long Range Radar now wait data-updates phase to create itself in case a mod change vanilla radar as it use it as a template.
{u}{c} 06-10-2016 - 1.0.0 (for 0.14) : 0.14 version of Building Platform Tweaks 0.9.0. For Factorio 0.14.0+.
06-10-2016 - 0.9.0 (for 0.13) :
- Split from Building platform main mod 0.1.2, take the Lubricant and Water barrel and the oil barreling machine.
- New long range scanning radar. A new radar that does not reveal nearby area, but scan chunk twice further than vanilla radar. It consume 1MW and should scan a chunk every 15 seconds. Vanilla radar is untouched. Should be used to detect new platform. It's only placeable on platform unless you edit the Building Platform config file to not restrict radars.
Long Description
Long Description
Building Platform
Add building platform at world generation. Some building can only be placed on those platform. You will need to take care on how you do some design to fit them on building platform and your base will have less space to expand. You will surely need train at one point to convey resources from one platform to the other. As space is an issue, you will be forced to use more module. This mod is based on ShadowTheAge's Idea and code (Unstable Ground). Feel free to discuss about the mod as it can be changed/improved if you have idea
List of building that need platform to be build :
Misc infos :
Add new recipes and building to make a game with Building platform less tedious. It add :
Building Platform
Add building platform at world generation. Some building can only be placed on those platform. You will need to take care on how you do some design to fit them on building platform and your base will have less space to expand. You will surely need train at one point to convey resources from one platform to the other. As space is an issue, you will be forced to use more module. This mod is based on ShadowTheAge's Idea and code (Unstable Ground). Feel free to discuss about the mod as it can be changed/improved if you have idea
List of building that need platform to be build :
- Storage Tank
- Substation
- Boiler
- Steam generator
- Solar panel
- Accumulators
- Furnaces
- Assembling Machine
- Laboratory
- Beacon
- Radar
- Rocket Silo
Misc infos :
- Size and frequency can be changed on world generation screen. If you make platform more frequent, up the size too because the world gen shrink platform when they are more frequent. If you make them less frequent, inspect starting area to be sure to have enough platform for a starting base.
- Platform outside starting area should be a bit larger, but less frequent than those in the starting area.
- Don't forget that inserters and belts can be placed outside platform.
- Upgrading to electric furnace is not everytime possible or a good solution.
- You can't remove platform.
- You can craft platform if you activate it in the mod config file. Multiple recipe has been added, you can change it in the mod config file. By default platform are NOT craftable.
- Roboports, Logistics chest and combinator are by default placeable outside platform but you can restrict them in the config.
- If you craft platform, keep in mind that they are NOT mineable, every platform placed is here for good.
- Concrete or stonepath can be built on platform. It doesn't remove platform (if you remove concrete, the platform will still be here).
- For now the platform is a white concrete. I want to change that at some point but have no idea what to put instead.
- It's technically possible to add this mod in an existing game, but you will need to redo your factory. Your old one will still working but you can't place new building outside platform and those platform will only spawn when you discover new area of the map. So better start a new game.
- As you will need to expand a bit more than normal, turn bitter setting a bit down as in 0.13 there are a lot of them.
Add new recipes and building to make a game with Building platform less tedious. It add :
- A long range radar designed to scan chunk further than vanilla, at a higher energy cost and faster pace. It does not reveal nearby area though.
- Add Lubricant barrel and recipe to fill and empty them. Because some building need lubricant and making an oil setup nearby to only get them is not everytime possible.
- Add water barrel and recipe to fill and empty them. For people playing with low water or those that don't have a lake near a big platform for their steam setup. A vanilla assembly machine 3 working at normal speed will provide enough water for 10 steam engines (like an offshore pump).
- Add a special assembling machine that only fill and empty oil barrel. This machine is placeable everywhere. So you can transport oil by train even if no platform is near patch.
Questions and answers
Questions and answers :
- Q : Can I play without Building Platform Tweaks ?
A : Yes you can, but if you remove tweaks in a save that have it before, all buildings, items and recipes from tweaks will disappear from the save. - Q : Will config file edit mid-game will still apply ?
A : Depend on the change, only building restriction change will take effect after a factorio restart. If you change the building platform recipe or any tweaks, you will need to run the following command for the change to take effect.Code: Select all
/c game.player.force.reset_recipes()
- Q : Can I use your code and part of it for my own mod ?
A : First, concerning the pictures for old building platform, oil barreling machine, water and lubricant barrels and their recipes, they are property of Wube Software. I don't know under what license they are. They seem to allow their use freely (for factorio mod). I don't claim any right for their modification. So yes you can use them for your own mod.
The texture of the building platform was made by Earendel. If you want to use them send a PM using the previous link.
For the source code, two case :- You don't distribute your work, you can use/modify my code for your own use freely, no credits or whatever else needed.
- You distribute your work, as long as the source code is available to user you can freely use my code (factorio mod are not compiled so the mod contain source code). Your own code must have a GPL compatible license. The part you use from me can't have the GPL license removed. Publish your mod with the license you want but include a CREDITS file that state that you use my code and state that it is under GPL with a link the the license (license GPLv3). For more information on the GPL v3 license see the FAQ on their website.
- Q : Another mod I use have a building wrongly blocked or wrongly not blocked, can you do something ?
A : Sure, post the building list, the mod name and I will gladly make the necessary modification. Don't bother to ask the other mod author to be compatible with my mod, if a building is wrongly blocked or not, that's my job to adapt the default rules.
Mods compatibility
Mods compatibility :
This mod should be compatible with other mod. If you spot some building wrongly restricted please post here, I will make the necessary change. No need to contact the other mod author, as I must add building to white/black list.
Dreadicon wrote a compatibility code for building platform that has been integrated in RSO by default. It make platform more "blocky". If you are using RSO and don't like it, set 'useStraightWorldPlatforms' in RSO config to false.
Note to mod author : if you have been contacted because some of your building are not blocked by platform or are blocked and they shouldn't, three cases :
This mod should be compatible with other mod. If you spot some building wrongly restricted please post here, I will make the necessary change. No need to contact the other mod author, as I must add building to white/black list.
Dreadicon wrote a compatibility code for building platform that has been integrated in RSO by default. It make platform more "blocky". If you are using RSO and don't like it, set 'useStraightWorldPlatforms' in RSO config to false.
Note to mod author : if you have been contacted because some of your building are not blocked by platform or are blocked and they shouldn't, three cases :
- Your building is not blocked only on tile on the ground (concrete, stonepath) but is properly blocked on the ground itself. Something block my 'on_built_entity' event function to check the building. Mostly, the entity is deleted before my function is called by the game to check it. Some mod can delete an entity and place another at that place and as the new entity is script placed, it does not fire another event. If it is your own mod that do that. You have access to an interface (see "Functions documentation" section of this thread) in my mod to check the good or bad placement of your entity callable in any event. You will have to use it to check and do the necessary things in your mod to do the compatibility fix. If it is another mod that do that, contact me and I will send a message to this mod's author asking for compatibility.
- A building is wrongly blocked (or not blocked) on platform. My rules don't take into account your mod building. You can contact me in this thread or by PM, giving me all your building type and name, I will add custom rules to take your buildings into account. As a bonus I will add a config value for your mod giving users the choice to block or not your buildings. You can also do the fix yourself by calling my mods functions (see "Functions documentation" section of this thread) but you should take into account my config value for the same building type like not blocking them if same building type is not blocked, better ask me I think
- An error is thrown that seem to be coming from my mod. Most errors that I throw on purpose have an english string that explain what happened. It might be some lua error due to incompatibility too. In both cases if you don't know what to do, you can ask me, I will be glad to help you.
Functions documentation
Functions documentation :
For other mod or modpack author, my mod include some functions callable during data phase to create your own platforms and/or rules, read the following for more information (every mention of data, data-updates and data-final-fixes refer to those of Building platform):
In the previous example, first we test that the interface exist to avoid any problem (in case the mod is not here or the version is too old). Next we call the interface, we want to send the default message with default checking behavior so 'checkBuildingPlacementAndReimburseWithMessage' is enough. After we test if the building has been removed (the function tell us by returning a boolean, we could also test if the entity is still here or not). If it has been removed we abort the function execution. If not, the function execution will continue.
For other mod or modpack author, my mod include some functions callable during data phase to create your own platforms and/or rules, read the following for more information (every mention of data, data-updates and data-final-fixes refer to those of Building platform):
- buildingplatform.addPlatform (in file functions/addPlatform.lua), accessible after data phase and ineffective after data-updates. Add a tile to the game and permit custom blocking rules to be applied to it. This function is a work in progress, refer to the documentation in the lua file that I wrote for more information on the parameters and return type. I will update this post when the function will not change much anymore. For the moment it can change greatly between release without backward compatibility, but is working if you still want to use it.
- buildingplatform.addTileToDefaultInitialization(tileObject) (in file misc.lua), accessible after data phase and ineffective after data-final-fixes. Take one parameter, the object returned by addPlatform function and return nothing. When called it make the mod adding all default blocking and mod compatibility to the provided platform. Can be called multiple time for multiple platform.
- buildingplatform.disableDefaultPlatform() (in file misc.lua), accessible after data phase and ineffective after data-updates. Take no parameter and return nothing. When called it make the mod not initializing it's own platforms (they will never be added to the game's data) and deactivate any platform placement function if one was selected in the config. You can still add your own using addPlatform function
- buildingplatform.blockAll(type[,tileObject]) (in file mods-config/functions.lua), accessible after data-updates phase and ineffective after data-final-fixes. Take one parameter, one optional parameter and return nothing. Block all buildings of the given type to either the given (optional) platform (tileObject given by addPlatform function) or, if no second parameter, all platforms added to the list of default initialization.
- buildingplatform.blockAllBut(type,pattern[,tileObject]) (in file mods-config/functions.lua), accessible after data-updates phase and ineffective after data-final-fixes. Take two parameters, one optional parameter and return nothing. Block all buildings of the given type, but not the one which name match the given pattern to either the given (optional) platform (tileObject given by addPlatform function) or, if no second parameter, all platforms added to the list of default initialization.
- buildingplatform.blockOnly(type,pattern[,tileObject]) (in file mods-config/functions.lua), accessible after data-updates phase and ineffective after data-final-fixes. Take two parameters, one optional parameter and return nothing. Block only building of the given type which name match the given pattern to either the given (optional) platform (tileObject given by addPlatform function) or, if no second parameter, all platforms added to the list of default initialization.
- Underscore named version exist (aliases) : block_all, block_all_but and block_only.
- Multiple pattern can be applied to a building type (call the function multiple time with different pattern and same type), a logical OR will be applied to all pattern.
- If there is "block all but" and "block only" pattern for a building type, "block only" rules will be ignored.
- Patterns are checked by using lua string.match function against the building name and should match the whole name, so format it the right way (information on pattern here (lua-users.org).
- Patterns and building type should be strings.
- No verification on building type is done, if you pass wrong building type, game will likely throw an error.
- You can restrict building type not restricted by the mod by default like inserters, belts and others. By example you can make slow belt placeable anywhere and fast belt only in platform.
- If a building type is added to any platform rules, all restricted building outside of this platform will not be placeable on ground nor on other platform unless you add rules to another platform to accept them. I intend to add more flexibility on platforms rules in the future, but for the moment it's how it works.
- checkGoodBuildingPlacement(entity) : check the correct placement of a given entity against rules set in datas phases. Return false is the entity is wrongly placed. This function do not remove the entity, just perform the check.
- removeAndReimburseBuilding(entity,player,needMessage) : Destroy the given entity and reimburse the given player. If the third parameter is true or not given, a message will be sent to the player's chat box telling the building can't be placed here. Return true if everything went fine.
- checkBuildingPlacementAndReimburseWithMessage(entity,player) : Given an existing entity, check if it is blocked by a platform or by the terrain using rules set in the game loading. If the entity is wrongly placed, it is removed and reimbursed to the given player with an error message in chat. Return false if the building have been removed, true if the building have been verified has correctly placed.
Code: Select all
-- given entity and player variable already initialized
if (remote.interfaces["building-platform"] and remote.interfaces["building-platform"].checkBuildingPlacementAndReimburseWithMessage then
isBuildingStillHere = remote.call("building-platform","checkBuildingPlacementAndReimburseWithMessage",entity,player)
if not isBuildingStillHere then return end
end
In the previous example, first we test that the interface exist to avoid any problem (in case the mod is not here or the version is too old). Next we call the interface, we want to send the default message with default checking behavior so 'checkBuildingPlacementAndReimburseWithMessage' is enough. After we test if the building has been removed (the function tell us by returning a boolean, we could also test if the entity is still here or not). If it has been removed we abort the function execution. If not, the function execution will continue.
Known Bugs
Known bugs :
- If you use Reactor mod and change the config to block this mod building outside platform, they will not be blocked on ground if there is concrete on it. Worst, if you remove the concrete while a reactor is on it, an error is thrown by Reactor mod. The solution to those problem have been told to the author, we are waiting that he release the fix.
- Transition between platform and stone path can be weird.
- Vanilla resources and platform can overlap during world generation preview but ingame no platform are placed under resources.
- Grid and concentric circle platforms custom generation do not appear in the map generation preview.
Credits and Thanks
Credits and Thanks :
- ShadowTheAge for the original idea.
- Earendel for the platform texture.
- m2cengine for the concentric-circle generation.
- Dreadicon for the Straight World in RSO compatibility that make platform more blocky with a config that change how blocky/organic they are.