Forge-MDK我的世界模组-实现物品右键飞行(1.19)-day3

创建物品

在物品注册类中新增

public static final RegistryObject<Item> BlogTestItem = ITEMS.register("blog_test_item", () -> new BlogTestItem(new Item.Properties().tab(GodStickModelTab)));

并新建对应的物品类

public class BlogTestItem extends Item {
    public BlogTestItem(Properties p_41383_) {
        super(p_41383_);
    }
}

为物品添加文字简介

输入app后使用回车快速生成重写方法
在这里插入图片描述

@Override
public void appendHoverText(@NotNull ItemStack itemStack, @Nullable Level level, List<Component> componentList, @NotNull TooltipFlag tooltipFlag) {
    super.appendHoverText(itemStack, level, componentList, tooltipFlag);
}

操作componentList添加描述

在方法中加入代码

componentList.add(2, Component.literal("能力1").withStyle(ChatFormatting.GREEN).append(Component.literal(":右键飞行").withStyle(ChatFormatting.RESET).withStyle(ChatFormatting.WHITE)));

代码解析

Component.literal():源码有多层嵌套就不解析了,大概的意思就是括号中的内容就是会展示的内容

.withStyle():编辑展示文字的颜色、字体等,其中的值为ChatFormatting枚举中的值,具体可以看我之前的博客:Forge-MDK我的世界模组-枚举类整理(1.19)

.append():可以实现拼接文字,建议在拼接文字后接.withStyle(ChatFormatting.RESET)重置文字样式,不然可能展示的和你想要的效果不一致

实现主手时右键飞行

输入app后使用回车快速生成重写方法
在这里插入图片描述

@Override
public @NotNull InteractionResultHolder<ItemStack> use(@NotNull Level level, @NotNull Player player, @NotNull InteractionHand interactionHand) {
    return super.use(level, player, interactionHand);
}

添加具体的执行代码

if (level.isClientSide() && interactionHand.equals(InteractionHand.MAIN_HAND)) {
    // 使玩家位移
    player.setDeltaMovement(player.getViewVector(5).x, player.getViewVector(5).y, player.getViewVector(5).z);
    // 设置使用右键的冷却(20tick : 1s)
    player.getCooldowns().addCooldown(this, 1);
}

代码解析

实现右键飞行的要素:客户端在物品在主手的时候使用右键用户位移

level.isClientSide():判断当前是否是客户端操作

interactionHand.equals(InteractionHand.MAIN_HAND):判断是否在主手

player.setDeltaMovement():通过三维设置玩家位移,即通过x、y、z三个维度设置位移

player.getViewVector(5):获取玩家视线坐标,可以使用.x.y.z获取对应的坐标,输入的5作为计算坐标的依据,输入的值越大获取到的结果越远

player.getCooldowns().addCooldown(this, 1):设置使用该物品的冷却,在MC中1秒=20tick,设置的冷却是tick,其中this代表当前物品,冷却时间为1tick

启动项目查看效果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值