Loading...
Loading...
Create custom items for Hytale including tools, weapons, armor, consumables, and special items. Use when asked to "add a custom item", "create a weapon", "make armor", "add a tool", or "create consumable items".
npx skill4agent add mnkyarts/hytale-skills hytale-custom-itemsmy-plugin/
└── assets/
└── Server/
└── Content/
└── Items/
├── my_sword.item
├── my_armor.item
└── my_tool.itemmy_item.item{
"DisplayName": {
"en-US": "Custom Item"
},
"Description": {
"en-US": "A mysterious custom item"
},
"Icon": "MyPlugin/Icons/custom_item",
"MaxStack": 64,
"Categories": ["MyPlugin:Miscellaneous"],
"Tags": {
"Type": ["Resource"]
}
}| Property | Type | Default | Description |
|---|---|---|---|
| LocalizedString | - | Localized item name |
| LocalizedString | - | Localized description |
| String | - | Inherit from another item |
| String | - | Icon texture path |
| String | - | 3D model for held item |
| Integer | 64 | Maximum stack size |
| Integer | 0 | Durability (0 = infinite) |
| Array | [] | Item category references |
| Object | {} | Category tags |
| Property | Type | Description |
|---|---|---|
| String | Item texture |
| Float | Model scale |
| String | Item animation set |
| String | Held particle effect |
| String | Swing trail effect |
| Object | Light emission settings |
| Property | Type | Description |
|---|---|---|
| Enum | |
| String | Block to place (for placeable items) |
| Object | Interaction type mappings |
| Boolean | Can be dropped |
| Boolean | Lost on player death |
{
"DisplayName": { "en-US": "Mythril Pickaxe" },
"Icon": "MyPlugin/Icons/mythril_pickaxe",
"Model": "MyPlugin/Models/mythril_pickaxe",
"MaxDurability": 1500,
"Rarity": "Rare",
"Tool": {
"Specs": [
{
"GatherType": "Pickaxe",
"Power": 5,
"Quality": 4
}
],
"Speed": 1.5,
"DurabilityLossPerUse": 1,
"Efficiency": 1.2
},
"Tags": {
"Type": ["Tool", "Pickaxe"]
}
}| Property | Type | Description |
|---|---|---|
| Enum | |
| Integer | Mining power level |
| Integer | Material quality level |
| Property | Type | Default | Description |
|---|---|---|---|
| Float | 1.0 | Mining speed multiplier |
| Integer | 1 | Durability cost per block |
| Float | 1.0 | Efficiency multiplier |
| Boolean | false | Drop blocks directly |
| Integer | 0 | Drop multiplier level |
{
"DisplayName": { "en-US": "Shadow Blade" },
"Icon": "MyPlugin/Icons/shadow_blade",
"Model": "MyPlugin/Models/shadow_blade",
"MaxDurability": 500,
"Rarity": "Epic",
"Weapon": {
"Type": "Sword",
"AttackDamage": 12,
"AttackSpeed": 1.6,
"Knockback": 0.4,
"CriticalChance": 0.15,
"CriticalMultiplier": 1.5,
"DurabilityLossOnHit": 1,
"DualWield": false,
"StatModifiers": {
"Strength": 2,
"Speed": 0.1
},
"DamageType": "Slashing",
"Enchantable": true
},
"Trail": "MyPlugin/Trails/shadow_swing",
"Animation": "MyPlugin/Animations/sword",
"Tags": {
"Type": ["Weapon", "Sword", "Melee"]
}
}{
"DisplayName": { "en-US": "Frost Bow" },
"Icon": "MyPlugin/Icons/frost_bow",
"Model": "MyPlugin/Models/frost_bow",
"MaxDurability": 384,
"Weapon": {
"Type": "Bow",
"AttackDamage": 8,
"DrawTime": 1.0,
"ProjectileSpeed": 3.0,
"Projectile": "MyPlugin:FrostArrow",
"Accuracy": 0.95,
"AmmoType": "Hytale:Arrow",
"InfiniteAmmo": false,
"StatModifiers": {
"Dexterity": 1
}
},
"Animation": "MyPlugin/Animations/bow"
}| Type | Description |
|---|---|
| Standard melee |
| Heavy melee |
| Long reach melee |
| Fast melee |
| Blunt melee |
| Ranged, requires ammo |
| Ranged, slower |
| Magic ranged |
| Magic ranged |
| Throwable weapon |
| Type | Description |
|---|---|
| Default damage |
| Cutting damage |
| Stabbing damage |
| Impact damage |
| Fire damage |
| Cold damage |
| Electric damage |
| Arcane damage |
| Toxic damage |
| Ignores armor |
{
"DisplayName": { "en-US": "Dragon Scale Chestplate" },
"Icon": "MyPlugin/Icons/dragon_chestplate",
"Model": "MyPlugin/Models/dragon_chestplate",
"MaxDurability": 528,
"Rarity": "Legendary",
"Armor": {
"Slot": "Chest",
"Defense": 8,
"Toughness": 3,
"DamageResistance": {
"Fire": 0.5,
"Physical": 0.2
},
"StatModifiers": {
"Health": 20,
"FireResistance": 50
},
"SetBonus": {
"SetId": "MyPlugin:DragonScale",
"RequiredPieces": 4,
"Bonuses": {
"FireImmunity": true,
"FlyAbility": true
}
}
},
"Tags": {
"Type": ["Armor", "Chest"]
}
}| Slot | Coverage |
|---|---|
| Helmet |
| Chestplate |
| Leggings |
| Boots |
| Shield |
| Ring, Amulet |
| Property | Type | Description |
|---|---|---|
| Integer | Base armor points |
| Float | Damage reduction scaling |
| Object | Per-damage-type reduction |
| Object | Stat bonuses when worn |
| Object | Multi-piece set bonuses |
| String | Sound on equip |
| String | Active ability reference |
{
"DisplayName": { "en-US": "Healing Berries" },
"Icon": "MyPlugin/Icons/healing_berries",
"MaxStack": 32,
"Utility": {
"Type": "Food",
"ConsumeTime": 1.0,
"Nutrition": 4,
"Saturation": 2.5,
"Effects": [
{
"Effect": "Hytale:Regeneration",
"Duration": 10,
"Amplifier": 1
}
],
"ConsumeSound": "Hytale/Sounds/eat",
"ConsumeParticle": "MyPlugin/Particles/heal"
}
}{
"DisplayName": { "en-US": "Potion of Strength" },
"Icon": "MyPlugin/Icons/strength_potion",
"MaxStack": 16,
"Utility": {
"Type": "Potion",
"ConsumeTime": 0.5,
"Effects": [
{
"Effect": "Hytale:Strength",
"Duration": 180,
"Amplifier": 2
}
],
"RemoveOnUse": true,
"ReturnItem": "Hytale:EmptyBottle"
}
}{
"DisplayName": { "en-US": "Fire Bomb" },
"Icon": "MyPlugin/Icons/fire_bomb",
"MaxStack": 16,
"Utility": {
"Type": "Thrown",
"ThrowSpeed": 1.5,
"Projectile": "MyPlugin:FireBombProjectile",
"RemoveOnUse": true,
"Cooldown": 0.5
}
}{
"DisplayName": { "en-US": "Torch" },
"Icon": "MyPlugin/Icons/torch",
"MaxStack": 64,
"BlockId": "MyPlugin:TorchBlock",
"PlaceSound": "Hytale/Sounds/place_torch"
}{
"DisplayName": { "en-US": "Backpack" },
"Icon": "MyPlugin/Icons/backpack",
"MaxStack": 1,
"Container": {
"Slots": 27,
"AllowNesting": false,
"PickupOnBreak": true
}
}{
"DisplayName": { "en-US": "Glider Wings" },
"Icon": "MyPlugin/Icons/glider",
"MaxDurability": 200,
"Glider": {
"GlideSpeed": 1.2,
"FallSpeed": 0.08,
"Maneuverability": 1.0,
"Model": "MyPlugin/Models/glider_wings",
"DurabilityLossPerSecond": 1
}
}{
"Interactions": {
"Use": "MyPlugin:MyItemUse",
"UseOnBlock": "MyPlugin:MyItemUseOnBlock",
"UseOnEntity": "MyPlugin:MyItemUseOnEntity",
"Attack": "MyPlugin:MyItemAttack"
}
}public class MyItemInteraction extends Interaction {
public static final BuilderCodec<MyItemInteraction> CODEC = BuilderCodec.builder(
Codec.INT.optionalFieldOf("Power", 10)
).constructor(MyItemInteraction::new);
private final int power;
public MyItemInteraction(int power) {
this.power = power;
}
@Override
public InteractionResult interact(InteractionContext context) {
// Custom interaction logic
Player player = context.getPlayer();
player.sendMessage("Used item with power: " + power);
return InteractionResult.SUCCESS;
}
}
// Register in plugin setup
@Override
protected void setup() {
getCodecRegistry(Interaction.CODEC).register(
"MyItemUse",
MyItemInteraction.class,
MyItemInteraction.CODEC
);
}{
"Type": "Shaped",
"Pattern": [
"MMM",
" S ",
" S "
],
"Key": {
"M": { "Item": "MyPlugin:MythrilIngot" },
"S": { "Item": "Hytale:Stick" }
},
"Result": {
"Item": "MyPlugin:MythrilPickaxe",
"Quantity": 1
},
"Category": "MyPlugin:ToolCrafting",
"RequiredBench": "MyPlugin:Forge"
}{
"Type": "Shapeless",
"Ingredients": [
{ "Item": "Hytale:Coal", "Quantity": 1 },
{ "Item": "Hytale:Stick", "Quantity": 1 },
{ "Item": "Hytale:GunPowder", "Quantity": 1 }
],
"Result": {
"Item": "MyPlugin:FireBomb",
"Quantity": 4
},
"Category": "MyPlugin:Alchemy"
}{
"Type": "Smelting",
"Input": { "Item": "MyPlugin:RawMythril" },
"Result": { "Item": "MyPlugin:MythrilIngot" },
"ProcessingTime": 200,
"Experience": 1.0,
"RequiredBench": "Hytale:Furnace"
}{
"DisplayName": {
"en-US": "Staff of Lightning"
},
"Description": {
"en-US": "Channels the power of storms"
},
"Icon": "MyPlugin/Icons/lightning_staff",
"Model": "MyPlugin/Models/lightning_staff",
"MaxStack": 1,
"MaxDurability": 250,
"Rarity": "Epic",
"Weapon": {
"Type": "Staff",
"AttackDamage": 5,
"AttackSpeed": 0.8,
"DamageType": "Lightning",
"Projectile": "MyPlugin:LightningBolt",
"ProjectileSpeed": 5.0,
"ManaCost": 15,
"Cooldown": 1.5,
"StatModifiers": {
"Intelligence": 5,
"MagicDamage": 0.2
}
},
"Particles": "MyPlugin/Particles/electric_aura",
"Light": {
"Level": 5,
"Color": { "R": 0.8, "G": 0.9, "B": 1.0 }
},
"Animation": "MyPlugin/Animations/staff_cast",
"Interactions": {
"Use": "MyPlugin:CastLightning",
"UseCharged": "MyPlugin:CastChainLightning"
},
"Tags": {
"Type": ["Weapon", "Staff", "Magic"],
"Element": ["Lightning"]
}
}@Override
protected void setup() {
// Listen for item pickup
getEntityStoreRegistry().registerSystem(new PickupItemHandler());
// Listen for item drop
getEventRegistry().registerGlobal(DropItemEvent.class, this::onItemDrop);
// Listen for item crafting
getEventRegistry().registerGlobal(CraftRecipeEvent.class, this::onCraft);
}
private void onItemDrop(DropItemEvent event) {
ItemStack stack = event.getItemStack();
if (stack.getItem().getId().equals("MyPlugin:CursedItem")) {
event.setCancelled(true);
event.getPlayer().sendMessage("You cannot drop this cursed item!");
}
}
private void onCraft(CraftRecipeEvent event) {
CraftingRecipe recipe = event.getRecipe();
getLogger().atInfo().log("Player crafted: %s", recipe.getResult().getItem().getId());
}Tool.SpecsGatherTypePowerMaxDurabilityDurabilityLossPerUsereferences/item-stats.mdreferences/item-effects.md