[Backburner] Errors with `conditionalDefaultParts`
DrprofLuigi opened this issue · 2 comments
These errors are present in MTS V22.12.0
Note: Both of these issues are somewhat minor as I have made workarounds for both, so this is more of a 'it would be cleaner' sort of suggestions.
Issue 1
When I place a vehicle that spawns with a bed, which itself spawns with a spare wheel, that spare wheel spawns as the wrong color:
Here are the relevant json snippets:
UNU Mule (base vehicle)
{
"name" : "§3UNU Mule §7[ZF-174-MCG]",
"subName" : "_forrest",
"partTones": ["_forrest", "_saddle", "_blackthorne", "_forrest"],
"constants": ["axle_budd", "axle_double", "wheel_truck_budd_forrest", "truckbed_cargo"],
"extraMaterials" : ["minecraft:dye:0:1", "minecraft:dye:2:3"]
}
{
"pos": [0, 0.5, -0.65625],
"types": ["generic_bodypart_unu_truckbed_heavy_double", "generic_bodypart_unu_truckbed_mule_double"],
"conditionalDefaultParts": {
"truckbed_cargo"="unumilitary:unumilitary_bodypart_unu_truckbed_mule_cargo_desert"
},
"toneIndex": 4,
"minValue": 0,
"maxValue": 3,
"interactableVariables": [["!part_present_38"], ["!part_present_39"], ["part_present_35"]],
"applyAfter": "$FrameBed"
}
Cargobed (part):
{
"name" : "§3UNU Mule Cargo Bed",
"subName" : "_desert",
"partTones": ["_desert", "_saddle", "_blackthorne"],
"extraMaterials" : ["minecraft:dye:0:1", "minecraft:dye:11:3"]
}
{
"pos": [0.9375, -0.1875, 1.125],
"rot": [0, 0, 115],
"allowParentRemoval": true,
"isSpare": true,
"types": ["ground_wheel_budd"],
"defaultPart": "unuparts:unuparts_part_unu_wheel_truck_budd",
"conditionalDefaultParts": {
"wheel_truck_budd_desert"="unuparts:unuparts_part_unu_wheel_truck_budd_desert",
"wheel_truck_budd_forrest"="unuparts:unuparts_part_unu_wheel_truck_budd_forrest",
"wheel_truck_budd_winter"="unuparts:unuparts_part_unu_wheel_truck_budd_winter"
},
//"toneIndex": 1,
"minValue": 0.625,
"maxValue": 1.25
}
Note: I tried using partTones, but it had the same result.
When I change the conditionalDefaultParts bed to the winter variant, the problem goes away.
Explanation:
When the bed spawns, it first spawns as the Desert variant, setting the desert variable, THEN the bed switches to the appropriate color, but the spare tire does not. This is because the winter variable gets set, but the desert/forrest variable is ALSO true, so it spawns whichever comes first, which is the correct color.
Issue 2
A vehicle will spawn with this second axle present, even though it shouldn't:
Here are the relevent json snippets:
{
"name": "§3UNU Camel Firetruck (Red) §7[TB-313-MCC]",
"subName": "firetruck_red",
"textureName": "unucivil_vehicle_unu_camel_red",
"partTones": ["", "_saddle", "_blackthorne", "_red"],
"secondaryTextColors": ["#CF9E4F", "#FEFEF0", "#FEFEF0"],
"constants": ["axle_budd", "truckbed_firetruck", "gyrophare_l_blue", "gyrophare_r_blue"],
"extraMaterials": ["minecraft:dye:1:5"]
}
{
"pos": [0, 0, -1.3125],
"types": ["generic_suspension_unu_leaf_heavy_back", "generic_bodypart_unu_suspension_camel_back"],
"conditionalDefaultParts": {
"!axle_double"="",
"axle_budd"="unuparts:unuparts_suspension_unu_leaf_heavy_back_budd",
"axle_dayton"="unuparts:unuparts_suspension_unu_leaf_heavy_back_dayton"
},
"minValue": 0,
"maxValue": 1,
"interactableVariables": [["!part_present_18"]],
//"lockingVariables": [["!part_present_22"]],
"applyAfter": "$FrameBed",
"constantValues": {
"frame_axleIsSecondary": 1,
"frame_driveshaft_x": 0.001,
"frame_driveshaft_y": 0.001,
"frame_driveshaft_z": 1.15625
}
}
The first entry is "!axle_double"=""
, so the part slot should be empty if axle_double is zero. Similar logic works with my standard wheels to prevent a hubcap from spawning on spare tires:
"conditionalDefaultParts": {
"spare_hubcap_moon"="unuparts:unuparts_part_unu_hubcap_standard_moon",
"spare_hubcap_dish"="unuparts:unuparts_part_unu_hubcap_standard_dish",
"spare_hubcap_deluxe"="unuparts:unuparts_part_unu_hubcap_standard_deluxe",
"spare_hubcap_turbine"="unuparts:unuparts_part_unu_hubcap_standard_turbine",
"part_isspare"="",
"hubcap_moon"="unuparts:unuparts_part_unu_hubcap_standard_moon",
"hubcap_dish"="unuparts:unuparts_part_unu_hubcap_standard_dish",
"hubcap_deluxe"="unuparts:unuparts_part_unu_hubcap_standard_deluxe",
"hubcap_turbine"="unuparts:unuparts_part_unu_hubcap_standard_turbine"
}
My guess is that !
is not recognized in conditionalDefaultParts
.
My guess is that ! is not recognized in conditionalDefaultParts.
Yes, and that's yet another thing that should be fixed with CVs...