Korobi IRC Swiss Army knife.

19:57:41 malte0811 And that branch contains a single commit with about 5 lines
19:57:53 LexMobile and I SAID you dont need to fucking use a custom forge build for that
19:58:01 LexMobile EVERY class loaded gets transformed
19:58:24 malte0811 That why is ItemStack not being printed to the log?
19:58:30 malte0811 *Then
19:58:48 LexMobile No idea you probably fucked something up
20:00:26 malte0811 Look at the commit. it is the only change and it is THREE lines. All calls to System.out.println. Not a lot of space for a "somewhere".
20:00:35 Raycoms for the custom condition I have to extend IConditionFactory?
20:01:54 PaleoCraft+ malte0811, what Lex is getting at is that you can make Forge dump all transformed classes with a command line option, which you could have easily found out yourself
20:02:53 williewill+ Raycoms: yes
20:03:16 Raycoms williewillus can you show me your custom condition so I can have an idea? =D
20:04:40 williewill+ public BooleanSupplier parse(JsonContext context, JsonObject json) { boolean value = JsonUtils.getBoolean(json , "value", true); return () -> Botania.gardenOfGlassLoaded == value;
20:04:41 williewill+ }
20:04:45 williewill+ :P
20:06:16 Raycoms So All I do is parse the json to detect which recipe I'm talking about and then I return "true" or "false" accordingly?
20:07:17 LexMobile you parse the json to get the context needed for you to make your decision
20:08:18 Raycoms Exactly
20:08:56 Raycoms Is there a way to add a comment or a random value to a recipe to easily detect them without breaking the loading mechanism?
20:09:34 LexMobile what are you trying to do?
20:10:07 Raycoms I have some recipes I only want to enable if the user set "enableInDevFeatures" to true in the config file
20:10:15 LexMobile Also malte0811 Yes it seems that the 1.11.2 transformer is broken because it checks the obf name instead of the deobfed name. That *shouldn't* be the case but whatever.
20:10:21 LexMobile And how did I verify this?
20:10:43 LexMobile Not by making some half baked custom forge distro but by using the fucking flags specifically designed to debug this shit
20:11:10 malte0811 Yes, fucking flags that I can't seem to find any documentation on
20:11:29 LexMobile Right fucking there
20:11:30 Raycoms so I thought I could add a "isDev" value in the recipe I can parse in the config condition
20:11:47 LexMobile Right click transform -> Find references
20:12:00 LexMobile Oh LOOK the ONE real reference is wrapped in TONS of debug code
20:14:36 Raycoms is that possibly without breaking the recipe loading?
20:16:11 PaleoCraft+ So, Lex, if I'm encouraged to rewrite the extraction stuff, would you mind dumping your ideas for it in a gist for me (or really anybody)? Just saying what you had in mind for the metadata mods need to provide would probably suffice
20:18:40 LexMobile Hoenstly sometime super early call a List<File> extractLibraries(File modDir, File libsDir, String mcVersion)
20:18:57 LexMobile Go through each jar in modDir and modDir\mcVersion
20:20:24 LexMobile If META-INF has containedDeps, extract that file to memory. If THAT zip has META-INF: artifact-info extract it to libsDir/full/maven/path/mod.jar If it DOESNT have artifact info extract it to the mods folder and log a 'stupid modder!'
20:21:23 LexMobile If it has artifact info, add it to modlist.json.
20:21:35 LexMobile Then load like normal skipping any extractions.
20:23:15 PaleoCraft+ Okay, will do so. Should I define custom keys for the manifest or just use the ones defined here? https://docs.oracle.com/javase/tutorial/deployment/jar/packageman.html
20:24:58 LexMobile I could of sworn there was a specific maven structure predefined. But cant seem to find it
20:25:18 LexMobile all it needs is a Maven-Artifact: group:artifact:version:classifier@ext
20:28:58 Technician+ the build.gradle should contain enough information to automaitcally include that (via a update to forgegradle i guess)
20:29:47 LexMobile sorta, i'd expect modders to opt-in for that, its fairly simple
20:33:14 Raycoms About the recipes? Is there a way to add a variable to a json recipe without breaking it? Or would I have to detect the block in the recipe to check if it of the group I want?
20:34:04 ghz|afk what do you mean with "variable"?
20:34:29 ghz|afk you can define custom conditions and custom ingredients (inputs=
20:35:00 ghz|afk and YOU parse those jsonobjects, so you can read any values from them
20:35:35 Raycoms I have a certain group of blocks I only want to be craftable if the config options are turned to "true"
20:35:43 Raycoms So I want to put something inside their recipe jsons
20:35:49 ghz|afk yep take a look at this
20:35:52 Raycoms to detect if thats one of the recipes I want to disable


One of the services provided by the IRC bot is the logging of your channel, be it publicly or privately. These logs are then used to generate channel statistics. The logs themselves are neatly organized and can easily be browsed within our website.


Another service provided by the IRC bot is the ability to create factoid commands on the fly. Allowing for easy and flexible creation of responses based on frequently asked questions, and even listen for certain triggers to have it respond automatically.


Statistics are generated based off of the logs collected by the IRC bot. We are able to generate statistics to accurately capture who is the most active person by hours, along with other things like whom uses the most smileys, who has been granted the most karma, and which person can make sailors blush with their vulgar language.

About the project

The Korobi project aims to be the Swiss Army knife of IRC.

Korobi is carefully designed by people who enjoy using IRC on a day to day basis, and aim to make IRC even more enjoyable by providing a large set of tools for channels to work with.

If you'd like to request Korobi for your own channel, or have any questions at all, please visit #korobi on EsperNet and highlight one of the ops. See the full documentation to see if your channel qualifies.

Read More... Issue Tracker

Channel Last Message