-
Posts
203 -
Joined
-
Last visited
Content Type
Profiles
Forums
Blogs
News
Store
Everything posted by Micah Holmes
-
Getting a error on fresh install of game: Running on 64 bit Linux (Linux Mint 22.1) [Kernel 6.8.0.84] with 31965 MB RAM Game Version: v1.21.5 (Stable) 10/17/2025 2:43:26 PM: Critical error occurred Loaded Mods: System.Exception: ** Unable to start OpenGL graphics. Try: (1) restart the computer (2) update the graphics driver (3) more advice at wiki.vintagestory.at/Troubleshooting_Guide#OpenGL_crash ** ---> System.InvalidOperationException: GLFW Version unavailable: GLX: Failed to create context: BadValue (integer parameter out of range for operation) at OpenTK.Windowing.Desktop.NativeWindow..ctor(NativeWindowSettings settings) at OpenTK.Windowing.Desktop.GameWindow..ctor(GameWindowSettings gameWindowSettings, NativeWindowSettings nativeWindowSettings) at Vintagestory.Client.NoObf.GameWindowNative..ctor(GameWindowSettings gameWindowSettings, NativeWindowSettings nativeWindowSettings) in VintagestoryLib\Client\ClientPlatform\GameWindowNative.cs:line 16 at Vintagestory.Client.ClientProgram.AttemptToOpenWindow(GameWindowSettings gameWindowSettings, NativeWindowSettings nativeWindowSettings, Int32 openGlMajor, Int32 openGlMinor, Int32 tries) in VintagestoryLib\Client\ClientProgram.cs:line 363 --- End of inner exception stack trace --- at Vintagestory.Client.ClientProgram.AttemptToOpenWindow(GameWindowSettings gameWindowSettings, NativeWindowSettings nativeWindowSettings, Int32 openGlMajor, Int32 openGlMinor, Int32 tries) in VintagestoryLib\Client\ClientProgram.cs:line 388 at Vintagestory.Client.ClientProgram.AttemptToOpenWindow(GameWindowSettings gameWindowSettings, NativeWindowSettings nativeWindowSettings, Int32 openGlMajor, Int32 openGlMinor, Int32 tries) in VintagestoryLib\Client\ClientProgram.cs:line 410 at Vintagestory.Client.ClientProgram.Start(ClientProgramArgs args, String[] rawArgs) in VintagestoryLib\Client\ClientProgram.cs:line 311 at Vintagestory.Client.ClientProgram.<>c__DisplayClass10_0.<.ctor>b__1() in VintagestoryLib\Client\ClientProgram.cs:line 133 at Vintagestory.ClientNative.CrashReporter.Start(ThreadStart start) in VintagestoryLib\Client\ClientPlatform\ClientNative\CrashReporter.cs:line 95 System.InvalidOperationException: GLFW Version unavailable: GLX: Failed to create context: BadValue (integer parameter out of range for operation) at OpenTK.Windowing.Desktop.NativeWindow..ctor(NativeWindowSettings settings) at OpenTK.Windowing.Desktop.GameWindow..ctor(GameWindowSettings gameWindowSettings, NativeWindowSettings nativeWindowSettings) at Vintagestory.Client.NoObf.GameWindowNative..ctor(GameWindowSettings gameWindowSettings, NativeWindowSettings nativeWindowSettings) in VintagestoryLib\Client\ClientPlatform\GameWindowNative.cs:line 16 at Vintagestory.Client.ClientProgram.AttemptToOpenWindow(GameWindowSettings gameWindowSettings, NativeWindowSettings nativeWindowSettings, Int32 openGlMajor, Int32 openGlMinor, Int32 tries) in VintagestoryLib\Client\ClientProgram.cs:line 363
-
I was not able to find any mods that remove the temporal stability when you dig down. All for the storms etc just dont want to mess with it when mining or digging. Anyone have a mod already for this issue? If not I think I can cook something up. just hoping to save my self time.
-
Setting mod development environment on Linux?
Micah Holmes replied to JAGIELSKI's topic in [Legacy] Mods & Mod Development
What distro you using? I use mint but my friend is on arch. -
New to mods: need help please
Micah Holmes replied to betojacob's topic in [Legacy] Mods & Mod Development
Just a suggestion when modfing. Always build mods and test mods on a clean install location. I'm on linux. I have a developer install that I keep vanilla and I have my "live" version I use to play. If my vanilla test is good, I move my mod into my " live" version and test again before release. This ensures a clean mod is released to the community and reduces my time fixing bugs etc -
As a mod dev my self. I like reviewing other mods for direction but I prefer to make my mods all self containing. Your fear I think is fair. I hate having to get one mod to use another because of that issue. I also fear having to get one mod to use another because other mod may be buggy or add things I don't want or like. Easy to say don't use it but some mods manipulate core game. Your fear is valid in my opinion. Also mods that piggy back run risk as you said, mod dev steps away or the mod dies. I seen a lot of older mods die. Very sad when it happens but not much you can do except ask community to rebuild it. This why in my opinion these forums are so important as users for us to support. This should be the place we all go, discuss and post this product.
-
Planning a craftsmanship mod. Basically you craft vanilla tools but over time you gain experience and go up in tier or skill level. Higher your crafting skill, the more durable the tools. The idea is to reach master craftsmanship. Interested in everyone's thoughts about the system as well as suggestions on how to build it. I'm not sure if something already exists for a template. I want to build it as vanilla as much as possible. Don't want any third party tools. Needs to be a self contained mod. Thoughts?
-
I was looking at building a loom. The loom would still use grid recipe crafting but you would need the loom to make cloths. I also seen you would need a spinning wheel to make thread. To make the mod right, we would need some machines. So I'm currently figuring out how to build it in my head first, then put thoughts on paper and then start modeling the tools and finally code. Not a easy request
-
I just released charcoal expanded that allows you to go from low to Terra Petra
-
Great mod idea. I'll look into it for everyone.
-
I just released a new mod that allows you to make woodash using charcoal.
-
I have added several new items as well as expanded the uses for charcoal. Charcoal is extremely useful product and can be used for a lot of different things. I tried my best to keep it semi realistic. charcoalexpanded_1.0.0.zip
-
Making a windmill for the first time. I need to get my windmill crank to turn 90 degrees. I have two angled gears in place. When I attach another wooden axel, it does not turn 90 degrees. It stays vertical
-
Going to make some more fish for this mod. Any fish requests? Please post. Thanks
-
@Krougal I'm currently working on a new cooking recipe for salt water to salt. Running into issue currently with the salt water after I cook it. I could cheese for the moment and bucket of saltwater + stone = 1 salt crystal. Salt Crystal + rock = 10 salt. Not sure how upset everyone would be with a hacky mod for salt until I fix the boiling salt water issue.
- 18 replies
-
- 2
-
-
- salt water
- water
-
(and 2 more)
Tagged with:
-
Obligatory Distant Horizons Mod Post
Micah Holmes replied to Velifax's topic in [Legacy] Mods & Mod Development
I might be able to make a patch to extend it in near future for you but working on salt water to salt right now -
Fresh water vs salt water
Micah Holmes replied to Micah Holmes's topic in [Legacy] Mods & Mod Development
I don't know how to fix this issue: I keep getting "Unknown" portion.I want it to return something I can put in a bowl or something and then take the bowl with the item in grid and produce a salt crystal. { code: "boiledsaltcrystal", perishableProps: { type: "Harden", freshHours: { avg: 4 }, transitionHours: { avg: 0.01 }, transitionRatio: 1, transitionedStack: { type: "item", code: "saltcrystal:saltcrystal" } }, shape: { base: "game:item/gem/rough/normal/diamond" }, textures: {diamond: { base: "saltcrystal:saltcrystal" }}, attributes: { handbook: { ignoreCreativeInvStacks: true, "groupBy": ["items-*"] } }, ingredients: [ { code: "game:saltwaterportion", validStacks: [ { type: "item", code: "game:saltwaterportion", shapeElement: "game:bowl/water" } ], minQuantity: 1, maxQuantity: 1, portionSizeLitres: 1 }, { code: "game:stone-*", validStacks: [ { type: "item", code: "game:stone-*", shapeElement: "game:bowl/water" } ], minQuantity: 1, maxQuantity: 1 } ], dirtyPot: true, dirtyPotOutput: "saltcrystal:saltcrystal" } Any suggestions would be helpful. -
Fresh water vs salt water
Micah Holmes replied to Micah Holmes's topic in [Legacy] Mods & Mod Development
Latest code I cant get it to work. No tut on cooking. I might try barrel if I cant get it going: Update: I got the mod working ish. I can now boil salt water, fixed crashing but not out putting item currently. I hope to have this out soon to everyone. Might be a few steps to boil salt water to get salt but it should be easy to get early game when I finish. Currently you can use a jug or bucket to get salt water, boil it with a stone in pot and produce boiled salt crystal. Use the boiled salt crystal(in a bowl) in a grid. This should produce 1 salt crystal. Next use grid salt crystal and rock to get 10 salt. This is the plan but we will see if I can get it to work this way. Stay tuned saltcrystal.zip -
Fresh water vs salt water
Micah Holmes replied to Micah Holmes's topic in [Legacy] Mods & Mod Development
Updated code: New code: { code: "mysaltcrystal", shape: { base: "game:item/gem/rough/normal/diamond" }, perishableProps: { freshHours: { avg: 400 }, transitionHours: { avg: 0.01 }, transitionRatio: 1, transitionedStack: { type: "item", code: "saltcrystal" } }, ingredients: [ { code: "water", validStacks: [ { type: "item", code: "saltwaterportion" } ], minQuantity: 4, maxQuantity: 4, portionSizeLitres: 6 } ], dirtyPot: true, dirtyPotOutput: "saltcrystal" } -
Fresh water vs salt water
Micah Holmes replied to Micah Holmes's topic in [Legacy] Mods & Mod Development
I am a little confused currently about cooking. I made my item already. I simply want to boil this salt water and output my item. On grid crafting I can see its easy but cooking im not sure. Here is what I have currently: Item: { code: "saltcrystal", creativeinventory: { "general": ["*"]}, shape: { base: "game:item/gem/rough/normal/diamond" }, textures: {diamond: { base: "saltcrystal:saltcrystal" }}, maxstacksize: 16, guiTransform: { translation: { x: 0, y: 0, z: 0 }, rotation: { x: 151, y: -3, z: 0 }, origin: { x: 0.487, y: 0.08, z: 0.5 }, scale: 12 }, fpHandTransform: { translation: { x: -0.05, y: 0.04, z: 0 }, rotation: { x: 5, y: 100, z: 0 }, origin: { x: 0.5, y: -0.13, z: 0.5 }, scale: 3.4 }, tpHandTransform: { translation: { x: -0.78, y: -0.11, z: -0.7 }, rotation: { x: -41, y: -29, z: -60 }, origin: { x: 0.5, y: 0.09, z: 0.5 }, scale: 0.75 }, 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: 12 } } This is the cooking recipe. This is where i am lost now currently. I'm expecting the ability to "output" an item but I dont see that currently in any sample code: { code: "saltcrystal", ingredients: [ { code: "water", validStacks: [ { type: "item", code: "saltwaterportion" } ], minQuantity: 1, maxQuantity: 6, portionSizeLitres: 6, }, { code: "water", validStacks: [ { type: "item", code: "saltwaterportion" } ], minQuantity: 1, maxQuantity: 6, portionSizeLitres: 6, }, { code: "water", validStacks: [ { type: "item", code: "saltwaterportion" } ], minQuantity: 1, maxQuantity: 6, portionSizeLitres: 6, }, { code: "water", validStacks: [ { type: "item", code: "saltwaterportion" } ], minQuantity: 1, maxQuantity: 6, portionSizeLitres: 6, } ] } I want the recipe to be 6 salt water liters x 4 = 1 salt crystal. -
I'm about to start working on a new mod. I want to boil salt water to get salt crystals. If I get a jug of water for example can I boil water and can I determine a difference between salt and fresh water? I've not looked at water mechanics yet. Hoping fresh and salt water are two different items. Thanks in advance
-
I could not find a lot of "fish" mods in game so I made this one. I felt like players needed to fear the water lol Special thank to Spear and Fang for helping me figure out my first entity mod. Version 1.19.8 piranha1.0.1.zip
- 1 reply
-
- 2
-
-
I think this fixes the spawn issue: spawnconditions: { worldgen: { TriesPerChunk: { avg: 0.5, var: 0 }, tryOnlySurface: true, minLightLevel: 3, groupSize: { dist: "verynarrowgaussian", avg: 2, var: 3 }, insideBlockCodes: ["game:water-*"], minTemp: 4, maxTemp: 20 }, runtime: { group: "hostile", chance: 0.01, tryOnlySurface: true, minLightLevel: 3, groupSize: { dist: "verynarrowgaussian", avg: 2, var: 3 }, insideBlockCodes: ["game:water-*"], minTemp: 4, maxTemp: 20 } I also added seek entity in my code so now it will seek out players. I had to lower there damage. They hit too hard. I also added "alertheard" attribute: { code: "seekentity", entityCodes: ["player"], priority: 1.5, mincooldown: 1500, maxcooldown: 1500, movespeed: 0.045, seekingRange: 15, maxFollowTime: 20, animationSpeed: 2.3, alarmHerd: true, animation: "swimfast" } alarmherd seems to make them all swarm a player in the water. so you know ... dont go in the water lol Here is final copy. Please feel free to review it and test. They are very nasty little fish piranha1.0.1.zip
-
Here is where we are at now: I created a new Creature.json file because that seemed like the correct way to do this/add entity Created a new en.lang file again just seemed like the correct thing to do moved all the stuff into the "piranha" folder Removed all "patches" folders converted into domain file based structure Reviewed all your changes as well. One issue I ran into was in my Creature.Json I have to have a "Skin: base" section for the texture part based on Salmon logic or the game will crash. Not sure what that is all about. Other issue is of course the fish acts like an item and not a entity when i add it in game via creative. So now I think I need to figure out how to get the fish to basically be a fish and not a item. Plus I broke the texture somehow so the fish texture is not working again. Latest version zipped and attached. /piranha/itemtypes/creature.json { code: "creature", class: "ItemCreature", maxstacksize: 64, variantgroups: [ { code: "type", states: [ "piranha" ] } ], shapeByType: { "*-piranha": { base: "piranha:entity/water/piranha" } }, texturesByType: { "*-piranha": { skin: {base: "piranha:entity/fish/piranha-red" }} }, creativeinventory: { "general": ["*"], "items": ["*"], "creatures": ["*"] }, materialDensity: 600, guiTransformByType: { "creature-piranha": { rotate: true, translation: { x: 0, y: 0, z: 0 }, rotation: { x: 177, y: 144, z: -41 }, origin: { x: 0.49, y: 0.18, z: 0.5 }, scale: 1.9 } }, tpHandTransformByType: { "creature-piranha": { translation: { x: -0.8, y: -0.55, z: -0.6 }, rotation: { x: 0, y: -62, z: 28 }, scale: 0.62 } }, fpHandTransformByType: { "creature-piranha": { rotation: { x: 26, y: -65, z: 2 }, origin: { x: 0.6, y: 0.3, z: 0.6 }, scale: 1.71 } }, groundTransformByType: { "creature-piranha": { scale: 4.06 } } } /piranha/lang/en.json { "item-creature-piranha": "Piranha", "item-dead-creature-piranha": "Dead Piranha" } /piranha/entities/water/piranha.json { code: "piranha", class: "EntityFish", hitboxSize: { x: 0.5, y: 0.25 }, eyeHeight: 0.2, drops: [], habitat: "Underwater", client: { renderer: "Shape", size: 0.7, shape: { base: "piranha:entity/water/piranha" }, texture: { base: "piranha:entity/fish/piranha-red" }, behaviors: [ { code: "repulseagents" }, { code: "controlledphysics", stepHeight: 0 }, { code: "interpolateposition" }, { code: "floatupwhenstuck", onlyWhenDead: true }, { code: "harvestable" }, { code: "despawn", minPlayerDistance: 8, belowLightLevel: 8, minSeconds: 300 }, ], animations: [ { code: "hurt", animation: "hurt", animationSpeed: 1, weight: 10, blendMode: "AddAverage" }, { code: "swim", animation: "swim" }, { code: "swimfast", animation: "swim" }, { code: "die", animation: "dead", }, { code: "flop", animation: "flopping" }, { code: "idle", animation: "idle", blendMode: "AddAverage", animationSpeed: 0.33, easeOutSpeed: 4, triggeredBy: { defaultAnim: true }, } ] }, server: { behaviors: [ { code: "repulseagents" }, { code: "controlledphysics", stepHeight: 1.1251 }, { code: "despawn", minPlayerDistance: 12, belowLightLevel: 8, minSeconds: 200 }, { code: "health", currenthealth: 5, maxhealth: 5, }, { code: "deaddecay", hoursToDecay: 96, decayedBlock: "carcass-tiny" }, { code: "floatupwhenstuck", onlyWhenDead: true }, { code: "harvestable", drops: [ { type: "item", code: "fish-raw", quantity: { avg: 2, var: 0 } } ] }, { code: "emotionstates", states: [ { code: "fleeondamage", duration: 10, chance: 1, slot: 0, priority: 1, accumType: "max", whenHealthRelBelow: 0.3 }, { code: "saturated", duration: 1200, chance: 1, slot: 0, priority: 1, accumType: "sum", belowTempDuration: 600, belowTempThreshold: -5 }, { code: "aggressiveondamage", duration: 30, chance: 1, slot: 2, priority: 2, accumType: "noaccum" }, { code: "alarmherdondamage", chance: 1, slot: 1, priority: 1, accumType: "max" } ] }, { code: "taskai", aitasks: [ { code: "fishoutofwater", priority: 2.5, priorityForCancel: 2.6, movespeed: 0.005, animation: "flop", animationSpeed: 2 }, { code: "meleeattack", entityCodes: ["player", "chicken-rooster", "chicken-hen", "chicken-baby", "hare-*", "deer-*-baby", "deer-pudu-*-adult", "deer-water-*-adult", "deer-pampas-*-adult", "deer-redbrocket-*-adult"], priority: 2, damage: 3, damageTier: 2, damageType: "SlashingAttack", slot: 1, mincooldown: 1500, maxcooldown: 1500, attackDurationMs: 800, damagePlayerAtMs: 500, animation: "swim", animationSpeed: 2, sound: "player/stab" }, { code: "fleeentity", entityCodes: ["player"], priority: 2, movespeed: 0.06, seekingRange: 14, animation: "swim", animationSpeed: 2, whenInEmotionState: "fleeondamage" }, { code: "wander", priority: 1.2, priorityForCancel: 1.35, movespeed: 0.015, animationSpeed: 0.9, animation: "swim" }, { code: "fishmovefast", priority: 1.0, priorityForCancel: 1.5, movespeed: 0.045, animation: "swimfast", animationSpeed: 2.3 }, { code: "idle", priority: 0.9, priorityForCancel: 1.5, minduration: 1000, maxduration: 6000, mincooldown: 2000, maxcooldown: 20000, animation: "eat" }, { code: "idle", priority: 0.9, minduration: 500, maxduration: 1000, mincooldown: 2000, maxcooldown: 30000, animation: "idle" } ] } ], spawnconditions: { worldgen: { TriesPerChunk: { avg: 0.5, var: 0 }, tryOnlySurface: true, minLightLevel: 3, groupSize: { dist: "verynarrowgaussian", avg: 2, var: 3 }, insideBlockCodes: ["water-*"], minTemp: 4, maxTemp: 20 }, runtime: { group: "hostile", chance: 0.01, tryOnlySurface: true, minLightLevel: 3, groupSize: { dist: "verynarrowgaussian", avg: 2, var: 3 }, insideBlockCodes: ["water-*"], minTemp: 4, maxTemp: 20 } } } } Update: I got it fixed one line of code was off. I'll post this in mods but i plan on adding more fish later piranha1.0.1.zip piranha1.0.1.zip