Mods / Piles!

Category: #Library #QoL
Author: Pursec
Side: Both
Created: Jan 25th at 1:32 AM
Last modified: Feb 2nd at 5:43 AM
Downloads: 1045
Follow Unfollow 33

Latest file for Various v1.19.x: 1-click install

This a modding library/tool for adding custom piles in the style of coal and charcoal from Vanilla entirely through external content mods. 

By default piles for Rot, Salt, and All types of vanilla Grain and included. 
These piles have now been extracted out to their own mod.
Check out: Granary

This library adds the following relevant classes: BlockPile, BlockEntityPile, & BehaviorPileItem

To add your own pile with this mod installed it is as follows:

  1. Create a new content mod with a blocktype file for each of the piles you wish to create (if they are variant piles such as grain, you only need 1 with variant groups)
  2. Each of these blocktypes assign them the class BlockPile and entityclass BlockEntityPile
  3. (Optional) add an attributes section to the block type to specify parameters of that pile. Any not-specified attribute will be given a default value. If the attributes array is not presnt at all, all values will be default.

    The attributes are as follows:

       "addItemLabel" : "String" or "LangKey",
       "removeItemLabel": "String" or "LangKey",
       "defaultAddQuantity": Integer (default: 2),
       "defaultTakeQuantity": Integer (default: 2),
       "bulkTakeQuantity": Integer (default: 4),
       "maxStackSize": Integer (default: 16),
       "interactSoundPath" : "domain:pathToSound",
       "allowUnstablePlacement": true/false (default: false)
  4.  Assign a texture to the blockPile you created just as you would a vanilla block.
    1. The piles support assignment by face if desired (such as defining a different texture for "up"/the top face and a seperate texture for the sides. If wanting the same texture for all sides use the vanilla "all" key for the textures field
  5. Create a patch adding/appending BehaviorPileItem to the item you wish to pileable, with a properties array pointing to the corresponding code of the newly created blocktype.
    1. If using variants such as for example "grain" they may be defined as "grain-flax" or generically "grain-{type}", in which case you can specify the code of the pile blocktype created as "grainPile-{type}" and make sure that the blocktype for "grainPile" as the corresponding variantgroups array to have different piles per type of grain with only one blocktype file.
    2. For specifying those variant textures simply point the texture-path to the location and use the variant group {type} as you would with normal variant texturing

      The source code and example implementation from the default piles can be found at:

Example of a patch file for grain supporting variantgroups: 
        "file": "game:itemtypes/food/grain",
         "op": "add",
         "path": "/behaviors",
         "value": [
                              "name": "BehaviorPileItem",
                              "properties": { "pileBlockCode": "gespiles:grainPile-{type}"}

Example of grainPile.json
  "code": "grainPile",
  "class": "BlockPile",
  "entityClass": "BlockEntityPile",
  "variantgroups": [
      "code": "type",
      "states": [ "spelt", "rice", "flax", "rye", "amaranth", "sunflower" ]
  "creativeinventory": {
    "general": [ "" ],
    "decorative": [ "" ]
  "behaviors": [
    { "name": "UnstableFalling" }
  "attributes": {
    "addItemLabel": "Add Grain",
    "removeItemLabel": "Remove Grain",
    "allowUnstablePlacement": true
  "blockmaterial": "Soil",
  "lightAbsorption": 0,
  "sidesolid": { "all": false },
  "sideopaque": { "all": false },
  "textures": {
    "all": { "base": "game:block/food/grain/{type}" }
  "replaceable": 100,
  "resistance": 2,
  "collisionbox": {
    "x1": 0,
    "y1": 0,
    "x2": 1,
    "y2": 0,
    "z2": 1
  "selectionbox": {
    "x1": 0,
    "y1": 0,
    "x2": 1,
    "y2": 0,
    "z2": 1
  "drops": [],
  "materialDensity": 600

If you wish to support me do so at:

Version For Game version Downloads Release date Changelog Download 1-click mod install*
v1.2.0 595 Feb 2nd at 5:43 AM Show Install now
v1.1.1 385 Jan 26th at 7:41 PM Show Install now
v1.1.0 65 Jan 25th at 11:41 AM Show Install now

1 Comments (oldest first | newest first)

💬 bringitonwimps, Feb 3rd at 1:00 AM

could you please add a version name to your files so i   can tell if my server is at newest version.  It's really hard to keep it updated.

mods great though, thanks

(edit comment delete)