The Best Resource for Minecraft
The Best Resource for Minecraft

CustomThings Mod Wiki

CustomThings is a comprehensive utility mod for Minecraft that allows modpack creators and players to add custom blocks, items, recipes, and world generation via simple JSON configuration files.

9 sections · 913 words

Overview#

CustomThings is a powerful framework designed for Minecraft that enables the addition of new content without the need for Java programming. By utilizing JSON (JavaScript Object Notation) files, users can define a wide array of game elements including custom blocks, items, crafting recipes, and ore generation. This mod is particularly essential for modpack creators who wish to bridge gaps between mods or add unique thematic elements to their gameplay experience.

Key Features

  • Custom Blocks: Define hardness, resistance, light levels, and custom textures.
  • Custom Items: Create new materials, tools, and food items with unique lore and stack sizes.
  • Recipe Management: Add shaped, shapeless, and smelting recipes for any item in the game.
  • World Generation: Configure custom ores to spawn in the world with specific height and frequency settings.
  • Creative Tabs: Organize your custom content into dedicated tabs in the creative inventory.
  • Achievements: Create custom achievement trees to guide player progression.

Getting Started#

To begin adding content, you must first install the mod and its dependency, EnderCore. Upon the first launch, the mod will generate a directory structure within your Minecraft instance.

Directory Structure

All custom content is managed within the config/CustomThings/ folder. You should create the following subfolders if they do not exist:

  • /blocks/: JSON files for custom blocks.
  • /items/: JSON files for custom items.
  • /recipes/: JSON files for crafting and smelting recipes.
  • /worldgen/: JSON files for ore generation.
  • /creativetabs/: JSON files for custom creative inventory tabs.
  • /achievements/: JSON files for custom achievements.
  • /fuels/: JSON files for defining furnace fuels.

Texture Allocation

Textures for your custom things should be placed in a resource pack under assets/customthings/textures/blocks/ or assets/customthings/textures/items/. The textureName property in your JSON files will point to these locations.

Custom Blocks#

Blocks are defined by creating a .json file in the config/CustomThings/blocks/ folder. Each file represents one block.

Block Properties

Property Description Default Value
name The internal unlocalized name of the block. Required
textureName The name of the texture file (without.png). Required
material The material type (determines sounds and tools). rock
stepSound The sound made when walking on the block. stone
creativeTab The ID of the creative tab to place the block in. buildingBlocks
hardness How long it takes to mine the block. 1.5
resistance The block's resistance to explosions. 10.0
lightLevel The amount of light emitted (0.0 to 1.0). 0.0
harvestLevel The tool tier required (0=Wood, 3=Obsidian). 0
harvestTool The tool type required (pickaxe, axe, shovel). pickaxe
opaque Whether the block blocks light and vision. true

Valid Materials and Sounds

  • Materials: rock, iron, wood, glass, cloth, sand, grass, ground, water, lava, leaves, plants, vine, sponge, circuits, carpet, snow, craftedSnow, ice, packedIce, cactus, clay, gourd, dragonEgg, portal, cake, web.
  • Step Sounds: stone, wood, grass, gravel, cloth, sand, snow, ladder, anvil, metal, slime.

Example Block JSON

{
 "name": "ruby_ore",
 "textureName": "ruby_ore",
 "material": "rock",
 "hardness": 3.0,
 "resistance": 15.0,
 "harvestLevel": 2,
 "harvestTool": "pickaxe",
 "creativeTab": "materials"
}

Custom Items#

Items are defined in the config/CustomThings/items/ folder. These can be simple crafting ingredients or complex tools.

Item Properties

Property Description Default Value
name The internal unlocalized name of the item. Required
textureName The name of the texture file. Required
creativeTab The creative tab ID. materials
maxStackSize Maximum number of items per stack. 64
lore An array of strings for the item's tooltip. []
full3D Whether the item renders in 3D when held. false
effect Adds an enchantment glow (glint). false

Example Item JSON

{
 "name": "ruby_gem",
 "textureName": "ruby",
 "maxStackSize": 64,
 "lore": [
 "A rare and precious gem.",
 "Used for high-tier crafting."
 ],
 "creativeTab": "materials"
}

Recipes#

Recipes allow you to integrate your custom items and blocks into the game's progression. Place these in config/CustomThings/recipes/.

Shaped Recipes

Shaped recipes require items to be placed in a specific grid pattern.

{
 "type": "shaped",
 "output": "customthings:ruby_block",
 "amount": 1,
 "input": [
 "RRR",
 "RRR",
 "RRR"
 ],
 "ingredients": {
 "R": "customthings:ruby_gem"
 }
}

Shapeless Recipes

Shapeless recipes only require the ingredients to be present anywhere in the grid.

{
 "type": "shapeless",
 "output": "customthings:ruby_gem",
 "amount": 9,
 "ingredients": [
 "customthings:ruby_block"
 ]
}

Smelting Recipes

Smelting recipes define an input for the furnace and the resulting output.

{
 "type": "smelting",
 "input": "customthings:ruby_ore",
 "output": "customthings:ruby_gem",
 "xp": 1.0
}

World Generation#

CustomThings allows you to spawn your custom blocks as ores in the natural world. Define these in config/CustomThings/worldgen/.

World Gen Properties

  • block: The block to generate (e.g., customthings:ruby_ore).
  • baseBlock: The block to replace (usually minecraft:stone).
  • clusterSize: The number of blocks in a single vein.
  • numClusters: The number of veins per chunk.
  • minHeight: The minimum Y-level for spawning.
  • maxHeight: The maximum Y-level for spawning.

Example World Gen JSON

{
 "block": "customthings:ruby_ore",
 "baseBlock": "minecraft:stone",
 "clusterSize": 6,
 "numClusters": 4,
 "minHeight": 0,
 "maxHeight": 32
}

Fuels and Smelting#

You can turn any item into a furnace fuel by defining its burn time in config/CustomThings/fuels/.

Fuel Properties

  • item: The item ID to be used as fuel.
  • burnTime: The duration the fuel lasts in ticks (200 ticks = 1 item smelted).

Example Fuel JSON

{
 "item": "customthings:compressed_coal",
 "burnTime": 16000
}

Creative Tabs#

To keep your custom items organized, you can create a custom tab in the Creative Inventory via config/CustomThings/creativetabs/.

Creative Tab Properties

  • label: The internal name of the tab.
  • iconItem: The item ID to use as the tab's icon.

Example Creative Tab JSON

{
 "label": "my_mod_tab",
 "iconItem": "customthings:ruby_gem"
}

Localization#

To give your items and blocks proper names in-game, you must use a language file within a resource pack. Create a file at assets/customthings/lang/en_US.lang and add entries using the following format:

tile.customthings:ruby_ore.name=Ruby Ore
item.customthings:ruby_gem.name=Ruby
itemGroup.my_mod_tab=My Custom Mod