本文主要是介绍Minecraft 1.18.1、1.18.2模组开发 04.工具物品,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
我们本次在1.18.1中制作属于自己的工具物品
1.在模组包下新建一个items文件夹 -> 在文件夹中新建一个CustomItemTier.java文件(表示我们的自定义工具等级)
在原版的Minecraft中我们的工具等级大致为木头 -> 石头 -> 铁 -> 金 -> 钻石 -> 下界合金
:
每个工具等级的参数从左到右分别为:等级、耐久、挖掘速度、攻击力、附魔值(越大附到的平均属性越好)。
在CustomItemTier.java中编辑:
package com.joy187.re8joymod.items;import java.util.function.Supplier;import net.minecraft.util.LazyLoadedValue;
import net.minecraft.world.item.Items;
import net.minecraft.world.item.Tier;
import net.minecraft.world.item.crafting.Ingredient;public enum CustomItemTier implements Tier{//这是我们的自定义的工具等级,可以往下续写...exampleToolTire(10, 120, 8.0F, 10.0F, 100,() -> {return Ingredient.of(Items.DIAMOND);}),PreciseAttack(3, 2, 8.0F, 10.0F, 100,() -> {return Ingredient.of(Items.DIAMOND);});private final int level;private final int uses;private final float speed;private final float damage;private final int enchantmentValue;private final LazyLoadedValue<Ingredient> repairIngredient;private CustomItemTier(int p_43332_, int p_43333_, float p_43334_, float p_43335_, int p_43336_, Supplier<Ingredient> p_43337_) {this.level = p_43332_;this.uses = p_43333_;this.speed = p_43334_;this.damage = p_43335_;this.enchantmentValue = p_43336_;this.repairIngredient = new LazyLoadedValue<>(p_43337_);}public int getUses() {return this.uses;}public float getSpeed() {return this.speed;}public float getAttackDamageBonus() {return this.damage;}public int getLevel() {return this.level;}public int getEnchantmentValue() {return this.enchantmentValue;}public Ingredient getRepairIngredient() {return this.repairIngredient.get();}// @javax.annotation.Nullable public net.minecraft.tags.Tag<net.minecraft.world.level.block.Block> getTag() { return net.minecraftforge.common.ForgeHooks.getTagFromVanillaTier(this); }
}
2.在items文件夹下新建一个.java文件用于制作一把剑(ItemPreAttack.java为例):
ItemPreAttack.java
package com.joy187.re8joymod.items;import com.joy187.re8joymod.Main;import net.minecraft.world.item.Item;
import net.minecraft.world.item.SwordItem;//我们要做一把剑,就继承原版的剑
public class ItemPreAttack extends SwordItem{public ItemPreAttack() {//各参数:工具等级,伤害,攻速,放在哪个物品栏super(CustomItemTier.PreciseAttack,1000000001,-2,new Item.Properties().tab(Main.TUTORIAL_TAB));}
}
3.在ItemInit中添加物品的注册信息:
public static RegistryObject<Item> PREATTACK = register("preciseattack",()->{return new ItemPreAttack();});
4.在resources/assets/lang文件夹中的en_us.json添加物品语言信息:
"item.re8joymod.preciseattack": "Precise Strike",
在assets/models/item中新建我们物品的模型.json文件(命名与之前ItemInit.java中的名称字符串保持一致):
preciseattack.json
{"parent": "item/handheld","textures": {"layer0": "re8joymod:item/special_strike"}
}
在textures/item中添加我们的贴图文件,名称与上面.json中layer0中的名称保持一致:
注:其他工具的做法完全类似,只不过在第二步中继承不同工具罢了(斧头:AxeItem,镐子:PickaxeItem,锄头:HoeItem,铲子:ShovelItem)
5.刷新项目,启动游戏测试
我们的这把剑就成功显示了!
这篇关于Minecraft 1.18.1、1.18.2模组开发 04.工具物品的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!