JSON validator

Validation

Oops, found some issues with your JSON. See format documentation for more info.

Line Field Error
2 Format Incorrect value '2.8.0'. You should always use the latest format version (currently 2.9.0) to enable the latest features, avoid obsolete behavior, and reduce load times.

Content

You can change JSON format () or edit this file.
{
  "Format": "2.8.0",
  "Changes": [
    /*simple loads & edits//*/
    {
      "LogName": "Ducati Sprite",
      "Action": "Load",
      "Target": "{{ModId}}/Ducati",
      "FromFile": "assets/CKDucatiPersonal.png"
    },
    {
      "LogName": "Ducati Sprite Edits",
      "Action": "EditImage",
      "Target": "{{ModId}}/Ducati",
      "FromFile": "assets/DucatiEdits.png",
      "PatchMode": "Overlay"
    },
    {
      "LogName": "Flute Reskin",
      "Action": "EditImage",
      "Target": "Maps/springobjects",
      "FromFile": "Assets/Flute.png",
      "ToArea": {
        "X": 368,
        "Y": 592,
        "Width": 16,
        "Height": 16
      }
    },
    {
      "LogName": "Helmet Sprites",
      "Action": "Load",
      "Target": "Hats/{{ModId}}_Helmets",
      "FromFile": "assets/Helmets.png"
    },
    {
      "LogName": "BikeShed Sprite",
      "Action": "Load",
      "Target": "{{ModId}}/BikeShed",
      "FromFile": "assets/BikeShed.png"
    },
    {
      "LogName": "Ducati Audio",
      "Action": "EditData",
      "Target": "Data/AudioChanges",
      "Entries": {
        "{{ModId}}_Music": {
          "ID": "{{ModId}}_Footsteps",
          "Category": "Footsteps",
          "FilePaths": [
            "{{AbsoluteFilePath: assets/tractor.wav}}"
          ],
          "StreamedVorbis": false,
          "Looped": false
        }
      }
    }
    /*helmet implementation//*/,
    {
      "LogName": "Helmet Hats",
      "Action": "EditData",
      "Target": "Data/Hats",
      "Entries": {
        "{{ModId}}_SilverHelmet": "{{ModId}}_SilverHelmet/A silver motorcycle helmet./hide/false//Silver Helmet/0/\\Hats\\{{ModId}}_Helmets",
        "{{ModId}}_OrangeHelmet": "{{ModId}}_OrangeHelmet/An orange motorcycle helmet./hide/false//Orange Helmet/1/\\Hats\\{{ModId}}_Helmets",
        "{{ModId}}_BlackHelmet": "{{ModId}}_BlackHelmet/A black motorcycle helmet./hide/false//Black Helmet/2/\\Hats\\{{ModId}}_Helmets"
      }
    },
    {
      "LogName": "Buyable Helmets",
      "Action": "EditData",
      "Target": "Data/Shops",
      "TargetField": [
        "HatMouse",
        "Items"
      ],
      "Entries": {
        "{{ModId}}_SilverHelmet": {
          "Id": "{{ModId}}_SilverHelmet",
          "ItemId": "{{ModId}}_SilverHelmet",
          "Price": "20000"
        },
        "{{ModId}}_OrangeHelmet": {
          "Id": "{{ModId}}_OrangeHelmet",
          "ItemId": "{{ModId}}_OrangeHelmet",
          "Price": "20000"
        },
        "{{ModId}}_BlackHelmet": {
          "Id": "{{ModId}}_BlackHelmet",
          "ItemId": "{{ModId}}_BlackHelmet",
          "Price": "20000"
        }
      },
      "When": {
        "HasFlag": "{{ModId}}_HelmetMail"
      }
    },
    {
      "LogName": "Helmet Mail",
      "Action": "EditData",
      "Target": "Data/Mail",
      "Entries": {
        "{{ModId}}_HelmetMail": "@,^Since you now own a motorbike, I thought you should have a helmet to go with it.^ -Demetrius%item id (O){{ModId}}_BlackHelmet 1 %%"
      }
    }
    /*ducati implementation//*/,
    {
      "LogName": "Ducati Mount",
      "Action": "EditData",
      "Target": "aedenthorn.CustomMounts/dict",
      "Entries": {
        "{{ModId}}/DucatiBike": {
          "Name": "Ducati Motorbike",
          "Stable": "{{ModId}}_BikeShed",
          "SpawnOffset": {
            "X": 1,
            "Y": 1
          },
          "Size": {
            "X": 2,
            "Y": 1
          },
          "Speed": 2,
          "FrameWidth": 32,
          "FrameHeight": 32,
          "FootstepSound": "{{ModId}}_Footsteps",
          "FootstepSoundStone": "{{ModId}}_Footsteps",
          "FootstepSoundWood": "{{ModId}}_Footsteps",
          "EatItem": "(O)171",
          "EatSound": "glug",
          "EatSpeedBonus": 0.7,
          "TexturePath": "{{InternalAssetKey: assets/CKDucatiPersonal.png}}"
        }
      }
    }
    /*bikeshed implementation//*/
    /* needs BuildMenuDrawOffset added //*/,
    {
      "LogName": "BikeShed",
      "Action": "EditData",
      "Target": "Data/Buildings",
      "Entries": {
        "{{ModId}}_BikeShed": {
          "Name": "Ducati Bike Shed",
          "Description": "A weatherproof shed for storing a small vehical. Comes with a 1972 Ducati Motorbike.",
          "Texture": "{{ModId}}/BikeShed",
          "SourceRect": {
            "X": 0,
            "Y": 0,
            "Width": 64,
            "Height": 96
          },
          "Size": {
            "X": 4,
            "Y": 2
          },
          "BuildingType": "StardewValley.Buildings.Stable",
          "Builder": "Robin",
          "BuildDays": 2,
          "BuildCost": 10000,
          "BuildMaterials": [
            {
              "ItemID": "(O)709",
              "Amount": 100
            },
            {
              "ItemID": "(O)335",
              "Amount": 10
            }
          ],
          "BuildMenuDrawOffset": {
            "X": 0,
            "Y": 112
          },
          "AddMailOnBuild": [
            "{{ModId}}_HelmetMail"
          ],
          "DrawShadow": true,
          "CollisionMap": "XXXX\nXOOX",
          "AnimalDoor": {
            "X": 0,
            "Y": 0,
            "Width": 1,
            "Height": 3
          },
          "AnimalDoorOpenDuration": 0.9375,
          "AnimalDoorOpenSound": "doorCreak",
          "AnimalDoorCloseDuration": 0.3125,
          "AnimalDoorCloseSound": "doorCreakReverse",
          "DrawLayers": [
            {
              "ID": "Default_AnimalDoor",
              "SourceRect": {
                "X": 14,
                "Y": 112,
                "Width": 36,
                "Height": 48
              },
              "DrawPosition": "14, 48",
              "DrawInBackground": false,
              "FrameCount": 1,
              "FrameDuration": 360,
              "SortTileOffset": 0.02,
              "AnimalDoorOffset": {
                "X": 0,
                "Y": -44
              }
            },
            {
              "ID": "Default_AnimalDoor_Open",
              "SourceRect": {
                "X": 64,
                "Y": 0,
                "Width": 64,
                "Height": 96
              },
              "DrawPosition": "0, 0",
              "DrawInBackground": true,
              "AnimalDoorOffset": {
                "X": 0,
                "Y": 0
              }
            }
          ]
        }
      }
    }
  ]
}