Skip to content
Ferdinand Calo edited this page Dec 22, 2020 · 19 revisions
# Data Overview
DataType: BLOCK
File Ending: .block
Has Own Item: yes
Has TMT Model: yes / optional

Config location: ./assets/<packid>/config/blocks/<here>.block
Model location: net.fexcraft.mod.addon.<packid>.models.block.<here> OR CUSTOM

Blocks have 2 main features in FVTM. One is being decoration and the
other is being functional, that means.. Machines in most cases.

While the "functional" part has to be implemented yet you can already
create decorational blocks, see the info bellow!

The functional part has been implemented, better then before.
After reading through this page check out MultiBlock!

NOTE: FVTM provides a few base behaviours for decorational blocks.
It is not intended to add new base classes for any possible smallest
option, if you have an idea for a general wide use base class, you can
suggest it. But if you want a single-use class, you can aswel code such
yourself, there should be enough tutorials around. Remember: if you
followed the guide in this wiki with FVTM-PDK, your pack is also a valid mod!
You can add anything else a mod can have into your pack/mod.

A few examples are at GEP!


Here the overview of the Fields in a block json config file:

  • RegistryName - the registryname, should be packid:block_id
  • Addon - the addon the block is in, e.g. fvtm:gep
  • Name - optional name field
  • Description - can be either a string (supports line breaks \n) or string array
  • Texture - optional, one NamedResourceLocation - the vehicle's texture
  • Textures - optional array of NamedResourceLocations - the vehicle's textures
  • Primary - optional, default primary RGB color
  • Secondary - optional, default secondary RGB color
  • Functional - optional, default false, if this block is functional
  • Decoration - optional, default true, if this block is a decorational one
    • both will be removed next version, a block is functional automatically by being
      a multi-block, opposite otherwise
  • MultiBlock - optional, declares this as a multi-/functional-block, see MultiBlock
  • MultiSubBlock - optional, declares this block which is NOT a core (for a core block
    use MultiBlock value) to require a TileEntity, to e.g. give pipe access to an inventory.
  • MaxItemStackSize - optional, max item stack size of this block's item
  • ItemBurnTime - optional, burn time of this block's item (in ticks)
  • OreDictionary - optional registration into the Forge OreRegistry
  • Model - the Model, check the wiki page on how to define it,
    do not add this field or set it as "null" to use vanilla JSON models
    or FVTM models in "static" (no animation/colors/etc) mode
    note that you need to make a blockstate file for each such block too
  • AABBs - optional, object with AlixAlignedBB(s) listed for the block's
    states, if leaving this out, the block will be a FULL BLOCK by default,
    example usage:
      "AABBs":{
      	"normal": [ 0.0, 0.0, 0.0, 1.0, 0.5625, 1.0 ],
          "facing=north": [ 0.0, 0.0, 0.0, 1.0, 0.75, 1.0 ]
      },
    The pattern is [ x0, y0, z0, x1, y1, z1 ] , first the lower corner then
    the upper corner. NOTE You can just set a "normal" one and it will
    apply to any state, or states which are not defined.
    NEW: you can set alternative AABBs for collision or selection, just
    prepend "selection#" or "collision#"! Examples:
    "selection#normal":[], "collision#facing=south":[]
  • BlockType - the BlockType for this block, general behaviour and such
    • GENERIC_4ROT - normal block, with 4 rotations (north/west/south/east)
    • GENERIC_16ROT - normal block, with 16 rotations (similar to signs)
    • GENERIC_ROAD - normal block, with 16 heights,
      similar to FVTM Asphalt and usable as replacement
  • Material - optional, the Material for this block, check vanilla materials for info
  • MapColor - optional, the MapColor for this block, check vanilla mapcolor for info
  • Hardness - optional, see vanilla block hardness
  • LightLevel - optional, see vanilla light level
  • Resistance - optional, see vanilla explosion resistance
  • LightOpacity - optional, see vanilla light opacity
  • HarverestToolClass - optional, e.g. pickaxe, axe, see vanilla
  • HarverestToolLevel - optional, see vanilla,
  • CollisionDamage - optional, if a player/entity should receive damage
    upon collision, and how much (float value), like cactuses
  • WebLike - optional, if the player/entity should be slowed down like
    by a (vanilla) cobweb block
  • FullBlock - optional, if this is a full 1x1x1 block, default true
  • FullCube - optional, if this is a "solid" block (see vanilla), default true,
  • Opaque - optional, default false,
  • Invisible - optional, makes the model not render / no model, default false
    (may be useful for MultiBlock sub-blocks)
  • HideItem - optional, hides the block's item from the creative tab, default false

This datatype creates an own Item, as such you will need to create a ItemModel JSON and supply a texture,
this is a vanilla/forge process, as such customisation and other is not matter of FVTM.
The expected path for the model will be /assets/<packid>/models/item/<blockid>.json
The usual path for the texture is /assets/<packid>/textures/items/<blockid>.png
For more info how the JSON should look, either take a look at GEP or vanilla minecraft.


This datatype OVERRIDES (unless changed in config) the default Item Rendering, as such the
vanilla JSON model may not get displayed, but instead a 3D representation if this Block's Model will be. Exception are VanillaJSON model based Blocks.

Clone this wiki locally