HOW TO CREATE CUSTOM FOOD DEFAULT REPLACEMENT MOD USING CUSTOM MESH & WORKING GEOSTATES (FULL, HALF, EMPTY)
This is default replacement replacing existing food in Base Game or Expansion Packs using EA's recipe and custom mesh & texture. If you are not satisfied with EA's existing mesh and texture, sure you can replace them with this easy-to-follow tutorial with pictures explained one by one. No custom recipe, no CCLoader, no scripting.
This is how I created Authentic Chinese Spring Rolls Replacement Mod using custom mesh and texture.
This tutorial is for intermediate, which means already know the basic principle of doing default replacement mod.
If you are beginner, haven't tried default replacement mod mesh & texture before, recommended to try the Default Replacement Tutorial for Simple Object first. TSRW Workshop, Milkshape, etc. Tools to prepare on that tutorial as well.
I created this tutorial because there is no tutorial about default replacement food mod using custom mesh and explaining about how to do the GeoStates properly. I did trial-and-error and accidentally found the method how to replace EA mesh with edited mesh, and the GeoStates are fully working.
The challenge of doing food default replacement is that food mesh cannot be cloned simply on s3oc. There's no OBJD for "EggRolls" "Stir-Fry" etc. other food. The only OBJD available for clone on s3oc is Burger.
Sims 3 Object Export cannot replace s3asc because it keeps throwing error and cannot make 3 working GeoStates (Full, Half, Empty).
-----------------------------------
Note: You need World Adventures Expansion Pack to use my example, Egg Rolls. You can replace food from Base Game or any Expansion Pack.
✳️ Step 1: Find all Egg Rolls file strings: Cook, Eat Serve files on S3PE
Instead of cloning from s3oc, we have to find the file from game file package on s3pe.
Why? Because the food cannot be cloned simply from OBJD. You cannot find file "Egg Rolls" no matter how careful you inspect every file filtered "WA" (World Adventures Expansion Pack) on s3oc catalogue.
The only food you can clone its OBJD on s30c is Burger. You will clone that Burger OBJD later. Right now you have to find every file with word "Egg Rolls" on game package.
⚠️I suggest you make duplicate of game package for modding purpose instead of using package that is readable by game when the game is running. It is to avoid corruption because you accidentally replaced the files. If corrupt happens you have to re-install the game. ⚠️
Make duplicate of game package you find on your game installation path.
Base game:
The Sims 3> GameData > Shared > Packages > FullBuildep1.package
Expansion Pack:
The Sims 3> GameData > Shared > DeltaPackages>p02 > DeltaBuild_p02.package
(Depending the release of Expansion Pack & Stuff Pack)
My duplicate of game package folder looks like this.
Open s3pe. Open FullBuildep1.package.
Type Name "EggRolls" on box.
Tick besides Name and Filter Active, then click "Set" button. It will give your result "EggRolls" filtered by its own.
Select all files until they are in blue selected, Right Click > Copy.
File > New. Right Click > Paste...
Then your files are all pasted into new S3PE document. You can delete ticks on Egg Rolls filter, as the package is no longer filtered.
File > Save .package. Give the name of the package such as "[Your username]_AmericanEggRollsEA". For my own example, "TBW_AmericanEggRollsEA."
We will use this package as a base to be replaced with new resource codes later. Put this package on Folder such as "Original EA American Egg Rolls" to make you easier to find the file which is original, which is edited.
✳️Step 2: Export Egg Rolls .s3asc and texture files from S3PE & copy the original resource codes.
Export foodEatEggRolls, foodCookEggRolls, foodServeEggRolls to s3asc.
If you are asking why this MODL should be export to s3asc, it is because we cannot clone OBJD of original EA Egg Rolls from S3oc and imported as .wso format from The Sims Workshop (TSRW). The only mesh of EA Egg Rolls we can get is from .s3asc file we can get from s3pe.
Save the s3asc file: "Cook","Eat", "Serve" on separate organized folder, name it "Original s3asc EA Egg Rolls"
⚠️Warning! The strings too long can cause error when export it.
Sometimes you tried to export the .s3asc but then disappeared and you cannot find where you save it. It is because the S3PE application crashed when you exported it because the strings are too long.
In this case, the original .s3asc you want to export is S3_01661233_08000001_0000000008780D94_foodEatEggRolls%%+MODL_filebase.s3asc
You can delete the long string then leave the "FoodEatEggRolls_filebase.s3asc" for example. Yes, you must add _filebase so it can be saved as .s3asc format.
Save, then the .s3asc will add additional files such as:
Export the original EA .dds textures "All" and "Used" .
Copy all resource codes of each file to Notepad. Right-Click>Details...
Click Copy TGI to easily copy the codes (Type, Group, Instance) to Notepad.
Click GRID > Resources (3 Dots) > TGI Block List Editor
You will see the list consists of 8 lines of_IMG, copy all TGI (Type, Group, Instance) codes to Notepad for easy copy paste later.
✳️Step 3: Copy original GeoStates codes (0, 1, 2, 3)
Click "FoodEatEggRolls" MODL. See the 4 GeoStates on the right side.
GeometryStates[0]: 0x95A36FFE
GeometryStates[1]: 0xD8918A76
GeometryStates[2]: 0x4DB2D3D2
GeometryStates[3]: 0x35B26CCB
Copy all these GeometryStates to Notepad for easy copy paste later.
GeoStates are in three forms.... Full, Half, Empty? But why are 4 GeoStates now?
You will find out later by cloning the base food OBJD in the next Step.
✳️ Step 4: Clone Burger mesh using s3oc & Open the Burger Mesh on TSR Workshop
More steps click spoiler tag “Read More / Keep Reading” below
Search "food" on s3oc.
You will get results like this. Food that can be cloned are Hamburger, Hotdog, Fries (Seasons EP). I choose Hamburger because it's Base Game and it's resembling custom food we want to create.
"Clone or Fix..."> Don't tick Renumber > Start.
Save the package. Open the package on TSR Workshop.
Open TSR Workshop > Create New Project > New Import> Next > Browse EA Burger .package > Next > Next > OK.
You will get Burger mesh preview. Take a look at Mesh tab.
Then see the Group 0 and Group 1. Both have GeoStates.
What is Group 0? What is Group 1?
If you check the the burger's .s3asc exported from s3pe or .wso exported from TSRW
You will see Group 0 is the food mesh as main mesh and Group 1 is the plate.
Go back to TSR preview. You see there are 4 GeoStates under Mesh from Group 0 tab.
By default, the Burger meshes (Full, Half, Empty) are combined into one.
Click each GeoState, from top to bottom.
0x95A36FFE is Full state
0x8A6C4E39 is Half state
0x4DB2D3D2 is Empty State
0x35B26CCB is Full state
✳️ Step 5: Create your edited mesh
Import MODL file (with format .s3asc) of Egg Rolls you exported from s3pe from Step 2 into Milkshape 3D via Sims 3 Object Import by Wesley Howe. From Milkshape, export .obj file to your favourite 3D software to make .obj file as base mesh for your edited mesh.
Create 3 States: Full, Half, Empty.
Export uvmap to editing image software to create the texture.
After you are done and satisfied with your mesh, export your custom mesh only without plate, Full, Half, Empty states in .obj format. Hide EA plate and EA's base mesh before exporting.
✳️ Step 6: Create texture
Import uvmap from your 3D software. Create texture, save in .dds format with the same name as original name of .dds exported from s3pe.
✳️ Step 7: Bone Assignment, Make Group & Export to .wso
Open Milkshape 3D. Import .s3asc of original EA Egg Roll "foodEatEggRolls_filebase.s3asc" from Step 2.
Click Joints Tab, tick box "Draw vertices with bone colors" to enable bone colours.
The food shows Purple colour, the plate shows Yellow colour.
*Note that this .s3asc was imported from year 2023, the original colours are like these. If in this recent year 2025 shows different colour such as the plate is Purple, please follow this example, assign the plate Yellow colour, because my method using this Yellow bone colour has been working successfully.
Then import .obj of your edited mesh from 3D software. Delete materials of custom mesh, select custom mesh, regroup, rename to group00.
Your main task is copy Bone Assignment from original EA mesh to your edited mesh.
Check the codes on Joints tab, there are 3. Click each code then click "Assign" to see what is the Bone colour to determine rig for functionality of the object in the game.
0xFEAE6981 --> Yellow
0xCD68F001 --> Purple
0xD0DECA8E --> Light Blue
We will assign the custom mesh with Purple colour, therefore, select the custom mesh, select 0xCD68F001, assign. The custom mesh colour will turn Purple.
After you are finished with the Bone Assignment (Main Mesh is purple, plate is yellow), make sure the groups are correct. Group 00 ---> main mesh. Group 01---> plate. Export them in .wso format.
✳️ Step 8: Import the edited mesh on TSR Workshop
Open Burger .wrk on TSR workshop, import your custom mesh in .wso format. Click folder with green arrow to import .wso.
After importing, you will see your custom mesh and Geostate reset to 0 for all states.
✳️ Step 9: Create Geostates on TSR Workshop, Export to Package
If you click Geostate row, the custom mesh disappears. Because the face is 0. Click on ... dots on the right side of Geostate to open Face Selector. Face Selector is to create Geostates working, Full, Half, Empty. The mesh suddenly appears with grey colour.
Left click to give colour to the face. Colouring faces based on Geostate. Be careful because the mesh is all joined into one. When give colour to Full state, do not give colour to Half state.
0x95A36FFE for the Full State
⚠️Warning! This is the trickiest part of creating Geostates: Texturing the Geostate. Cannot undo. If you wrongly click and want to undo, you have to restart from zero again. If you feel the texture is alright, then save it. You can start from checkpoint from last save if you wrongly clicked. Cancel then load the save to restart. ⚠️
Click 'n pick to click the colour one by one.
Basic Square: Drag cursor to give colour in big area.
Shift + Left Click: Delete 1 face.
Click "Clear" to delete all the colour in one click.
Rotate the camera to make sure all part of expected geostates are textured.
Give colour to other GeoStates.
0x8A6C4E39 for the Half State (half eaten)
0x4DB2D3D2 for the Empty State (crumbs)
After you are done with the texturing GeoStates, export to package. Edit > Project contents, Export> To .package
✳️Step 10: Export MODL filefrom Package saved from TSR Workshop
Save the package with name "SpringRolls_TSRW"
Open s3pe, import package that you saved from TSR Workshop. "SpringRolls_TSRW"
Export MODL, save.
✳️Step 11. Finalizing in s3pe & Replacing the Original MODL with Edited MODL & Correcting the TGI (Type, Group, Instance) Code As Same As Default Code
Open original package you cloned on s3pe "Your Username]_AmericanEggRollsEA"
I saved the package with different name to"[Your username]_SpringRollsDefaultReplacement." to make it modified package, while leaving AmericanEggRollsEA package as backup original base, just in case I need original file.
Replace "FoodEatEggRolls" MODL that you saved from Step 10: from SpringRolls_TSRW
Check if all resource code (Type, Group, Instance) are the same as the original. Check the resource codes inside TGI Block List Editor, are they as same as inside TGI Block List Editor in original package.
You can see the resource codes are different from original FoodEatEggRolls MODL codes you copy pasted to notepad. Delete MLOD, change the codes (Type, Group, Instance) with the original FoodEatEggRolls MODL codes on Notepad. Use "Add" to add one row, Delete to erase one row. After you are done, Save and Commit.
Replace textures with your custom texture in .dds format.
Save package.
Test the package in game.
Wait until your Sims finish all their GeoStates, are the GeoStates working properly.
The geostates are working properly except at the Half Eaten state.
All states are combined into one and the plate colour are having spring rolls texture... 😱
Don't panic. Your bone assignment is alright. Copying same codes on Data Resorce and TGI Block List Editor are working properly too.
What causing the Half Eaten state is not working is:
The "Half Eaten" geostate code you are cloning from Burger mesh is not the same as code from geostate of FoodEatEggRolls.
Burger= 0x8A6C4E39
FoodEatEggRolls= 0xD8918A76
✳️Step 12. Correcting one GeoState that doesn't work because using EA's Burger mesh
Your main task here is using Default EA's Half Eaten state code to override your custom mesh Half Eaten state code.
Data Grid > ChunkEntries> [1] ChunkEntries > RCOL Block > Meshes > (on Tab [0] Mesh) > GeometryStates (then click ... Dots on the right side) > [1] GeometryStates
Second row is [1] GeometryStates, indicates it is "Half Eaten" state.
[1] GeometryStates > Name
Delete the code 0x8A6C4E39, replaced the code of the Burger with 0xD8918A76 from FoodEatEggRolls.
Click Done. You will go back to Tab [0] [1] Mesh and Geometry States
Don't forget to correcting the code for Plate as well. Plate is in the Tab [1] Mesh. Click [...] Dots on Geometry States once again, it will bring you to Geometry States for Plate.
Repeat the step as you did for the Food State: On Row [1] GeometryStates > Name, Delete the code 0x8A6C4E39, replaced the code of the Burger with 0xD8918A76 from FoodEatEggRolls.
After you are done, click OK > OK > OK > Commit > Save the .package.
Test your package in your game again.
Half Eaten state should be working by now.
✳️Step 13. Replacing the Original "Cook & Serve" MODL with Edited "Cook & Serve" MODL & Correcting the TGI (Type, Group, Instance) Code
Create custom mesh & texture for Cook & Serve, export to TSRW, then export to MODL like Eat state before.
⚠️ Pay attention because this step is very important, otherwise the Custom Food will turn black/disappear, doesn't work in the game.
Repeat Step 11: Replace the MODL for Cook & Serve state.
If you see default TGI code you copied from "foodCookEggRolls" there are only 3 lines.
instead of foodCookEggRolls, otherwise the Cooked food will turn to Black colour in the game.
Repeat Step 11: Copy all the TGI codes you copied from "foodServeEggRolls" for Cook and Serve.
Commit, Save.
✳️Step 15. Check the Geostates for Cook & Serve
Check the Geostates for Cook & Serve.
Cook & Serve Geostates are working using Burger Geostates.
0x95A36FFE
0x8A6C4E39
0x4DB2D3D2
0x35B26CCB
Leave the Geometry states, no need to change to default EA Egg Rolls (otherwise your mesh will disappear or black).
After you are done, click OK, commit, save the .package as usual.
✳️Step 16. Test the CC in the game.
If your Custom Food works well in the game: Full, Half, Empty Geostates are working without showing weird texture or black or disappear, then congratulations! Enjoy and have fun with your custom food default replacement mod👍