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>.jsonExample — adding a "Ruby Arrow":
data/mymod/arrowplus/arrows/ruby.jsonJSON Fields
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
material | Item ID or Ingredient | ✅ | — | The crafting material. Can be a plain item ID string or an ingredient object (for tags). |
baseDamage | double | ✅ | — | Base damage on hit before enchantments. Vanilla flint arrow is 2.0. |
color | int | ✅ | — | ARGB tint color as a decimal integer (e.g. -10557722 for diamond blue). |
translationKey | string | ✅ | — | Translation key for the arrow's display name (e.g. "item.mymod.ruby_arrow"). |
flame | boolean | ✅ | false | Whether the arrow sets the target on fire on hit. |
gravity | double | ✅ | 0.05 | Gravity factor on the arrow's arc. Lower = flatter trajectory. |
effects | Map<string, int> | ✅ | {} | Potion effects applied on hit. Key = effect ID, value = amplifier. |
feather | Item ID | ✅ | "minecraft:feather" | Feather item for crafting. Use "arrowplus:custom_feather" for a custom feather type. |
featherData | string | ⚠️ | — | Required when feather is "arrowplus:custom_feather". Points to the feather data entry (e.g. "arrowplus:gilded"). |
stick | Item ID | ✅ | "minecraft:stick" | Stick item for crafting. Use "arrowplus:custom_stick" for a custom stick type. |
stickData | string | ⚠️ | — | Required when stick is "arrowplus:custom_stick". Points to the stick data entry (e.g. "arrowplus:copper"). |
outputAmount | int | ✅ | 4 | Number 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.