Almost what you wanted.

Patch in
what's missing.

I build mods and plugins for Minecraft servers and Unity games. Open for commissions.

  • 25mods published
  • 36,822downloads
  • 71%of SULFUR's active
    Thunderstore mods

Thunderstore numbers as of 2026-10-26, not counting deprecated packages or Nexus Mods.

SELECTED WORK

What each one patched in, as a diff

#01PLUGINPaper · ExcellentCrates add-on

CrateCinema

the stock crate animation (before)

a meteor that hits the crate, right there in the world (after)

Cinematic opening shows for ExcellentCrates, picked per crate in the ExcellentCrates editor next to the built-in animations. Keys, rewards and costs stay with ExcellentCrates. Rarer rewards get a longer build-up and a bigger finish. If a player quits or the server stops mid-show, the reward is granted at once and nothing is left in the world. Bedrock players on Floodgate get a text-only show they can actually see.

#02MODv1.4.15,329 DL

SULFUR Together

a single-player game (before)

co-op, with a friend to come and revive you (after)

SULFUR has no multiplayer. This mod adds host-authoritative co-op on top of it: shared level seeds, scene transitions, enemies and bosses run by the host, and a downed-and-revive flow. Players join through Steam invites or direct IP from an in-game menu. Every hook into the game came from reading its decompiled code.

#03FORKForge 1.20.1 · TaCZ · AutoModpack

Patched forks for a modded Forge server

players install whatever jars the server lists (before)

only an update that matches an offline-signed manifest gets in (after)

I maintain forks of TaCZ, AutoModpack and LesRaisins Tactical for a modded Forge 1.20.1 server. AutoModpack now checks each update against an offline-signed manifest and rejects the whole thing on a mismatch, so a compromised server can't push arbitrary jars to players. The TaCZ client now knows the server's gun rules, so it no longer plays a reload the server is about to reject, and the 51 MB default gun pack moved out of the jar (57 MB → 5.7 MB). Every jar sent to players is tagged with its full source.

#04MODv0.10.1library5,375 DL

SULFUR Native UI Lib

a config file per mod (before)

a settings page inside the game's own Options screen (after)

A library that lets other mods add pages to the game's Options screen, in the game's own row styles. Rows update in place, so the page doesn't rebuild when a value changes. If the game font is missing CJK or symbol glyphs, it falls back to another font. SULFUR Together, SULFUR Config and another author's chat mod depend on it.

#05PLUGINPaper · demo, not released

AbilitySMP

an ability item anyone can stash or copy (before)

items that stay with their player, and copies that stop working (after)

An ability framework for Paper with four demo abilities: Meteor Call, Frost Nova, Phase Step and Second Wind. Players gain abilities by carrying items. The items can't go into containers or be picked up by hoppers, every issued item is recorded, and a copy that doesn't match the record is frozen. It respects WorldGuard regions, and Bedrock players get particle-only effects. I made it to show what a custom SMP plugin could look like.

#06MODv0.4.2700 DL

False Gods

the levels you already know (before)

an original boss in its own cave arena, solo or co-op (after)

The arena is reached through the game's own level generation, so navigation, spawning and fog work natively. It runs in single-player, or host-authoritative on top of SULFUR Together. I built the arena in Blender and Unity and ship it as an AssetBundle; vanilla materials are loaded from the player's own install at runtime and never redistributed.

Also: Mod Insight collects daily stats for my mods from Thunderstore and Nexus Mods into Azure SQL, with a REST API and a dashboard.KyoumoMushoku is a small 2D survival game in Unity.

WHAT I TAKE ON

HOW I WORK

  1. Before quoting, I'll ask about your Minecraft version, your loader or server software, and the mods or plugins you run. That's what sets the size of the job.
  2. You get a price once the scope is clear, and it doesn't change unless the scope does.
  3. You get the source.