This is an improvement on my previous JLS patcher. To use this one, you just need to create the filter and slice files, list the filters in filters.txt, and run this:

node build.js

After that, a new folder will appear, named "jls". You need to extract the files in the JLS jar. Kasuha has been nice enough to include the java files as well as the class files. If necessary, remove all the class files. Now, copy the contents of the "jls" folder here into the "jls" folder from the extracted JLS jar. You will need to replace some java files. Diagramatically:

jlspatcher                                      JLS (extracted jar)
     |                                           |
     |---jls <-Copy this...   ...to here-> jls---|
     |                                           |
     |---Some other stuff                        |---Some other stuff

Now, enter the root folder of the extracted JLS jar. If you only need to compile for your current java version, you only need to use this command.

javac jls/*.java

If you need to compile for an older version of java, you will need to do a slightly more complicated procedure. For example, if I need to compile for Java 6, I would do this:

javac jls/engine/SearchEngine.java --release 6
javac jls/engine/java/*.java --release 6
javac jls/undo/*.java --release 6
javac jls/*.java --release 6

For some reason, if you just run the last command, the files in the jls folder all compile with the old version, but everything in jls/undo, jls/engine, and jls/engine/java compile in the current version, not the old one. Either way, we can then build the jar:

jar cmf META-INF/MANIFEST.MF JLS.jar jls images

A filter file lists a name, a label, and the slices that it contains. The list of slices first has the name of the slice, then the relative positions of the cells that the slice is applies to. A slice file lists a name, the number of cells in the slice, and illegal cell configurations in ternary, where 0 is off, 1 is unknown, and 2 is on. filters.txt simply lists which filters are going to be added into the JLS source code. Note that both slice and filter files should be named with the name specified inside them, or else build.js will not be able to find the correct file.