This is a modification kit for JLS. It is intended to make it easier to add different "slice constraints", or "filters" to JLS. "Slices" are sets of cells with constraints on how they can be set. You can use this kit to add filters to the JLS source code, but I don't know how to actually recompile the code without using BlueJ as an IDE.

Usage guide:
1. Install node.js.
2. Install unzipper:

npm install unzipper

3. Run setup.js. This will automatically download and extract JLS, then patch a few files to make injection easier. Existing files will be overwritten. Do not delete any comments saying "/////INJECTION POINT", these comments are how the patcher will find the right locations to patch in filters.

node setup.js

4. If necessary, run createblankslice.js. This creates a "java" file under the name of sliceproperties.java, which has methods and properties for you to fill out. This is technically not actually a java class. If the file is already there, it will be overwritten. Do not delete any comments saying "/////SNIP POINT", these comments are how the patcher will find the right methods to patch into the JLS code. The last four methods are java methods, the first four are JSON objects.

node createblankslice.js

5. Fill in the eight methods/properties. I will give an example, describing how to implement a filter that when turned on, forces patterns to be phoenices. See phoenixexample.txt. There are also a few other pre-made filters in the resources folder.

6. Run patch.js. This will patch the filter you created into the JLS source code. Note that filters are not applied if at least one cell is unset. If you want to override this, you can do so manually by editing JLS/jls/SearchCellArray.java. If you are adding multiple filters using the same type of slice, there will be a duplicate method in JLS/jls/engine/java/JavaSearchEngine.java for adding that slice-you will need to remove it manually. There may be other cases where you need to tweak things slightly after patching.

node patch.js

7. Once you're done, you can then compile your code. To do so, simply open the JLS folder in BlueJ in "Project>Open Non BlueJ...". Next, click the Compile button on the left. Note that you're not quite done yet. Next, you need to double-click "engine" in the GUI, to open a window. Repeat with "java", to open yet another window. Finally, click the Compile button again, and you are done compiling your code. To launch, go back to the first window, right-click "JavaLifeSearch" (You may have to dig through it as it might be hidden under other classes), click "void main(String[])", then click "OK". If you want to build a jar file, simply use "Project>Create JAR file...".