Modding Help Custom crafting station troubles

Discussion in 'Starbound Modding' started by Isaac MacPherson, Feb 4, 2020.

  1. Isaac MacPherson

    Isaac MacPherson Scruffy Nerf-Herder

    I'm no stranger to modding. But there are just somethings that confound me to no end. For example, I've been working on a few custom races, along with new crafting stations for all of them. One however has been giving me trouble for 3 years now (off and on).

    I'm trying to make a kiln. But my kiln hates Starbound for some reason.
    Code:
    [Error] Application: exception thrown, shutting down: (ObjectException) Error loading object '/objects/crafting/kiln/kiln.object': (JsonException) Improper conversion to JsonArray from string
    [0] 140ff1a Star::captureStack
    [1] 140ede8 Star::StarException::StarException
    [2] 1636c0e Star::ObjectException::format<Star::String,Star::OutputProxy>
    [3] 164147a Star::ObjectDatabase::readConfig
    [4] 1638f2f <lambda_f865b784c9d3b8c99e05d88d7341860d>::operator()
    [5] 1638d7b <lambda_14134e40edbd36ed41cde94b2512e796>::operator()
    [6] 1636efe Star::LruCacheBase<Star::OrderedMapWrapper<Star::FlatHashMap,Star::String,std::pair<__int64,std::shared_ptr<Star::ObjectConfig> >,Star::BlockAllocator<std::pair<Star::String const ,std::pair<__int64,std::shared_ptr<Star::ObjectConfig> > >,1024>,Star::hash<Star::String,void>,std::equal_to<Star::String> > >::get<<lambda_14134e40edbd36ed41cde94b2512e796> >
    [7] 163bbab Star::ObjectDatabase::getConfig
    [8] 154bea1 Star::ItemDatabase::addObjectItems
    [9] 1547628 Star::ItemDatabase::ItemDatabase
    [10] 170c414 std::make_shared<Star::ItemDatabase>
    [11] 1711263 <lambda_9e20283833e6c8933fef4c0f73c09b45>::operator()
    [12] 1704156 std::_Invoker_functor::_Call<<lambda_9e20283833e6c8933fef4c0f73c09b45> &>
    [13] 1706a56 std::invoke<<lambda_9e20283833e6c8933fef4c0f73c09b45> &>
    [14] 1704d16 std::_Invoke_ret<std::shared_ptr<Star::ItemDatabase>,<lambda_9e20283833e6c8933fef4c0f73c09b45> &>
    [15] 1712f2a std::_Func_impl<<lambda_9e20283833e6c8933fef4c0f73c09b45>,std::allocator<int>,std::shared_ptr<Star::ItemDatabase> >::_Do_call
    [16] 17117ca std::_Func_class<std::shared_ptr<Star::SpeciesDatabase> >::operator()
    [17] 1708d64 Star::Root::loadMemberFunction<Star::ItemDatabase>
    [18] 170706c Star::Root::loadMember<Star::ItemDatabase>
    [19] 1715ecb Star::Root::itemDatabase
    [20] 170435b std::_Invoker_pmf_pointer::_Call<std::shared_ptr<Star::EntityFactory const > (__thiscall Star::Root::*)(void),Star::Root * &>
    [21] 170672b std::invoke<std::shared_ptr<Star::CollectionDatabase const > (__thiscall Star::Root::*&)(void),Star::Root * &>
    [22] 1704b09 std::_Invoke_ret<std::shared_ptr<Star::VersioningDatabase const > (__thiscall Star::Root::*&)(void),Star::Root * &>
    [23] 17043cc std::_Call_binder<std::_Unforced,0,std::shared_ptr<Star::CodexDatabase const > (__thiscall Star::Root::*)(void),std::tuple<Star::Root *>,std::tuple<> >
    [24] 1703da4 std::_Binder<std::_Unforced,std::shared_ptr<Star::VehicleDatabase const > (__thiscall Star::Root::*)(void),Star::Root * const>::operator()<>
    [25] 1712a13 std::_Func_impl<Star::SwallowReturn<std::_Binder<std::_Unforced,std::shared_ptr<Star::PatternedNameGenerator const > (__thiscall Star::Root::*)(void),Star::Root * const> >,std::allocator<int>,void>::_Do_call
    [26] 140779e <lambda_7fe09c15515a3a4541ffd059be2af05d>::operator()
    [27] 1408252 Star::WorkerPool::WorkerThread::run
    [28] 140ce5c Star::ThreadImpl::runThread
    [29] 7552ed6c BaseThreadInitThunk
    [30] 77c7377b RtlInitializeExceptionChain
    [31] 77c7374e RtlInitializeExceptionChain


    I can't understand what's going on here. See, normally whenever I get an error, Starbound logs it and I can fix it. But this time... I can't seem to figure out where the error is. Usually it's like
    Code:
    got ",", expected "}"
    or something like that.

    I think it's the kiln's .config file, but recently everything looks fine. I've even recently triple-checked the .object file, and it also looks fine.
    Take a look:
    Code:
    {
      "objectName" : "kiln",
      "colonyTags" : [ "crafting" ],
      "rarity" : "Uncommon",
      "race" : "arumajiro",
      "category" : "crafting",
    
      "price" : 50,
      "printable" : false,
    
      "description" : "The kiln is used for baking, drying, or heating, especially calcining lime, firing pottery, or reshaping glass.",
      "shortdescription" : "^orange;Kiln^white;",
    
      "maximumLiquidLevel" : 1,
    
      "apexDescription" : "A kiln. I can fire pottery and reheat glass here.",
      "avianDescription" : "A kiln perfect for firing pottery or heating glass.",
      "floranDescription" : "Kiln flamess hissss, burn. Floran brave it.",
      "glitchDescription" : "Impressed. This kiln is the perfect temperature for pottery and glass shaping.",
      "humanDescription" : "A kiln. Looks hot.",
      "hylotlDescription" : "A hot, imposing kiln. I wonder what works of art I can produce with it.",
      "novakidDescription" : "Basic lookin' kiln, for baking pottery.",
    
      "interactAction" : "OpenCraftingInterface",
      "interactData" : {
      "config" : "/interface/windowconfig/craftingkiln.config",
      "filter" : [ "kiln" ]
      },
    
      "lightColor" : [179, 149, 107],
    
      "flickerPeriod" : 0.3,
      "flickerMinIntensity" : 0.95,
      "flickerMaxIntensity" : 1,
      "flickerPeriodVariance" : 0.075,
      "flickerIntensityVariance" : 0.025,
    
      "inventoryIcon" : "kilnicon.png",
    
      "placementImage" : "kiln.png:default.default",
      "placementImagePosition" : [-16, 0],
    
      "orientations" : [
      {
      "imageLayers" : [ { "image" : "kiln.png:<color>.<frame>", "fullbright" : true }, { "image" : "kilnlit.png:<color>.<frame>" } ],
      "direction" : "left",
      "flipImages" : true,
    
      "imagePosition" : [-16, 0],
      "frames" : 4,
      "animationCycle" : 0.5,
    
      "spaceScan" : 0.1,
      "anchors" : [ "bottom" ]
      },
      {
      "imageLayers" : [ { "image" : "kiln.png:<color>.<frame>", "fullbright" : true }, { "image" : "kilnlit.png:<color>.<frame>" } ],
      "direction" : "right",
    
      "imagePosition" : [-16, 0],
      "frames" : 4,
      "animationCycle" : 0.5,
    
      "spaceScan" : 0.1,
      "anchors" : [ "bottom" ]
      }
      ],
    
      "scripts" : "/scripts/npcToyObject.lua",
      "npcToy" : {
      "influence" : [
      "kiln",
      "kiln",
      "kilnComplete"
      ],
      "defaultReactions" : {
      "kiln" : [
      [1.0, "warmhands"],
      [1.0, "crouchwarm"]
      ],
      "kilnComplete" : [
      [1.0, "warmhands"],
      [1.0, "crouchwarm"]
      ]
      },
      "preciseStandPositionLeft" : [-1.5, 0.0],
      "preciseStandPositionRight" : [2.5, 0.0],
      "maxNpcs" : 1
      }
    }
    


    And here's the kiln's config file:
    Code:
    {
      "filter" : [ ],
      "titleFromEntity" : true,
      "requiresBlueprint" : true,
      "craftingSound" : "/sfx/interface/crafting_furnace.ogg",
      "paneLayout" : {
      "background" : {
      "type" : "background",
      "fileHeader" : "/interface/crafting/craftingheader.png",
      "fileBody" : "/interface/crafting/furnacebody.png",
      "fileFooter" : "/interface/crafting/craftingfooter.png"
      },
      "close" : {
      "type" : "button",
      "base" : "/interface/x.png",
      "hover" : "/interface/xhover.png",
      "pressed" : "/interface/xpress.png",
      "pressedOffset" : [0, 0],
      "position" : [321, 261]
      },
      "windowtitle" : {
      "type" : "title",
      "title" : "  KILN",
      "subtitle" : "  ^#b9b5b2;Clay, glass, and more!",
      "position" : [-5, 252],
      "icon" : {
      "type" : "image",
      "file" : "/interface/crafting/craftingkiln.png",
      "position" : [0, -20],
      "zlevel" : -1
      }
      },
      "bgShine" : {
      "type" : "image",
      "file" : "/interface/crafting/shine.png",
      "position" : [-15, 0],
      "zlevel" : -10
      },
      "lblSchematics" : {
      "type" : "label",
      "position" : [88, 244],
      "hAnchor" : "mid",
      "value" : "^#b9b5b2;BLUEPRINTS"
      },
      "lblProducttitle" : {
      "type" : "label",
      "position" : [265, 244],
      "hAnchor" : "mid",
      "value" : "^#b9b5b2;PRODUCT"
      },
      "spinCount" : {
      "type" : "spinner",
      "position" : [220, 46],
      "upOffset" : 36
      },
      "tbSpinCount" : {
      "type" : "textbox",
      "position" : [232, 46],
      "textAlign" : "center",
      "maxWidth" : 16,
      "regex" : "x?\\d{0,4}",
      "hint" : ""
      },
      "imgAmountInput" : {
      "type" : "image",
      "file" : "/interface/crafting/amount.png",
      "position" : [226, 45],
      "zlevel" : -3
      },
      "btnCraft" : {
      "type" : "button",
      "base" : "/interface/button.png",
      "hover" : "/interface/buttonhover.png",
      "position" : [271, 43],
      "caption" : "Smelt"
      },
      "btnStopCraft" : {
      "type" : "button",
      "base" : "/interface/buttonactive.png",
      "hover" : "/interface/buttonactivehover.png",
      "position" : [271, 43],
      "caption" : "Stop"
      },
      "imgCraftBg" : {
      "type" : "image",
      "file" : "/interface/crafting/craftbg.png",
      "position" : [196, 40],
      "zlevel" : -5
      },
      "currentRecipeIcon" : {
      "type" : "itemslot",
      "callback" : "null",
      "position" : [197, 41]
      },
      "btnFilterHaveMaterials" : {
      "type" : "button",
      "base" : "/interface/crafting/checkboxnocheck.png",
      "baseImageChecked" : "/interface/crafting/checkboxcheck.png",
      "checkable" : true,
      "checked" : false,
      "position" : [40, 59]
      },
      "lblProduct" : {
      "type" : "label",
      "position" : [51, 58],
      "hAnchor" : "left",
      "value" : "MATERIALS AVAILABLE"
      },
    
      "description" : {
      "type" : "widget",
      "position" : [190, 41],
      "size" : [140, 220]
      },
      "filter" : {
      "type" : "textbox",
      "position" : [60, 43],
      "hint" : "Search",
      "maxWidth" : 70,
      "escapeKey" : "close",
      "enterKey" : "filter",
      "focus" : false
      },
    
      "scrollArea" : {
      "type" : "scrollArea",
      "rect" : [5, 69, 174, 221],
      "children" : {
      "itemList" : {
      "type" : "list",
      "schema" : {
      "selectedBG" : "/interface/crafting/craftableselected2.png",
      "unselectedBG" : "/interface/crafting/craftablebackground.png",
      "spacing" : [0, 1],
      "memberSize" : [159, 20],
      "listTemplate" : {
      "background" : {
      "type" : "image",
      "file" : "/interface/crafting/craftablebackground.png",
      "position" : [2, 0],
      "zlevel" : -1
      },
      "itemName" : {
      "type" : "label",
      "position" : [25, 5],
      "hAnchor" : "left",
      "wrapWidth" : 116,
      "value" : "Replace Me"
      },
      "itemIcon" : {
      "type" : "itemslot",
      "position" : [3, 1],
      "callback" : "null"
      },
      "newIcon" : {
      "type" : "image",
      "position" : [119, 5],
      "file" : "/interface/crafting/new.png",
      "zlevel" : 2
      },
      "moneyIcon" : {
      "type" : "image",
      "position" : [122, 1],
      "file" : "/interface/money.png"
      },
      "priceLabel" : {
      "type" : "label",
      "position" : [134, 1],
      "hAnchor" : "left",
      "value" : "0"
      },
      "notcraftableoverlay" : {
      "type" : "image",
      "file" : "/interface/crafting/notcraftableoverlay.png",
      "position" : [2, 0],
      "zlevel" : 1
      }
      }
      }
      }
      }
      },
      "lblDoorTab" : {
      "type" : "image",
      "file" : "/interface/crafting/tabicon_doors.png",
      "position" : [6, 223],
      "zlevel" : 3
      },
      "lblLightTab" : {
      "type" : "image",
      "file" : "/interface/crafting/tabicon_lights.png",
      "position" : [33, 223],
      "zlevel" : 3
      },
      "lblBedTab" : {
      "type" : "image",
      "file" : "/interface/crafting/tabicon_beds.png",
      "position" : [59, 223],
      "zlevel" : 3
      },
      "lblDecorTab" : {
      "type" : "image",
      "file" : "/interface/crafting/tabicon_decorations.png",
      "position" : [88, 223],
      "zlevel" : 3
      },
      "lblStoreTab" : {
      "type" : "image",
      "file" : "/interface/crafting/tabicon_storage.png",
      "position" : [114, 223],
      "zlevel" : 3
      },
      "lblMatTab" : {
      "type" : "image",
      "file" : "/interface/crafting/tabicon_materials.png",
      "position" : [144, 223],
      "zlevel" : 3
      },
      "categories" : {
      "type" : "radioGroup",
      "toggleMode" : false,
      "buttons" : [
      {
      "selected" : true,
      "position" : [4, 221],
      "baseImage" : "/interface/crafting/unselectedTab.png",
      "baseImageChecked" : "/interface/crafting/selectedTab.png",
      "data" : {
      "filter" : [ "doors" ]
      }
      },
      {
      "position" : [31, 221],
      "baseImage" : "/interface/crafting/unselectedTab.png",
      "baseImageChecked" : "/interface/crafting/selectedTab.png",
      "data" : {
      "filter" : [ "lights" ]
      }
      },
      {
      "position" : [58, 221],
      "baseImage" : "/interface/crafting/unselectedTab.png",
      "baseImageChecked" : "/interface/crafting/selectedTab.png",
      "data" : {
      "filter" : [ "beds" ]
      }
      },
      {
      "position" : [85, 221],
      "baseImage" : "/interface/crafting/unselectedTab.png",
      "baseImageChecked" : "/interface/crafting/selectedTab.png",
      "data" : {
      "filter" : [ "decoration" ]
      }
      },
      {
      "position" : [112, 221],
      "baseImage" : "/interface/crafting/unselectedTab.png",
      "baseImageChecked" : "/interface/crafting/selectedTab.png",
      "data" : {
      "filter" : [ "storage" ]
      }
      },
      {
      "position" : [139, 221],
      "baseImage" : "/interface/crafting/unselectedTab.png",
      "baseImageChecked" : "/interface/crafting/selectedTab.png",
      "data" : {
      "filter" : [ "materials" ]
      }
      }
      ]
      },
      "rarities" : {
      "type" : "radioGroup",
      "toggleMode" : true,
      "buttons" : [
      ]
      }
      }
    }
    


    Any help or ideas? Maybe there's something minuscule that I missed?

    Edit:
    Small update- I'm having the same issues with another crafting table now, but for a separate mod. When it rains, it pours...
     
    Last edited: Feb 8, 2020
  2. Isaac MacPherson

    Isaac MacPherson Scruffy Nerf-Herder

    Sorry for the double post, but I figured it out! It turns out when I copied the config file from the tiered workbench, I neglected to remove the
    Code:
    "titleFromEntity" : true
    in the kiln's config.

    So note to future coders: if you're going to make a crafting table that won't be improved like the inventor's table (for example), don't include code for such an item in the .object file and the .config file.
     
    DrPvtSkittles likes this.

Share This Page