-
Notifications
You must be signed in to change notification settings - Fork 6
ZenMusic
Source: https://github.com/ZenarchistCode/ZenMusic
NOTE: This mod is included in my modpack and can be enabled/disabled via ZenMusic in ZenModPackConfig.json
If you like any of my music, you can find my full album here: https://www.youtube.com/watch?v=z5UxjL1RK4w

This mod adds music cassettes to the game, along with a boombox, a walkman, and the ability to play music in cars.
Video Guide for Adding Your Own Music: https://youtu.be/nJ3ZXizvkaI
My modpack comes with a few copyright-free classical music tracks, but you will have to add your own music cassettes if you want to expand the list.
The good news is this is pretty easy to do - there is a guide below.
Playing music will sync to all clients (so if you drive up to a player or a player logs in mid-song, they'll hear what you're hearing).
There are a bunch of types.xml entries you need to add to make the items spawn in-game - check inside the mod folder for a full list of cassettes and music devices.
Config file: profiles/Zenarchist/ZenMusic.json
{
"CONFIG_VERSION": "1.29.1",
"AllowCarInventory": 0, // Turn on/off the ability to open inventory while in cars to switch tapes
"StaticBoomboxAutoPlay": 0, // Turn on/off any static boomboxes you place in the world automatically playing
"StaticBoomboxSongs": [ // Cassette list for static boomboxes (server will auto-spawn them and play)
"Zen_Cassette_Zen1",
"Zen_Cassette_Zen2"
],
"StaticBoomboxTurnsOffInvisibleRange": 10, // Complex to explain - check mod wiki for info
"StaticBoomboxTurnsOnInvisibleRange": 10, // Complex to explain - check mod wiki for info
"StaticInvisibleBoomboxAutoPlay": 1, // Complex to explain - check mod wiki for info
"StaticInvisibleBoomboxSongs": [ // Complex to explain - check mod wiki for info
"Zen_Cassette_Trader1",
"Zen_Cassette_Trader2",
"Zen_Cassette_Trader3"
],
"RadioBoomboxAutoPlay": 0, // Makes static radio boomboxes auto-play the radio
"RadioAllowed": [ // List of devices which allow radio
"CarScript",
"Zen_BoomBox",
"Zen_BoomBox_Radio"
],
"RadioSongs": [ // A list of CASSETTES which randomly get played on the radio
"Zen_Cassette_Classical1",
"Zen_Cassette_Classical2",
"Zen_Cassette_Classical3",
"Zen_Cassette_Classical4"
],
"RadioIntermissionSongs": [ // A list of CASSETTES which randomly get played between songs
"Zen_RadioIntermission"
],
"DebugSongDurationOverride": 0 // Purely for debug: settings this > 0 forces songs to play for X seconds
}Note: enabling the optional AllowCarInventory setting will enable accessing the inventory while in a car (only the player inventory - not the vehicle inventory, and you cannot view items on the ground outside of the car). This allows players to swap cassettes while in a vehicle.
The static boombox is a boombox that can be placed at the trader/safe zones/etc which players can interact with (play/pause/next song/volume up/down), but cannot move the boombox or take the cassette or place any cassette inside. The song list is randomly selected based on the cassette types listed in StaticBoomboxSongs.
The invisible boombox is exactly the same thing, but invisible and can't be interacted with.
It's a feature most servers won't need.
I made it so that I could set an Expansion NPC to play guitar in my trader safezone and I spawn the invisible boombox on top of the NPC to play fingerstyle guitar songs, but most people probably won't want something like that unless you're running a roleplay server or something, so you can ignore this config.
Basically it's an invisible static boombox works like a visible one but it's invisible and can be placed anywhere - so if you have a music machine, a guitar playing NPC etc, you might want to play around with this feature. Set "StaticInvisibleBoomboxAutoPlay": 1 to force the invisible boombox to start playing automatically upon spawn.
Adding new music/audio cassettes is fairly easy, you just need to export the audio file you want to play as a .ogg file (I use the free program Audacity to import and convert audio files to .ogg format) and pack it into a ZenMusicAudio.pbo mod file then add it to your server modpack. Note: you can name this audio mod pack pbo file anything you like - just make sure it has requiredAddons set correctly as per below.
I've included a Git repository for an example config - click here to see it.
Here is an example config of how to do this in raw *.cpp code, but check the ZenMusic.pbo file in my official Steam workshop modpack for a more detailed example:
class CfgPatches
{
class ZenMusic
{
requiredVersion = 0.1;
requiredAddons[] =
{
"DZ_Data",
"ZenModPack" // Note: if using my standalone ZenMusic mod, this should be "ZenMusicBase"
};
}
}
class CfgVehicles
{
class Zen_Cassette_Base;
// Trader guitar music - NOTE: This is the physical cassette item config that players find in-game as loot.
class Zen_Cassette_Trader1 : Zen_Cassette_Base
{
scope = 2;
displayName = "Un Dia En Granada - Vendla";
descriptionShort = "Un Dia En Granada - Vendla";
playSeconds = 192; // Set this to how many seconds the track plays (required for syncing playback to all clients)
//isMusic = 0;
//copyrighted = 1;
}
}
class CfgSoundShaders
{
class Zen_Cassette_SoundShader_Base;
// Trader music - NOTE: SoundShader classname must match CfgVehicles classname (Zen_Cassette_Trader1 etc) - my mod automatically finds the right shader based on the cassette classname
class Zen_Cassette_Trader1_SoundShader : Zen_Cassette_SoundShader_Base { samples[] = { { "ZenMusic\data\sounds\trader1", 1 } }; };
}
class CfgSoundSets
{
// Trader songs - NOTE: Make sure soundShader[] matches the cfg from above for each tape ^
class Zen_Cassette_Trader1_SoundSet { soundShaders[] = { "Zen_Cassette_Trader1_SoundShader" }; };
}The isMusic = 0; config option is to tell the mod whether or not a cassette is music (this is tied to the in-game client-side player settings for turning music on/off).
For example, on my server all players spawn with a voiced cassette tape explaining the server mechanics to them and where to find the community hub in a roleplay style - if they have music turned off in the audio settings I still want this tape to play, so I set it to isMusic = 0; for that particular tape to make sure it is not treated as music.
copyrighted = 1; is for flagging certain cassettes as potential copyrighted. You should not use music in your modpack which is copyrighted anyway, but sometimes you might pay for music on a service like EpidemicSounds, and even though you have the right to use that music, Twitch streamers and YouTubers do not and they might get flagged for copyright infringement when the song is playing.
This makes it easy to flag certain music cassettes for potentially being triggered as copyright infringement by streamers - and these streamers can turn on/off copyrighted music in the game settings when playing on your server under the Audio Settings tab.
If you are using the standalone version of my music mod these features do not work - this feature is only for the ZenModPack.pbo version.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<types>
<type name="Zen_CassetteCase">
<nominal>20</nominal>
<lifetime>604800</lifetime>
<restock>1600</restock>
<min>10</min>
<quantmin>-1</quantmin>
<quantmax>-1</quantmax>
<cost>100</cost>
<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/>
<category name="tools"/>
<tag name="shelves"/>
<usage name="Town"/>
<usage name="Village"/>
<usage name="School"/>
</type>
<type name="Zen_BoomBox">
<nominal>20</nominal>
<lifetime>604800</lifetime>
<restock>0</restock>
<min>10</min>
<quantmin>-1</quantmin>
<quantmax>-1</quantmax>
<cost>100</cost>
<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/>
<category name="tools"/>
<tag name="shelves"/>
<usage name="Town"/>
<usage name="Village"/>
<usage name="School"/>
</type>
<type name="Zen_BoomBox_Static">
<lifetime>14400</lifetime>
<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="1" deloot="0"/>
</type>
<type name="Zen_Walkman">
<nominal>20</nominal>
<lifetime>14400</lifetime>
<restock>0</restock>
<min>10</min>
<quantmin>-1</quantmin>
<quantmax>-1</quantmax>
<cost>100</cost>
<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/>
<category name="tools"/>
<tag name="shelves"/>
<usage name="Town"/>
<usage name="Village"/>
<usage name="School"/>
</type>
<type name="Zen_Cassette_Zen1">
<nominal>1</nominal>
<lifetime>21600</lifetime>
<restock>7200</restock>
<min>1</min>
<quantmin>-1</quantmin>
<quantmax>-1</quantmax>
<cost>100</cost>
<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/>
<category name="tools"/>
<tag name="shelves"/>
<usage name="Town"/>
<usage name="Village"/>
<usage name="School"/>
</type>
<type name="Zen_Cassette_Zen2">
<nominal>1</nominal>
<lifetime>21600</lifetime>
<restock>7200</restock>
<min>1</min>
<quantmin>-1</quantmin>
<quantmax>-1</quantmax>
<cost>100</cost>
<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/>
<category name="tools"/>
<tag name="shelves"/>
<usage name="Town"/>
<usage name="Village"/>
<usage name="School"/>
</type>
<type name="Zen_Cassette_Zen3">
<nominal>1</nominal>
<lifetime>21600</lifetime>
<restock>7200</restock>
<min>1</min>
<quantmin>-1</quantmin>
<quantmax>-1</quantmax>
<cost>100</cost>
<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/>
<category name="tools"/>
<tag name="shelves"/>
<usage name="Town"/>
<usage name="Village"/>
<usage name="School"/>
</type>
<type name="Zen_Cassette_Zen4">
<nominal>1</nominal>
<lifetime>21600</lifetime>
<restock>7200</restock>
<min>1</min>
<quantmin>-1</quantmin>
<quantmax>-1</quantmax>
<cost>100</cost>
<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/>
<category name="tools"/>
<tag name="shelves"/>
<usage name="Town"/>
<usage name="Village"/>
<usage name="School"/>
</type>
<type name="Zen_Cassette_Zen5">
<nominal>1</nominal>
<lifetime>21600</lifetime>
<restock>7200</restock>
<min>1</min>
<quantmin>-1</quantmin>
<quantmax>-1</quantmax>
<cost>100</cost>
<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/>
<category name="tools"/>
<tag name="shelves"/>
<usage name="Town"/>
<usage name="Village"/>
<usage name="School"/>
</type>
<type name="Zen_Cassette_Zen6">
<nominal>1</nominal>
<lifetime>21600</lifetime>
<restock>7200</restock>
<min>1</min>
<quantmin>-1</quantmin>
<quantmax>-1</quantmax>
<cost>100</cost>
<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/>
<category name="tools"/>
<tag name="shelves"/>
<usage name="Town"/>
<usage name="Village"/>
<usage name="School"/>
</type>
<type name="Zen_Cassette_Zen7">
<nominal>1</nominal>
<lifetime>21600</lifetime>
<restock>7200</restock>
<min>1</min>
<quantmin>-1</quantmin>
<quantmax>-1</quantmax>
<cost>100</cost>
<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/>
<category name="tools"/>
<tag name="shelves"/>
<usage name="Town"/>
<usage name="Village"/>
<usage name="School"/>
</type>
<type name="Zen_Cassette_Zen8">
<nominal>1</nominal>
<lifetime>21600</lifetime>
<restock>7200</restock>
<min>1</min>
<quantmin>-1</quantmin>
<quantmax>-1</quantmax>
<cost>100</cost>
<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/>
<category name="tools"/>
<tag name="shelves"/>
<usage name="Town"/>
<usage name="Village"/>
<usage name="School"/>
</type>
<type name="Zen_Cassette_Zen9">
<nominal>1</nominal>
<lifetime>21600</lifetime>
<restock>7200</restock>
<min>1</min>
<quantmin>-1</quantmin>
<quantmax>-1</quantmax>
<cost>100</cost>
<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/>
<category name="tools"/>
<tag name="shelves"/>
<usage name="Town"/>
<usage name="Village"/>
<usage name="School"/>
</type>
<type name="Zen_Cassette_Zen11">
<nominal>1</nominal>
<lifetime>21600</lifetime>
<restock>7200</restock>
<min>1</min>
<quantmin>-1</quantmin>
<quantmax>-1</quantmax>
<cost>100</cost>
<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/>
<category name="tools"/>
<tag name="shelves"/>
<usage name="Town"/>
<usage name="Village"/>
<usage name="School"/>
</type>
<type name="Zen_Cassette_Zen12">
<nominal>1</nominal>
<lifetime>21600</lifetime>
<restock>7200</restock>
<min>1</min>
<quantmin>-1</quantmin>
<quantmax>-1</quantmax>
<cost>100</cost>
<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/>
<category name="tools"/>
<tag name="shelves"/>
<usage name="Town"/>
<usage name="Village"/>
<usage name="School"/>
</type>
<type name="Zen_Cassette_Zen13">
<nominal>1</nominal>
<lifetime>21600</lifetime>
<restock>7200</restock>
<min>1</min>
<quantmin>-1</quantmin>
<quantmax>-1</quantmax>
<cost>100</cost>
<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/>
<category name="tools"/>
<tag name="shelves"/>
<usage name="Town"/>
<usage name="Village"/>
<usage name="School"/>
</type>
<type name="Zen_Cassette_Zen14">
<nominal>1</nominal>
<lifetime>21600</lifetime>
<restock>7200</restock>
<min>1</min>
<quantmin>-1</quantmin>
<quantmax>-1</quantmax>
<cost>100</cost>
<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/>
<category name="tools"/>
<tag name="shelves"/>
<usage name="Town"/>
<usage name="Village"/>
<usage name="School"/>
</type>
<type name="Zen_Cassette_Zen15">
<nominal>1</nominal>
<lifetime>21600</lifetime>
<restock>7200</restock>
<min>1</min>
<quantmin>-1</quantmin>
<quantmax>-1</quantmax>
<cost>100</cost>
<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/>
<category name="tools"/>
<tag name="shelves"/>
<usage name="Town"/>
<usage name="Village"/>
<usage name="School"/>
</type>
<type name="Zen_Cassette_Zen16">
<nominal>1</nominal>
<lifetime>21600</lifetime>
<restock>7200</restock>
<min>1</min>
<quantmin>-1</quantmin>
<quantmax>-1</quantmax>
<cost>100</cost>
<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/>
<category name="tools"/>
<tag name="shelves"/>
<usage name="Town"/>
<usage name="Village"/>
<usage name="School"/>
</type>
<type name="Zen_Cassette_Zen17">
<nominal>1</nominal>
<lifetime>21600</lifetime>
<restock>7200</restock>
<min>1</min>
<quantmin>-1</quantmin>
<quantmax>-1</quantmax>
<cost>100</cost>
<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/>
<category name="tools"/>
<tag name="shelves"/>
<usage name="Town"/>
<usage name="Village"/>
<usage name="School"/>
</type>
<type name="Zen_Cassette_Zen18">
<nominal>1</nominal>
<lifetime>21600</lifetime>
<restock>7200</restock>
<min>1</min>
<quantmin>-1</quantmin>
<quantmax>-1</quantmax>
<cost>100</cost>
<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/>
<category name="tools"/>
<tag name="shelves"/>
<usage name="Town"/>
<usage name="Village"/>
<usage name="School"/>
</type>
<type name="Zen_Cassette_Zen19">
<nominal>1</nominal>
<lifetime>21600</lifetime>
<restock>7200</restock>
<min>1</min>
<quantmin>-1</quantmin>
<quantmax>-1</quantmax>
<cost>100</cost>
<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/>
<category name="tools"/>
<tag name="shelves"/>
<usage name="Town"/>
<usage name="Village"/>
<usage name="School"/>
</type>
<type name="Zen_Cassette_Zen20">
<nominal>1</nominal>
<lifetime>21600</lifetime>
<restock>7200</restock>
<min>1</min>
<quantmin>-1</quantmin>
<quantmax>-1</quantmax>
<cost>100</cost>
<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/>
<category name="tools"/>
<tag name="shelves"/>
<usage name="Town"/>
<usage name="Village"/>
<usage name="School"/>
</type>
<type name="Zen_Cassette_Zen21">
<nominal>1</nominal>
<lifetime>21600</lifetime>
<restock>7200</restock>
<min>1</min>
<quantmin>-1</quantmin>
<quantmax>-1</quantmax>
<cost>100</cost>
<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/>
<category name="tools"/>
<tag name="shelves"/>
<usage name="Town"/>
<usage name="Village"/>
<usage name="School"/>
</type>
<type name="Zen_Cassette_Zen22">
<nominal>1</nominal>
<lifetime>21600</lifetime>
<restock>7200</restock>
<min>1</min>
<quantmin>-1</quantmin>
<quantmax>-1</quantmax>
<cost>100</cost>
<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/>
<category name="tools"/>
<tag name="shelves"/>
<usage name="Town"/>
<usage name="Village"/>
<usage name="School"/>
</type>
<type name="Zen_Cassette_Zen23">
<nominal>1</nominal>
<lifetime>21600</lifetime>
<restock>7200</restock>
<min>1</min>
<quantmin>-1</quantmin>
<quantmax>-1</quantmax>
<cost>100</cost>
<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/>
<category name="tools"/>
<tag name="shelves"/>
<usage name="Town"/>
<usage name="Village"/>
<usage name="School"/>
</type>
<type name="Zen_Cassette_Zen24">
<nominal>1</nominal>
<lifetime>21600</lifetime>
<restock>7200</restock>
<min>1</min>
<quantmin>-1</quantmin>
<quantmax>-1</quantmax>
<cost>100</cost>
<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/>
<category name="tools"/>
<tag name="shelves"/>
<usage name="Town"/>
<usage name="Village"/>
<usage name="School"/>
</type>
<type name="Zen_Cassette_Zen25">
<nominal>1</nominal>
<lifetime>21600</lifetime>
<restock>7200</restock>
<min>1</min>
<quantmin>-1</quantmin>
<quantmax>-1</quantmax>
<cost>100</cost>
<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/>
<category name="tools"/>
<tag name="shelves"/>
<usage name="Town"/>
<usage name="Village"/>
<usage name="School"/>
</type>
<type name="Zen_Cassette_Zen26">
<nominal>1</nominal>
<lifetime>21600</lifetime>
<restock>7200</restock>
<min>1</min>
<quantmin>-1</quantmin>
<quantmax>-1</quantmax>
<cost>100</cost>
<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/>
<category name="tools"/>
<tag name="shelves"/>
<usage name="Town"/>
<usage name="Village"/>
<usage name="School"/>
</type>
<!-- Classical music -->
<type name="Zen_Cassette_Classical1">
<nominal>1</nominal>
<lifetime>21600</lifetime>
<restock>7200</restock>
<min>1</min>
<quantmin>-1</quantmin>
<quantmax>-1</quantmax>
<cost>100</cost>
<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/>
<category name="tools"/>
<tag name="shelves"/>
<usage name="Town"/>
<usage name="Village"/>
<usage name="School"/>
</type>
<type name="Zen_Cassette_Classical2">
<nominal>1</nominal>
<lifetime>21600</lifetime>
<restock>7200</restock>
<min>1</min>
<quantmin>-1</quantmin>
<quantmax>-1</quantmax>
<cost>100</cost>
<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/>
<category name="tools"/>
<tag name="shelves"/>
<usage name="Town"/>
<usage name="Village"/>
<usage name="School"/>
</type>
<type name="Zen_Cassette_Classical3">
<nominal>1</nominal>
<lifetime>21600</lifetime>
<restock>7200</restock>
<min>1</min>
<quantmin>-1</quantmin>
<quantmax>-1</quantmax>
<cost>100</cost>
<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/>
<category name="tools"/>
<tag name="shelves"/>
<usage name="Town"/>
<usage name="Village"/>
<usage name="School"/>
</type>
<type name="Zen_Cassette_Classical4">
<nominal>1</nominal>
<lifetime>21600</lifetime>
<restock>7200</restock>
<min>1</min>
<quantmin>-1</quantmin>
<quantmax>-1</quantmax>
<cost>100</cost>
<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/>
<category name="tools"/>
<tag name="shelves"/>
<usage name="Town"/>
<usage name="Village"/>
<usage name="School"/>
</type>
<type name="Zen_Cassette_Classical5">
<nominal>1</nominal>
<lifetime>21600</lifetime>
<restock>7200</restock>
<min>1</min>
<quantmin>-1</quantmin>
<quantmax>-1</quantmax>
<cost>100</cost>
<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/>
<category name="tools"/>
<tag name="shelves"/>
<usage name="Town"/>
<usage name="Village"/>
<usage name="School"/>
</type>
<type name="Zen_Cassette_Classical6">
<nominal>1</nominal>
<lifetime>21600</lifetime>
<restock>7200</restock>
<min>1</min>
<quantmin>-1</quantmin>
<quantmax>-1</quantmax>
<cost>100</cost>
<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/>
<category name="tools"/>
<tag name="shelves"/>
<usage name="Town"/>
<usage name="Village"/>
<usage name="School"/>
</type>
<type name="Zen_Cassette_Classical7">
<nominal>1</nominal>
<lifetime>21600</lifetime>
<restock>7200</restock>
<min>1</min>
<quantmin>-1</quantmin>
<quantmax>-1</quantmax>
<cost>100</cost>
<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/>
<category name="tools"/>
<tag name="shelves"/>
<usage name="Town"/>
<usage name="Village"/>
<usage name="School"/>
</type>
<type name="Zen_Cassette_Classical8">
<nominal>1</nominal>
<lifetime>21600</lifetime>
<restock>7200</restock>
<min>1</min>
<quantmin>-1</quantmin>
<quantmax>-1</quantmax>
<cost>100</cost>
<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/>
<category name="tools"/>
<tag name="shelves"/>
<usage name="Town"/>
<usage name="Village"/>
<usage name="School"/>
</type>
<type name="Zen_Cassette_Classical9">
<nominal>1</nominal>
<lifetime>21600</lifetime>
<restock>7200</restock>
<min>1</min>
<quantmin>-1</quantmin>
<quantmax>-1</quantmax>
<cost>100</cost>
<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/>
<category name="tools"/>
<tag name="shelves"/>
<usage name="Town"/>
<usage name="Village"/>
<usage name="School"/>
</type>
<!-- Alan Watts -->
<type name="Zen_Cassette_Alan1">
<nominal>1</nominal>
<lifetime>21600</lifetime>
<restock>7200</restock>
<min>1</min>
<quantmin>-1</quantmin>
<quantmax>-1</quantmax>
<cost>100</cost>
<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/>
<category name="tools"/>
<tag name="shelves"/>
<usage name="Town"/>
<usage name="Village"/>
<usage name="School"/>
</type>
<type name="Zen_Cassette_Alan2">
<nominal>1</nominal>
<lifetime>21600</lifetime>
<restock>7200</restock>
<min>1</min>
<quantmin>-1</quantmin>
<quantmax>-1</quantmax>
<cost>100</cost>
<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/>
<category name="tools"/>
<tag name="shelves"/>
<usage name="Town"/>
<usage name="Village"/>
<usage name="School"/>
</type>
<type name="Zen_Cassette_Alan3">
<nominal>1</nominal>
<lifetime>21600</lifetime>
<restock>7200</restock>
<min>1</min>
<quantmin>-1</quantmin>
<quantmax>-1</quantmax>
<cost>100</cost>
<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/>
<category name="tools"/>
<tag name="shelves"/>
<usage name="Town"/>
<usage name="Village"/>
<usage name="School"/>
</type>
<type name="Zen_Cassette_Alan4">
<nominal>1</nominal>
<lifetime>21600</lifetime>
<restock>7200</restock>
<min>1</min>
<quantmin>-1</quantmin>
<quantmax>-1</quantmax>
<cost>100</cost>
<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/>
<category name="tools"/>
<tag name="shelves"/>
<usage name="Town"/>
<usage name="Village"/>
<usage name="School"/>
</type>
<type name="Zen_Cassette_Alan5">
<nominal>1</nominal>
<lifetime>21600</lifetime>
<restock>7200</restock>
<min>1</min>
<quantmin>-1</quantmin>
<quantmax>-1</quantmax>
<cost>100</cost>
<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/>
<category name="tools"/>
<tag name="shelves"/>
<usage name="Town"/>
<usage name="Village"/>
<usage name="School"/>
</type>
<type name="Zen_Cassette_Alan6">
<nominal>1</nominal>
<lifetime>21600</lifetime>
<restock>7200</restock>
<min>1</min>
<quantmin>-1</quantmin>
<quantmax>-1</quantmax>
<cost>100</cost>
<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/>
<category name="tools"/>
<tag name="shelves"/>
<usage name="Town"/>
<usage name="Village"/>
<usage name="School"/>
</type>
<type name="Zen_Cassette_Alan7">
<nominal>1</nominal>
<lifetime>21600</lifetime>
<restock>7200</restock>
<min>1</min>
<quantmin>-1</quantmin>
<quantmax>-1</quantmax>
<cost>100</cost>
<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/>
<category name="tools"/>
<tag name="shelves"/>
<usage name="Town"/>
<usage name="Village"/>
<usage name="School"/>
</type>
<type name="Zen_Cassette_Alan8">
<nominal>1</nominal>
<lifetime>21600</lifetime>
<restock>7200</restock>
<min>1</min>
<quantmin>-1</quantmin>
<quantmax>-1</quantmax>
<cost>100</cost>
<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/>
<category name="tools"/>
<tag name="shelves"/>
<usage name="Town"/>
<usage name="Village"/>
<usage name="School"/>
</type>
<type name="Zen_Cassette_Alan9">
<nominal>1</nominal>
<lifetime>21600</lifetime>
<restock>7200</restock>
<min>1</min>
<quantmin>-1</quantmin>
<quantmax>-1</quantmax>
<cost>100</cost>
<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/>
<category name="tools"/>
<tag name="shelves"/>
<usage name="Town"/>
<usage name="Village"/>
<usage name="School"/>
</type>
</types>All my mods are open-source and published under the Mozilla Public License Version 2.0. Any mods based on my code must be open-source - no obfuscation!
You can modify/reupload/repack my mods if you like, but please credit any original authors/3D model/3rd-party asset creators, and keep in mind any future updates I make will not be automatically applied to repacked mods so make sure to check back from time to time for bugfixes and improvements.
If you find my mods useful, please consider buying me a coffee - it's not expected but very much appreciated: https://buymeacoffee.com/zenarchist
- General Setup Guide
- Core Mod Setup Guide
- ZenModPack Master Config
- Various Info
- Known Bugs & Issues
- Report Bug
My utility style mods for debugging etc.
Mods which affect game mechanics:
- ZenAlcohol
- ZenAllowMapBagSlot
- ZenAntiCombatLogout
- ZenAutoConvertStash
- ZenAutoStackItems
- ZenAutoWinterDetect
- ZenAutoRun
- ZenBasebuildingConfig
- ZenBatteryPASPersistence
- ZenBetterChatFont
- ZenBrokenGlasses
- ZenBuildingDescription
- ZenCarAttachments
- ZenCarBatteryIcon
- ZenCarCompass
- ZenCarGlovebox
- ZenCarsCutDownTrees
- ZenCanteenTablets
- ZenCatchRain
- ZenCauseOfDeath
- ZenChickenCoops
- ZenCraftingSounds
- ZenCraftRagHands
- ZenComboLocks
- ZenCombineJSON
- ZenDropRuinedClothing
- ZenDynamicZoneLoot
- ZenEarPlugs
- ZenFireFuel
- ZenFireWood
- ZenFireplaceStick
- ZenFishingConfig
- ZenFixCarAttachmentGUI
- ZenGraves
- ZenGroundCleaning
- ZenHideGearInCars
- ZenHints
- ZenHologram
- ZenHologramControls
- ZenImmersiveChatHUD
- ZenImmersiveLogin
- ZenInformWeaponStateBug
- ZenInventoryAnimation
- ZenKnifeGardens
- ZenLeftovers
- ZenLogPiles
- ZenMagObfuscation
- ZenMap
- ZenMicCheck
- ZenNotifications
- ZenOpenCansRock
- ZenPainting
- ZenPimpMyRide
- ZenRadioPlugin
- ZenRebuildableWells
- ZenRepairJSON
- ZenRepairPumps
- ZenRepairWells
- ZenServerGUI
- ZenShove
- ZenSplitUI
- ZenSleep
- ZenStaminaSlope
- ZenTerritories
- ZenWeaponEngrave
- ZenWoodHealth
- ZenZombieDoors
Mods which add gear to the game:
- ZenArtillery
- ZenBackwardsCaps
- ZenBookshelf
- ZenBunnyMasks
- ZenCamoCamp
- ZenCarWorkbench
- ZenChess
- ZenChristmasTreeCraft
- ZenConcussionGrenade
- ZenDoubleArmbands
- ZenFlask
- ZenFlint
- ZenGhillie
- ZenJameson
- ZenLadders
- ZenMusic
- ZenNotes
- ZenRaidAlarm
- ZenRaybans
- ZenRunes
- ZenStaticObjects
- ZenSwissKnife
- ZenTimeBomb
- ZenTireRack
- ZenTreasure
- ZenTreehouse
- ZenVikingAxe
- ZenZippoLighter
Mods which run purely server-side:
- ZenBloodDrips
- ZenCampSites
- ZenDynamicZoneLoot
- ZenLootCyclingDetection
- ZenNightConfig
- ZenPersistentTrees
- ZenShelterCargo
- ZenTreesplosions
- ZenZombieController
- ZenZombieConfig
- ZenJameson
My standalone mods