The Best Resource for Minecraft
The Best Resource for Minecraft

Quadrum Mod 1.12.2, Wiki

Quadrum is a data-driven utility mod for Minecraft that allows modpack creators and players to add custom blocks and items to the game using simple JSON configuration files without any Java coding knowledge.

7 sections · 885 words

Overview#

Quadrum is the definitive tool for modpack creators who need to add unique content to their packs without the overhead of writing a full Minecraft mod. By utilizing a simplified JSON-based system, Quadrum enables the creation of custom blocks and items with a wide array of physical and visual properties. Whether you need a simple crafting ingredient, a new decorative block, or a functional food item, Quadrum provides the framework to register these objects directly into the Minecraft engine.

Custom blocks and items added via Quadrum

The mod acts as a bridge between data files and the game's registry, handling the complex tasks of block registration, item initialization, and creative tab placement. To function correctly, Quadrum typically requires a resource-loading utility (such as ResourceLoader) to handle the custom textures and models associated with the new content.

Getting Started#

To begin adding content with Quadrum, you must first run the game once with the mod installed. This will generate the necessary directory structure within your Minecraft instance.

Directory Structure

All configuration files are stored in the config/Quadrum folder. Inside this folder, you will find two primary subdirectories:

  • blocks/: Place JSON files here to define custom blocks.
  • items/: Place JSON files here to define custom items.

Each JSON file represents a single block or item. The name of the file (excluding the .json extension) will be used as the internal registry name for that object.

Block Configuration#

Blocks in Quadrum are defined by their physical behavior, visual appearance, and interaction with the world. Below is a comprehensive list of properties available for block definitions.

Core Block Properties

Property Data Type Description Default
name String The display name of the block in-game. Filename
material String The material type (affects sounds and map color). rock
hardness Number How long it takes to mine the block (-1 for unbreakable). 1.5
resistance Number The block's resistance to explosions. 10.0
lightLevel Number The amount of light emitted (0.0 to 1.0). 0.0
transparent Boolean Whether the block allows light to pass through. false
fullCube Boolean Whether the block occupies a full 1x1x1 space. true
drops List A list of ItemStacks dropped when broken. Self

Physical Traits

  • Harvest Level: Defines what tool and tier are required to mine the block. Use the tool (e.g., "pickaxe", "axe") and level (0=Wood, 1=Stone, 2=Iron, 3=Diamond) keys.
  • Bounding Box: Customizes the collision and selection boxes of the block using a Vector format.
  • Redstone: Allows the block to emit a redstone signal. Properties include power (0-15).

Visual Traits

  • Particles: Defines custom particles emitted by the block. Requires type and count.
  • Visual: Controls advanced rendering options like the block's render layer (Solid, Cutout, Translucent).

Example of custom block textures in-game

Item Configuration#

Items are generally simpler than blocks but can be extended with traits to provide functionality like food or specialized crafting components.

Core Item Properties

Property Data Type Description Default
name String The display name of the item. Filename
maxStackSize Number Maximum number of items in a single stack. 64
lore List A list of strings displayed as tooltips. None
oreDictionary List A list of strings for Ore Dictionary registration. None

Item Traits

  • Consumable: Turns the item into a food or drink source.
    • amount: Hunger points restored.
    • saturation: Saturation modifier.
    • alwaysEdible: If true, can be eaten even when the hunger bar is full.
    • returnItem: An ItemStack returned to the player after consumption (e.g., an empty glass bottle).
  • Visual: Allows for a permanent enchantment glint effect by setting glint to true.

Traits and Data Types#

Quadrum uses specific data structures to ensure consistency across JSON files. Understanding these types is essential for advanced configuration.

Data Types

ItemStack

Used for drops and return items. It consists of:

  • item: The registry name (e.g., minecraft:iron_ingot).
  • damage: The metadata or durability value (default 0).
  • count: The number of items in the stack (default 1).

Vector

Used for bounding boxes and particle offsets. It consists of three numbers: x, y, and z.

Common Traits

  • Lore: Adds descriptive text to the item or block tooltip. Supports multiple lines.
  • Ore Dictionary: Essential for mod compatibility. Registering a block as oreCopper allows it to be used in any recipe requiring copper ore from other mods.

Resource Handling#

Quadrum does not include a built-in texture editor. Instead, it looks for textures and models in the standard Minecraft asset path under the quadrum namespace.

Texture Paths

To apply textures to your custom objects, place your .png files in a resource pack (or use ResourceLoader) at the following locations:

  • Blocks: assets/quadrum/textures/blocks/<filename>.png
  • Items: assets/quadrum/textures/items/<filename>.png

Model Handling

By default, Quadrum generates a standard cube model for blocks and a flat 2D model for items. If you wish to use custom 3D models, you can provide your own JSON model files in assets/quadrum/models/block or assets/quadrum/models/item. The mod will automatically link the registry name to the corresponding model file.

Mechanics and Recipes#

Quadrum focuses exclusively on the definition of blocks and items. It does not include a built-in recipe maker. To add recipes for your custom Quadrum objects, it is recommended to use a companion mod such as CraftTweaker.

Integration Example

If you create a block named ruby_block.json in Quadrum, you can add a recipe for it in a CraftTweaker script using its registry name: recipes.addShaped(<quadrum:ruby_block>, [[<minecraft:ruby>, <minecraft:ruby>], [<minecraft:ruby>, <minecraft:ruby>]]);