Download the latest release and run using command-line. Java version shouldn't matter much, Java 8+ should do (untested):
java -jar CrafterData-1.0.jar
It is recommended to use Gradle for building the project. For building:
gradle build
Utility simply stores items as List<Item>
in a function - itemsInit(): List<Item>
which is in com.fracta7.data.ItemsInit.kt
. Recipes are stored in the same package recipesInit(): List<Recipe>
. Recipe types are stored in recipeTypesInit(): List<RecipeType>
. In the main function, items, recipes and recipe types are stored in a variable and simply passed to writing functions, which simply write to data/*.bin
files corresponding to each file. Adding new recipes and items can be done in itemsInit()
, recipesInit()
and recipeTypesInit()
functions. Item icons are store in data/items
folder and each item icon corresponds to their ItemID
specified in itemsInit()
function.
Data classes are prototyped in the following way:
Item.kt
:
/**
* Minecraft Item.
* @property id string id of an item.
* @property name name of an item.
* @property stackSize stack size of an item.
* @property craftable indicates if it is craftable.
*/
data class Item(
val id: ItemID,
val name: String,
val stackSize: Int,
val craftable: Boolean
)
Recipe.kt
:
typealias ItemID = String
typealias RecipeID = String
/**
* Data class to represent recipes
* @property result result of recipe
* @property resultQuantity quantity of resulting item
* @property requirements a map of required items mapped to their quantity.
* @property recipeType defines the recipe type (crafting, smelting etc.).
*/
data class Recipe(
val result: ItemID,
val resultQuantity: Int,
val requirements: Map<ItemID, Int>,
val recipeType: RecipeID
)
RecipeType.kt
:
/**
* data class to represent different recipe types.
* @property id represents the ID of recipe.
* @property name represents the name of recipe.
* @property item is the itemID of recipe representation
*/
data class RecipeType(
val id: RecipeID,
val name: String,
val item: ItemID
)