1.6.0latestskLambda 1.6.0Sep 17, 2026 skLambda 1.6.0
Supports: Paper 1.21.1+ · Skript 2.15+ Want the full details? [wiki: New-Features](https://github.com/ahmadmsaleem/skLambda/wiki/New-Features) Adds a new commands module that controls which commands players see when they press /. - show only commands %strings% [where <condition>]: limits the list to the named commands. The condition is checked for each player whenever their list is sent, so permission groups work from on load. Rules add up, and a player who matches none of them sees no commands. - hide commands where %object% passes: hides every command a lambda passes for. The lambda gets the command label, then the player. - hide commands %strings% from %players% / show commands %strings% to %players%: per-player hides that last until the matching show runs. - reset command visibility [for %players%]: clears every rule and hide, or only the hides of the given players. Example
Players' command lists update right away, with no rejoin needed. Rules and hides are removed when the script that made them is reloaded. Hiding only changes what players see, so typed commands still run. Turn the module off with `on load: show only commands "help", "msg" and "tpa" where player has permission "group.default" show only commands "ban", "kick" and "mute" where player has permission "group.mod" set {_namespaced} to lambda (cmd: text): {_cmd} contains ":" hide commands where {_namespaced} passes on damage of player: hide commands "spawn" and "home" from victim wait 10 seconds show commands "spawn" and "home" to victim command /resetcommands: trigger: reset command visibilitycommands: false in config.yml.`1.5.0skLambda 1.5.0Aug 25, 2026 skLambda 1.5.0
Supports: Paper 1.21.1+ · Skript 2.15+ Want the full details? [wiki: New-Features](https://github.com/ahmadmsaleem/skLambda/wiki/New-Features) Bug fixes and playing nicer with other addons. Most of it came from running skLambda next to Skript core, SkBee, skript-reflect and skript-gui and finding the places where they quietly fought over the same wording.New effects
- Format a GUI slot with a lambda:format gui slot[s] %objects% of %gui% with %itemtype% [handled by %lambda%]puts an item in a skript-gui slot and hands the click to a lambda, so a shared "close" or "back" button is written once and reused instead of getting its own inline section in every menu. The handler gets the player, the slot index and the clicked item, and a shorter lambda just ignores what it does not declare. Addstealable(orremovable) before the item to let players take it.unformat gui slot[s] %objects% of %gui%clears them again. - Fill a GUI from a list:fill gui %gui% from %objects% rendered with %lambda% [handled by %lambda%] [starting at slot %number%]is a data-driven menu in one line. The renderer turns each element into an item, the handler gets the element, the player and the slot. Each slot closes over its own element, so one handler covers the whole menu. Pair it withpage %number% of %objects% by %number%and a long list pages itself. - Both only register when skript-gui is installed, and skLambda does not build against it, so nothing changes if you do not use it. skript-gui is now a soft dependency, so it always loads first. Before that, plugin load order decided whether the effects existed at all.New listener options
- Inventory owners:owner:now takes an inventory as well as an offline player, entity, chunk or world. The listener or watcher stops itself when the last viewer closes that menu, which is what you want for a watcher driving a live GUI. Before, awatch (balance of player) every 1 secondfeeding an open menu kept polling after the player closed it. Two inventories count as the same owner only when they are the same object, so two empty chests of the same size do not get mixed up.New conditions
- Unambiguous future state:future [of] %future% is (done|completed|resolved),is pendingandhas failed, each with a negated form. SkBee defines%advancementprogress% is doneand claims that wording first, so a plainif {_f} is done:was silently becoming an advancement check. Writeif future {_f} is done:and it always reaches skLambda.is resolvedandis completedwere never in conflict and stay the shortest safe way to ask.New expressions
- Every value a lambda returned:results of calling lambda %object% [with %objects%]is the plural spelling ofresult of calling lambdaand hands back the whole list when the body returned one. The singular still gives the first value, so nothing you wrote changes.Improvements
- skript-reflect sections and function references work as lambdas: anywhere skLambda takes a lambda, it now also takes a section stored withcreate new section stored in {_s}and a function reference fromthe function "name". So{_list::*} mapped with {_section},sorted by {_section},pipe 5 through {_section},{_list::*} where [{_section} passes for input]andfuture of calling lambda {_section}all run code you already wrote. A section takes its arguments throughwith arguments variables, and itsreturnis what comes back. A function reference written with arguments, likethe function "add" called with 100, keeps them bound as the leading ones, exactly likewith ... bound. skLambda does not build against skript-reflect, so none of this loads when it is absent. - Lambdas are Java functional interfaces: a lambda is now aConsumer,BiConsumer,Function,Predicate,Supplier,RunnableandComparator, so you can hand one straight to any Java method that wants one. Through skript-reflect that means{_stack}.editMeta({_lambda}),{_list}.removeIf({_lambda}),{_list}.sort({_lambda})and{_optional}.map({_lambda})work directly, without an adapter call or a reflect section. Whatever calls it decides which shape applies, so the same lambda can be a consumer in one place and a predicate in the next.asPredicate(),asFunction(),asBiFunction(),asConsumer()andasSupplier()are real methods on the lambda now too, the way the wiki always described them. - `call` and `invoke` work as statements:call lambda {_x}andinvoke lambda {_x}parse on their own line, not just as expressions.run lambda {_x}is unchanged. - Lambdas can return a list:return {_list::*}used to fail with a confusing error borrowed from another addon and then hand back nothing. It works now, readable throughresults of calling lambda.function lambda "name"keeps a function's whole result too, instead of dropping everything after the first value. - Type names read properly: Skript's warnings said "a types.lambda cannot be saved" because skLambda shipped a language file with its type names commented out. It says "a lambda" now. Same for listeners, futures and end reasons.Bug fixes
- `mapped with [...]` no longer crashes:set {_widths::*} to ({_headers::*} mapped with [length of "%input%"])threwUnparsedLiterals must be converted before useat runtime, because skLambda's%objects% mapped with %object%claimed the line ahead of Skript core's bracket version and then choked on the bracket. Every lambda slot now declines raw unparsed text, so core'smapped with,transformed using,reduced withandwherebracket forms all reach Skript. Fixed in all fourteen places a lambda is taken. - `result of calling lambda` gave nothing: skLambda's ownresult[s] of %futures%outranked it, and since a future slot accepts any object through a converter, it swallowed the whole line. Both sides now check what they are actually handed. - Parameter defaults broke on brackets, commas and quotes:lambda (a: number = (1 + 2)),lambda (a: number = max(1, 9)),lambda (a: string = "x, y")andlambda (a: string = "a)b")all failed, with the error claiming "Lambda definitions need a body" when the body was right there. The signature parser now scans brackets and quoted text properly. - `sorted by` left lists untouched: one element whose key lambda returned nothing was enough to leave the entire list unsorted, and a text key never ordered anything at all. Nothing-keys now sink to the end in their original order, keys of different kinds group by kind, anything comparable sorts properly, and equal keys keep their original order. - A skipped argument leaked the surrounding variable: calling a lambda without an argument for a parameter that shares a name with a captured local showed the capture instead of nothing, the opposite of the documented rule that parameters shadow captures. A call missing a required argument is refused outright now, so an arity mismatch like(1, 2) mapped with %2-arg lambda%gives you nothing instead of a plausible-looking wrong number. - A fold step returning nothing corrupted the rest: inreduced withandscanned with, a lambda that returned nothing handed the next step an empty accumulator, so the running total reset partway through. Such a step is skipped now and the fold carries on. - `contains` never found a listener:if all active listeners contains {_l}:was always false, and so was comparing two listeners withis, because Skript had no comparator for the type. Listeners, futures and lambdas now compare by identity, socontains,isandis notwork on all three. - `new value` and `old value` were claimed in every script: those words, pluscurrent value,previous value,former valueandchanged value, were taken by skLambda anywhere on the server and quietly read as nothing outside a watcher, whileend reasonhad gu1.4.0skLambda 1.4.0Aug 2, 2026 skLambda 1.4.0
Supports: Paper 1.21.1+ · Skript 2.15+New effect
- Fail a futurefail %futures% [with %text%]: settles a future as broken and wakes every waiting trigger into itson failure:block.reject %futures%is the same thing. Reason defaults to "future failed". First outcome wins, so a latefaildoes nothing.New expressions
- Failure reasonfailure reason of %future%: why a future broke. Nothing for one that's pending or resolved fine, so it doubles as a failure test. If a background lambda errored, you get a short note pointing at the console where Skript logged the real exception.error of,failure of,exception ofall work. - Already-finished futuresa completed future [with %object%],a failed future [with %text%],a resolved future: what makes a "sometimes cached, sometimes async" helper tidy. The caller always gets a future and can alwayswait forit, whether or not any work happened. - Chain a future%future% then %lambda%: a new future resolving with the lambda applied to the original's result. Source is untouched and still awaitable. Source fails -> chain fails with the same reason and the lambda never runs. Lambda errors -> chain fails with that. Chain as far as you like.chained withis the same thing; deliberately notmapped with, that belongs to list mapping. - Take and drop while%list% taken while %predicate% passes/dropped while: the leading run that passes, and everything from the first failure onward. Both care about position, which is whywherecan't do their job. They always split the list cleanly. - Where a listener came fromscript of %listener%,creation date of,age of: loopall active listenersto find stale ones and unregister them from a script instead of squinting at a console list.age ofcounts from creation, not registration.New listener option
- Fire on the first pollinitial: %boolean%onwatch when: the state to assume before the first poll. Normally the first poll only sets a baseline, and that's the usual reason a watcher "doesn't work" — the thing was already true when you started watching.initial: falsefireson rising:straight away;initial: trueis the mirror foron falling:. Leave it off and nothing changes.New section block
- Handle a failed waiton failure:: nests insidewait for, next to the body and anyon timeout:.wait for all offires it on the first failure and gives up.wait for any offires it only once every future has failed, so one success takes the main body. Leave it off and failures fall through to the body like before.Improvements
- A background lambda that errors now fails its future. It used to resolve quietly to nothing, identical to a lambda that returned nothing. Nowhas failedis true,failure reason ofexplains it, andwait forroutes toon failure:. The one intentional behaviour change in the release. - `wait for any of` waits for a success. It used to settle on the first future to finish either way, so an early failure could end the wait while another was about to succeed. - A misindented `on timeout:` or `on failure:` tells you so, instead of Skript's generic "can't understand this section". - Documentation fixes. Several shipped examples didn't parse:size ofwhere Skript wantsamount of, asha256 ofthat was never Skript syntax (it's%text% hashed with SHA-256), abalance ofthat quietly needed Vault, and await forwhoseon timeout:was dedented. References tofiltered whereandcount of ... where, both removed in 1.1.1, are gone too.New commands
- `/sklambda futures`: every unresolved future, with where it was created, how long it's been waiting, and how manywait forblocks are suspended on it. Blocks waiting with no way to resolve = a stuck trigger. Only lists futures something still holds; one nothing references is ordinary garbage, not a leak. - `/sklambda reload`: re-readsconfig.yml.notifierandupdate-notificationsapply right away.lambdaandlistenerstill need a restart, because syntax goes to Skript once at startup and can't be taken back. Every option is now tagged[RELOAD]or[RESTART].Leak detector
- It watches futures too. Newfuturessection with its ownwarn-afterand message, using{location},{duration},{awaiting}. A future that never resolves leaves everywait foron it suspended forever — as quiet a leak as a listener you never stop.enabled: trueswitches the notifier on, thenlisteners:andfutures.enabled:pick which scans run. Still off by default.1.3.0skLambda 1.3.0Jun 15, 2026 skLambda 1.3.0
Supports: Paper 1.21.1+ · Skript 2.15+ This release is about async. A lambda can run off the main thread, a trigger can wait for something without freezing the server, and a new watcher polls values and conditions for you so you don't have to write a loop.New sections
- Wait for a future:wait for %future% [within %timespan%]:suspends the trigger until the future resolves, then runs the body, whereresult of %future%is ready to read. The server keeps ticking while it waits, it doesn't block. Usewait for all of %futures%to join several (when-all) orwait for any of %futures%for the first to finish. An optionalon timeout:block runs instead if the time runs out, and locals from either branch carry on to the code after the block. - Wait for the next event:wait for next <event> [where <condition>] [within %timespan%]:pauses a trigger until that event fires, with the event's values in scope in the body (somessageworks forchat). Filter with a trailingwhere, cap the wait withwithin, and handle the no-show withon timeout:. The event has already dispatched by the time the body runs, so you can't cancel or change it there. - Watch a value:watch %value% every %timespan%:re-reads the expression on a timer and runson change:only when it differs from last time, withold valueandnew valuein scope. Passwithin %timespan%for anon timeout:, addon end:for teardown, and tie it to anowner:so it stops itself when the owner goes away. It's a normal listener, sopause,resume,unregisterand/sklambda listenersall work on it. - Watch a condition:watch when <condition> every %timespan%:is edge-triggered.on rising:fires the moment the condition goes false to true,on falling:fires on true to false. The state at the first poll is the baseline, so a condition that's already true won't fireon risinguntil it goes false and back. This is "do X the first time Y becomes true" without a poll loop.New expressions
- Future of a lambda:future of calling lambda %lambda% [with %objects%]starts the lambda on a background thread right away and hands you a future for its result. The body must be pure computation or I/O with no Bukkit API (no blocks, entities, inventories, or players), since touching the server off-thread will throw. Arguments are read on the main thread before it starts. - New future:a new futureis an empty promise you resolve yourself later withcomplete. Good for bridging a callback or another thread back into a waiting trigger. - Future result:result of %future%is the resolved value, or nothing for a future that isn't done yet or that failed. Read it after await for, when the future is guaranteed resolved. - Old and new value:old valueandnew valuehold the previous and current readings inside a watcher'son change:block.New condition
- Future state:%future% is done(alsoresolvedorcompleted),%future% is pending, and%future% has failed, each with a negated form. Check a future before reading its result, or branch on whether a background job blew up.New effect
- Complete a future:complete %future% with %object%resolves one or more futures with a value and wakes any trigger waiting on them.complete %future%with no value resolves it with nothing. A future that's already resolved is left alone.1.2.0skLambda 1.2.0Jun 7, 2026 I've decided to keep working on skLambda, so I'm maintaining the project again. Here's 1.2.0.skLambda 1.2.0
Supports: Paper 1.21.1+ · Skript 2.15+New expressions
- Scanned:%objects% scanned with %lambda%is likereduced, but it keeps every running result instead of only the last one. Give it3, 5, 2and an adding lambda and you get3, 8, 10. Addfrom %value%to start from a seed, which comes out first, so3, 5, 2from 100 gives100, 103, 108, 110. Handy for running balances and cumulative totals. - Zipped:%objects% zipped with %objects% using %lambda%walks two lists side by side and combines each pair with a two-argument lambda.(1, 2, 3)zipped with(10, 20, 30)and an adding lambda gives11, 22, 33. It stops at the shorter list. - Piped:pipe %object% through %lambdas%runs a value through a chain of one-argument lambdas, left to right, feeding each result into the next one.pipe 5 through {_inc}, {_double}is the same as calling double on the result of inc. Anything in the list that isn't a lambda is skipped. - Page / Window:page N of %objects% by Scuts a list into chunks of S and hands you the Nth one (1-based). The last page can be shorter, and a page past the end is empty.window N of %objects% by Sslides one element at a time instead, so window 1 is items 1 to S and window 2 is items 2 to S+1. Good for paging a list into a GUI. - Page count / Window count:page count of %objects% by Sis how many pages the list splits into, rounded up so a partial last page still counts.window count of %objects% by Sislength - S + 1. Loop over the count to fill a menu. - Listener cooldown:cooldown of %listener%(or%listener%'s cooldown) reads thecooldown:you set on a listener, and you can change it from outside with set, add, and remove. Set it to zero to turn the cooldown off. - Listener owner:owner of %listener%(or%listener%'s owner) gives back the owner you tied a listener to withowner:, or nothing if it has none.New conditions
- Counting quantifiers:at least N of,at most N of, andexactly N of %objects% passescheck how many predicates in a list pass, not just all of them or none.if at least 2 of {requirements::*} passes for {_p}:is true when two or more hold. They sit right next to the existingall of/any of/none offorms.New effect
- Pause / resume by owner:pause all listeners owned by %object%freezes every listener tied to that owner in one line, andresume all listeners owned by %object%brings them back. Same idea asunregister all listeners owned by, except it only pauses instead of stopping them for good.Improvements
- Default parameters: a lambda parameter can carry a default,lambda (n: number = 1) -> number:. When the caller leaves that argument off, the default fills in. Only trailing arguments can be skipped, socall {_f} with 10on a two-parameter lambda uses the default for the second one. - Options work inside listen entries: scriptoptions:like{@grace}now expand inside alistensection, so you can writecountdown: {@grace}orcooldown: {@debounce}and reuse one value across listeners. They used to be left as raw text and fail to parse.1.1.1skLambda 1.1.1Jun 3, 2026 This addon is no longer maintained. As of 1.1.1, skLambda will not receive further updates. The source stays available, but there are no planned releases, fixes, or support going forward. Feel free to fork it.
---skLambda 1.1.1
Supports: Paper 1.21.1+ · Skript 2.15+Removed
- Duplicate list expressions:%objects% filtered where %objects% passes,count of %objects% where %objects% passes, andfirst of %objects% where %objects% passeshave been removed. Skript core already ships its ownfiltered, count, and first list operations, so these were redundant and only added overlap. The lambda forms (filtered,count of … where, and the%lambda%-based expressions) still work as before.Improvements
- Listener internals cleaned up: listener tracking, owner cleanup, and the active-listener registry were pulled out of one large class into focused pieces. No behavior change, just easier to maintain.1.1.0skLambda 1.1.0Jun 3, 2026 skLambda 1.1.0
Supports: Paper 1.21.1+ · Skript 2.15+New expressions
- Highest / Lowest By:highest of %objects% by %lambda%andlowest of %objects% by %lambda%give you back the one item with the biggest or smallest value. You write a small lambda that scores each item, and it hands you the winning item itself. Ties keep the first one; an empty list gives nothing. You can also sayminormax. - Bound:%lambda% with %objects% boundfills in the first argument(s) ahead of time. An "add two numbers" lambda can become "add 5 to whatever you give me." Fill in every argument and you get a lambda that takes nothing and just returns the answer. - Negated:negated %lambda%(ornegation of %lambda%) flips a yes/no check so it passes when the original would fail. Handy withfiltered whereandcount of … where. - Active Listeners:all active listenersgives you every listener running right now (the same ones/sklambda listenersshows).listeners owned by %object%gives you just the ones tied to one owner. You can loop over them and shut them down.New listener options
- on register:: runs once, right when the listener starts up. It's the partner toon end:, so you can set things up and clean them up in one place.Improvements
- One-line lambdas can return a value: before, a one-line lambda could only check something or do something. Now it can also give back a value,lambda (a, b): return {_a} + {_b}, or even shorter,lambda (n): {_n} * 2. - Lambdas remember nearby variables: a lambda keeps a copy of the local variables ({_x}) from where you wrote it, so it can still read them when it runs later. It's a snapshot from that moment, changing those variables afterward won't affect it, and changes inside won't leak out. If a parameter shares a name with one of them, the parameter wins. - Reduce with a starting value:%objects% reduced with %lambda% from %object%lets you set what the total starts at. An empty list just gives back the starting value, and the start can be a different type than the items (like joining a list of items into one piece of text). - More owner types:owner:used to really only work for players. Now an entity, chunk, or world can own a listener too. It cleans itself up automatically when the owner goes away, a player logging off, an entity dying or despawning, or a chunk/world unloading. (Teleporting between worlds no longer wrongly kills a player's listeners.) - Use lambdas from Java: developers can turn a Skript lambda straight into a normal Java function withasPredicate(),asFunction(),asBiFunction(),asConsumer(), andasSupplier().1.0.0skLambda 1.0.0May 31, 2026 skLambda 1.0.0
Supports: Paper 1.21.1+ · Skript 2.15+New expressions
List loops can now be written as one-line operations instead of Skriptloopblocks. Each one runs a lambda or predicate over a list. Mapped*:%objects% mapped with %lambda%turns every element into something new. Filtered*:%objects% filtered where %predicate% passeskeeps only the elements that pass. Reduced*:%objects% reduced with %lambda%folds the whole list down to a single value. Sorted*:%objects% sorted by %lambda%sorts the list using a key pulled from each element. Count Where*:count of %objects% where %predicate% passescounts how many elements pass. First Where*:first element of %objects% where %predicate% passesreturns the first element that passes. End Reason*:end reasonreports why a listener stopped, so you can branch on it. Comes with its own type.New functions
Constant predicates*:always()andnever()are drop-in predicates.always()always passes andnever()never passes.New listener options
These go inside alistensection. `owner:`*: ties a listener to an owner (for example a player). When the owner disconnects, the listener unregisters itself. `on end:`*: a callback that always runs no matter how the listener stops (completion, timeout, cancel, unregister, or owner disconnect). One single cleanup path. `cooldown: %timespan%`*: debounces rapid re-triggers. A debounced event does not runon triggerand does not count towardtriggers:. `every %timespan%:`*: a repeating timer callback that runs while the listener is active. It pauses and stops along with the listener.New effect
Unregister owned listeners*:unregister all listeners owned by %object%stops only the listeners tied to that owner, for scoped cleanup.Update checker
Startup check*:update-notificationsnow actually works (it used to be a reserved toggle that did nothing). On startup the plugin checks for newer releases and notifies op players when they join.Improvements
`/sklambda` command*: now has tab-completion, and/sklambda listenersshows owner info for each listener. The plugin link now points to Modrinth instead of GitHub. Internal refactor*: element registration was split intoLambdaModuleandListenerModule, trimming the mainSkLambdaclass by about 90 lines. Examples*:example.skgained 5 new showcases (10to14) covering the features above. Build*: version bumped to1.0.0. Full Changelog: [git... 1.0.0](https://github.com/ahmadmsaleem/skLambda/commit/24442d356…0.0.3-alphaskLambda 0.0.3-alphaMay 29, 2026 skLambda 0.0.3-alpha
Supports: Paper 1.21.1+ · Skript 2.15+New expressions
- Inline Lambda: write a lambda on one line:lambda (p: player): {_p} is op. The body is either a condition (a predicate that returnstrue/false) or an effect (runs and returns nothing). Parameters become locals like{_p}. - Function Lambda:function lambda "name"wraps an existing Skriptfunctionin a lambda you can store, pass around, and call like any other lambda. - Call Lambda (new forms): alongsidecall/invoke lambda, you can now writecalling lambda %lambda% [with ...]andthe result of calling lambda %lambda% [with ...].New condition
- Predicate Passes: treat a lambda as a yes/no test:%lambdas% pass[es] [for %values%](also reads asmatches/holds). With a list of lambdas, a quantifier decides how many must pass:all of(the default),any of, ornone of. Negate withdoesn't passor a leadingnot. Works insidelisten ... where, too.New effects
- Unregister All Listeners :unregister all listenersstops every active listener on the server (across all scripts). - Unregister Last Listener:unregister the last created listenerstops the most recently created one still active. Neither fireson completionoron timeout.New command
- /sklambda: shows the version and GitHub link./sklambda listenerslists every active listener (where it was created, the event it watches, and how long it has been alive). Alias/skl. Guarded by thesklambda.adminpermission (default: op).Configuration
- config.yml added. Toggle features withlambdaandlistener: a disabled feature registers no syntax at all (both default totrue). - Listener leak detector (notifier): optional console warnings about listeners that stay registered longer thanwarn-after, repeated everywarn-every, with a customizablemessage(placeholders{location},{event},{duration}). Off by default. -update-notificationstoggle reserved for a future update check.Improvements
- Type hints: lambda and saved-listener variables now register a Skript type hint, so misuse is caught at parse time when a script opts into Skript's experimentalusing type hints. - Listener effects and conditions (register,unregister,pause,resume, and the registered/paused/running checks) now take a%listener%instead of%object%, for clearer errors. -remaining triggersandremaining countdownshare a common base and now report0correctly once a listener has finished. - Website link now points to GitHub. Full Changelog: https://github.com/ahmadmsaleem/skLambda/compare/pre-rele…0.0.2-alphaskLambda 0.0.2-alphaMay 28, 2026 skLambda 0.0.2-alpha
Supports: Paper 1.21.1+ · Skript 2.15+New expressions
- Remaining Triggers —remaining triggers(insideon trigger) ortriggers of %listener%. Supportsadd,set,remove. - Remaining Countdown —remaining countdown(insideon trigger) orcountdown of %listener%. Adjusting it reschedules the pendingon timeout.New condition
- Listener State — check whether a listener isregistered,paused, orresumed(running).New effects
- Pause / Resume Listener — pause a listener to ignore events and freeze its countdown; resume to continue. - Skip Trigger — insideon trigger, skip the current event without consuming atriggers:slot or running the rest of the body.0.0.1-alphaskLambda 0.0.1-alphaMay 28, 2026 First initial release for this project
Similar projects
Script →VeinMiner
Mine the whole vein on mining a single ore/block. Make the tedious mining experience to something satisfying and fun! FTB Ultimine alternative
99.3MSueta
Simple Voice Chat
A working voice chat in Minecraft!
76.8MSueta
Let Me Despawn
Improves performance by tweaking mob despawn rules. Say bye to pesky unintentional persistent mobs.
25MSueta
Chunky
Pre-generates chunks, quickly and efficiently
18.4MSueta
VeinMiner Enchantment
Veinminer Addon - Adds vineminer enchantment to enchanting tables. Only tools with the enchantment can veinmine
18MSueta
JourneyMap
Real-time map used for mapping in-game or your browser as you explore.
14.7MSueta