-
Notifications
You must be signed in to change notification settings - Fork 115
Customization
The mod is highly configurable and includes many ways to customize it. There are 2 main ways to configure this and any other mod and you should be familiar with both
- Configs
- Texturepacks/ Datapacks
Here is explained how to do it
- Almost every aspect of the mod can be toggled or disabled. This is mostly handled by configs.
- To edit these you can either do it manually with a text editor or install the mod Configured to do it from the ingame menu
- All configs are commented with a description that explain what they do so I wont need to explain those here
- With Configured installed you can access the config menu by pressing the "s" button in your esc menu (or turn it on in the configs if its disabled once you get there) or by typing
/supplementaries configured
in chat - You will find 3 config files in your
/configs
directory, located in your installation folder:supplementaries-common.toml
,supplementaries-client.toml
andsupplementaries-registry.toml
. Note that the last 2 have been merged in verisons >1.19
- Client contains settings that are client only and mainly related to visuals
- Common contains most of the logic used by the mod and includes many optional features that are off by default like for example colored blackbords or xp bottling
- Registry is used to turn off single blocks and items rather than features
As with any other mod you can change the mod textures and models with a texture pack. Here are listed a couple of things you can also do that might not seem obvious:
- Add new Soft Fluid textures in the /soft_fluid folder to then use for your custom fluids definitions that you can add with datapacks
- Add custom models for Wall Lanterns for any of your modded lanterns so that their wall stand will look just like you want. To do so you will simply have to add a model json file and a texture file in your resource pack
/blocks/wall_lanterns
folder. Note that the path of your model json has to match the id of the lantern you want to apply this model for so for examplebyg:criptic_lantern
would be in/blocks/wall_lanterns/byg/criptic_lantern.json
- Add custom globe colors. To do so head to the
/entity/globes/palettes
folder and there you'll be able to add a single palette file for each dimension of your choice (using the dimension id for their file name, replacing ":" with ".". Note that the amount of colors they contain must follow the same order and have the same length
- If you aren't familiar datapacks are a powerful Vanilla tool are a way of exposing in-game internals through an easy to use interface that allows players to change many aspects of the game through simple text (.json) files. Datapacks are the server side equivalent of resource packs
- Making simple datapacks is very easy and if you have never done it there are many tutorials online but in short it's just a matter of creating a folder and fill it up with text files in the right location. Said folder structure can be viewed by looking at the mod builtin datapack. See below.
- The main resource for vanilla datapack is the official minecraft wiki
- Common tools to add datapacks is either making folders manually and loading them by putting it in the world folder or by using mods such as openloader/global datapacks which allow to have datapacks be loaded per game instea of per world.
- An alternative tool to create datapacks is KubeJs or Craft tweaker. Note that these however only support vanilla objects
- To view the base mod builtin datapack simply open the mod jar with WinRar and navigate do that data folder or check it out directly [here]on github(https://github.com/MehVahdJukaar/Supplementaries/tree/master/common/src/main/resources/data). You could then directly copy that and create your own datapack starting from it. Remember however to only keep the files you edited there.
- Remember that data files can only contain [a-z,0-9,-,_] characters in their name. Refer to mc wiki for more.
- Here I'll point out the most important data entries that you might want to use to make a datapack for the mod. Note that there are many more.
- Once again to alter any of the following sections you'll need to make your own datapack. Another quick way to get started with those is to just download a random one off curseforge and then clean its content.
Vanilla data objects (check official wiki for more in depth explanation):
- The mod contains many tags that control alot of its features.
- Tags can be found under
/data/[mod_id]/tags/
in any mod or datapack data folder - If you want to add entries to one simply include a new tag json file in your datapack with only the new entries. They will get merged.
- If you want to remove entries you'll have to copy the existing file and set the
replace
property to true I'll list here some of the most popular ones and you can check out the entire list by viewing the mod builtin datapack
-
cage_catchable
andjar_catchable
: determines which mob can go in cages and jars -
eats_fodder
: a list of animals that will feed on fodder -
has_way_sign
andway_sign_destinations
: biomes that can spawn way signs and structures that they point too. Edit these to disable way sign from spawning
- Many other useful tags are available so please do check them out in the mods files
- This one is obvious but if you've never seen them before just letting you know that recipes and loot tables (from any mod) can be added and configured with datapacks
- By overriding or changing a loot tables you can alter what mobs drops and what is found in chests including stuff added by supplementaries. Here to check
/data/[mod_id]/loot_tables/
folder
Supplementaries unique data objects:
- Located in
data/structure_maps
ordata/minecraft/moonlight/villager_trades/[villager profession]
(1.20+) folder, these json allow you to define custom villager trades that lead to specific structures - Here is an example json. Only the first parameter is needed as the others are optional and will default to reasonable values
- The
MapMarker
parameter represend an id of a registered Map Marker, either vanilla or custom. See below
1.20+ Only first 3 param are needed. Rest is optional. Names are self explicative. Note that structure can be structure id, tag (#) or structure list with []
{
"type": "supplementaries:structure_map",
"item": "minecraft:emerald",
"structure": "minecraft:igloo",
"map_color": "0xff00ffff",
"map_name": "My Custom Map",
"map_marker": "supplementaries:igloo",
"price_min": 7,
"price_max": 13,
"price_secondary": {
"id": "minecraft:compass",
"Count": 1
},
"max_trades": 16,
"price_multiplier": 0.05,
"level": 2
}
before 1.20
{
"structure": "minecraft:igloo",
"color": "0xff00ffff",
"mapName": "My Custom Map",
"villagerLevel": 1,
"minPrice": 7,
"maxPrice": 69,
"mapMarker": "supplementaries:igloo"
}
Similarly to what used above thanks to Moonlight you can also add custom trades to any villager (see its page).
Located in data/[villager mod id]/moonlight/villager_trades/[villager profession name]
folder.
I suggest to check out the mod own data folder as an example for this.
Here is the basic simple trade json type. Note that other more specialized ones exist. See mod datapack for example.
Here only first 3 parameters are required, rest is optional.
{
"type": "simple"
"offer": {
"id": "minecraft:stone",
"Count": 1
},
"price": {
"id": "minecraft:emerald",
"Count": 4
},
"price_secondary": {
"id": "minecraft:cobblestone",
"Count": 1
},
"max_trades": 16,
"price_multiplier": 0.05,
"xp": 5,
"level": 2
}
To remove a custom tarde simply place a json file in its location with the following content. This is very similar to how it's done for other data files for vanilla datapacks entries.
{
"type": "no_op"
}
- This section allows one to register new custom map markers to the Custom Map Marker system that the mod adds
- These are found in
data/[datapackname]/moonlight/map_markers
folder. - You will also have to provide a texture for it to use. This can be added in your resource pack under
assets/[packname]/textures/map_marker/[id].png
, where id is simply the name of the json you just added -
target_block
is a rule test and can be used to have a marker that represents a block. When that is there clicking on the block with a map will add the marker to it. - If you for example would want to add a to TNT blocks you would add something like this:
{
"target_block": {
"block": "minecraft:tnt",
"predicate_type": "minecraft:block_match"
},
"name": "some text",
"rotation": 0.6,
"target_structures": "#minecraft:vilage",
"map_color": "0x2c292f"
}
- If a structure is provided instead using
target_structure
these will be associated to that structure when a map that leads to one is generated. - Similarly
map_color
is the scribble color that a structure map which geneted with that marker will use. - The name and rotation parameters will add a string text or make the marker rotate
- All json content is optional. bare minimum is json existance
- Soft fluids is the internal data system used by Jars and Goblets
- These are found in
data/[datapackname]/moonlight/soft_fluids
folder. - These differ from standard Forge Fluids as they never have a block form, aren't registered to the fluid registry and instead provide a system that is simpler and more focused on item interactions.
- They are specifically designed to work well with bottles and bowls as well as allowing each fluid to inherit the food properties of said items
- As such the base unit measure they use is 1 bottle as opposed to one bucket. This equals to 250MB in terms of forge fluids.
- Some of their properties are:
-
containers
: a list of items that contain and can provide this liquid. Each entry contains a filled and an empty item as well as the container capacity and can also include its fill and empty sound -
equivalent_fluids
: a list of equivalent forge fluids into which this will be converted when being passed through faucets to a forge tank or pipe -
food
: description of the item from which it should inherit the food properties. Food divider determines how much the stats gained from said item will be divided when drinking one unit of fluid.
- Take a look at the built-in pack for more examples
- Here is an example of a possible fluid one might add to add support for one of their bottle "my_mod:my_bottle"
{
"id": "my_mod:my_soft_fluid",
"containers": [
{
"filled": [
"my_mod:my_bottle"
],
"empty": "minecraft:glass_bottle",
"capacity": 1
},
{
"filled": [
"my_mod:my_bucket"
],
"empty": "minecraft:bucket",
"capacity": 4
}
],
"equivalent_fluids": [
"minecraft:lava"
],
"flowing_texture": "minecraft:blocks/lava_flowing",
"still_texture": "minecraft:blocks:blocks/lava_still",
"food": {
"divider": 1,
"item": "minecraft:honey_bottle"
},
"luminosity": 7,
"tint_method": "no_tint",
"translation_key": "fluid.my_mod.my_soft_fluid"
}
- All parameters related to hourglass dusts can be tweaked via the jsons in the
hourglass_dusts
folder - Check out the already provided ones for an example, its self explanatory as they just contain texture and timing information. Heres an example
{
"items": ["minecraft:blaze_powder"],
"duration": 277,
"texture": "supplementaries:block/hourglass_blaze"
}
- This folder contains all the songs that will be added to the flute song list (you can view the mod builtin one to see all the existing songs)
- To add new ones I advise against doing it manually and instead you can register your noteblocks contraptions ingame using the
/supplementaries record
command - To do so just type
/supplementaries record start
. This one can also be followed by an instrument list to limit the recording to said instruments. - Once the song has played just type
/supplementaries record stop [name]
where[name]
is the file name you want to save it to. Here you also have an optional parameter to speed it up by a certain amount. - The recorded song will be saved into your
/recorded_songs
folder in your minecraft installation directory. You can also immediately preview it by playing a flute: after the command is p Calles they will only play that specific song but only until your reload your game. - You can now open that file and edit the "weight" parameter which determines the frequency of that song when being selected by a flute
- Now the only thing left to do is to take that file and add it to the
data/[your datapack namespace]/flute_songs/
folder in your of your datapack. - Addotionally you can also convert
MIDI
songs to this format using themidi_converter.py
script located in that folder in the mod files. Note that the song already needs to have some reasonably sized quantized time interval to play at a reasonable speed ingame
- This folder contains information on how various mobs should be treated when captured by cages and jars
- Here is what each parameter means. Note that only the first 3 here are needed, the rest is optional.
-
owners
, a list of mob ids that this json should be applied to. Can contain ones that aren't installed too -
width_increment
andheight_increment
, used to virtually "increase" a mob hitbox when inside a container. This will make them render smaller. Useful for mobs whose hitbox does not match their model like a chicken for example whose head is way proud of their collision box. -
light_level
, light emitted by containers that contain this mob -
allowed_in
this is an alternative way to whitelist mobs inside a container. I still suggest using tags instead -
fish_index
if this valued is non zero it the mob will render as a 2d fish and this value will be used as its texture index on the "fishies" texture file -
animation
this can be eithernone
,land
,air
,floating
, orbuiltin
and is used to apply a simple animation to the mob. Builtin is used for hardcoded ones like slime, land or air forces the mob to render on the ground even if it's a fliying mob or in the air and floating makes the mob float up and down. -
tick_mode
this is experimental and might cause issues. Allows mobs to tick inside containers. Can be eithernone
,client
,server
,both
-
force_fluid
, used for fish like mobs, will force a fluid to render alongside the mob. Should match what's inside their bucket. -
loot
, contains a set ofloot_table
andchance
. These will be used to access a loot table at that location and roll it each tick with the specified chance - Below is an example json
{
"owners": [
"ecologics:firefly"
],
"animation": "floating",
"width_increment": 0.0,
"height_increment": 0.0,
"light_level": 9,
"force_fluid": "minecraft:honey",
"loot": {
"loot_table": "test:my_table",
"chance": 0.01
},
"allowed_in":{
"jar": {
"allow":true,
"only_baby": false
}
}
"tick_mode": "client"
}
- Can be found in the
faucet_interactions
directory - Can be used to define custom behavior to extract fluid or items from the block behind a faucet
- They have the following codec:
- "target" : RuleTest codec for target condition (block behind). can include randomness if using the proper one
- "item" (optional) : ItemStack codec for output item
- "fluid" (optional) : ResourceLocation for output fluid
- "amount" (optional) : amount of fluid
- "replace_with" (optional) : BlockState codec for replacing state. Useful if you have a block that can provide a fluid just once, for example a waterlogged block could become non waterlogged once water is extracted. omit to leave as is