#mod_development
1 messages ยท Page 283 of 1
only if you want rewrite tooltips entirely
Ah yeah, no idea. Sorry about that ๐
yeah ๐ฆ thanks anyways!
I am the author of the "Disable Unstable Debug Text" mod on the workshop and it's currently a java mod, so I'm looking into ways of doing it in lua instead. I know it's dirty but I'd rather do it from lua since that way I can have a hotkey to toggle the debug elements
Anyone know if there is a way to place a 3d item in the world, like if the character was to drop it, with X,Y,Z coordinate or by from a GridSquare?
in b41 not really (i found some kind of way but it was so buggy i wouldn't want to actually use it), maybe in b42 though
we need a tool to ease the creation/updating of so many recipes
my last issue was that I left out [] for inputs. Outputs dont need them but inputs do. That lack of consistency messed me up
Anyone see any issues where smoker characters spam coughing? I have a user reporting it thinking it was my mod but when I looked at their mod list it is clear they have some conflicting mods. But I am curious, their are new changes to smoking, anyone look at it? Any ideas what might cause a player to constantly spam "cough" every second essentially forever until they die or quit?
Is there a way to know when a food is refrigerated/frozen?
Hello guys, I wanted to ask you a question, what tool do you use to make mods? Do you do it over the game's base code? I'm a beginner and I wanted to know this, because I don't know how to start making mods.
This is B41 but likely the same: https://projectzomboid.com/modding/zombie/inventory/types/Food.html#isFrozen() there is isFrozen there. For the fridge I am not sure, it might have to do with it being isFresh or not? I am uncertain how that part works.
declaration: package: zombie.inventory.types, class: Food
Best place to get started is by installing existing mods and looking at them, and then reviewing game code as well. Start small like adding an item or something like that.
Do you know where I can find all possible parameters for scripts?
Foods, weapons, guns, etc.
That page should have it all, it is b41 though, there will be changes, there is a newer one floating around too for b42 but it isnt as notated: https://demiurgequantified.github.io/ProjectZomboidJavaDocs/
package index
Just cause the B41 isn't B42 though doesn't mean its useless, most of it is the same, dependent on the system you are using.
package index
Unofficial Java doc
For B42
No, I meant like parameters for scripts not code.
Wiki has the parameters I believe, tho not updated for B42
Thanks, but how can I test my mods? Is it just a matter of creating the folder structure of existing mods and putting them in the mods folder?
https://demiurgequantified.github.io/ProjectZomboidJavaDocs/zombie/scripting/objects/Item.html
You can find them here, gotta look and read
declaration: package: zombie.scripting.objects, class: Item
for example
int means that it is an integrer for example DaysTotallyRotten = 30
boolean means that it is either true or false for example IsCookable = true
We can eat dungs? 
yes, but they kill you if im not mistaken
item Dung_Turkey
{
DisplayCategory = Junk,
Weight = 0.01,
/Type = Normal,/
Type = Food,
CantEat = TRUE,
Tags = isCompostable,
DisplayName = Dung - Turkey,
Icon = Dung_Turkey,
WorldStaticModel = Dung_Turkey,
IsDung = true,
}
I am getting a huge performance hit on getObjects loop. I need to determine if the square is a road. Any recommendations on optimizing this?
-- Restrict building on roads
if not allowOnRoads then
local objects = checkSquare:getObjects()
if objects:size() > 0 then
for k = 0, objects:size() - 1 do
local isoObject = objects:get(k)
local objectTexture = isoObject:getTextureName()
if objectTexture and luautils.stringStarts(objectTexture, "blends_street") then
return false, "IGUI_pczUI_aRoad"
end
end
end
end
so i got a question
when it comes to weapons, what causes them to not show up like, lets say 95% of the time?
because i am trying to backport some weapons from B42 to B41, the bats.
rake headed, fork headed, can reinforced, and sheet reinforced
now, the recipes show up
but the items refuse to, even with ID's and ported over models / textures
I just want to say, I came here with a question, found the answer in the PINNED comments. So I didn't have to ask. /bows deeply
Check out tips here
When are you running this ?
Maybe you can pass if it's not an IsoObject
I believe getObjects might give you everything
So even zombies and players no ?
Maybe not actually
No yeah I think it does ?
Based on a given square indicated by the Moveable Cursor, it will check the surrounding around from the square depending on sandbox setting limitations. So it will cycle through maybe 100 squares grabbing the objects on each.
Perhaps there is an IsoGridSquare method that can grab the floor tile only.
I think zombies and players cannot be found here, but are found via getMovingObjects()
HAHA, wtf. I think I asnwered my own question:
IsoGridSquare:getFloor()
I wonder how this will work for floor on top of floors
Not story by story but building a tile on top another tile
Made a mod that adds a creature called a Homunculus. I want to have a custom spawn mechanic, what can I do that's both gross and funny
I'm thinking you have to craft an egg with something, but what
I'll make toilet goblins next. But that's too much coding for me rn (I'm lazy)
I wanna do a spawn item because then I can just create a context menu option if the player has the item, and clicking that spawns it
for situations where you *do* have to loop through the object list, use IsoGridSquare:getLuaTileObjectList()
it converts it to a table before passing it to lua so you can loop through it really cheaply
my mod is regrettably extremely reliant on this ๐
What the crap, no one does this that I have seen - not even TIS code. Now I have to change several lines of code.
spawn it after you try to resurrect someone lol
How do I add a description to a profession?
how would one go about attaching models to a weapon?
like, x weapon uses y model
is it attached to the model itself? the item's id?
sorry, not the model itself
i should say the base file
Really unfortunate on some of the limitations of the craftRecipe stuff. Doesn't seem to be able to grab by item types
Looks like it expects to use tags, but not all vanilla items have tags
you can use item types?
i think it might be attachitem
you need to find wepaon's bone
How? I can seem to find an example and I can't see it in the decompiled either
item 1 [Base.PopBottle;Base.WaterBottle;Base.PopBottleRare],
Hmm, perhaps I didn't explain. I meant using this for example Type = Radio, to grab
oh, probably not no
so I either need to add custom tags to all the items or call each item individually
if I wanna make a voice pack how do I do it? I saw someone making an arthur morgan one and I want to make a heisenberg one where all he says is "JESSE"
It's actually really easy to add new animals if you know what you're doing
Hopefully me posting this mod helps people figure it out easier
How would I start making vehicle mods?
Maybe check resources at the bottom on modding Wiki
https://pzwiki.net/wiki/Modding
Tho I don't remember seeing much about vehicles but I'm pretty sure there exists at least one guide on how to make vehicles
Already checking this out, texturing sounds complicated.
What does he mean by mask?
Mask out windows, give them mirror metal material and add a filter to them
Mask out chrome parts, made them mirror metal and added the same filter with slightly different settings.
Apply the same filter to all body parts left.
Add a position gradient to the windows
The black & white images are masks right?
That's the only thing ik tbf
How do I open .X files?
Use a converter.
What converter though. Aren't these modified DirectX files?
Thats odd. Made some draft ./maps mod, with spawn points. And this mod completely don't want to run from the 42 folder, but all is good with Common. But it take some shared files from 42 ๐ Also I still cannot reuse some textures and other stuff from Common folder, as said on wiki page, receiving just blank white pics. Including some icon/previews. Maybe some1 faced with it already?
you can also try to see if someones willing to help in the filibuster rhymes server
And struggled a bit with a media/video import. Seems like something goes wrong with its path. Wanted to check out how to make some cute previews on new spawn selector
I'll do it once I'm done modeling.
welcome to my hell. I have videos already made for my previews but seems that the path for videos is hardcoded to the PZ/media/videos folder
doesnt want to read from anywhere else
i was complaining about it yesterday or the day before
icons and posters don't work in common because they check the actual directory and not the virtual file system
no idea about maps but there are a lot of bugs with things not working in certain folders right now
Oh, and directly all is working, I believe?
if you put the bik video in the vanilla pz videos folder, itll load and work as it should
Aha, ty. Sorry if im asking for some that has been discussed earlier. Just arrived here today, couple oh hours ago ๐
no worries, you can ask all you want, just sharing what ive found :p
Thank you guys, really appreciate it ๐
In Blender you mean ?
Thank you 
I wonder what fixes they are adding to 42.0.3
Integration of rest of fluid system?
what is missing from that?
Tubs and Sinks aren't part of it. Would be nice for those to get integrated
ah then we are looking at similar hopes. Been trying to add the fluid container property to barrels. This and that go in the same line
Wouldn't mind having some lua accessible things for craftRecipe if they aren't going to allow direct overwriting
yeah, that side of things is a little disappointing
Off the top, anyone know if there is a Kahlua method to convert a LUA table to Java ArrayList?
So, I got this error I don't really understand, think I've isolated it from the rest of the plain loading in stuff
You been working on recipe script?
Check your parameters? make sure they are actually available in B41.
Can you try only one bat recipe? Is that / at the end suppose to be there? Does the BoltBatCrafting sound actually exist - maybe you added the sound along with a sound script for it?
Try one recipe and see if it works to seclude the issue?
fuk
thats from scrap weapons
see this started as like, a replacement for some of those
cuz it was initially for a tweak
which made the bats non functional
so i moved it to its own mod
LeafRake/Rake/,
remove tha slash at the end real quick, see what happens?
lemme just copy vanilla and add hammering as the sound
fuk again
see initially that was gonna use the workshop
cuz it had rake heads
but the import wasnt working so i cut it out
hrmm, Im not quite understanding. What do you mean by that? and what do you mean import wasnt working?
it just wouldn't pull from the workshop
no metalcutters, no tool heads
no problem for me though
i can just cut it out and use 100% vanilla
sounds replaced, extra slash removed
Did it work?
try one recipe. temporarily remove the rest.
still busted
recipe looks like this and wont make anything
right there is the file for all the bats and their ids
brb gonna correct the break sounds
break sounds are now all BaseballBatBreak
and every time i right click on a bat i get an error
copied from error magnifier
Is ZombRand inclusive?
Make sure the item icon is in the correct folder and has the proper naming convention.
#mod_development message
Check this out instead of using ZombRand
ZombRand returns 0 (inclusive) up to the first parameter (exclusive)
#mod_development message
Your icon naming seems incorrect. Do not include Item_:
Icon=Item_Bat_Rake,
to
Icon=Bat_Rake,
Check the others.
Also check the Weaponsprite names and if they are in the correct spot.
nah doesnt matter
I don't believe it does if you don't want it to.
Side note; you can name a folder Item_Icons and then you don't need to add the prefix to every single icon name, but then you do need to include Icons/Bat_Fork to your Icon=
But it allows you to itemize your textures a bit more neatly if that's something you prefer.
Are your items defined as Baseball bats, or just 'Bats'?
Ah, wait. Is your items.txt named just bats.txt?
...should it be items_bats.txt
because im starting to feel silly for being under the impression that it was the file contents that mattered more than the name
Hm, no actually I don't think you do.
i'm gonna add items just to be safe
It might also be a quirk of the item spawning menu, did you try searching BaseballBats without the space as well?
goes off display names
no spaces leads to no hits
Refactoring now! ๐
well
im gonna restart
and pray it brings the recipes back
fuck
renaming the files has borked my recipes
reverting to the old structure
I back ported terraria 1.4 items to 1.3 (TML) back in the day. It's how I got started learning the API. Just thought Id mention it since I saw you are in their Discord.
it's odd; because I added that bats.txt to my folder and it works fine from the items list spawner;
hey, can you do me a favor?
can i send you the zip for the mod?
see if you can spawn in anything?
since if you can, i can see if the models n stuff work right
Sure, I'm doing testing for my own mod already as is.
thanks dude, major lifesaver
It'll save you some headaches getting familiar with it; but I can definetly see how it can be overwhelming.
now this is extra weird
i copied over the bat file from earlier, same you used
and i cant see it
and as a bonus "fuck you" the recipes dont show up anymore
...i should go make sure its still enabled actually
yeah its still enabled
so apparently my own mod hates me
I hadn't realized it was a backported mod and launched it earlier on B42 (since that was what I was testing my own mod on); but I'm debugging it now on B41.
you'd think this would be easier, right?
"oh, most the work is done! they already did the models and textures, i just have to add a recipe and item id and some stats!"
six days
that was me six days ago
.txt files are honestly the bane of my existence and my least favorite part about modding.
Give me lua anyday.
At least I can add print functions to lua.
It's probably a stray extra space somewhere in one of the .txt files being candidly honest; they're wildly touchy. but I'm taking a look.
They really can be that touchy at times.
alright how touchy are we thinking
like what spacing
I've accidentally included an extra space after 'Base' before and it broke the file.
so how many spaces does it want
These recipes are making me want to kill somebody
would they happen to be related to 4 baseball bat upgrades
because i can get the red and white spraypaint to set up a bullseye right on the noggin if they are
module PWPN
{
imports
{
Base,
}
craftRecipe MakeWoodSword {
timedAction = SawLogs,
Time = 1600,
tags = AnySurfaceCraft,
category = Survivalist,
SkillRequired = Maintenance:2;Woodwork:3,
xpAward = Woodwork:50,
NeedToBeLearn = TRUE,
CanBeDoneFromFloor = TRUE,
inputs {
item 1 [Base.Plank],
item 3 [Base.ScrapMetal],
item 6 [Base.Screws],
item 1 tags[Saw] mode:keep,
item 1 tags[Hammer] mode:keep,
item 1 tags[Screwdriver] mode:keep
}
outputs {
item 1 PWPN.WoodSword
}
}
}
Close to the bat issue lol
B42?
yeah
nice
best of luck, man
i know how rough it gets
amount of help i need to get shit working, im not sure if i can even take credit for my mods anymore lmfao
may as well credit the entire modding sphere ๐
it's always a comma
oop, yeah
your screwdriver is missing a comma
You also don't need a comma after Base, and another modder I helped I removed the comma after Base and it started working ๐
For B42 specifically.
oh nbvm
in most cases i've seen you don't even need to import base in the first place
nvm
B41 it doesn't seem to matter.
This too.
You only really need to import Base if you're incorporating or overwriting recipes or items from the vanilla game
If you're strictly adding new items to your module you don't need to import it.
it still wants to crash...
LOG : General f:0, t:1735458562877> [craftRecipe] removing script due to load error = MakeWoodSword
ERROR: General f:0, t:1735458562878> ExceptionLogger.logException> Exception thrown
java.lang.Exception: CraftRecipe error in MakeWoodSword at CraftRecipe.Load(CraftRecipe.java:359).
Stack trace:
zombie.scripting.entity.components.crafting.CraftRecipe.Load(CraftRecipe.java:359)
zombie.scripting.entity.components.crafting.CraftRecipe.Load(CraftRecipe.java:249)
zombie.scripting.ScriptBucket.LoadScripts(ScriptBucket.java:265)
zombie.scripting.ScriptBucketCollection.LoadScripts(ScriptBucketCollection.java:122)
zombie.scripting.ScriptManager.loadScripts(ScriptManager.java:1639)
zombie.scripting.ScriptManager.Load(ScriptManager.java:1562)
zombie.GameWindow.initShared(GameWindow.java:156)
zombie.GameWindow.init(GameWindow.java:1442)
zombie.GameWindow.mainThreadInit(GameWindow.java:701)
zombie.GameWindow.mainThread(GameWindow.java:599)
java.base/java.lang.Thread.run(Unknown Source)
its driving me insane
ive been working on these since 1pm... it is now 3:50 am
i fucking feel that
i spent one whole day working on these fucking bats
i have never felt worse about how i've spent a day
Alright; I got it to work. All that I did;
A missing comma in one of the baseball bats .txt files, a missing comma in one of the batrepairs.txt after Screws=10, and I removed the import on the base bats.txt because it isn't necessary.
I also reformatted bats.txt to be a bit more readable, I'll send the zip over here in a sec.
Models aren't showing up, but that's because you need the textures ported back over.
Oh wait I see you have them, let me see if I can fix that rq.
im hrhggrhrhghgrghg SCREAMING FUCK FUCK FUCK
Don't sweat it dude I've literally been troubleshooting this exact thing in my own mod all day long.
It's just always commas lmao
id try not to
but i got this complex about mistakes
i always think i gotta do it right the first time, so i always put in extra effort
and then it always explodes
and then i consider exploding my temporal lobe with 1 1/2 ounces lead shot
what the actual f...
I removed these 2 lines
NeedToBeLearn = TRUE,
CanBeDoneFromFloor = TRUE,
and it loaded. Added them again one by one and CanBeDoneFromFloor doesnt want to load
I check back to the documentation and noticed I messed up. The actual parameter is "isCanBeDoneFromFloor"
no, loaded it with isCanBeDoneFromFloor and crashed again. I guess that parameter is no longer valid
I don't need fixing modules in b42 right? Fixing is now done via tags based on this recipe?
craftRecipe FixWithDuctTape
{
Time = 180,
AllowBatchCraft = False,
tags = AnySurfaceCraft,
category = Repair,
timedAction = CraftWeapon1H,
xpAward = Maintenance:10,
OnCreate = CraftRecipeCode.GenericBetterFixing.OnCreate,
ToolTip = Tooltip_Recipe_CanFailAndDamage,
inputs
{
item 1 tags[RepairWithTape] mode:keep flags[Prop2;IsDamaged],
item 2 [Base.DuctTape] flags[Prop1],
}
outputs
{
}
}
Check my request out in the PZ modding Disc if anyone is looking for front-end dev work or to be a server co-owner!
is there a easy and good way of displaying debug values? for example i have map with a table in it and i would like to check the values over time without printing it all the time
What is a common issue that prevents the damn Sandbox settings from saving on server restart? I am only using two mods. Mine and StarLit, nothing else, no Udderly Up to Date. My mod does no special Sandbox manipulation.
I had this issue all the damn time while admining. Always had to delete the map_sand.bin file then painfully redo the settings. That is in linux, in my test environment I am dealing with windows and that file is not produced.
TchernoLib
That is if you add it to your moddata
Alternatively you can every minute print(yourMapValue + nonExistantValue) which will error out and in debugger give you fast access to viewing whole table and you don't have to print it fully
Anyone know how I separate IsoZombie from this
IsoZombie{ Name:null, ID:70 StateFlags:zombie.popman.ZombieStateFlags{ { Initialized, CanWalk, CanCrawlUnderVehicle }}}
I get this and want to check for IsoZombie. I presumed it was isInstance() but can't get it to work ๐
you use isinstance(var, "IsoZombie") to check if its class is IsoZombie but idk what that table is
is it like the toString output of IsoZombie or something??
Hello, i have a entity script written out for a new craftable building but im unsure on how i would add this entity CraftRecipe to the new build menu, if i need to atall? Heres the entity:
module Base {
xuiSkin default
{
entity ES_Funeral_Pyre
{
LuaWindowClass = ISEntityTabWindow,
Display Name = Funeral Pyre,
Icon = Build_Cairn
}
}
entity FuneralPyre
{
component UiConfig
{
xuiSkin = default,
entityStyle = ES_Funeral_Pyre,
uiEnabled = false,
}
component SpriteConfig
{
face N
{
layer
{
row = funeralpyre_tile_def_1,
}
}
}
component CraftRecipe
{
timedAction = BuildWoodenStructureMedium,
time = 50,
SkillRequired = Woodwork:1,
xpAward = Woodwork:100,
category = Miscellaneous,
ToolTip = Tooltip_craft_bookcaseDesc,
inputs
{
item 4 [Base.Log],
item 8 [Base.SheetRope],
}
}
}
}
It's type when printed was "userData" or something when I checked which was confusing
Tried converting to metatable and that kinda worked but was a lil funky
I'll try dis
it did not like that yikes
Don't know if it's case sensitive cause the docs say it's "isInstance" but tried both still not working... back to drawing board 
instanceof(var, "IsoZombie") is more typical
i'm pretty sure that's just how zombies print now though
a lot of objects gained tostring overloads
type userdata also confirms that it is a java object
morning all. I'm trying to edit a simple mod that adds a few traits "More Simple Traits (MST)" to remove 3 of it's added traits since they're redudant now cuz b42 adds +1 traits for those skills, and when I remove them from the mod's .lua file it does remove them from the game but it also breaks the description for the other added traits from the mod from showing up when I hoover over it with the mouse. any idea why that might be and what I could do differently?
is the max capacity of all bags hard coded to 48?
50
is it possible to be bypassed?
Decompile change and recompile until they change it not be hard coded
Hey are .fbs animations not supported in 42 ?? any idea why they are not playing ?
why isnt the midA sound playing for me?
common/media/lua/client/play_sound.lua:
local function OnKeyPressed(key)
if key == 49 then
local soundName = "midA"
local player = getPlayer()
player:playSound(soundName)
end
end
Events.OnKeyPressed.Add(OnKeyPressed)
common/media/sound/sounds.txt:
sound midA
{
clip {
file = common/media/sound/mid_a.ogg,
distanceMin = 10,
distanceMax = 50,
}
}
animations aren't loading correctly from the new mod structure, wait for a patch
Anyone know where the disassemble results for furniture items are gotten from?
the path to the sound probably shouldn't contain common in it
thanks, but the strange thing is my 1 .X animation plays perfectly
i just tried it without that but it still doesnt work
it's based on the tiledef, they have a couple material types set and that determines skill required, xp gained, tools needed, and loot
does your sound script file not contain a module?
the entire thing should be wrapped inside module MyModule { ... }
oh it didnt
ill try to add it into it
should i also change this line in the lua file?
local soundName = "midA"
that should be fine from what i can see
it still doesnt work:(
Huh, so trying to do some custom OnCreate seems to work fine on a new save, but if I exit and than immediately continue it "Relods LUA" and stuff breaks
In which circumstance we have to have module ?
okie i got it working now:)
which traits did you remove?
can somebody help me find the location and name of the ammo boxes model files? im slowly going insane trying to find it lol
only managed to find the shotgun shells box 3d model
.38 for example
model BoxOf38Special
{
mesh = WorldItems/HandGunAmmoBox,
texture = WorldItems/BoxOfRounds38Special,
scale = 0.4,
}
\common\ProjectZomboid\media\models_X\WorldItems\HandGunAmmoBox.FBX
i swear i checked like ten times today
Check my request in the Project Zomboid Modding server if you'd like to be apart of a paid dev team (:
This worked thanks albion โค๏ธ
Is there a way to define to drop a certain amount of items on dead zombie body? Like There is 20 percent chance that they will drop 10 bandages (this is an example) I already have the code that changes distribution but could not figure out this part
You want to use OnZombieDead
Got it! By any chance do you know the vanilla file that does this so I can understand how it works?
Doesn't use the distribution, which can become super bloated
Yea I was using distrubition.. ๐ฎ
OnZombieDead: Fires when a zombie dies. The zombie's inventory is not filled with loot when this event fires, but their clothing and attached items are added. The corpse does not exist until a few seconds later.
Parameters
Name Type Notes
zombie IsoZombie The zombie that died.
Hey guys! Does anyone know if theres an isoPlayer/isoGamePlayer method for determining if a player is near a fence/car (like what is used for the new stealth system)
I dont see anything in here https://projectzomboid.com/modding/zombie/characters/IsoPlayer.html
declaration: package: zombie.characters, class: IsoPlayer
is there any mod guides to moding in a custom bag?
Start here, these are B42
https://demiurgequantified.github.io/ProjectZomboidJavaDocs/zombie/characters/IsoPlayer.html
declaration: package: zombie.characters, class: IsoPlayer
I suggest opening a bag mod and looking at the structure and the files. Start by modifying an existing mod, changing the settings, etc, then create your own ๐
gotcha, thank you :)
If i knew of a guide, i would've pointed you towards it but this is the best alternate option, reverse engineering :p
How do we add sound to crafting recipes in 42 now? seems like the old way doesn't work anymore
sounds are now attached to timedactions
you would need to create a new timedaction with the sounds/animations you want
here is an example of base game timedaction Dismantle:
timedAction Dismantle
{
metabolics = HeavyDomestic,
actionAnim = Disassemble,
sound = Dismantle,
prop1 = Base.Screwdriver,
prop2 = Base.CraftingMetalPart,
}
Metabolics is how many calories the action consumes, dont know numbers at the moment, gotta check that HeavyDomestic definition.
You can allso specify how much muscle strain the animation causes
muscleStrainFactor = 0.0133,
muscleStrainSkill = Strength,
muscleStrainParts = Hand_R;ForeArm_R;UpperArm_R,
then finally, you add your new timed action to your recipe script
Awesome, thank you for the direction
or you can check the list of already available timedActions and choose one you like
timedActions gives me nightmares
like everything it has its pros and cons, it was more tailored before when you can specify just a sound and thats it
i think they seem good but i really don't like that they called them timed actions despite those already being something else entirely
Agreed
I haven't yet gotten to the understanding part yet so I'll let you know ๐
Base.Dakimakura66656 not found
A recipe is calling for that item and its not finding it, so it crashes

I'm getting it too lol
but for other items
why would that break it tho, I'd assume it would just skip over it like in Build41
i guess the code changed
I deleted the calls for that model, and will try again
b42's recipes have much stricter error checking
bruh 3 different sized displays
cant even read that
yeah XD I have a 44" Samsung TV running at 3840 x 2160, a 27" Dell monitor running at 2560 x 1440 and a 32" MSI monitor running at 1920 x 1080

I think the hotkey on windows to screenshot a specific portion of your screen was Shift+WinKey+S
Hoping and praying that my testing for the new Visible Generator Range update was sufficient so I wont get a bajillion reports
alt + print screen catches the active window
@bronze yoke do you recall what was the issue with missing dashboards. was it bad recipes causing it?
yeah, it's old recipes being left in
i haven't looked into it myself but that seems to be the consensus anyway
is there a better way to determine if a bodypart is scratched without iterating through all the bodyparts and see if they are scratched? especially since the event OnPlayerDamage fires continiously till no damage is received anymore
thanks, Im experiencing it now
shockingly no
that is kinda sad i guess its not too bad for 15 or what elements to loop through, but a bit unnecessary
i just find it a little insane that a zombie game's mod api does not actually have a way to catch getting hit by zombies
i find it a bit weird that there is no differentiation between getting a hit and getting continious damage
i just want to implement a scratch counter, and has to do all my flip flop logic myself thats kinda janky
ok ya I fixed that problem, I made a typo in every single item somehow 
when i add a map / table to the moddata like this
local playertable = player:getModData()
if playertable.ImmunityTable == nil then
playertable.ImmunityTable = ScratchTable
end
will this also be saved to the character in MP or do i need to send the server this information as well ?
it errors at my input? It says Tag has no items, but every item I have made has the tag on it
I tried with Base. and no Base.
are your dakimakuras in the base module as well?
ya
thats odd
in b41 yes, in future b42 multiplayer who knows
thanks
How can I choose which icon my container will use?
everything works fine, its just erroring at the crafting recipes, the Input specifically. but I dont see anything wrong. since the main mod the addon is based off of does the exact same thing with no issues
try asking in the modeling section, someone that knows might be paying more attention to that channel than this one
Ah, my bad. I always forget that channel exists lol
this mod is kicking two asses now
me and my new buddy chris
pathing seems to be the main issue, we've tried converting the models from X to DAE to FBX thru blender
we've tried moving them to the plain models_x root folder and clearing up the base file pathing
no matter what, the models just do not wanna show up in game
dumb question why do some of the clothings not have a model it refrences in the xml such as this '''<?xml version="1.0" encoding="utf-8"?>
<clothingItem>
'<m_MaleModel></m_MaleModel>'
'<m_FemaleModel></m_FemaleModel>'
<m_GUID>ac7976de-2c73-44ea-9392-5d24ac1fb649</m_GUID>
<m_Static>false</m_Static>
<m_AllowRandomHue>false</m_AllowRandomHue>
<m_AllowRandomTint>false</m_AllowRandomTint>
<m_AttachBone></m_AttachBone>
<m_BaseTextures>clothes\shirt_tshirt_textures\shirt_formal</m_BaseTextures>
</clothingItem>'''
the slot for model is blank so where does it get its models from
How can I make a TV advert/broadcast that says the AEBS frequency number? (Its random each game)
Because it uses the actual character models. Like underwear is just painted onto the character model
80% sure
oh
its crafting recipes and ect. that does not involve modeling
I was telling Mr. Sniffles, they removed the message
I'm working on a questing system. I have most of it done, I just need to make a single table able to be accessed by everyone on a server. What is the best way to store a single table that changes every day at midnight? is it the global modData?
you need the data in these files
ISWeatherChannel.lua
ISDynamicRadio.lua
More specifically ISDynamicRadio.lua, since its the file in charge of generating the frequency.
call the function and make it print in the advert.
How do I call it? Thats the problem for me. I have no idea how to do it
I am trying to do a clothing mod and here is what I put in guid
<files>
<path>media/clothing/clothingItems/test.xml</path>
<guid>e369e37c-f432-4c67-8b39-bf5aaa39a053</guid>
</files> the script: item test
{
DisplayCategory = Clothing,
Type = Clothing,
DisplayName = test,
ClothingItem = test,
BodyLocation = Tshirt,
Icon = TshirtGeneric,
BloodLocation = Shirt,
ColorRed = 0,
ColorGreen = 0,
ColorBlue = 0,
Insulation = 0.5,
WindResistance = 0.30,
FabricType = Cotton,
WorldStaticModel = TShirt_Ground,
} xml:<?xml version="1.0" encoding="utf-8"?>
<clothingItem>
<m_MaleModel></m_MaleModel>
<m_FemaleModel></m_FemaleModel>
<m_GUID>f58d56d1-f47b-4064-9300-0e74a4405847</m_GUID>
<m_Static>false</m_Static>
<m_AllowRandomHue>false</m_AllowRandomHue>
<m_AllowRandomTint>false</m_AllowRandomTint>
<m_AttachBone></m_AttachBone>
<m_BaseTextures>clothes\shirt_tshirt_textures\test</m_BaseTextures>
</clothingItem> but in game the clothing shows up in menus but it has no ground texture or texture when I wear it what am I missing
and I made sure the texture waas in the right location
anybody got an idea as to why this script doesnt work?
Your Guids don't match.
The one in fileGuidTable and the one in the clothings XML file need to match
oh
Do I create a script for this or slide it into my XML?
Iโm trying to create an advert with the frequency stated
hmm
anybody got a clue?
are there VS code addons for PZ typing?
so when I try to test the clothing it looks like this, I checked mutiple times and the texture is in the right location
@umbral raptor pming you
thank you
<m_MaleModel></m_MaleModel>
<m_FemaleModel></m_FemaleModel>```
Those need values. What are you basing the item on?
oh my god I got it wrong ๐ญ they are so similar
anyone got a good tutorial or example of storing data in global modData?
earlier people said that some items dont require models
as far as I know, clothing does. Otherwise it has no idea how to wrap the texture.
other clothing in the game don't seem to have models
this is a file from the base game
After more pain and suffering I've made my homunculus actually visually distinct (previously a green pig)
I'm mostly adding to this because it's a proof of concept, but I want to give it some sort of actual use
Oh, ok, welp. I'm out of my element. ๐
Iโm out of my element as I donโt do clothing mods but have you checked your masks?
This seems like a masking issue or an issue where the texture isnโt defined on where itโs supposed to go on the body.
where are the masks?
Ok so. Blender noob that I am, apparently I badly messed up the vertex weights. I was attempting to replace a Tifa Lockhart model with a model of Ruby Rose, and I just copied over the Tifa weights wholesale to the Ruby model.
I'm guessing I'm...not supposed to do that
ok so, I have no idea if this is possible or not with Build 42. but I will just speak my mind in case it can be used as a suggestion for any higher up lurking.
For the new crafting recipies. the itemMapper stuff is really neat and a big quality of life but is it possible to consolidate multiple mods into using the same recipe?
Like using the Dakimakura mod and my addon as an example. Currently we just make new Craft into Armor and Undo Armor recipes for each mod, causing bloat as there would be a new duplicate recipe for every addon.
So is there or could there be a way to combine itemMapper lists between mods or use tags to create your own itemMapper list and have it be filtered into the recipes made by the original mod that the addons branch from?
I finally have dashboards again!
Swap primary and secondary bone in export settings
Looks like that is the problem
I made a steam discussion under Suggestion with this same post
Holy fuck
It actually worked.
That's my stop-gap fix for the "schematics are impossible to find" issue.
I'm thinking of making a mod that fixes some of the circular dependencies/painful to acquire crafting essentials, at least for an urban start.
Masonry Trowel (plank & small handle)
Metal Tongs (metal pipes/bars & cloth)
Bucket (sheet metal & grbage bag)
Large Stone (make from bucket of concrete
Large Flat stone (make from bucket of concrete
Pickaxe (make from chisel & handle & rags)
Anyone got other items to suggest that cause a lot of needless pain due to the incomplete crafting systems?
how is everyone removing the result item nowadays since RemoveResultItem:true,
doesn't seem to work with this input/output schema for recipes?
mode: destroy
that works also for the output item?
ok!
{
Time = 10,
Tags = InHandCraft;CanBeDoneInDark;wuroLottery,
category = Wuro_Recipe,
needTobeLearn = false,
timedAction = RipClothing,
OnCreate = WuroRecipe.OnCreate.HealthFull,
inputs
{
item 1 [Base.WURO_Elixir] mode:destroy flags[Prop1],
}
} ```
Could anyone kindly direct me to a folder in vanilla common file where I can study
to b able to spawn a dummy character into a game?
trying to make a NPC store
so i need a dummy player char just to interact and open a trade UI panel
If you're on B42, there is no multiplayer.
For B41, I don't know if there is any "spawn fake player" function but other people will know more about multiplayer stuff than me.
Can you run the client twice and conenct twice with different characters?
Recipes are super picky
The vanilla ones, or ones you create?
Using tags instead of listing exact items is a big help
they're pretty much as picky as they used to be, they just crash the entire game now instead of failing silently
(but at least they tell you exactly what you did wrong)
but is that only me think it's better now than before? ๐
And even if it doesn't crash the game; some really weird bugs for if you have incorrect syntax. Most famously the 'dissappearing map and vehicle UI' bug.
Super odd.
could somebody take a look at my code? Im on the last step of updating one of my mods for b42. Im trying to add a sandbox variable for my glasses mod that allows you to make it so when the checkbox is checked, the glasses get the "visualAid = true" property on the item. I've tried the following lua code but it doesnt seem to work. Thank you in advance
local function OnCreatePlayer(playerIndex, player)
print("goth glasses - Sandbox Variable : Visual Aid")
print(SandboxVars.GothGlasses.VisualAid)
local glassesList = {"GothGlasses.Glasses_GothPentagram","GothGlasses.Glasses_GothCoffin","GothGlasses.Glasses_GothWings","GothGlasses.Glasses_GothRazor","GothGlasses.Glasses_GothRetro"}
for k,v in pairs (glassesList) do
local item = ScriptManager.instance:getItem(v)
if item then
if SandboxVars.GothGlasses.VisualAid == True then
item:DoParam("VisualAid = TRUE")
end
print("added Visual Aid Tag to : ")
print(item:getName())
end
end
end```
i dont think item:DoParam("VisualAid = TRUE" is actually doing what im intending it to do and i may need to use a different function, but im lost and havent done this in a very long time
because when starting with shortsighted and equipping my glasses with the sandbox variable selected (which the code is able to read as true), the glasses dont improve vision. Leading me to believe they do not have the visualAid = true property afterall
for reference my sandbox-options.txt is as follows
option GothGlasses.VisualAid {
type = boolean,
default = false,
page = GothGlasses,
translation = GothGlasses_VisualAid,
}```
and sandbox_EN translation is
Sandbox_GothGlasses = "Goth Glasses",
Sandbox_GothGlasses_VisualAid = "Visual Aid",
Sandbox_GothGlasses_VisualAid_tooltip = "Use if you are using the short sighted trait to turn these glasses glasses into perscription glasses.",
}```
if you're doing it OnCreatePlayer, it's too late to change the properties of items already in your inventory
do it OnInitGlobalModData
I also could be wrong; but I thought I'd heard rumors that VisualAid = TRUE also simply does not work at the moment unless you spawn with the item.
i wasnt trying to do it for items in inventory, i was trying to change the items property globally i guess? I dont know if thats the correct approach because i havent done it in forever
Even vanilla glasses that say 'prescription' etc on them do not work for the player.
But I only saw others discussing this; so I could be wrong.
this may be true. The prescription glasses you start with DO function as intended. The reason im even doing this is i received a comment on my mod saying someone made another version of it where they included the visualaid function, which im assuming worked
Yeah; I'm not sure myself. May be worth checking to see if it works in the first place to sanity check? I've not investigated it myself yet.
yeah ill try that. If not, im scrapping the idea because the rest of the update is finished and ready and this has held me up for 12 hours
thank yall for the assistance
well if you want it to work globally you need to do it before OnCreatePlayer or it won't affect items in the inventory either way
ill give that a shot real quick
one moment
so a few things to note
still not working however
yea i noticed.... it's annoying really...
I made these two changes to the script file to debug if setting the item as visualaid as a baseline fixes it.
VisualAid = TRUE,
}```
``` item Glasses_GothCoffin {
VisualAid = FALSE,
}```
spawning in this time with short sighted trait, my sandbox variable checked.
- default prescription glasses : Fix vision as intended
- Pentagram glasses (*hardcoded **true *visualaid) : functional eyewear and fixes vision
- coffin glasses (*hardcoded **false *visualaid) : non functional eyewear, doesnt fix vision
wing glasses (*does not declare **visualaid *setting in script file) : non functional eyewear, doesnt fix vision
this means declaring it in the script file as true works but somehow trying to apply the property via a sanbox variable is not working
local function OnInitGlobalModData(isNewGame)
print("goth glasses - Sandbox Variable : Visual Aid")
print(SandboxVars.GothGlasses.VisualAid)
local glassesList = {"GothGlasses.Glasses_GothPentagram","GothGlasses.Glasses_GothCoffin","GothGlasses.Glasses_GothWings","GothGlasses.Glasses_GothRazor","GothGlasses.Glasses_GothRetro"}
for k,v in pairs (glassesList) do
local item = ScriptManager.instance:getItem(v)
if item then
if SandboxVars.GothGlasses.VisualAid == True then
item:DoParam("VisualAid = TRUE")
print("added Visual Aid Tag to : ")
print(item:getName())
end
end
end
end
Events.OnInitGlobalModData.Add(OnInitGlobalModData)
this was the new lua code on the different event to load it at a different time that was suggested
is item:DoParam("VisualAid = TRUE") not the correct way to declare a new property or change one? like is doParam() not the way to apply a new propety such as visualAid?
sorry, its been a long time since ive done this, I have a ton i gotta update for b42, and im kinda lost because i havent touched lua in over a year
hmm, that should be correct yeah
oh!!
you capitalised True
it's lowercase in lua ๐
Dinosaur mod that adds wild dinosaurs that can attack you or ones you can domesticate for food and materials. If i get good at modding i think im gonna make it
I have no idea how it would be balanced but it would be fun to make i feel like
Ok, I figured out Dynamic Radio Stations. No XML required. I plan on writing a guide on how to work with the dynamic radio soon.
Anyway, here is a new mod!
https://steamcommunity.com/sharedfiles/filedetails/?id=3395616087
oooh nice, I was reading up on how to add a station and even downloaded worlded
So, this version actually uses the same system as the automated broadcast system.
Which lets you do things like, call functions in the middle of a broadcast.
sounds interesting
Learn mapping and make a jurrasic park style map for it lol

that was indeed the issue and now everything functions as intended
thank you very much i really appreciate it
first mod update of b42 is about to go live
many to come
Anyone have a good example of making sandbox options that modify a modded items loot distributions? I want to be able to make my mod's item spawns variable with sandbox options but having a frame of reference to work off of would be ideal.
I'm about to give up. Recipes show up fine on new save, but if I continue a save it "Reloads Lua" to vanilla
just for clarification, the file structure is like this if i want to update my mod to be both b41 / 42 compatible right?
inside main mod folder is the b41 files then everything else is in b42 again?
your mod makes me think that you listen to podcasts like communion after dawn @fading horizon
im about to upload mine which at least shows how a sandbox variable can be set up and utilized / acessed in a lua file if that would be helpful to you
its not for distribution but changed an item parameter
but maybe relevant
i am not a podcast girly please no ๐ญ
Yep, main folder stays the same to keep it B41 compatible, you can put 'reusable' files like textures/etc in common, and things that might change per version such as script etc in the 42.0 folder.
Yeah I've used them before but I'm hoping for specifically an example that deals with distributions 
lemme write something up that i think would work
1 sec
require "Items/ProceduralDistributions";
require "Items/Distributions";
if SandboxVars.youruniqueID.yourmodOptionName == true then
table.insert(ProceduralDistributions.list.ChangeThisForWhateverLocationYouWant.items, "GothGlasses.Glasses_GothPentagram")
table.insert(ProceduralDistributions.list.ChangeThisForWhateverLocationYouWant.items, 1);
else
table.insert(ProceduralDistributions.list.ChangeThisForWhateverLocationYouWant.items, "GothGlasses.Glasses_GothPentagram")
table.insert(ProceduralDistributions.list.ChangeThisForWhateverLocationYouWant.items, 1);
end
i think it would just be something like this in your distribution file?
check for option, use if else to control the flow to decide the option and probability
thats how i think it would be set up for my mods structure at least
Hm, I do think that would work..but it would require possibly triplicating all of my table.insert entries due to just the sheer volume of items I'm adding, so it would be..messy. I was working on something that would parse the SandboxVars as a numbered result/value so I could just do something like this;
table.insert(ProceduralDistributions["list"]["HotdogStandDrinks"].items, "Mixology.GatoradeCool-Blue");
table.insert(ProceduralDistributions["list"]["HotdogStandDrinks"].items, SandboxVars.Mixology_ItemChance * 10.20);
But I can't quite figure out how to convert the options cleanly into a numeric variable because my brain is small.
Sandbox vars initialize on OnInitGlobalModData event
oof, im definitely wrong then
sorry that was my best guess
i just updated the first of my mods to b42 
hope yall enjoy
All good; I'm trying something now that may work.
Hi everyone, I'm making a mod (for build 42) to expand professions and traits, but for some reason that I can't figure out the game crashes when selecting a saved character.
I'm a beginner and some help would be providential.
I'm attaching the mod for anyone who wants to try to figure it out
https://steamcommunity.com/sharedfiles/filedetails/?id=3387474156
thank you
You can do a loop
local weaponCacheData = {
PawnShopGunsSpecial = 0.02,
MeleeWeapons = 0.04,
PoliceStorageGuns = 0.02,
PawnShopKnives = 0.01,
BarCounterWeapon = 0.001,
GunStoreAmmunition = 0.01,
WardrobeMan = 0.000001,
GunStoreDisplayCase = 0.02,
PoliceStorageAmmunition = 0.01,
ArmyStorageGuns = 0.01,
GunStoreShelf = 0.02
}
for distribution, chance in pairs(weaponCacheData) do
table.insert(ProceduralDistributions.list[distribution].items, "WeaponCache")
table.insert(ProceduralDistributions.list[distribution].items, chance)
end```
Do you have logs which recorded after game crashed?
Anytime you have a crash look at console.txt (in C:\Users\username\Zomboid) and see what it was doing right before the crash, and also if there is a java error at the time of the crash.
That can help you narrow down what is going on.
maybe i'm not good to check, i found an error but i don't understand what means, it says "ERROR: mods isn't a valid workshop item ID"
No idea, but that is normal. Or at least, I get a bunch of those too
I'm guessing it's something to do with mods in teh mods folder not having a "workshop" folder structure
if you have a crash, look to the end of file.
it says "no error" everywhere but I'm not a programmer. maybe I'm missing something
I'm not a programmer
I'll let you in on a secret: most programmers have no idea what they are doing.
log is normal, seems okay. I don't think this will cause the problem, but......
you have folder name "41", instead "common"
maybe check that?
actually, CTD without any warning is not normal from Lua mod in PZ
chuck the whole console.txt file up on pastebin.
Or maybe you can upload the file to this channel, not sure if that will work.
we'll see if we can give some useful hints.
i'm checking it
this
right after those last lines is where it should start loading the lua from your mods
LOG : General f:0, t:1735522084304> ERROR: mods isn't a valid workshop item ID
LOG : General f:0, t:1735522084308> ERROR: mods isn't a valid workshop item ID
LOG : General f:0, t:1735522084311> ERROR: mods isn't a valid workshop item ID
LOG : Mod f:0, t:1735522084330> loading \NepNearbyTraps
LOG : Mod f:0, t:1735522084331> loading \qdx_item_condition
LOG : Mod f:0, t:1735522084333> mod "\qdx_item_condition" overrides media/lua/shared/translate/en/ui_en.txt
LOG : Mod f:0, t:1735522084333> loading \REORDER_CONTAINERS
LOG : Mod f:0, t:1735522084335> loading \LAWLYPOPS_TPMSINDICATOR
LOG : Mod f:0, t:1735522084336> mod "\LAWLYPOPS_TPMSINDICATOR" overrides media/lua/shared/translate/de/sandbox_de.txt
LOG : Mod f:0, t:1735522084336> mod "\LAWLYPOPS_TPMSINDICATOR" overrides media/lua/shared/translate/en/sandbox_en.txt
If there was a syntax error it should spit out the syntax error
And after the lua is all loaded it should start loading scripts... but it's not getting that far (script parsing can be fussy)
Pretty sure you can't now
Part of the incomplete fluid system rework
Two mods to save you: one to wash bandages (rags) in a sink,
wait, seriously? that makes one of my mods a bit more insane than it's meant to be
one to rollback water collectors so you can build collectors with right-click again, which are different to the build menu collectors because they works with plumbing sinks.
im screwed or i need to make water never shuts off lol
hahahaha
hence the "two mods to save you"
I've got one working sink hooked up to water collectors, and I can wash rags/clothes/myself in there.
But without mods, what a mess - only was to get clean was to hike to a lake.
Did you just install DIY Schematics?
no
It shouldn't cause any issues like that, but I did spend too long trying to make sense of the doLiteratureMenu stuff
Does anyone have any handy resources for the process of creating a custom zombie with a custom model and animations? Such as those featured in mods like screamers, nemesis, tank zombie, the nightmare creatures in occult zombies, the lone zombie that just follows the player through the entire map and is invincible, etc.
I have an idea for adding a monster into the game and I'm looking for a direction to start. Currently my only idea is just picking through a mod someone else made to see if I can get an idea for the process, but that's about it
is there way to see ALL recipes in debug?
not only building and basic crafting menu, but also specific workbenches (like furnace, spinning wheel ...)
sorry hard to explain in English
What if a mod "replaces" a vanilla file?
Not bad, but also not the best way to patch the game.
Hi, I have a backpack mod for build 41, could you give me a link to read what I should adjust to make it compatible with b42?
its a quick and dirty patch until indie stone fixes the issue
check pinned messages @crystal idol
I see. I'm just trying to say that the best way (by using lua files) makes that the mod won't break anything when indie stone fires a patch whatever they fix.
I see that changes are too small
I think debug shows all available recipes. Are you missing or looking for a specific one?
It could be
local SM = ScriptManager.instance
local item = SM:getItem("Base.Saucepan")
if item then
item:DoParam("IsCookable = true")
item:getTags():add("Cookable")
end
oh okay then, i will look again when i get back to home. i felt like there's no recipe which can make via furnace.
probably I unchecked recipe cheat or something like that.
ill check as well
many thanks. i'm at my work now so i can't play pz now ๐ญ
message the creator on steam. Not sure if they are here
I am currently unable to enable my mod after adding a second file to the required mods.
Anyone see any syntax issue with the line
require=\MoodleFramework;\LookLibrary,
require=\MoodleFramework,\LookLibrary
Ty ty.
Thank you much!
not many furnace recipes
and even less spinning wheel ones
were you able to see them without furnace?
anyway I'm about to home I'm gonna try too ๐
thanks
no, you need to be near the required workstation
ah, sad. i see. again, thanks.
btw that was what I was asking about. I was tired from build everything everytime, when i create a new save, just because I wanted to do little test.
or maybe I'm gonna make new function to check all recipes from single window. have a good day bro.
you can see all recipes in dev mode, but it is not intuitive
Hey guys! I finally have some time to update my car mods to make them compatible with build 42 unstable. Could you tell me what the procedure is please? And will making my mods compatible with build 42 unstable make it incompatible with build 41?
Well, I have a fix for the cursed crops problem in b42. In \media\lua\server\Farming\SPlantGlobalObject.lua, three lines (174, 188, and 202) need to have their logic tests wrapped in parentheses to evaluate correctly--or at least what I think is correct based on what I presume those lines are trying to do. I don't know LUA and I'm tired as hell so I might have messed up my interpretation. But testing in debug mode suggests this will keep plants from being marked "cursed" incorrectly and allow the isSowMonth, isBestMonth, and isRiskMonth functions to evaluate and return correctly.
function SPlantGlobalObject:isSowMonth()
if getSandboxOptions():getOptionByName("PlantGrowingSeasons"):getValue() == false then return false end
if not (self or self.typeOfSeed) then return end
local prop = farming_vegetableconf.props[self.typeOfSeed]
if not prop then return end
if not prop.sowMonth then return false end
for i = 1, #prop.sowMonth do
if getGameTime():getMonth() == prop.sowMonth[i] then
return true
end
end
return false
end
The original was written if not self or self.typeOfSeed then return end causing the function to terminate prematurely. Since I don't know shit from ass in this department, I'd like someone to check my work. I also don't know if it is possible to dump this onto the Workshop for general consumption or not, but... if someone who knows how to mod wants to do it, it would probably make a lot of aspiring b42 farmers happy.
it should probably be if not self or not self.typeOfSeed
but it's extremely strange to check self at all
if self is nil there shouldn't be anything to call the function in the first place
but yeah, that's definitely a mistake
what is the correct way to iterate over BodyParts from BodyDamge:getBodyParts to get the BodyPartType ?
Step 1 is update the mod structure: check pinned threads in this cahnnel or here is my "easy crash course" from reddit:
https://www.reddit.com/r/projectzomboid/comments/1hgwccl/if_there_is_a_mod_you_absolutely_cant_live/
Short version is you leave everything as-if for B41, add "common" and "42" folders that will be looked at by B42.
nvm i think i got it
BodyDamage:getBodyPart(BodyPartType:FromIndex(i))
Then you test the mod and see if you need to update the stuff in it for B42 - some things work fine with no change.
Thank you! Will this affect my mod compatibility with build 41?
i noticed most car mods need tweaking. They spawn with tires 1/4 under the ground
as long as you leave media, mod.info and the image outside, it wont
just create the common and 42 folders and copy your mod into it. edit the 42 mod if needed to work with 42
i've noticed the depth map for floors tends to rest pretty high which i think is the cause of a lot of similar issues lately
makes sense, a few of items Ive converted to 42 sink into the ground
no, common and 42 go in same folder as the media one you already have
it is best if possible to place assets in common and things like lua and scripts in 42
what albion said is good for future proofing your mod, just change code in one folder and no need to keep duplicating files making your mod bulkier
So scripts and lua in the 42 folder, models_X and textures in the common folder. Got it. And then I just leave the media folder as is so it's also compatible with build 41
yeah
Thank you both very much!
no problem, glad you got it working
I really cant live without KI5 cars, or at least Filibuster
vanilla ones are... too plain
No, B41 uses seperate files to B42
Going ahead, you can have common 42 42.0 42.0.2 folders, and teh more specific ones overide files in the other ones.
So you can put your textures and models in common, your lua code in 42, and then when 42.1 needs one lua file repaled put just that file in the 42.1 folder.
..I think I just repeated what was already said because I didn't scroll back 5 lines.
I blame being up at 1am trying to figure out how the $%#@ to get leather
I killed 1290 zombies without injury then a $#@!ing cow gored my in the crotch and tore my skinny leather pants.
The longer I stare at the farming code, the more issues I see. Long-period crops not having the ability to survive their grow periods, things like that.
Not a problem, most players don't have the ability to survive the crop grow periods either. ๐
Then butchering code only giving 4 steaks on a fully grown cow...?
Even with a "butchers hook" which you will want to build one of near every dead animal because those corpses are not movable without killing yourself... you don't get much steak
This is two cows, four pigs and three sheep.
I made a mod to fix that ๐
Look at this! a 78 calorie steak!
what is it called?
Too late for these animals, but I really needed their hides not their meat.
Rebalanced Butchering
If you read the description you could just modify the values yourself because I just hardcoded some buffed values and removed a dumb multiplication by body size (used for pathfinding...)
Subscribed
Remember to enable it on your save too, I always forget.
I'll do that before I kill any more animals.
This massive multi-day sidequest has all been to get leather to make bellows to make a forge
Because using one of the electric blower fans I looted would be too easy.
Now I need a wooden bucket, because a metal bucket is not acceptable... hope that is easy
Narrator: it was not easy
not craftable. ๐ญ
Does anyone know if there is a planned feature not released yet that will add a way to carry multiple small animals, like baby sheep or chicks. or will we need a mod created for that?
Yea and where on earth do you find a "CrateBlacksmith" that is the only place is spawns...
For schematics?
This is what I ended up doing:
Making an entire mod was quicker than finding a single useful schematic.
Won't fix the iron band issue though, so I'm cheating those in.
Ooo that's nice, better than spending my life searching for knapping recipes...
I need to do a notepad run and brainstorm some schematics to find something to level up on, but I can build a new forge without that (ignoring the fact that 1990s kentuckky lacks the technology to bend an iron bar into a loop)
At least we know the crafting is incomplete and full of known gaps.
I've been tempted to keep adding missing recipes but it would be pointless since it would all be made obsolete pretty quick in the new year.
I added one for long sticks (just for myself) because that was absurd to make a drying rack
Thank you very much
have they announced whats coming in next patch?
Not specifically, but they listed a few things as coming for B42
Including new crafting system and trapping
No, I'm just going under the assumption that many things we are complaining about now will be fixed in the new year since the system is incomplete.
It's pretty clear the crafting and fluid systems need a lot more work... I currently have 33 bowls because they keep getting duped by recipes.
Drinknig 30mL of alcohol will max out yoru hunger and thirst meters for zero calories
etc etc
My character is less excited than me about having a working forge.
I just drank a coffee... not only did the entire coffee can get consumed but the mug absolutely woke me up... It's 7:00 PM in game... frick...
gotcha
I want to fill an entire water dispenser with coffee but at only 200Ml per container it's not going to happen.
Thanks for the idea, I'm gonna make the Bourbon water cooler
There are some really weird stuff going around with crafting in general. I can't cut pizzas into slices, I can't make bowls of stew or soup, options keep disappearing from the crafting menu even if I have the necessary items
Just to name a few
hi, I'm trying to get the native mod options work but there are some issues. I already initialized my ModOption but now I'm trying to get its value. I tried it like this
initialize code:
local PZOptions = PZAPI.ModOptions:create("MyConfig", "My Settings")
PZOptions:addTickBox("sample", getText("UI_options_sample"), false, getText("UI_options_sample_tooltip"))
usage:
local newOptions = PZAPI.ModOptions:getOptions("MyConfig")
local option = newOptions:getOption("sample")
print(option)
tried to print option and it returns nil. what could be the issue?
in my implementation i stored the result of addTickBox
Config.hideCursorAfterDigging = options:addTickBox("Excavation_HideCursorAfterDigging",
getText("IGUI_Excavation_Options_HideCursorAfterDigging"),
true,
getText("IGUI_Excavation_Options_HideCursorAfterDigging_tooltip"))
Config.hideCursorAfterDigging:getValue()
Yeah seems to be the best way to go about it
I keep it in a module
And can access it from any file
Currently doing some tests on mod options to make the wiki page for it
Going to reload lua a looooooot lol
Seems like my only problem with the system rn is that they did not normalize the separators in between different options
Or different mods adding their own options
Ooooh wait they did
https://steamcommunity.com/sharedfiles/filedetails/?id=3386860561&searchtext=mod+options
This is a great example, which I just followed along
thank you, in my case i stored the options and just use getOption() and it kinda works (not 100% tested). but ill try to use your suggestion
Going to make a Wiki page about Mod Options guys, just doing some tests so it'll take some time, but sure do check that example mod, I plan on linking it in the Wiki page too
is it possible to include some lua code only in debug mode ?
if isDebugEnabled() then
I recall a few people experiencing issues with mode:destroy in crafting recipes, anyone seen behaviour like this?
Both the fruit slice and the champagne glass have mode:destroy attributed to them in the recipe but the champagne glass is retained despite it.
but i can't hide complete functions from being included correct? like c++ preprocessors macros
something like obfuscation?
if you put the definitions inside an if, you can
Hi everyone, Build 42 modding question, I struggle to find a clean way to add a Category to the new BuildPanel for CraftRecipe HandCraft, without overriding (which will cause incompatibilities with other mods that may do the same). All I could find is that it does self.logic:getCategoryList(); to get that list which at that point I don't get where it takes it from, maybe it is internal Java?
If you found a way to do that I would gladly take some help ๐
i mean i can do
--- triggering a wrong Table Access Key to see the table in Debug View
---@type Callback_OnKeyPressed
local function DebugPrint(key)
if (key == 67) and isDebugEnabled() then
local table = getPlayer():getModData().ImmunityTable
print(table["XXX"].flag)
end
end
but if i could i would rather like to be that this if statement isn't even considered in non debug
remember lua files are just functions, you can use any logic, not like c++ where most things can only be done inside a function
yeah i need to get used to
but yeah no preprocessor so no debug asserts without regular runtime cost :(
Ah i misunderstood. i got what you meant
so the best i could do is
if isDebugEnabled() then
--- triggering a wrong Table Access Key to see the table in Debug View
---@type Callback_OnKeyPressed
local function DebugPrint(key)
if (key == 67) then
local table = getPlayer():getModData().ImmunityTable
print(table["XXX"].flag)
end
end
end
that means that the if statement still will be evaluted ? how does it work in lua will it only be evaluted once when the lua file is loaded ?
Anyone know how I can fire a function, with player context, when a radio broadcast line on the emergency broadcast plays?
Or I guess, better yet, is there a way to make my own Event fire from server? So that the client side can hook onto it like Events.OnGameStart.Add etc.
Has anyone seen a B42 mod that simply adds +20 to baseline Carry Capacity? I dont want to go overboard, but the default carry weight is very reqstrictive.
I mean, it's the same as before
Nothing changed on that aspect
But I'm not aware of any mod that does that
I know the base carry weight hasn't changed between b41 and b42.
Only mods I can find are infinite carry weight, or 1000+. Just too much of a cheat for me.
there's an event fired whenever radio text is displayed, you could check the radio's channel when that happens
events aren't synchronised but you can send messages to the client as needed using sendServerCommand and Events.OnServerCommand
Feel like I want to make a mod to either reduce the weight of car parts or be able to repair them while they're on the car. Literally killing myself to repair these lol
several mods already that reduce car part weights
ooo got a name for one? ill check it out
b42?
are variables in lua passed by ref or copy ? for example
local PlayerScratchTable = Character:getModData().ImmunityTable
workbench is super nice but having to hold and repair a bullbar kills me lol
thank you @round thorn
np
primitives by value, all objects and tables by reference
so when i want trivial types as ref i need to wrap them in a table?
yeah you could do that
thanks!
Uhhhh... what the fuck happened here?
looks like either the UV is messed up, or there is additional faces overlapping.
or the normals are messed up.
guesses on my part, im not familiar with modding PZ.
It worked prefectly in build 41 for reference
It does look like a messed up UV but that's impossible
I didn't even touch it
Neither the model nor the texture
wacky wheel moment
Indeed
Hello guyes! I had a problem, i cant get sandbox-options for my mod, it is not appearing in sandbox section, what can be causing issue? No log errors
i had sandbox-options in Alcoholic's Paradise_V2\media\sandbox-options.txt
option AlcoholicsParadise.CanonSpawnChance { type = enum, numValues = 6, default = 1, page = AlcoholicsParadise, translation = Sandbox_AlcoholicsParadise_CanonSpawnChance, valueTranslation = Sandbox_AlcoholicsParadise_CSpawnChance, } option AlcoholicsParadise.NonCanonAlcoholChance { type = enum, numValues = 6, default = 1, page = AlcoholicsParadise, translation = Sandbox_AlcoholicsParadise_NonCanonAlcoholChance, valueTranslation = Sandbox_AlcoholicsParadise_NCAlcoholChance, } option AlcoholicsParadise.ZombieLootSpawn { type = enum, numValues = 6, default = 1, page = AlcoholicsParadise, translation = Sandbox_AlcoholicsParadise_ZombieLootSpawn, valueTranslation = Sandbox_AlcoholicsParadise_ZLootSpawn, }```
Sandbox_AlcoholicsParadise = "Alcoholic Paradise V2 Reworked",
Sandbox_AlcoholicsParadise_CanonSpawnChance = "Canon alcohol chance spawn",
Sandbox_AlcoholicsParadise_CanonSpawnChance_tooltip = "The spawn rate of a canon alcohol",
Sandbox_AlcoholicsParadise_CSpawnChance_option1 = "Insanely rare",
Sandbox_AlcoholicsParadise_CSpawnChance_option2 = "Extremely Rare",
Sandbox_AlcoholicsParadise_CSpawnChance_option3 = "Rare",
Sandbox_AlcoholicsParadise_CSpawnChance_option4 = "Normal",
Sandbox_AlcoholicsParadise_CSpawnChance_option5 = "Common",
Sandbox_AlcoholicsParadise_CSpawnChance_option6 = "Never",
Sandbox_AlcoholicsParadise_NonCanonAlcoholChance = "Alcohol non-canon chance spawn",
Sandbox_AlcoholicsParadise_NonCanonAlcoholChance_tooltip = "The spawn rate of a non-canon alcohol",
Sandbox_AlcoholicsParadise_NCAlcoholChance_option1 = "Insanely rare",
Sandbox_AlcoholicsParadise_NCAlcoholChance_option2 = "Extremely Rare",
Sandbox_AlcoholicsParadise_NCAlcoholChance_option3 = "Rare",
Sandbox_AlcoholicsParadise_NCAlcoholChance_option4 = "Normal",
Sandbox_AlcoholicsParadise_NCAlcoholChance_option5 = "Common",
Sandbox_AlcoholicsParadise_NCAlcoholChance_option6 = "Never",
Sandbox_AlcoholicsParadise_ZombieLootSpawn = "Alcohol zombie chance spawn (not work)",
Sandbox_AlcoholicsParadise_ZLootSpawn_option1 = "Insanely rare",
Sandbox_AlcoholicsParadise_ZLootSpawn_option2 = "Extremely Rare",
Sandbox_AlcoholicsParadise_ZLootSpawn_option3 = "Rare",
Sandbox_AlcoholicsParadise_ZLootSpawn_option4 = "Normal",
Sandbox_AlcoholicsParadise_ZLootSpawn_option5 = "Common",
Sandbox_AlcoholicsParadise_ZLootSpawn_option6 = "Never (Not recommend)",
}```
@leaden flame use three back-ticks (tild key to left of the 1) before and after code to format it.
option AlcoholicsParadise.CanonSpawnChance
{
type = enum,
numValues = 6,
default = 1,
page = AlcoholicsParadise,
translation = Sandbox_AlcoholicsParadise_CanonSpawnChance,
valueTranslation = Sandbox_AlcoholicsParadise_CSpawnChance,
}
option AlcoholicsParadise.NonCanonAlcoholChance
{
type = enum,
numValues = 6,
default = 1,
page = AlcoholicsParadise,
translation = Sandbox_AlcoholicsParadise_NonCanonAlcoholChance,
valueTranslation = Sandbox_AlcoholicsParadise_NCAlcoholChance,
}
option AlcoholicsParadise.ZombieLootSpawn
{
type = enum,
numValues = 6,
default = 1,
page = AlcoholicsParadise,
translation = Sandbox_AlcoholicsParadise_ZombieLootSpawn,
valueTranslation = Sandbox_AlcoholicsParadise_ZLootSpawn,
}```
if your mod is already published, make sure to unsubscribe before editing sandbox options, they in particular are known to have loading issues
can someone point me towards where vehicle distributions are? Like for gloveboxes and such
thanks! i will try this
media --> scripts --> vehicles --> vehicle_VEHICLENAME.txt
part Glovebox
{
container
{
capacity=X,
}
}
Hey guys, planning on attempting to fix the propane/battery depletion on load bug. Has anyone beaten me to it? Couldn't find anything on the workshop but don't want to duplicate work. Also, any general tips on where to start?
what are some good indicators, when i need a server sided component to my mod?
A good heuristic is that if someone would be incentivized to cheat in some way, that system is likely to be server-side.
I know this update moved most inventory and crafting features server-side
Movement is typically done client-side and synced regularly (in most games)
so for example when i make a mod which tinkers with infections and such, it would be a good idea to make it server sided as its probably prone to be cheated on
My gut says yes
Anyone know a good flow for modifying shader uniform values at runtime?
when i make a server part for my mod, is the client sided part still active? as in how can i make the mod SP and Server compatible? when i move most of the logic to the server part, it wouldn't be useable in SP would it
Getting a little bit out of my depth, but many games have an internal "server" even for SP, so I would assume that the server part will work the same in SP
I figured out why this wasn't working; FluidContainers have a specific distinction of being an item that is not by-default capable of being simply 'destroyed' in a recipe. I had to create a custom Recipe.OnCreate function to add the distinction of my mod's fluidcontainers being exempt from this.
Even the single player games use the client/server architecture it's just a local server. A host machine(pc) can always be a client and a server at the same time.
alright good to know thank you!
then i can move most of my stuff to server and just implement some communication to the player
pz's singleplayer doesn't use an internal server like some other games
it's literally one process, singleplayer can behave very differently to multiplayer
so the best way to make it as hard to cheat as possible would be to make server validations when there is a server, and just keep it client sided when in SP
Which is why I'm not releasing one mod until the multiplayer is out. I don't quiet understand how to ensure syncing is correct for item stats
yes
you can't do anything too fun with them though, there's no support for passing uniforms
but if you can make do with what the game has you can just replace shaders by regular file overrides
nice
just to be clear, they're replacable through mods, not just editing the vert/frag files right?
yeah, i'm pretty sure anyway
alr sweet
if you have one in your mod with the same filepath it should override the vanilla one, like lua or script files would
good to know
Modding uses lua and is event driven. It is also single threaded aka everything runs in sequence. I don't know what you trying to prevent for cheating but there is a limit on how much you can prevent and make your server validate every step until your server eventually crawl like snail.
since im tinkering with infections of player, and thus could be used to enable the player in MP to give them immunity with my mod, so i would need the server to validate if the player should correctly be immun or not
you need to check every time if youre note immune and store that data to a var then check onplayerupdate if that value becomes true then check what triggered it?
how do you check that?
Wouldn't it just be easier to just ensure quality of players on a private server? (For the cheating issue)
So there's no way to change shaders at runtime? Could you swap in and swap out shaders at runtime or it's all compiled at the start and static?
I don't think that is something you need to worry about as the hacks players use can grant them god mode which pretty much override your status effect anyway. The server owner has to ban them outright.
since all my immunity system is based on how much a bodypart has been scratched, i can atleast check if their immunity level is correct in comparison with their scratch count on their body parts
if its off, the server wins and resets their immunity level
since this is the first mod i want to publish on the workshop i thought it would be smart to think about something like that
but as you say it may be overkill and unnecessary
I'd personally go for the lure method. Put some goodies in your item list that any hacker would LOVE to spawn in and use to cause chaos. Then the moment it's in their inventory, flag them with player moddata that closes their game whenever they hop on
also the way they cheat is by using using java so you wont really be able to track it im afraid
unless someone knows how
this is the only remotely effective way to prevent cheating
i just dont want to ruin the fun of other people that uses this mod on their public server maybe
it's a java game with an extensive modding api, it will never be secure even ignoring all the security holes it currently has
in b41 mp hackers are basically omnipotent so there's not much reason to design around preventing them from exploiting your systems
this is true
from what i've seen of b42's code it looks like the client will be much less powerful and you will have the ability to keep more of your code to the server, but i also don't think there's much point designing around a system we have no idea of the details of yet
@full escarp yeah I didn't mean to suggest that making something server-side would prevent cheating, just that it's a quick way to guess whether a system is implemented on server/client
to be honest that's kind of not really accurate in pz, at least in build 41
basically everything exploitable is on the client
inventory is, health is, etc
Trust her^, I'm new to PZ modding
okay then, i will leave it to the client yet and just look what happens
it's a good rule for most other games but b41's multiplayer is just kind of incredibly insecure
in general just, nearly everything is on the client
i'm pretty sure the game still launches with a warning saying 'do not play public multiplayer' for this reason lol
- How do I have a dropdown in sandbox settings
- Is it possible to make options show only if bools are active?
isn't public multiplayer a big thing in pz ? i just play on a private dedicated but thought it was big thing
i think it is fairly popular but the encouraged way to play is private
Alternatively does the game have sandbox option code available anywhere so I can just look myself
Because the base game has headings & the bool affecting options thing
Even if the client is more secure they have cheat engine. They can just change it from temporary memory. You'd never be able to prevent in PZ
the base game's sandbox options aren't done in a moddable way, mods do them separately
- you can have a drop down list with the enum sandbox option type
- no (unless you modify the ui lua yourself to do it)
how should i properly set whether something has been read? (not page-based skill books, just filler books)
@tranquil reef check the mod options I added here. the first option is a dropdown
this mod mostly works but its not ready for consumption by the masses.
the first sandbox option is the dropdown
It is only a numerical value for the drop down, then you use the translation to give them a readable name
Alright, thanks 
is it me or do cars feel "heavier" now
definitely feel more grounded
if i had to guess they probably tweaked the physics to make them less uh
source engine esque
less flinging and midair 360s yknow
yeah, but at the same time, makes them feel more sluggish
controls def aren't as tight yeah, lot easier to slip off and crash making fast harsh turns
I'm on Build42 but I'm not seeing my mod in the list of mods. Even after changing the structure of it in my workshops folder to what the guide says.
Actually I may have it, everything is slowly coming back to me, it's been a while since I updated.
do we have update building 42 tutorials for vehicles?
bruhhh i can't mod on linux especially mod menu it's just get to default over and over and over but via proton is working perfectly

i don't know now if even my mods works fine on windows
yeah, linux is weird. it seems to like to load files in different order
i was using zorin but went back to windows 10
im on linux mostly year and i don't want to go on windows anymore but now do i have to setup vm for debuging??
i was crushing my head all this days why mod menu doesn't work
๐ญ
that might be a solution
there's some problems with the linux native build and the new mod structure right now
so far in gameplay i had no issue maybe some quirky audio that dissapears and eating 16gb of ram
in menu
is SayDebug also happening in non debug?
Anyone else have z-fighting issues when placing flat things on the ground now?
Got it in my right mind to bribe the maker of FrikisClothes to not allow you to run over the Superman zombie but instead its like you ran into a wall.
Ive seen that it is a common issue due to some rendering changes
Like what
i wasn't really paying attention to it because i don't use linux but there was something about it adding the cache directory twice
Ight, I will keep an eye out
i do when trying to spawnin vehicles in lol
Hi! I'm trying to write a little bit of code to check if the player is wearing at least three items from a set. So far, it appears not to be working. Please could I ask for a second pair of eyes to look at it?
player:Say("This is a custom slice!")
end
local function wearingPostalUniform(items)
local postCount = 0
local postalWorkerSet = { "STR.Bag_DuffelBag_USPS", "STR.Hat_BaseballCap_USPS", "STR.Hat_BaseballCap_USPS_Reverse" ,"STR.Jacket_USPS","STR.Shirt_USPS","STR.TShirt_USPS","STR.Trousers_USPS", "STR.Shorts_USPS","STR.Shorts_ShortUSPS","STR.Bag_Satchel_USPS"}
for i=0, items:size()-1 do
local item = items:get(i):getItem();
if postalWorkerSet[item:getFullType()] ~= nil then
postCount = postCount + 1
if postCount == 3 then
return true
end
end
end
return false
end
function MailIconsFoot(menu, player)
local items = getPlayer():getWornItems()
if wearingPostalUniform(items) then
menu:addSlice("What's This?", getTexture("media/ui/emotes/shrug.png"), onExample, player)
end
end
EmoteMenuAPI.registerSlice("DeliverMailFoot", MailIconsFoot)```
As far as I can tell, wearingPostalUniform is always returning false even if 3 or more items in that list are worn
Can you give a bit more context ? Like are you getting any errors ? If not, did you try to print some of the steps of the code ?
Sorry, yeah. So main way I've been testing it is whether or not the slice for the radial API appears.
No if statement will show the slice but the current one isn't. What's the best approach to check variables as you go when modding zomboid?
The best way is usually to print in the chat
So here, I would add like print("passing check") after your check for the items
after if wearingPostalUniform(items) then
To at least see if the problem is not the function addSlice
If don't manage to get a print, that means the problem is from your check function
I would print at each step of the for loop
I would after the check if the item is in the table
Also I would print item in that loop and item:getFullType()
Wait no I know what's going on here
That's an array you got here, not a key table
for anyone who will making mods on linux for b42 just use proton, seems working fine
Zomboid folder can be found on /steamapps/compatdata/108600/pfx/drive_c/users/steamuser/Zomboid
and for wayland folks use windowed or borderless because there some issues with drm at least on the proprietary nvidia drivers
So of course that will output nil your table check
You need to have each string entry be associated to a true statement
Ah. Shoot. Sorry. Normally work in c# or c++
What's the right declaration for tables?
local checkTbl = {
["yourItem"] = true,
["nextItem"] = true,
...
}
That way you have a key table
Also wasn't helping myself by having the workshop item downloaded. Making an update for a server's mod and had quickly loaded back in to check something but forgot to unsubcribe
Thank you for the time and patience.
str (and its script module) was renamed to stfr a while ago
Thank you very much. That's done the trick
Ah, thank you
Question.
You know how to make mods?
lmao
Question
What's your question?
VS Code - HIGHLY SUGGESTED, a community addon for Project Zomboid typing exists for it.
what, did we have an add-on for VS Code?
Whos ready to say good bye to 2024? lol
fuckin me right here.
Yes, umbrella
Hmm ?
I've missed out on half of my life ๐ฎ
thanks for tagging ๐
Yup, I need to make a guide for it
It's my next thing
Umbrella-unstable is for B42
Currently writing Mod Options
Steam Decks are kinda hard to do any basic modding done.
Ok but I don't get where you want to go from that, like you're asking for modding help but can't mod ?
or how to install mods on steam deck?
Plus, you have to jump through Paris and run through Russia at once to get some things done
Bro idk what you're smoking
I just wanna see if you knlw how to make mods
Yea I fucking do, I wrote that wiki page lmao ?
Double-a batteries, why?
Well anyway if you want modding help, that's the place, I linked some useful resources to you
If you don't welp idk what you want
@dense belfry
simply, you want to make a mod: https://discord.com/channels/136501320340209664/232196827577974784
you want to get some help with modded game: https://discord.com/channels/136501320340209664/919609757168468028
you need some help with Vanilla game: https://discord.com/channels/136501320340209664/1019767076094758924
ANYTHING ELSE: https://discord.com/channels/136501320340209664/136501320340209664
New wiki page
Don't hesitate guys if you have feedback or other stuff to say
If i had that one 7 days ago, i didn't need to waste my whole day just because of mod options. anyway thanks for your work. study time ๐
that whole page is just plain wrong
Wdym lol ?
source: trust me bro
Worked the entire day testing stuff and shit 
just messing with you ๐
Can't tell me that shit 
oh mod options? didn't they remove that in 42.0.3?
hahahahaha
Also going to create a page for Umbrella, but should I make it generic to VSCode or just Umbrella ?
I feel like there's some useful things like searching in an entire folder of files which I could explain too
should probably make it about vscode, there isn't too much to say about just umbrella
Yea figured
would be a good place to write down some of the weird umbrella stuff though
I like opening the whole media folder on vscode and searching for functions and other stuff
not a lot of people realise the Callback_ types exist for example
What's that ?
you can do ---@type Callback_EventName instead of annotating every parameter for an event listener
Hmm, I mean that'll be explained in the VSCode page then, that's perfect
same thing for any kind of callback, e.g. Item_OnCreate, CraftRecipe_OnTest
We can explain some of the typings

