You can find the response to this batch here.
This batch has been submitted and answered. The next modding requests can be found here.
Hello and welcome to the first The Modding Requests.
This thread has two purposes: It lists (and prioritizes) modding API requests and modding-related questions that the community has for Team Radiant. Those will be collected and sorted by me. Every week, the five or so most important requests and questions will be checked by Team Radiant. Please read the short FAQ below before posting
To discuss the entries, the prioritization or anything else that is not a request or question, please visit this thread!
Proposals and questions that will be submitted:
Proposals
-
@RepeatPan: File API
-
read access to all files inside /mods and some dedicated ādataā directory
-
write access to a dedicated ādataā directory
-
write, read, rename, create, delete, list files & directories
-
long term bonus: virtual directory for per-game/per-save data that does not require to be in lua 24/7?
-
@RepeatPan: render_info:set_scale
-
currently only working when switching to a model variant that has a different .qb
-
@RepeatPan: modify rendering behaviour inside mods
-
materials, textures, shaders (?)
-
@RepeatPan, @Asterai: access to qb matrices and model_variants
-
read and write matrices/models (on voxel level)
-
create new, assign and modify models/model variants during runtime
-
@RepeatPan: disabled mods and mod list
-
user_settings.json
entry that skips mods with said name -
event
radiant:modules_loaded
gets a list of modules that were loaded
Questions
-
@RepeatPan: How is
stonehearth:entity_created
accessed? Itās called on the created entity - is there some way to listen to all entity_created events? -
@RepeatPan: Is there a way to enable the micro map you use to test things?
-
@RepeatPan: Can we access the Javascript debugger/refresh UI stuff on the fly already?
-
@RepeatPan : Whatās the difference between
radiant.resources.load_json
andradiant.resources.load_manifest
? Is it merely some sort of programming sugar? -
@RepeatPan: Is the JSON parser non-strict on purpose? (i.e.
[ "abc" "def" ]
being merged toabc""def
,[ [], [], [], ]
being valid)
How can I propose a modding-related feature?
Simply reply to this thread. Please keep the following things in mind:
- Your proposal should be related to modding. This includes (but is not limited to!) a new interface for lua, a new event in JavaScript, the possibility to tweak something using JSON, ā¦
- Keep it short but precise. Donāt be vague and donāt be too general. If you have an idea but are unsure how to phrase it, come and visit us in the discussion thread. Weāre happy to help
- Propose things that you think are useful. The main priority is to get things into the game that modders can profit early on - so things that can be utilised immediately will have a higher priority than something that, for example, requires another game feature to be present first. Explain what could be done if your proposal got implemented.
Your proposal will then be added by me, which means that I may need to rewrite parts of it. In any case, Iāll post an update to the discussion thread, so you should get a ping about the status.
How can I ask a modding-related question?
Just reply to this thread. As with proposals, a few tips:
- Your question should be related to modding.
- Keep it short but precise. Donāt be too vague.
As with proposals, your questions will be added to the list by me. Questions that have already been answered will not be added to the list (or get removed early).
Who decides what will be submitted this week?
That would be me! I volunteer to collect everyoneās modding feature requests and questions and sort them by a few points:
- Generality: Something that many different mods can profit from will be ranked higher than something that is useful to a few.
- Time investment/Feature gain: Smaller or simpler things are more likely to be implemented soon and therefore get better spots.
- Distance: Something that is related to mods that currently exist, or mods that are currently in development take priority over stuff for āupcoming modsā or āmod ideasā.
- Community: Iāll follow and participate in the discussion over at the discussion thread. If you disagree with a decision, feel free to start a conversation about it. It will be a fairly democratic process, so your voice does matter!
- Reasoning: Entries that have a reason or goal attached to it (e.g. āI am currently developing mod X and could use Yā) take priority over āpure curiosityā proposals and questions. It might make sense to include the āwhatā in your proposals (questions not necessarily) to get a bit of context what you are doing.
Both proposals and questions can move between āsubmittedā and āmoved to next weekā at any time. Once the deadlineās up, all entries that were not done this week will be carried over to the next weekās thread.
For questions, criticism, concerns and similar, hereās the discussion thread!
Things considered for the next thread:
##Proposals:
-
@RepeatPan: support for lua binary modules
-
either directly in archives or dedicated folder
-
security issues: certification required/user acknowledgement?
-
@RepeatPan: mixintos to remove/modify content
-
alternatively/additionally event for
radiant.resources.load_json
that allows modifications -
@RepeatPan: event listener ordering
-
allow to tag events with a priority (number)
-
bonus: define mods whose events should run after/before this event, including a magic āallā element
-
@RepeatPan: Point3/Point3f compatibility
-
_add, _sub both without errors (likely returning a Point3f)
-
implicitly convert Point to Point3f (and vice versa)
-
@RepatPan: configuration management
-
save configurations (similar to
radiant.util.get_config
) -
bonus: (simple) validation of configs using JSON scheme or similar
-
bonus: pass mods their configuration as argument (e.g.
...
?), adddefault_config
section inmanifest.json
-
@RepeatPan: harvest_node implementation
-
complete implementation of
ResourceCallHandler:harvest_node
-
add events on the specified component that are called by the AI:
on_harvesting
(during AI action),on_harvested
(after AI is done) -
@RepeatPan: component/buff removal
-
functions to remove buffs/components from an entity
-
@RepeatPan: disable input in lua and JS
-
add function sto enable/disable
is_down
andcapture_input
events in lua/$('keydown keyup')
in JS -
useful for
<input>
, cinematics or similar -
@RepeatPan: modify start menu
-
add, query and remove current start menu by lua/JS and JSON mixinto
-
@RepeatPan: recipe management
-
enable, disable, add, remove recipes from carpenters by lua/JS
-
@Teleros: bone attachment managing (already somewhat possible?)
-
attach (other) entities to bones of entities, specified with relative position/rotation
-
query bone position/rotation
-
@Teleros: dynamic reload files during runtime (medium term candidate)
-
reload textures/models/materials during runtime (automatically)
-
probably not scripts
-
@RepeatPan: start camp overhaul (incomplete)
-
JSON based approach for easier mixinto/override
-
entity ref/model that is used for choosing the location (i.e. default: the banner)
-
list of entities that are initially spawned (i.e. default: banner, firepit, workers, logs, saw)
-
lua events to add more dynamic content/events
-
make this part of the faction data?
-
@RepeatPan: faction overhaul (incomplete?)
-
reduce factions to a simple name/object instead of (name, json).
-
add callbacks/virtual functions/events to determine gender, entity ref, name, personality/stats
-
event when a new faction is created (or json-defined lua file that is executed to extend/modify the factionās object), or a new citizen is spawned
-
provide a function that spawns a āmore completeā citizen (like
NewGameCallHandler:place_citizen
) -
relations between factions (i.e.
Faction:can_use(Faction other, Entity entity, Action action)
) instead of hardcoded comparisons -
@Miturion: fine-tuned control about building creation (incomplete?; announced)
-
define which block/brick is used at which location in a building/wall
-
general look of buildings (?)
-
using any (scaled) entity/model as brick, not just 1x1x blocks (?)
-
@RepeatPan: world generation (incomplete; research being done)
-
define flora in JSON
##Questions:
(None yet!)