Jump to content

Micah Holmes

Vintarian
  • Posts

    199
  • Joined

  • Last visited

Everything posted by Micah Holmes

  1. @xXx_Ape_xXx Lol yeah i seen that this morning. Sometimes when I work on things like a million times, I loose sight of the basic stuff lol
  2. Tried this but crashes game: texturesByType: { "*-baldcypress": { "maple": { "all":{ "base": "game:block/wood/debarked/{wood}" } }, "flint": { "all":{ "base": "game:block/stone/flint" } }, "normal-westeast": { "all":{ "base": "game:item/resource/ropeold" } } }, "*-pine": { "maple": { "all":{ "base": "game:block/wood/debarked/{wood}" }}, "flint": { "all":{ "base": "game:block/stone/flint" }}, "normal-westeast": { "all":{ "base": "game:item/resource/ropeold" }} } }, Tried this crashes texturesByType: { "*-baldcypress": { "maple": { base: "game:block/wood/debarked/{wood}", alternates: [{base: "game:block/wood/debarked/{wood}" }, {base: "game:block/wood/debarked/{wood}" }, {base: "game:block/wood/debarked/{wood}" } ] }, "flint": { base: "game:block/stone/flint", alternates: [{base: "game:block/stone/flint" }, {base: "game:block/stone/flint" }, {base: "game:block/stone/flint" } ] }, "normal-westeast": { base: "game:item/resource/ropeold", alternates: [{base: "game:item/resource/ropeold" }, {base: "game:item/resource/ropeold" }, {base: "game:item/resource/ropeold" } ] } }, "*-pine": { "maple": { "all":{ "base": "game:block/wood/debarked/{wood}" }}, "flint": { "all":{ "base": "game:block/stone/flint" }}, "normal-westeast": { "all":{ "base": "game:item/resource/ropeold" }} } }, Crashes texturesByType: { "*-baldcypress": { "all": { "maple": { "base": "game:block/wood/debarked/{wood}" }, "flint": { "base": "game:block/stone/flint" }, "normal-westeast": { "base": "game:item/resource/ropeold" } } }, "*-pine": { "all": { "maple": { "base": "game:block/wood/debarked/{wood}" }, "flint": { "base": "game:block/stone/flint" }, "normal-westeast": { "base": "game:item/resource/ropeold" } } } },
  3. I've never messed with animations before, so Im a bit new to this part of the code. I have no issues via code but when I fire the bow, I get a missing texture for the animation. bow code: { code: "crudebow", tags: ["weapon", "weapon-ranged"], variantgroups: [ { code: "type", states: ["apprentice", "journeyman", "artisan", "master", "grandmaster" ] }, { code: "wood", states: ["baldcypress", "pine" ] } ], class: "ItemBow", maxstacksize: 1, durabilityByType: { "crudebow-apprentice-*": 100, "crudebow-journeyman-*": 150, "crudebow-artisan-*": 210, "crudebow-master-*": 300, "crudebow-grandmaster-*": 350 }, shape: { base: "weapons/bow/crude/crude", alternates: [ { base: "item/tool/bow/{wood}-charge1" }, { base: "item/tool/bow/{wood}-charge2" }, { base: "item/tool/bow/{wood}-charge3" } ] }, texturesByType: { "*-baldcypress": { "maple": { "base": "game:block/wood/debarked/{wood}" }, "flint": { "base": "game:block/stone/flint" }, "normal-westeast": { "base": "game:item/resource/ropeold" } }, "*-pine": { "maple": { "base": "game:block/wood/debarked/{wood}" }, "flint": { "base": "game:block/stone/flint" }, "normal-westeast": { "base": "game:item/resource/ropeold" } } }, tool: "bow", creativeinventory: { "general": ["*"], "items": ["*"], "tools": ["*"] }, attributes: { heldItemPitchFollow: 1, aimAnimationByType: { "*": "bowaim" }, damageByType: { "crudebow-apprentice": 2.25, "crudebow-journeyman": 2.5, "crudebow-artisan": 2.75, "crudebow-master": 3, "crudebow-grandmaster": 3.25 }, damageTierByType: { "crudebow-apprentice": 0, "crudebow-journeyman": 0, "crudebow-artisan": 0, "crudebow-master": 0, "crudebow-grandmaster": 0 }, statModifierByType: { "crudebow-apprentice": { "rangedWeaponsAcc": -0.1 }, "crudebow-journeyman": { "rangedWeaponsAcc": -0.05 }, "crudebow-artisan": { "rangedWeaponsAcc": 0 }, "crudebow-master": { "rangedWeaponsAcc": 0.1 }, "crudebow-grandmaster": { "rangedWeaponsAcc": 0.2 } }, toolrackTransformByType: { "crudebow-*": { translation: { x: 0.14, y: 0.93 }, rotation: { x: 2, y: 5, z: 0 }, scale: 1.76 } }, groundStorageTransformByType: { "crudebow-*":{ translation: { x: -0.4, y: -0.11, z: 0.345 }, rotation: { x: 26, y: -180, z: -90 } } } }, attributesByType: { "crudebow-*": { attachableToEntity: { categoryCode: "bowshort", attachedShapeBySlotCode: { "frontrightside": { base: "game:item/wearable/hooved/elk/weaponr-bow-crude" }, "frontleftside": { base: "game:item/wearable/hooved/elk/weaponl-bow-crude" } } } } }, behaviors: [{ name: "GroundStorable", properties: { layout: 'WallHalves', wallOffYByType: { "crudebow-*": 1 }, ctrlKey: true, selectionBox: { x1: 0, y1: 0, z1: 0, x2: 1, y2: 0.1, z2: 1 }, collisionBox: { x1: 0, y1: 0, z1: 0, x2: 0, y2: 0, z2: 0 }, } }], fpHandTransformByType: { "crudebow-*": { translation: { x: 0, y: 0.5, z: 0 }, rotation: { x: 4, y: 1, z: 84 }, origin: { x: 0.5, y: 0, z: 0.5 }, scale: 2.91 } }, guiTransformByType: { "crudebow-*": { translation: { x: 0, y: 0, z: 0 }, rotation: { x: -95, y: 45, z: 37 }, origin: { x: 0.47, y: 0, z: 0.55 }, scale: 2.35 } }, groundTransform: { translation: { x: 0, y: 0, z: 0 }, rotation: { x: 0, y: 0, z: 0 }, origin: { x: 0.5, y: 0, z: 0.5 }, scale: 4.8 }, tpHandTransformByType: { "crudebow-*": { translation: { x: -0.48, y: 0, z: -0.44 }, rotation: { x: 107, y: 11, z: 10 }, origin: { x: 0.5, y: 0, z: 0.5 }, scale: 1.15 } } } I'm pretty sure my issue is likely within the shapes them selves. I altered them first but then reverted them all back to original game scripts. FYI the idea here is the better material you use to construct your bow, the better it will perform. Anyway here is what the animation looks like currently:
  4. @ThornRanger C is the variable name could be X y or Z. Does not really matter the letter. Its just a variable name. C and I represent the location in the Grid as well for the pattern you need to use to build the object. Ape showed you an array that has a structure you need to follow: C = variable name or allies name type = item because the tool chisel is a item and not a block code: "game:chisel-*" - The game portion is you telling VS you want to use base game item chisel and not your own "chisel is the item name and -* means use any chisel copper, iron etc istool Basically saying this item is a tool so it has a durability toolDurabilityCost - is how much durability you want to remove from the tool when crafting allowedVariants are the different chisel variants or tool variants allowed to use to craft this object If you look at other scripts in grid crafting, you will see similar "patterns" used. @xXx_Ape_xXx did a great job showing you a in depth sample of grid crafting. most recipes are pretty basic but this one is nice and in depth. JSON is a pretty literal scripting language. Just like learning any language, it will become second nature over time.
  5. @xXx_Ape_xXx tested it nope does not work. The knife and "sickle" both give high amount. It does not choose one over the other. Instead of giving ether 2 raw meat or 10 raw meat. It gives 2 raw meat in one slot and 10 in another slot. So I assume I would need to do a dll update or something? Based on what I can tell so far the Tool is optional for Tall grass for example but for entities they do not have a optional param for harvesting (guessing). so I would need to ad a optional param to force it to determine which tool you used to skin the creature or add a default.
  6. @xXx_Ape_xXx The idea behind the skinning knife was you get a bonus to meat when using it to skin animals vs regular knife. However, I dont think this is going to work. Grass used "dropsByType:" and the entity drops use "drops:". I tried switching it over to by type no luck. I'll keep playing with it and maybe ill get it to work but not very hopefully currently.
  7. update able to get it spawning but its not doing anything or giving any meat when harvested: { code: "raccoon", class: "EntityAgent", tags: ["animal", "huntable", "adult", "habitat-land"], weight: 15, variantgroups: [ { code: "type", states: ["common"]}, { code: "age", states: ["adult"] }, { code: "gender", states: ["male", "female"] }, ] , hitboxSize: { x: 0.75, y: 0.5 }, deadHitboxSize: { x: 0.75, y: 0.4 }, eyeHeight: 0.7, drops: [], attributes: { creatureDiet: { foodCategories: ["Fruit"], weightedFoodTags: [ { weight: 0.9, code: "fruit" }, { weight: 1, code: "egg" }, { weight: 1, code: "lootableSweet" }, { weight: 1, code: "sweetBerryBush" }, { weight: 0.2, code: "peanut" } ] }, trappable: { "small": { trapChance: 0.0, trapDestroyChance: 0.5 }, "large": { trapChance: 0.0, trapDestroyChance: 0.0 } }, handbook: { groupcode: "creaturegroup-raccoon" } }, client: { renderer: "Shape", shape: { base: "game:entity/animal/mammal/raccoon/{type}-{gender}" }, texture: { base: "game:entity/animal/mammal/raccoon/{type}-{gender}1" }, behaviors: [ { code: "repulseagents" }, { code: "controlledphysics", stepHeight: 1.1251 }, { code: "floatupwhenstuck", onlyWhenDead: true }, { code: "interpolateposition" }, { code: "harvestable" }, { code: "mouthinventory", acceptStacks: [ { type: "item", code: "honeycomb" } ] }, { code: "despawn", minPlayerDistance: 8, belowLightLevel: 8, minSeconds: 300 }, { code: "ropetieable", minGeneration: 2 } ], animations: [ { code: "game:hurt", animation: "hurt", animationSpeed: 2.2, weight: 10, blendMode: "AddAverage" }, { code: "game:die", animation: "death", animationSpeed: 1.25, weight: 10, blendMode: "Average", triggeredBy: { onControls: ["dead"] } }, { code: "game:idle", animation: "idle", blendMode: "AddAverage", easeOutSpeed: 4, triggeredBy: { defaultAnim: true }, }, { code: "game:walk", animation: "walk", weight: 5 } ] }, server: { behaviors: [ { code: "ropetieable", minGeneration: 2 }, { code: "repulseagents" }, { code: "controlledphysics", stepHeight: 1.1251 }, { code: "despawn", minPlayerDistance: 8, belowLightLevel: 8, minSeconds: 300 }, { code: "health", currenthealth: 6, maxhealth: 6, }, { code: "deaddecay", hoursToDecay: 96, decayedBlock: "carcass-small" }, { code: "floatupwhenstuck", onlyWhenDead: true }, { code: "game:harvestable", drops: [ { type: "item", code: "game:bushmeat-raw", quantity: { avg: 2, var: 1 } }, { type: "item", code: "game:bushmeat-raw", quantity: { avg: 2, var: 1, tool: "skinningknife-*" } }, { type: "item", code: "game:hide-raw-small", quantity: { avg: 1.25, var: 0 } }, { type: "item", code: "game:fat", quantity: { avg: 0.25, var: 0 } } ] }, { code: "breathe" }, { code: "emotionstates", states: [ { code: "aggressiveondamage", duration: 5, chance: 0, slot: 0, priority: 2, accumType: "noaccum" }, { code: "fleeondamage", duration: 10, chance: 1, slot: 0, priority: 1, accumType: "max" }, { code: "saturated", duration: 1200, chance: 1, slot: 0, priority: 1, accumType: "sum" } ], }, { code: "game:taskai", aiCreatureType: "LandCreature", aitasks: [ { code: "meleeattack", entityCodes: ["player"], priority: 3, damage: 3, slot: 1, mincooldown: 1500, maxcooldown: 1500, attackDurationMs: 800, damagePlayerAtMs: 500, animation: "Attack", animationSpeed: 2.5, whenInEmotionState: "aggressiveondamage" }, { code: "seekentity", entityCodes: ["player"], priority: 2.5, movespeed: 0.022, seekingRange: 20, animation: "Run", animationSpeed: 1.5, sound: "creature/raccoon/aggro", whenInEmotionState: "aggressiveondamage" }, { code: "fleeentity", entityCodes: ["player", "wolf-*", "bear-*"], priority: 2, movespeed: 0.035, animationSpeed: 3.5, seekingRange: 12, animation: "Run" }, { code: "fleeentity", entityCodes: ["beemob"], priority: 2, movespeed: 0.03, animationSpeed: 3, seekingRange: 9, fleeDurationMs: 20000, fleeingDistance: 25, animation: "Run", retaliateAttacks: false, whenInEmotionState: "fleeondamage" }, { code: "seekfoodandeat", movespeed: 0.010, priority: 1.6, animationSpeed: 1.75, eatTime: 2, eatLooseItems: true, animation: "Walk", eatAnimation: "gather", eatAnimationLooseItems: "eat", mincooldownHours: 6, maxcooldownHours: 12, }, { code: "useinventory", animation: "eat", priority: 1.5, priorityForCancel: 1.7, eatItemCategories: ["Fruit"], eatItemCodes: ["honeycomb"], useTime: 3, mincooldownHours: 0, maxcooldownHours: 0.5, }, { code: "followleadholder", minGeneration: 2, priority: 1.45, animation: "walk", animationSpeed: 2, movespeed: 0.008 }, { code: "getoutofwater", priority: 1.4, movespeed: 0.015, animation: "Walk", animationSpeed: 2.2 }, { code: "stayclosetoentity", enabledByType: { "*-adult-female": true, "*": false }, priority: 1.4, entityCode: "raccoon-{type}-adult-male", movespeed: 0.02, animationSpeed: 3, maxDistance: 5, searchRange: 25, animation: "Run" }, { code: "idle", priority: 1.2, priorityForCancel: 1.35, minduration: 2500, maxduration: 2500, mincooldown: 6000, maxcooldown: 20000, animation: "Sniff", animationSpeed: 1.25 }, { code: "wander", priority: 1.0, priorityForCancel: 1.35, animation: "Walk", preferredLightLevel: 20, movespeed: 0.008, animationSpeed: 2 }, { code: "idle", priority: 0.9, minduration: 5000, maxduration: 30000, mincooldown: 2000, maxcooldown: 120000, priorityForCancel: 1.28, animation: "Sit", stopOnNearbyEntityCodes: ["player"], stopRange: 5 }, { code: "lookaround", priority: 0.5 } ] }, { code: "collectitems" }, { code: "mouthinventory", acceptStacks: [ { type: "item", code: "honeycomb" }, { type: "item", code: "fruit-blueberry" }, { type: "item", code: "fruit-cranberry" }, { type: "item", code: "fruit-redcurrant" }, { type: "item", code: "fruit-whitecurrant" }, { type: "item", code: "fruit-blackcurrant" } ] }, { code: "entitystatetags" } ], spawnconditions: { worldgen: { TriesPerChunk: { avg: 0.06, var: 0 }, tryOnlySurface: true, groupSize: { dist: "verynarrowgaussian", avg: 2, var: 3 }, insideBlockCodes: ["air", "tallgrass-*", "snowlayer-1"], minTemp: -15, maxTemp: 15, minRain: 0.25, minForestOrShrubs: 0.25, maxForest: 0.75, maxShrubs: 0.75, companions: ["raccoon-{type}-adult-female", "raccoon-{type}-baby-male", "raccoon-{type}-baby-female"] }, runtime: { group: "neutral", tryOnlySurface: true, chance: 0.0009, maxQuantity: 4, // Make them spawn away from artifical light so they don't spawn inside farmland maxLightLevel: 7, groupSize: { avg: 1, var: 0 }, insideBlockCodes: ["air", "tallgrass-*", "snowlayer-1"], minTemp: -4, maxTemp: 15, minRain: 0.4, minForestOrShrubs: 0.5, maxForest: 1, maxShrubs: 1, companions: ["raccoon-{type}-adult-female", "raccoon-{type}-baby-male", "raccoon-{type}-baby-female"] } } }, sounds: { hurt: "game:creature/raccoon/hurt", death: "game:creature/raccoon/death", idle: "game:creature/raccoon/idle" }, idleSoundChance: 0.01 }
  8. @xXx_Ape_xXx Trying this with a raccoon and not having much luck. No code errors but I cant spawn raccoons now into the world. Here is the code: { code: "woodworking:raccoon", class: "EntityAgent", tags: ["animal", "huntable", "adult", "habitat-land"], weight: 15, variantgroups: [ { code: "type", states: ["common"]}, { code: "age", states: ["adult"] }, { code: "gender", states: ["male", "female"] }, ] , hitboxSize: { x: 0.75, y: 0.5 }, deadHitboxSize: { x: 0.75, y: 0.4 }, eyeHeight: 0.7, drops: [], attributes: { creatureDiet: { foodCategories: ["Fruit"], weightedFoodTags: [ { weight: 0.9, code: "fruit" }, { weight: 1, code: "egg" }, { weight: 1, code: "lootableSweet" }, { weight: 1, code: "sweetBerryBush" }, { weight: 0.2, code: "peanut" } ] }, trappable: { "small": { trapChance: 0.0, trapDestroyChance: 0.5 }, "large": { trapChance: 0.0, trapDestroyChance: 0.0 } }, handbook: { groupcode: "creaturegroup-raccoon" } }, client: { renderer: "Shape", shape: { base: "game:entity/animal/mammal/raccoon/{type}-{gender}" }, texture: { base: "game:entity/animal/mammal/raccoon/{type}-{gender}1" }, behaviors: [ { code: "repulseagents" }, { code: "controlledphysics", stepHeight: 1.1251 }, { code: "floatupwhenstuck", onlyWhenDead: true }, { code: "interpolateposition" }, { code: "harvestable" }, { code: "mouthinventory", acceptStacks: [ { type: "item", code: "honeycomb" } ] }, { code: "despawn", minPlayerDistance: 8, belowLightLevel: 8, minSeconds: 300 }, { code: "ropetieable", minGeneration: 2 } ], animations: [ { code: "hurt", animation: "hurt", animationSpeed: 2.2, weight: 10, blendMode: "AddAverage" }, { code: "die", animation: "death", animationSpeed: 1.25, weight: 10, blendMode: "Average", triggeredBy: { onControls: ["dead"] } }, { code: "idle", animation: "idle", blendMode: "AddAverage", easeOutSpeed: 4, triggeredBy: { defaultAnim: true }, }, { code: "walk", animation: "walk", weight: 5 } ] }, server: { behaviors: [ { code: "ropetieable", minGeneration: 2 }, { code: "repulseagents" }, { code: "controlledphysics", stepHeight: 1.1251 }, { code: "despawn", minPlayerDistance: 8, belowLightLevel: 8, minSeconds: 300 }, { code: "health", currenthealth: 6, maxhealth: 6, }, { code: "deaddecay", hoursToDecay: 96, decayedBlock: "carcass-small" }, { code: "floatupwhenstuck", onlyWhenDead: true }, { code: "harvestable", drops: [ { type: "item", code: "game:bushmeat-raw", quantity: { avg: 2, var: 1 } }, { type: "item", code: "game:bushmeat-raw", quantity: { avg: 2, var: 1, tool: "skinningknife-*" } }, { type: "item", code: "game:hide-raw-small", quantity: { avg: 1.25, var: 0 } }, { type: "item", code: "game:fat", quantity: { avg: 0.25, var: 0 } } ] }, { code: "breathe" }, { code: "emotionstates", states: [ { code: "aggressiveondamage", duration: 5, chance: 0, slot: 0, priority: 2, accumType: "noaccum" }, { code: "fleeondamage", duration: 10, chance: 1, slot: 0, priority: 1, accumType: "max" }, { code: "saturated", duration: 1200, chance: 1, slot: 0, priority: 1, accumType: "sum" } ], }, { code: "taskai", aiCreatureType: "LandCreature", aitasks: [ { code: "meleeattack", entityCodes: ["player"], priority: 3, damage: 3, slot: 1, mincooldown: 1500, maxcooldown: 1500, attackDurationMs: 800, damagePlayerAtMs: 500, animation: "Attack", animationSpeed: 2.5, whenInEmotionState: "aggressiveondamage" }, { code: "seekentity", entityCodes: ["player"], priority: 2.5, movespeed: 0.022, seekingRange: 20, animation: "Run", animationSpeed: 1.5, sound: "creature/raccoon/aggro", whenInEmotionState: "aggressiveondamage" }, { code: "fleeentity", entityCodes: ["player", "wolf-*", "bear-*"], priority: 2, movespeed: 0.035, animationSpeed: 3.5, seekingRange: 12, animation: "Run" }, { code: "fleeentity", entityCodes: ["beemob"], priority: 2, movespeed: 0.03, animationSpeed: 3, seekingRange: 9, fleeDurationMs: 20000, fleeingDistance: 25, animation: "Run", retaliateAttacks: false, whenInEmotionState: "fleeondamage" }, { code: "seekfoodandeat", movespeed: 0.010, priority: 1.6, animationSpeed: 1.75, eatTime: 2, eatLooseItems: true, animation: "Walk", eatAnimation: "gather", eatAnimationLooseItems: "eat", mincooldownHours: 6, maxcooldownHours: 12, }, { code: "useinventory", animation: "eat", priority: 1.5, priorityForCancel: 1.7, eatItemCategories: ["Fruit"], eatItemCodes: ["honeycomb"], useTime: 3, mincooldownHours: 0, maxcooldownHours: 0.5, }, { code: "followleadholder", minGeneration: 2, priority: 1.45, animation: "walk", animationSpeed: 2, movespeed: 0.008 }, { code: "getoutofwater", priority: 1.4, movespeed: 0.015, animation: "Walk", animationSpeed: 2.2 }, { code: "stayclosetoentity", enabledByType: { "*-adult-female": true, "*": false }, priority: 1.4, entityCode: "raccoon-{type}-adult-male", movespeed: 0.02, animationSpeed: 3, maxDistance: 5, searchRange: 25, animation: "Run" }, { code: "idle", priority: 1.2, priorityForCancel: 1.35, minduration: 2500, maxduration: 2500, mincooldown: 6000, maxcooldown: 20000, animation: "Sniff", animationSpeed: 1.25 }, { code: "wander", priority: 1.0, priorityForCancel: 1.35, animation: "Walk", preferredLightLevel: 20, movespeed: 0.008, animationSpeed: 2 }, { code: "idle", priority: 0.9, minduration: 5000, maxduration: 30000, mincooldown: 2000, maxcooldown: 120000, priorityForCancel: 1.28, animation: "Sit", stopOnNearbyEntityCodes: ["player"], stopRange: 5 }, { code: "lookaround", priority: 0.5 } ] }, { code: "collectitems" }, { code: "mouthinventory", acceptStacks: [ { type: "item", code: "honeycomb" }, { type: "item", code: "fruit-blueberry" }, { type: "item", code: "fruit-cranberry" }, { type: "item", code: "fruit-redcurrant" }, { type: "item", code: "fruit-whitecurrant" }, { type: "item", code: "fruit-blackcurrant" } ] }, { code: "entitystatetags" } ], spawnconditions: { worldgen: { TriesPerChunk: { avg: 0.06, var: 0 }, tryOnlySurface: true, groupSize: { dist: "verynarrowgaussian", avg: 2, var: 3 }, insideBlockCodes: ["air", "tallgrass-*", "snowlayer-1"], minTemp: -15, maxTemp: 15, minRain: 0.25, minForestOrShrubs: 0.25, maxForest: 0.75, maxShrubs: 0.75, companions: ["raccoon-{type}-adult-female", "raccoon-{type}-baby-male", "raccoon-{type}-baby-female"] }, runtime: { group: "neutral", tryOnlySurface: true, chance: 0.0009, maxQuantity: 4, // Make them spawn away from artifical light so they don't spawn inside farmland maxLightLevel: 7, groupSize: { avg: 1, var: 0 }, insideBlockCodes: ["air", "tallgrass-*", "snowlayer-1"], minTemp: -4, maxTemp: 15, minRain: 0.4, minForestOrShrubs: 0.5, maxForest: 1, maxShrubs: 1, companions: ["raccoon-{type}-adult-female", "raccoon-{type}-baby-male", "raccoon-{type}-baby-female"] } } }, sounds: { hurt: "creature/raccoon/hurt", death: "creature/raccoon/death", idle: "creature/raccoon/idle" }, idleSoundChance: 0.01 } I know I'm likely missing a bunch of stuff. Just not sure where. I put a crazy number in for testing. { code: "skinningknife", // ItemKnife contains code for harvesting animal carcasses class: "ItemKnife", tags: ["weapon", "weapon-melee"], damagedby: ["blockbreaking", "attacking"], tool: "knife", attributes: { heldItemPitchFollow: 1, knifeHitBlockAnimation: "knifecut", knifeHitEntityAnimation: "knifestab", handbook: { groupBy: ["knife-*"] }, toolrackTransformByType: { "*": { translation: { x: -0.3, y: 0.6, z: -0.1 }, rotation: { x: 97, y: 180, z: 3 }, origin: { x: 0.5, y: 0, z: 0.5 }, scale: 1.8 } }, groundStorageTransformByType: { "*": { translation: { x: 0, y: 0.04, z: -0.104 }, rotation: { x: 26, y: 88, z: -87 }, scale: 1 } } }, behaviors: [{ name: "GroundStorable", properties: { layout: 'WallHalves', wallOffY: 1, ctrlKey: true, selectionBox: { x1: 0, y1: 0, z1: 0, x2: 1, y2: 0.1, z2: 1 }, collisionBox: { x1: 0, y1: 0, z1: 0, x2: 0, y2: 0, z2: 0 }, }, }, { name: "AnimationAuthoritative" }], variantgroups: [ { code: "type", states: ["apprentice", "journeyman", "artisan", "master", "grandmaster" ] } ], shapeByType: { "skinningknife-apprentice": { base: "special/skinningknife" }, "skinningknife-journeyman": { base: "special/skinningknife" }, "skinningknife-artisan": { base: "special/skinningknifeartisan" }, "skinningknife-master": { base: "special/skinningknifemaster" }, "skinningknife-grandmaster": { base: "special/skinningknifegrandmaster" } }, heldTpHitAnimation: "knifestab", texturesByType: { "skinningknife-apprentice": { "Blade": { base: "game:block/stone/flint" }, "Handle": { base: "stain/maple-1" } }, "skinningknife-journeyman": { "Blade": { base: "game:block/stone/rock/basalt1" }, "Handle": { base: "stain/acacia-1" } }, "skinningknife-artisan": { "Blade": { base: "game:block/stone/rock/obsidian1" }, "Handle": { base: "stain/ebony-1" }, "Cap": { base: "game:block/metal/ingot/tinbronze" } }, "skinningknife-master": { "Blade": { base: "game:block/stone/rock/granite1" }, "Handle": { base: "stain/aged-1" }, "Cap": { base: "game:block/metal/ingot/tinbronze" }, "grip": { base: "game:block/leather/plain" } }, "skinningknife-grandmaster": { "Blade": { base: "game:block/stone/rock/peridotite1" }, "Handle": { base: "stain/aged-1" }, "Cap": { base: "game:block/metal/ingot/tinbronze" }, "grip": { base: "game:block/leather/plain" } } }, durabilitybytype: { "skinningknife-apprentice": 190, "skinningknife-journeyman": 500, "skinningknife-artisan": 750, "skinningknife-master": 980, "skinningknife-grandmaster": 1500 }, miningspeedbytype: { "skinningknife-apprentice": { "plant": 3, }, "skinningknife-journeyman": { "plant": 4.5, }, "skinningknife-artisan": { "plant": 5, }, "skinningknife-master": { "plant": 6, }, "skinningknife-grandmaster": { "plant": 6.7, } }, attackpowerbytype: { "skinningknife-apprentice": 1, "skinningknife-journeyman": 1.7, "skinningknife-artisan": 2.5, "skinningknife-master": 3.8, "skinningknife-grandmaster": 4.2 }, creativeinventory: { "general": ["*"], "items": ["*"], "tools": ["*"] }, fpHandTransformByType: { "*": { translation: { x: 0.2, y: 0.1, z: 0.5 }, rotation: { x: 140, y: 93, z: -75 }, scale: 2.5 } }, guiTransformByType: { "*": { rotate: false, translation: { x: 0, y: 0, z: 0 }, rotation: { x: -158, y: 0, z: 48 }, origin: { x: 0.48, y: 0.1, z: 0.5 }, scale: 2.41 }, }, groundTransform: { translation: { x: 0, y: 0, z: 0 }, rotation: { x: -90, y: 0, z: 0 }, origin: { x: 0.5, y: 0.5, z: 0.45 }, scale: 3.6 }, tpHandTransformByType: { "*": { translation: { x: -0.84, y: -0.11, z: -0.48 }, rotation: { x: 0, y: 0, z: -15 }, scale: 1 } } }
  9. @xXx_Ape_xXx Making sure I did this correctly. Would look like this: And my Carrot.json file would merge/overwrite the vanilla games files right? Or do I need to place this in a different directory? Wood Working is the current mod in development. Likely go in different mod but just making sure I understand. Code would look like this? { code: "woodworking:crop", class: "BlockCrop", behaviors: [{name: "Unstable"}], variantgroups: [ { code: "type", states: ["carrot"] }, { code: "stage", states: ["1", "2", "3", "4", "5", "6", "7"] }, ], creativeinventory: { "general": [""], "plants": [""] }, renderpass: "OpaqueNoCull", shapeByType: { "*-5": { base: "block/plant/crop/carrot/stage5" }, "*-6": { base: "block/plant/crop/carrot/stage6" }, "*-7": { base: "block/plant/crop/carrot/stage7" }, "*": { base: "block/plant/crop/carrot/stage1to4" } }, blockmaterial: "Plant", textures: { "s": { base: "block/plant/crop/carrot/s{stage}" }, "e": { base: "block/plant/crop/carrot/e{stage}" }, }, attributes: { foodTags: ["nibbleCrop"], butterflyFeedByType: { "*-1": false, "*-7": false, "*": true }, beeFeedByType: { "*-1": false, "*-7": false, "*": true }, sitHeight: 0.35, tickGrowthProbability: 0.05, handbook: { include: true } }, sideopaque: { all: false }, sidesolid: { all: false }, replaceable: 3000, lightAbsorption: 0, resistance: 0.5, sounds: { place: "block/plant", break: "block/plant", hit: "block/plant" }, rainPermeable: false, dropsByType: { "*-6": [ { type: "item", code: "seeds-carrot", quantity: { avg: 1 }, tool: "Tool Goes Here" }, { type: "item", code: "seeds-carrot", quantity: { avg: 0.99 } }, { type: "item", code: "vegetable-carrot", quantity: { avg: 4, var: 1 }, tool: "Tool Goes Here" }, { type: "item", code: "vegetable-carrot", quantity: { avg: 3, var: 1 } } ], "*-7": [ { type: "item", code: "seeds-carrot", quantity: { avg: 2 }, tool: "Tool Goes Here" }, { type: "item", code: "seeds-carrot", quantity: { avg: 1.2 } }, { type: "item", code: "vegetable-carrot", quantity: { avg: 15, var: 4 }, tool: "Tool Goes Here" }, { type: "item", code: "vegetable-carrot", quantity: { avg: 11, var: 2 } } ], "*": [ { type: "item", code: "seeds-carrot", quantity: { avg: 0.7 } } ] }, cropProps: { // Choose a fertilizer that has little nitrogen and more potassium and phosphate - 0-10-10 or 5-15-15 will work well. - http://www.backyard-vegetable-gardening.com/watering-carrots.html requiredNutrient: "K", nutrientConsumption: 40, growthStages: 7, totalGrowthMonths: 1.2, coldDamageBelow: -10, damageGrowthStuntMul: 0.75, coldDamageRipeMul: 0.5, heatDamageAbove: 32 }, collisionbox: null, selectionbox: { x1: 0.0625, y1: 0, z1: 0.0625, x2: 0.9375, y2: 0.25, z2: 0.9375 }, materialDensity: 200, combustibleProps: { burnTemperature: 600, burnDuration: 10, }, frostable: true }
  10. @xXx_Ape_xXx Awesome. Been awhile since I made anything other than content mod. I think I have to overwrite the vanilia game file right with mine? Here is the block of code for example I think I need to modify: dropsByType: { "*-6": [ { type: "item", code: "seeds-carrot", quantity: { avg: 0.99 } }, { type: "item", code: "vegetable-carrot", quantity: { avg: 3, var: 1 } }, ], "*-7": [ { type: "item", code: "seeds-carrot", quantity: { avg: 1.2 } }, { type: "item", code: "vegetable-carrot", quantity: { avg: 11, var: 2 } }, ], "*-8": [ { type: "item", code: "seeds-carrot", quantity: { avg: 3 }, tool: "Tool Goes Here" }, { type: "item", code: "vegetable-carrot", quantity: { avg: 15, var: 4 }, tool: "Tool Goes Here" }, ], "*": [ { type: "item", code: "seeds-carrot", quantity: { avg: 0.7 } }, ] }, I assume something like this for carrot for example. My current mod is content mod. So how would that work? I don't remember how to do this part. I think I make a copy of existing right and drop it in my folder and it will over right vanilla? Path: /blocktypes/plant/crop/carrot.json do the same in my mod folder? But with my version? Sorry been awhile.
  11. Working on making a roman palace (garden spade). Id like to give a bonus to getting extra seeds or something when using the tool. Is there something in vanilla like an attribute or something?
  12. I got it working here is my solution: Block code: { code: "woodpaneling", behaviors: [ {name: "Decor", properties: {sides: ["north", "east", "south", "west", "up", "down"], thickness: 0.1 }} ], class: "Block", shape: { base: "woodpanel1" }, blockmaterial: "Wood", creativeinventory: { "general": ["*"], "construction": ["*"] }, replaceable: 700, resistance: 3, lightAbsorption: 99, textures: { "all": { "base": "stain/acacia-1" } }, drops: [ { type: "block", code: "woodpaneling", quantity: { avg: 0.85, var: 0 } } ], sounds: { place: "game:block/dirt", break: "game:block/dirt", hit: "game:block/dirt" }, fertility: 3, heldTpIdleAnimation: "holdbothhandslarge", heldRightReadyAnimation: "heldblockready", heldTpUseAnimation: "twohandplaceblock", tpHandTransform: { translation: { x: -1.23, y: -0.91, z: -0.8 }, rotation: { x: -2, y: 25, z: -78 }, scale: 0.4 } } I had to make my own shape to get it to work fully: { "editor": { "allAngles": false, "entityTextureMode": false }, "textureWidth": 16, "textureHeight": 16, "textureSizes": { }, "textures": { }, "elements": [ { "name": "Cube2", "from": [ 0.0, 0.0, 0.0 ], "to": [ 16.0, 1.0, 16.0 ], "faces": { "north": { "texture": "#panel", "uv": [ 0.0, 0.0, 16.0, 1.0 ] }, "east": { "texture": "#panel", "uv": [ 0.0, 0.0, 16.0, 1.0 ] }, "south": { "texture": "#panel", "uv": [ 0.0, 0.0, 16.0, 1.0 ] }, "west": { "texture": "#panel", "uv": [ 0.0, 0.0, 16.0, 1.0 ] }, "up": { "texture": "#panel", "uv": [ 0.0, 0.0, 16.0, 16.0 ] }, "down": { "texture": "#panel", "uv": [ 0.0, 0.0, 16.0, 16.0 ] } } } ]} I still dont know how they where able to get wallpaper to work but here is my working version.
  13. Update: I got the code kinda working. I revamped my code: { code: "woodpaneling", behaviors: [ {name: "Decor", properties: {sides: ["north", "east", "south", "west", "up", "down"], thickness: 0.0 }} ], class: "Block", shape: { base: "woodpanel1" }, drawtype: "surfacelayer", blockmaterial: "Wood", creativeinventory: { "general": ["*"], "construction": ["*"] }, replaceable: 700, resistance: 3, lightAbsorption: 99, textures: { "all": { "base": "stain/acacia-1" } }, drops: [ { type: "block", code: "woodpaneling", quantity: { avg: 0.85, var: 0 } } ], sounds: { place: "game:block/dirt", break: "game:block/dirt", hit: "game:block/dirt" }, fertility: 3, heldTpIdleAnimation: "holdbothhandslarge", heldRightReadyAnimation: "heldblockready", heldTpUseAnimation: "twohandplaceblock", tpHandTransform: { translation: { x: -1.23, y: -0.91, z: -0.8 }, rotation: { x: -2, y: 25, z: -78 }, scale: 0.4 } } The problem is here: drawtype: "surfacelayer", If I change it to "Cube" it will give me a texture but also draws a cube. If I use "surfacelayer", it draws on surface but does not apply texture. So not sure how to get it to use my texture and draw on surface. update: So far I've discovered: "json" = draws only on the floor/ground "cube" = draws a cube "drawsurface" = i assume only draws on surface but for me not getting a texture currently "liquid" = Draws on ground but gives not texture when tested
  14. Working on adding "wood paneling" using wallpaper as my base script. I dont get any errors and the block shows up in game just fine but I t wont go on the walls: code: { code: "woodpanel", behaviors: [ {name: "Decor", properties: {sides: ["north", "east", "south", "west", "up", "down"], thickness: 0.0 }} ], attributes: { handbook: { groupBy: ["paneling-*"] } }, variantgroups: [ { code:"type", states: ["acacia-1","acacia-2" ] } ], drawtype: "surfacelayer", shapeInventory: { base: "game:block/basic/layers/0voxel", rotateX: 90 }, sidesolid: { all: false }, sideopaque: { all: false }, blockmaterial: "Wood", creativeinventory: { "general": ["*"], "decorative": ["*"] }, replaceable: 5500, resistance: 0, lightAbsorption: 0, textures: { all: { base: "stain/{type}" } }, vertexflags: { zOffset: 1 }, drops: [], combustibleProps: { burnTemperature: 150, burnDuration: 2, }, guiTransform: { rotate: false, rotation: { x: 15, y: -42, z: 0 }, origin: { x: 0.5, y: 0.5, z: 0 }, scale: 1.5 }, groundTransform: { translation: { x: 0, y: 0, z: 0 }, rotation: { x: -90, y: 1, z: 0 }, origin: { x: 0.5, y: 0.5, z: -0.02 }, scale: 2.5 }, tpHandTransform: { translation: { x: -1.2, y: -0.7, z: 0.1 }, rotation: { x: 5, y: -12, z: -25 }, origin: { x: 0.5, y: 0.5, z: 0 }, scale: 0.45 }, sounds: { place: "game:block/cloth", break: "game:block/cloth", hit: "game:block/cloth", walk: "game:walk/cloth" }, materialDensity: 400 } Not sure I understand why its not going on the walls like wallpaper. The only thing I changed was textures. I see it has a "up" and "down" face in the shape. But I assume using texture all should translate into all sides use "this" texture. Not sure what to do here. If I had an error I would have something to review.
  15. Well I hope everyone is ok with my version then lol my process will be pine log + bunch of resin = pine tar log. Basically a pine log prepped to be burned down in a kiln into tar. Pine tar log + kiln = raw tar. Raw tar + cooking pot recipe = tar. Pour the tar into a bucket and get tar portion aka the base games tar. Tried to mimic making pine tar best i could. I might make a barrel recipe as well to use raw tar in barrel with turpentine to make tar portion. Not sure if turpentine is in base game. If not id have to make recipe for that as well. Update Looks like to make turpentine you just need resin and animal hide heated. Could be a nice recipe and put it in barrel with the "raw tar" to make more tar. I know you can use turpentine to dalute tar.
  16. Working on a wood working mod and I came across tar. Pine tar is something I want to add to my mod but I know its a in game item. However, when I check handbook I dont see a recipe for it? Is there a way to get tar currently?
  17. @Brady_The That worked!!! Here is my new code: { code: "woodworking:woodstain", class: "ItemLiquidPortion", matterState: "liquid", variantgroups: [ { code:"color", states: ["acacia-1", "acacia-2", "aged-1", "aged-2", "aged-3", "aged-4", "baldcypress-1", "baldcypress-2", "bamboo-side", "bamboosmooth", "bamboo-top", "birch-1", "birch-2", "ebony-1", "ebony-2", "kapok-1", "kapok-2", "kapok-3", "kapok-4", "larch-1", "larch-2", "larch-3", "larch-4", "lite-1", "lite-2", "maple-1", "maple-2", "maple-3", "maple-4", "new-1", "new-2", "new-3", "new-4", "new-5", "new-6", "new-7", "new-8", "new-9", "new-10", "new-11", "new-12", "oak-1", "oak-2", "oak-3", "oak-4", "old-1", "old-2", "old-3", "old-4", "old-5", "pine-1", "pine-2", "pine-3", "pine-4", "purpleheart-1", "purpleheart-2", "purpleheart-3", "purpleheart-4", "redwood-1", "redwood-2", "redwood-3", "redwood-4", "rottenebony-1", "rottenebony-2", "rottenebony-3", "rottenebony-4", "walnut-1", "walnut-2", "walnut-3", "walnut-4" ] } ], attributes: { handbook: { ignoreCreativeInvStacks: true, groupBy: ["woodstain-*"] }, waterTightContainerProps: { containable: true, isopaque: true, itemsPerLitre: 100, texture: { base: "stain/{color}" }, allowSpill: true, whenSpilled: { action: "DropContents", stack: { type: "item", code: "woodworking:woodstain-{color}" } } } }, shape: { base: "game:item/liquid" }, texture: { base: "stain/{color}" }, creativeinventoryStacks: [ { tabs: ["general", "liquids"], stacks: [ { type: "block", code: "game:woodbucket", attributes: { ucontents: [ { type:"item", code: "woodworking:woodstain-{color}", makefull: true } ] } } ] } ], maxstacksize: 5000, materialDensity: 200, guiTransform: { translation: { x: 0, y: 1, z: 0 }, rotation: { x: 123, y: -33, z: -13 }, origin: { x: 0.5, y: 0, z: 0.5 }, scale: 1.4 }, fpHandTransform: { translation: { x: 0, y: 0, z: 0 }, rotation: { x: 25, y: 157, z: -5 } }, tpHandTransform: { translation: { x: -1.5, y: -1, z: -1.4 } } }
  18. @Brady_The You was correct, something in there is the issue. I was able to get it working but I cant put it in a bucket because of that line of code new code: { code: "woodstain", class: "ItemLiquidPortion", matterState: "liquid", variantgroups: [ { code:"color", states: ["acacia-1", "acacia-2", "aged-1", "aged-2", "aged-3", "aged-4", "baldcypress-1", "baldcypress-2", "bamboo-side", "bamboosmooth", "bamboo-top", "birch-1", "birch-2", "ebony-1", "ebony-2", "kapok-1", "kapok-2", "kapok-3", "kapok-4", "larch-1", "larch-2", "larch-3", "larch-4", "lite-1", "lite-2", "maple-1", "maple-2", "maple-3", "maple-4", "new-1", "new-2", "new-3", "new-4", "new-5", "new-6", "new-7", "new-8", "new-9", "new-10", "new-11", "new-12", "oak-1", "oak-2", "oak-3", "oak-4", "old-1", "old-2", "old-3", "old-4", "old-5", "pine-1", "pine-2", "pine-3", "pine-4", "purpleheart-1", "purpleheart-2", "purpleheart-3", "purpleheart-4", "redwood-1", "redwood-2", "redwood-3", "redwood-4", "rottenebony-1", "rottenebony-2", "rottenebony-3", "rottenebony-4", "walnut-1", "walnut-2", "walnut-3", "walnut-4" ] } ], attributes: { handbook: { ignoreCreativeInvStacks: true, groupBy: ["woodstain-*"] }, waterTightContainerProps: { containable: true, isopaque: true, itemsPerLitre: 100, texture: { base: "stain/{color}" }, allowSpill: true, whenSpilled: { action: "DropContents", stack: { type: "item", code: "woodstain-{color}" } } } }, shape: { base: "game:item/liquid" }, texture: { base: "stain/{color}" }, //creativeinventoryStacks: [ { tabs: ["general", "liquids"], stacks: [ { type: "block", code: "game:woodbucket", attributes: { ucontents: [ { type:"item", code: "woodstain-{color}", makefull: true } ] } } ] } ], creativeinventory: { "general": ["*"], "items": ["*"] }, maxstacksize: 5000, materialDensity: 200, guiTransform: { translation: { x: 0, y: 1, z: 0 }, rotation: { x: 123, y: -33, z: -13 }, origin: { x: 0.5, y: 0, z: 0.5 }, scale: 1.4 }, fpHandTransform: { translation: { x: 0, y: 0, z: 0 }, rotation: { x: 25, y: 157, z: -5 } }, tpHandTransform: { translation: { x: -1.5, y: -1, z: -1.4 } } } There is something about this line of code is does not like: //creativeinventoryStacks: [ { tabs: ["general", "liquids"], stacks: [ { type: "block", code: "game:woodbucket", attributes: { ucontents: [ { type:"item", code: "woodstain-{color}", makefull: true } ] } } ] } ], I'm still not sure how to fix it or what it wants. But i'll keep testing. Thanks for helping. This is my first liquid.
  19. Trying to make a liquid for the first time. Seems like no matter what I do it wants to crash ... hard. Here is my current code but has been changed multi times. { code: "woodstain", class: "ItemLiquidPortion", matterState: "liquid", /*variantgroups: [ { code:"color", states: ["acacia-1", "acacia-2", "aged-1", "aged-2", "aged-3", "aged-4", "baldcypress-1", "baldcypress-2", "bamboo-side", "bamboosmooth", "bamboo-top", "birch-1", "birch-2", "ebony-1", "ebony-2", "kapok-1", "kapok-2", "kapok-3", "kapok-4", "larch-1", "larch-2", "larch-3", "larch-4", "lite-1", "lite-2", "maple-1", "maple-2", "maple-3", "maple-4", "new-1", "new-2", "new-3", "new-4", "new-5", "new-6", "new-7", "new-8", "new-9", "new-10", "new-11", "new-12", "oak-1", "oak-2", "oak-3", "oak-4", "old-1", "old-2", "old-3", "old-4", "old-5", "pine-1", "pine-2", "pine-3", "pine-4", "purpleheart-1", "purpleheart-2", "purpleheart-3", "purpleheart-4", "redwood-1", "redwood-2", "redwood-3", "redwood-4", "rottenebony-1", "rottenebony-2", "rottenebony-3", "rottenebony-4", "walnut-1", "walnut-2", "walnut-3", "walnut-4" ] } ],*/ variantgroups: [ { code:"color", states: ["acacia-1" ] } ], attributes: { handbook: { ignoreCreativeInvStacks: true, groupBy: ["woodstain-*"] }, waterTightContainerProps: { containable: true, isopaque: true, itemsPerLitre: 100, texture: { base: "stain/{color}" }, allowSpill: true, whenSpilled: { action: "DropContents", stack: { type: "item", code: "woodstain-{color}" } } } }, shape: { base: "game:item/liquid" }, texture: { base: "stain/{color}" }, creativeinventoryStacks: [ { tabs: ["general", "liquids"], stacks: [ { type: "block", code: "game:woodbucket", attributes: { ucontents: [ { type:"item", code: "woodstain-{color}", makefull: true } ] } } ] } ], maxstacksize: 5000, materialDensity: 200, guiTransform: { translation: { x: 0, y: 1, z: 0 }, rotation: { x: 123, y: -33, z: -13 }, origin: { x: 0.5, y: 0, z: 0.5 }, scale: 1.4 }, fpHandTransform: { translation: { x: 0, y: 0, z: 0 }, rotation: { x: 25, y: 157, z: -5 } }, tpHandTransform: { translation: { x: -1.5, y: -1, z: -1.4 } } } Crash Log: 12/1/2025 2:58:11 PM: Critical error occurred Loaded Mods: mudmod@1.0.0, plantsexpandedmod@1.0.4, game@1.21.5, woodworking@1.0.0, creative@1.21.5, survival@1.21.5 System.Exception: Can't create itemstack without collectible! at Vintagestory.API.Common.ItemStack..ctor(CollectibleObject collectible, Int32 stacksize) in VintagestoryApi\Common\Collectible\ItemStack.cs:line 200 at Vintagestory.GameContent.BlockContainer.CreateItemStackFromJson(ITreeAttribute stackAttr, IWorldAccessor world, String defaultDomain) in VSSurvivalMod\Block\BlockContainer.cs:line 107 at Vintagestory.GameContent.BlockLiquidContainerBase.CreateItemStackFromJson(ITreeAttribute stackAttr, IWorldAccessor world, String domain) in VSSurvivalMod\Systems\Liquid\BlockLiquidContainerBase.cs:line 391 at Vintagestory.GameContent.BlockContainer.ResolveUcontents(IWorldAccessor world, ItemStack itemstack) in VSSurvivalMod\Block\BlockContainer.cs:line 80 at Vintagestory.GameContent.BlockContainer.GetContents(IWorldAccessor world, ItemStack itemstack) in VSSurvivalMod\Block\BlockContainer.cs:line 47 at Vintagestory.GameContent.BlockLiquidContainerBase.GetContentInfo(ItemSlot inSlot, StringBuilder dsc, IWorldAccessor world) in VSSurvivalMod\Systems\Liquid\BlockLiquidContainerBase.cs:line 1082 at Vintagestory.API.Common.Block.GetHeldItemInfo(ItemSlot inSlot, StringBuilder dsc, IWorldAccessor world, Boolean withDebugInfo) in VintagestoryApi\Common\Collectible\Block\Block.cs:line 2301 at Vintagestory.Common.CreativeTab.CreateSearchCache(IWorldAccessor world) in VintagestoryLib\Common\GameContent\Inventory\CreativeTab.cs:line 30 at Vintagestory.Common.CreativeTabs.CreateSearchCache(IWorldAccessor world) in VintagestoryLib\Common\GameContent\Inventory\CreativeTabs.cs:line 50 at Vintagestory.Client.NoObf.GuiDialogInventory.<OnOwnPlayerDataReceived>b__6_0() in VintagestoryLib\Client\Systems\Gui\Dialogs\GuiDialogInventory.cs:line 60 at System.Threading.ThreadPoolWorkQueue.Dispatch() at System.Threading.PortableThreadPool.WorkerThread.WorkerThreadStart() Game Version: v1.21.5 (Stable) 12/1/2025 3:10:36 PM: Critical error occurred Loaded Mods: mudmod@1.0.0, plantsexpandedmod@1.0.4, game@1.21.5, woodworking@1.0.0, creative@1.21.5, survival@1.21.5 System.Exception: Can't create itemstack without collectible! at Vintagestory.API.Common.ItemStack..ctor(CollectibleObject collectible, Int32 stacksize) in VintagestoryApi\Common\Collectible\ItemStack.cs:line 200 at Vintagestory.GameContent.BlockContainer.CreateItemStackFromJson(ITreeAttribute stackAttr, IWorldAccessor world, String defaultDomain) in VSSurvivalMod\Block\BlockContainer.cs:line 107 at Vintagestory.GameContent.BlockLiquidContainerBase.CreateItemStackFromJson(ITreeAttribute stackAttr, IWorldAccessor world, String domain) in VSSurvivalMod\Systems\Liquid\BlockLiquidContainerBase.cs:line 391 at Vintagestory.GameContent.BlockContainer.ResolveUcontents(IWorldAccessor world, ItemStack itemstack) in VSSurvivalMod\Block\BlockContainer.cs:line 80 at Vintagestory.GameContent.BlockContainer.GetContents(IWorldAccessor world, ItemStack itemstack) in VSSurvivalMod\Block\BlockContainer.cs:line 47 at Vintagestory.GameContent.BlockLiquidContainerBase.GetContent(ItemStack containerStack) in VSSurvivalMod\Systems\Liquid\BlockLiquidContainerBase.cs:line 367 at Vintagestory.GameContent.BlockLiquidContainerBase.GetContentProps(ItemStack containerStack) in VSSurvivalMod\Systems\Liquid\BlockLiquidContainerBase.cs:line 261 at Vintagestory.GameContent.BlockLiquidContainerBase.GetCurrentLitres(ItemStack containerStack) in VSSurvivalMod\Systems\Liquid\BlockLiquidContainerBase.cs:line 232 at Vintagestory.GameContent.BlockLiquidContainerBase.GetContentInfo(ItemSlot inSlot, StringBuilder dsc, IWorldAccessor world) in VSSurvivalMod\Systems\Liquid\BlockLiquidContainerBase.cs:line 1082 at Vintagestory.GameContent.BlockLiquidContainerBase.AddExtraHeldItemInfoPostMaterial(ItemSlot inSlot, StringBuilder dsc, IWorldAccessor world) in VSSurvivalMod\Systems\Liquid\BlockLiquidContainerBase.cs:line 1037 at Vintagestory.API.Common.Block.GetHeldItemInfo(ItemSlot inSlot, StringBuilder dsc, IWorldAccessor world, Boolean withDebugInfo) in VintagestoryApi\Common\Collectible\Block\Block.cs:line 2301 at Vintagestory.GameContent.BlockContainer.GetHeldItemInfo(ItemSlot inSlot, StringBuilder dsc, IWorldAccessor world, Boolean withDebugInfo) in VSSurvivalMod\Block\BlockContainer.cs:line 272 at Vintagestory.Common.CreativeTab.CreateSearchCache(IWorldAccessor world) in VintagestoryLib\Common\GameContent\Inventory\CreativeTab.cs:line 30 at Vintagestory.Common.CreativeTabs.CreateSearchCache(IWorldAccessor world) in VintagestoryLib\Common\GameContent\Inventory\CreativeTabs.cs:line 50 at Vintagestory.Client.NoObf.GuiDialogInventory.<OnOwnPlayerDataReceived>b__6_0() in VintagestoryLib\Client\Systems\Gui\Dialogs\GuiDialogInventory.cs:line 60 at Vintagestory.API.Common.TyronThreadPool.<>c__DisplayClass13_0.<QueueTask>b__0(Object a) in VintagestoryApi\Common\TyronThreadPool.cs:line 131 at System.Threading.ThreadPoolWorkQueue.Dispatch() at System.Threading.PortableThreadPool.WorkerThread.WorkerThreadStart() If I understand correctly there is a issue with inventory portion: creativeinventoryStacks: [ { tabs: ["general", "liquids"], stacks: [ { type: "block", code: "game:woodbucket", attributes: { ucontents: [ { type:"item", code: "woodstain-{color}", makefull: true } ] } } ] } ], But still not fully grasping this issue. I made a sample item just changing the name and it still crashed using base game code. I've even tried using vanila textures for testing. Not sure why this is error on stacks.
  20. @The Insanity God thank you very much for helping. That seemed to work. I think I tried something similar before but could not get it to work. Thanks for helping me get it across the finish line.
  21. Not to worried about wrench now that i got position working ish. I'll circle back to it later. I added storage to this block but having issues getting textures to work now. code: { code: "workbench", class: "BlockGenericTypedContainer", entityclass: "GenericTypedContainer", behaviors: [{name: "HorizontalOrientable"}], variantgroups: [ { code:"side", loadFromProperties: "game:abstract/horizontalorientation" } ], creativeinventory: { "general": ["workbench-north"], "decorative": ["workbench-north"] }, textures: { "top": { base: "game:block/wood/workbench/top" }, "bottom": { base: "game:block/wood/workbench/bottom" }, "fdoor": { base: "game:block/wood/workbench/bottom" }, "back": { base: "game:block/wood/workbench/back" }, "sideleft": { base: "game:block/wood/workbench/left" }, "sideright": { base: "game:block/wood/workbench/right" } }, attributes: { inventoryClassName: "chest", defaultType: "normal-generic", types: ["normal-generic"], handbook: { groupBy: ["workbench-*"] }, rotatatableInterval: { "normal-generic": "22.5degnot45deg" }, storageType: { "normal-generic": 189 }, retrieveOnly: { "normal-generic": false }, shape: { "normal-generic": "workbench" },//does not load textures but places correctly and rotates correctly //shape: { base: "workbench" },//loads textures but does not rotate or place correctly typedOpenSound: { "normal-generic": "game:sounds/block/largechestopen" }, typedCloseSound: { "normal-generic": "game:sounds/block/largechestclose" }, variantByGroup: "side", variantByGroupInventory: null }, behaviors: [ { name: "Lockable" }, { name: "Container"}, { name: "BoatableGenericTypedContainer" } ], shapeInventory: { base: "workbench", rotateY: 270 }, shapeByType: { "*-north": { base: "workbench", rotateY:0 }, "*-east": { base: "workbench", rotateY:270 }, "*-south": { base: "workbench", rotateY:180 }, "*-west": { base: "workbench", rotateY:90 } }, replaceable: 500, resistance: 1.5, lightAbsorption: 99, sidesolid: { all: false }, sideopaque: { all: false }, textures: { "top": { base: "game:block/wood/workbench/top" }, "bottom": { base: "game:block/wood/workbench/bottom" }, "fdoor": { base: "game:block/wood/workbench/bottom" }, "back": { base: "game:block/wood/workbench/back" }, "sideleft": { base: "game:block/wood/workbench/left" }, "sideright": { base: "game:block/wood/workbench/right" } }, heldTpIdleAnimation: "holdbothhandslarge", heldRightReadyAnimation: "heldblockready", heldTpUseAnimation: "twohandplaceblock", tpHandTransform: { translation: { x: -1.23, y: -0.91, z: -0.8 }, rotation: { x: -2, y: 25, z: -78 }, scale: 0.4 } } I was using chest as a my sample code but I might switch over to a storage vessel. I'm running into a issue I think with shape. Its a damned if you do damned if you don't situation. shape: { "normal-generic": "workbench" },//does not load textures but places correctly and rotates correctly //shape: { base: "workbench" },//loads textures but does not rotate or place correctly The normal generic I think is what I need to use based on chest script. But that breaks my texture settings and does not want to apply my textures. Not sure why. However, If I use the non generic shape it loads my textures but does not place correctly and I don't think storage works. Kind of a weird issue. Not sure how or why shape would have any effect on logic.
  22. @The Insanity God Thank you very much. i did a massive code update. Rotating with wrench not working but places in correct directions now. New code: { code: "workbench", behaviors: [{name: "HorizontalOrientable"}], variantgroups: [ { code:"side", loadFromProperties: "game:abstract/horizontalorientation" } ], creativeinventory: { "general": ["workbench-north"], "decorative": ["workbench-north"] }, shapeByType: { "*-north": { base: "workbench", rotateY:0 }, "*-east": { base: "workbench", rotateY:270 }, "*-south": { base: "workbench", rotateY:180 }, "*-west": { base: "workbench", rotateY:90 } }, replaceable: 500, resistance: 1.5, lightAbsorption: 99, sidesolid: { all: false }, sideopaque: { all: false }, textures: { "top": { base: "game:block/wood/workbench/top" }, "bottom": { base: "game:block/wood/workbench/bottom" }, "fdoor": { base: "game:block/wood/workbench/bottom" }, "back": { base: "game:block/wood/workbench/back" }, "sideleft": { base: "game:block/wood/workbench/left" }, "sideright": { base: "game:block/wood/workbench/right" } }, heldTpIdleAnimation: "holdbothhandslarge", heldRightReadyAnimation: "heldblockready", heldTpUseAnimation: "twohandplaceblock", tpHandTransform: { translation: { x: -1.23, y: -0.91, z: -0.8 }, rotation: { x: -2, y: 25, z: -78 }, scale: 0.4 } }
  23. thinking i might have to make my own lib for this one but is there a way currently to play a sound fx when grid crafting when you pickup the output item?
  24. Mapping out a mod pack i'm planning to build. One of the things I really want to make is tools that give bonus. For example chance for 1 extra seed when harvesting or extra piece of wood when grid crafting. not sure anyone has done this before. I think the wood bowl has a chance system.
  25. Working on a loom. Is there a sample code to trigger grid crafting box when right clicking a object? Id like to detect the object as well. I think this mechanic exists with bowls standing in water when panning.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.