• 【MineBBS社区发展意见征集】

    欢迎参与MineBBS社区调查,助力打造更好Minecraft社区!完成问卷可获赠200金粒,优质回答可额外获得200金粒(限5名),快来参与吧!【点击参与】

资源图标

资源 LKtpr——真随机传送 || 多自定义选项 1.1.2

请登录后获取

出众年华

【Lv:4】

正式会员
注册
2021/10/08
消息
417
金粒
4,016金粒
出众年华 提交新资源:

LKtpr——真随机传送 || 多自定义选项 - 一个能随机传送到洞穴或任意地方

配置路径:./plugins/LKtpr/

JSON:
        "InvincibleTime": 15,//无敌时间
        "EconomyType": 1,//经济类型 1:llmoney 2:Score
        "scoreboard": "money",//计分板名称
        "tpCooldown": 10,//传送冷却时间
        "hazardousBlock": ["minecraft:lava", "minecraft:flowing_lava", "minecraft:magma"],//危险方块"
        "tpTop": false,//传送至最高点
        "Overworld": {
            enable: true,
            money: 10,
            minX: -10000, maxX: 10000,
            minZ: -10000, maxZ: 10000
        }...

阅读关于此资源更多信息...
 
"tpCooldown": 10,//传送冷却时间 单位是毫秒 还是秒?
 
插件是否有性能问题,我服务器已经因为两次有人执行tpr指令导致服务器假死了,我看了,服务器每次假死之前的一秒都有人执行tpr指令
 
插件是否有性能问题,我服务器已经因为两次有人执行tpr指令导致服务器假死了,我看了,服务器每次假死之前的一秒都有人执行tpr指令
确实会出现问题,不好排查
 
确实会出现问题,不好排查
在分析你提供的代码时,我发现几个可能导致服务器假死的原因。以下是一些可能的问题和改进建议:

1. 无限循环​

在 tpr 函数中,有一个 setInterval 会不断尝试找到一个合适的传送位置。如果找不到合适的位置,这个 setInterval 会一直运行,导致服务器假死。你需要确保在找不到合适位置时能够及时退出这个循环。

2. 频繁的 setTimeout 和 setInterval​

频繁地创建和清除 setTimeout 和 setInterval 可能会导致性能问题。你可以考虑使用更高效的方式来管理冷却时间和传送过程。

3. 递归调用​

在 tpr 函数中,checkRdPosArray 被调用后会立即清除 setInterval,但在某些情况下,checkRdPosArray 可能会调用 startInterval,这会导致 playerHurt 和 pageTimer 的状态混乱。虽然这不一定会导致假死,但可能会引发其他问题。

4. 未处理的异常​

在 setInterval 的回调函数中,有一个 try-catch 块,但如果没有找到合适的传送位置,rdPosArray 仍然可能为空,导致 checkRdPosArray 失败。

改进建议​

1. 限制 setInterval 的次数​

你可以在 setInterval 中添加一个计数器,限制尝试次数,如果超过这个次数仍然找不到合适的位置,就退出循环。

这是chatgpt给出的结论
 

在线会员

  • oliverhu
  • ROT
  • hopert
  • 李 天增
  • 逍遥(鸿蒙逍遥道尊)
  • zyw4259
  • LW
  • 恬情
  • 合成天下精品大果
  • yanxingyu
  • 红烧鹅大王
  • zhanglingyu
  • Hao_Se
  • 吃鱼的猫
  • lian2
  • 眠悠子Miyoz
  • ovouo
  • 大狗
  • shu0shu
  • mochenmoli
...和 72 更多。
后退
顶部 底部