开启辅助访问     
收藏本站

站内搜索

搜索

Minecraft(我的世界)苦力怕论坛

[游戏相关] 如何实现伤害随机数

 发表于 2026-1-18 01:02:19|显示全部楼层|阅读模式 IP:江苏省
15铁粒
我在开发一个附加包,考虑实现一个功能:当使用武器攻击时,造成给定数字范围内随机伤害,或者给定数字范围内的附加伤害,有没有尽可能简单的实现方法

最佳答案

查看完整内容

脚本用自定义组件实现很容易,但前提是要会这个东西,比如: import { world, system } from "@minecraft/server"; system.beforeEvents.startup.subscribe((ini) => { ini.itemComponentRegistry.registerCustomComponent("gm:damage_in_range", {onHitEntity: (h, p) => { const paras = p.params const inidam = paras.min+Math.random()*(paras.max-paras.min) const uplvl = (h.attackingEntity. ...
苦力怕论坛,感谢有您~
 发表于 2026-1-18 01:02:20|显示全部楼层 IP:黑龙江省
本帖最后由 冥王大大 于 2026-1-18 17:02 编辑

脚本用自定义组件实现很容易,但前提是要会这个东西,比如:
import { world, system } from"@minecraft/server";
system.beforeEvents.startup.subscribe((ini) => {
    ini.itemComponentRegistry.registerCustomComponent("gm:damage_in_range", {onHitEntity: (h, p) => {
        const paras = p.params
        const inidam = paras.min+Math.random()*(paras.max-paras.min)
        const uplvl = (h.attackingEntity.getEffect("strength")?.amplifier??-1)+1
        const downlvl = (h.attackingEntity.getEffect("weakness")?.amplifier??-1)+1
        const sharplvl = h.itemStack.getComponent("minecraft:enchantable")?.getEnchantment("sharpness")?.level??0
        let moddam = (1.3**uplvl)*inidam*(0.8**downlvl)+Math.floor(1.25*sharplvl)
        if (h.hitEntity.getComponent("minecraft:type_family").hasTypeFamily("arthropod")) {
            moddam = moddam+Math.floor(2.5*(h.itemStack.getComponent("minecraft:enchantable")?.getEnchantment("bane_of_arthropods")?.level??0))
        }
        if (h.hitEntity.getComponent("minecraft:type_family").hasTypeFamily("undead")) {
            moddam = moddam+Math.floor(2.5*(h.itemStack.getComponent("minecraft:enchantable")?.getEnchantment("smite")?.level??0))
        }
        if (h.hitEntity.isInWater) {
            moddam = moddam+Math.floor(2.5*(h.itemStack.getComponent("minecraft:enchantable")?.getEnchantment("impaling")?.level??0))
        }
        h.hitEntity.applyDamage(moddam, {cause: "entityAttack", damaingEntity: h.attackingEntity})

    }});

});
武器(剑)的JSON:

  1. {
  2.   "format_version": "1.21.90",
  3.   "minecraft:item": {
  4.     "description": {
  5.       "identifier": "namespace:test_sword",
  6.       "menu_category": {
  7.         "group": "minecraft:itemGroup.name.sword",
  8.         "category": "equipment"
  9.       }
  10.     },
  11.     "components": {
  12.       "minecraft:icon": {
  13.         "textures": {
  14.           "default":"stick"
  15.         }
  16.       },
  17.       "minecraft:durability": {
  18.         "max_durability": 372,
  19.         "damage_chance": {
  20.           "min": 20,
  21.           "max": 60
  22.         }
  23.       },
  24.       "minecraft:hand_equipped": true,
  25.       "minecraft:can_destroy_in_creative": false,
  26.       "minecraft:max_stack_size": 1,
  27.       "minecraft:mining_speed": 1,
  28.       "minecraft:digger": {
  29.         "use_efficiency": true,
  30.         "destroy_speeds": [
  31.           {
  32.             "block": "minecraft:web",
  33.             "speed": 15
  34.           },
  35.           {
  36.             "block": "minecraft:bamboo",
  37.             "speed": 100
  38.           }
  39.         ]
  40.       },
  41.       "gm:damage_in_range": {
  42.         "min": 1,
  43.         "max": 10
  44.       }
  45.     }
  46.   }
  47. }
复制代码

需要注意,玩家是有基础伤害的,这个只是在玩家的基础伤害上加额外伤害,模拟伤害可能跟游戏逻辑有出入
2#2026-1-18 01:02:20回复收起回复
苦力怕论坛,感谢有您~
回复

使用道具举报

 楼主|  发表于 2026-1-18 19:58:11|显示全部楼层 IP:江苏省

为什么苦力怕论坛变了?

冥王大大 发表于 2026-1-18 17:00
脚本用自定义组件实现很容易,但前提是要会这个东西,比如:
import { world, system } from "@minecraft/s ...

了解!这大概是用javaScript写了一个自定义组件,来使得具有该组件的物品在左键攻击实体之后发生造成伤害事件....如果前提是我不会(事实上确实如此)我还想学,我该从哪里开始。
3#2026-1-18 19:58:11回复收起回复
苦力怕论坛,感谢有您~
回复

使用道具举报

 发表于 2026-1-18 23:49:14 来自手机|显示全部楼层 IP:黑龙江省
HuaV 发表于 2026-1-18 19:58
了解!这大概是用javaScript写了一个自定义组件,来使得具有该组件的物品在左键攻击实体之后发生造成伤害 ...

这个帖子里面有官方文档和Javascript的文档,建议从官方文档的内容出发,再逐步学里面涉及到的JS语句。教程板块还有很多针对SAPI的教程,你可以参考一下
4#2026-1-18 23:49:14回复收起回复
苦力怕论坛,感谢有您~
回复

使用道具举报

本版积分规则

本站
关于我们
联系我们
坛史纲要
官方
哔哩哔哩
技术博客
下载
网易版
安卓版
JAVA
反馈
意见建议
教程中心
更多
捐助本站
QQ群
QQ群

QQ群

访问手机版

访问手机版

手机版|小黑屋|系统状态|klpbbs.com

| 由 木韩网络 提供支持 | GMT+8, 2026-2-3 07:53

声明:本站与Mojang以及微软公司没有从属关系

Powered by Discuz! X3.4