Skip to content

Arrow Data

Arrow+ uses a datapack registry to define arrow types. You can add new arrows, override, or disable built-in ones entirely.

File Location

data/<namespace>/arrowplus/arrows/<name>.json

Example — adding a "Ruby Arrow":

data/mymod/arrowplus/arrows/ruby.json

JSON Fields

FieldTypeRequiredDefaultDescription
materialItem ID or IngredientThe crafting material. Can be a plain item ID string or an ingredient object (for tags).
baseDamagedoubleBase damage on hit before enchantments. Vanilla flint arrow is 2.0.
colorintARGB tint color as a decimal integer (e.g. -10557722 for diamond blue).
translationKeystringTranslation key for the arrow's display name (e.g. "item.mymod.ruby_arrow").
flamebooleanfalseWhether the arrow sets the target on fire on hit.
gravitydouble0.05Gravity factor on the arrow's arc. Lower = flatter trajectory.
effectsMap<string, int>{}Potion effects applied on hit. Key = effect ID, value = amplifier.
featherItem ID"minecraft:feather"Feather item for crafting. Use "arrowplus:custom_feather" for a custom feather type.
featherDatastring⚠️Required when feather is "arrowplus:custom_feather". Points to the feather data entry (e.g. "arrowplus:gilded").
stickItem ID"minecraft:stick"Stick item for crafting. Use "arrowplus:custom_stick" for a custom stick type.
stickDatastring⚠️Required when stick is "arrowplus:custom_stick". Points to the stick data entry (e.g. "arrowplus:copper").
outputAmountint4Number of arrows produced per craft.

stickData / featherData are required when using custom items

If stick is set to arrowplus:custom_stick, you must also provide stickData. If feather is arrowplus:custom_feather, you must provide featherData. The game will throw an error at load time if either is missing.

Examples

Simple arrow (vanilla ingredients)

json
{
  "material": "minecraft:copper_ingot",
  "baseDamage": 2.2,
  "color": -2855612,
  "translationKey": "item.arrowplus.copper_arrow",
  "flame": false,
  "gravity": 0.05,
  "effects": {},
  "feather": "minecraft:feather",
  "stick": "minecraft:stick",
  "outputAmount": 4
}

Arrow with a custom stick

json
{
  "material": "minecraft:iron_ingot",
  "baseDamage": 2.5,
  "color": -5263441,
  "translationKey": "item.arrowplus.iron_arrow",
  "flame": false,
  "gravity": 0.05,
  "effects": {},
  "feather": "minecraft:feather",
  "stick": "arrowplus:custom_stick",
  "stickData": "arrowplus:copper",
  "outputAmount": 4
}

Arrow with both custom stick and custom feather

json
{
  "material": "minecraft:obsidian",
  "baseDamage": 3.8,
  "color": -13729721,
  "translationKey": "item.arrowplus.obsidian_arrow",
  "flame": false,
  "gravity": 0.05,
  "effects": {},
  "feather": "arrowplus:custom_feather",
  "featherData": "arrowplus:gilded",
  "stick": "arrowplus:custom_stick",
  "stickData": "arrowplus:diamond",
  "outputAmount": 2
}

Arrow using a tag as material

json
{
  "material": "#minecraft:stone_crafting_materials",
  "baseDamage": 1.5,
  "color": -11776183,
  "translationKey": "item.arrowplus.stone_arrow",
  "flame": false,
  "gravity": 0.05,
  "effects": {},
  "feather": "minecraft:feather",
  "stick": "minecraft:stick",
  "outputAmount": 8
}

Flame arrow

json
{
  "material": "minecraft:blaze_rod",
  "baseDamage": 2.5,
  "color": -1497344,
  "translationKey": "item.mymod.blaze_arrow",
  "flame": true,
  "gravity": 0.05,
  "effects": {},
  "feather": "minecraft:feather",
  "stick": "minecraft:stick",
  "outputAmount": 4
}

Lang File

Don't forget to add your translation key to your resource pack:

json
// assets/mymod/lang/en_us.json
{
  "item.mymod.ruby_arrow": "Ruby Arrow"
}

Disabling Built-in Arrows

Use the restrictions list in the Config to disable any built-in arrow by its registry path name.

Arrow+ Wiki