= 创作分享 =
编程开发
怎么改武器的伤害类型?
jsghsgh

怎么改武器的伤害类型?

jsghsgh 于 2022-7-6 09:49 ( 2年前 ) [复制链接] [只看楼主] [打印]
2089 10
想把弓箭的伤害类型改成虚空伤害
1.12及以前的怎么弄?
被SRP的怪恶心到了所以想把武器类型改成虚空伤害


发表于 2022-7-6 09:49:20 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

回复 | 举报

该帖共收到 11 条回复!
jsghsgh
发表于 2022-7-6 09:50:02 | 只看该作者

回复 | 举报

jsghsgh
@ZLL2
过来一下

点评

建议问问做模组的,这个我真不清楚  发表于 2022-7-6 13:36
发表于 2022-7-6 09:55:28 | 只看该作者

回复 | 举报

That_DogNugget
持有attribute,或者改NBT,Enchantment下面写个sharpness,level255...
发表于 2022-12-21 11:41:34 | 只看该作者

回复 | 举报

仙勾子
在LivingAttackEvent里检查是否用弓箭攻击,用hurt()造成虚空伤害
现在你的箭矢甚至能射杀创造模式的玩家!如图
未死之前,终有希望
发表于 2023-1-8 14:24:35 | 只看该作者

回复 | 举报

仙勾子
本帖最后由 xm94732568960 于 2023-1-8 14:38 编辑

这里写错了,会崩溃

屏幕截图 2023-01-08 143034.png (66.6 KB, 下载次数: 980)

屏幕截图 2023-01-08 143034.png
未死之前,终有希望
发表于 2023-1-8 14:33:13 | 只看该作者

回复 | 举报

仙勾子
本帖最后由 xm94732568960 于 2023-1-8 14:46 编辑

这么写更好,可以继承玩家使用箭矢的攻击判定
public static void on(LivingAttackEvent e){
    DamageSource source=e.getSource();
    if (source==null)return;
    Entity target=e.getEntity();
    if (target.getLevel()instanceof ClientLevel)return;
    Entity attacker=source.getEntity();
    Entity useEntity=source.getDirectEntity();
    if (useEntity instanceof Arrow){
        source.bypassArmor().bypassInvul();
        try {
            Field f=DamageSource.class.getDeclaredField("msgId");
            f.setAccessible(true);
            f.set(source,"outOfWorld");
        }catch (Exception exception){
        }
    }
}
未死之前,终有希望
发表于 2023-1-8 14:36:53 | 只看该作者

回复 | 举报

仙勾子
我写的是1.19.2的,1.12.2的稍作改动就行了
未死之前,终有希望
发表于 2023-1-8 14:46:20 | 只看该作者

回复 | 举报

OceanDragon
xm94732568960 发表于 2023-1-8 14:24
在LivingAttackEvent里检查是否用弓箭攻击,用hurt()造成虚空伤害
现在你的箭矢甚至能射杀创造模式的玩家! ...

大佬就是大佬
发表于 2023-1-8 23:37:04 | 只看该作者

回复 | 举报

OceanDragon
xm94732568960 发表于 2023-1-8 14:46
我写的是1.19.2的,1.12.2的稍作改动就行了

1.12.2貌似没有hurt
发表于 2023-1-8 23:38:02 | 只看该作者

回复 | 举报

12下一页
百科目前不允许匿名发帖哦~ 请先 [ 登陆 ][ 注册 ] 吧~

本版积分规则

发新帖
  • 回复
  • 点评
  • 评分

[ MC百科(mcmod.cn) 除另有声明,所有开放公共编辑的内容均使用 BY-NC-SA 3.0 协议 ]

Minecraft百科CC协议
快速回复 返回顶部 返回列表