我的世界pe吧 关注:301,105贴子:4,299,769

【JS教程向】2020年还有哪些js钩子函数可以用

只看楼主收藏回复

大家好,我是.bb13同学.
大概几年没来贴吧了,
如今已经2020年了
再回来看看minecraftpe吧,
看了看谷歌市场,
呦,
启动器还在更新呢,
正好寒假不知道玩啥好,
更新了一下我的世界和启动器,
测试了一下js函数的各个功能是否正常,
出乎意料的是,貌似除了红石更新的函数无法触发以外,好像功能都能正常运行。
于是趁贴吧没人科普,赶紧水...赶紧发一个帖子科普一下js有哪些函数还可以用,
希望这个寒假能做点东西娱乐娱乐,
充实一下这枯燥无味的寒假,嘿嘿!
————————————分割线——————————————


IP属地:上海来自Android客户端1楼2020-01-11 13:23回复
    目前我使用的是
    minecraft版本为1.14.1.5
    blocklauncher版本为1.27与1.14配套
    目前钩子函数一共有21个
    我只介绍其中20个,还有一个是红石更新钩子,目前不知道它怎么触发或者是否有用,之后再补上吧。


    IP属地:上海来自Android客户端2楼2020-01-11 13:23
    回复
      第一个
      function useItem(x, y, z, itemid, blockid, side, itemDamage, blockDamage){}
      .
      这个函数老js玩家应该特别熟悉了,
      每当玩家点击一个方块时触发
      里面的每个单词都是一个变量
      .
      x y z分别表示被点击方块的坐标
      itemid为点击方块时玩家手里的物品的id
      blockid为点击的方块的id
      .
      side为点击方块的方向
      (0为从方块下方点击 1为从方块上方点击 2 3 4 5均为从方块的侧面点击)
      .
      itemDamage为点击方块时玩家手里的物品的特殊值(耐久值之类的)
      blockDamage为点击的方块的特殊值
      如果使用preventDefault()则可以做到让玩家无法点击方块


      IP属地:上海来自Android客户端3楼2020-01-11 13:25
      回复
        利用这个原理,可以做一个非常简单的阻止点击事件js


        IP属地:上海来自Android客户端4楼2020-01-11 13:26
        回复
          第二个
          function attackHook(attacker, victim)
          也是老函数,
          当有生物攻击另一个生物的时候触发
          attacker为攻击者
          victim为受攻击者
          如果使用preventDefault()则可以做到停止攻击,比如玩家攻击生物或者生物攻击玩家的动作


          IP属地:上海来自Android客户端5楼2020-01-11 13:27
          回复
            第三个
            破坏方块三件套
            function startDestroyBlock(x, y, z, side){}
            startDestroyBlock为开始破坏方块的时候触发
            .
            function continueDestroyBlock(x, y, z, side, progress){}
            continueDestroyBlock为正在破坏方块的时候触发
            .
            function destroyBlock(x, y, z, side){}
            destroyBlock为破坏完一个方块后触发
            .
            以前只有destroyBlock现在居然拓展成了三个
            .
            .
            其中x y z为被破坏方块的坐标
            side为你破坏方块的方向,与上面点击方块方向值类似
            (0为从方块下方破坏 1为从方块上方破坏 2 3 4 5均为从方块的侧面破坏)
            .
            progress为破坏方块的进度,为0到1之间的小数
            .
            可以精确你破坏到方块的0.3啦还是0.4啦
            .
            如果使用preventDefault()则可以做到停止你当前破坏方块的行为


            IP属地:上海来自Android客户端6楼2020-01-11 13:29
            回复
              第四个
              也是个老函数了
              function deathHook(attacker, victim){}
              .
              死亡检测钩子函数
              当有生物死亡时触发
              .
              attacker为攻击者(可以判断死因)
              victim为死者
              .
              有趣的是官方说这个函数也可以用preventDefault()
              .
              但是本人实测并没有什么效果
              所以希望大家如果测出来了什么效果能补充一下,感激不尽



              IP属地:上海来自Android客户端7楼2020-01-11 13:33
              回复
                第五个
                爆炸钩子函数
                function explodeHook(entity, x, y, z, power, onFire){}
                .
                艺术就是...咳咳
                .
                entity为爆炸物(话说用爆炸函数爆炸出来的话爆炸物是什么???)
                .
                x y z 分别为爆炸的坐标
                .
                power为爆炸等级
                onFire为是否附带火焰
                .
                这个值为布尔值,返回true或者false



                IP属地:上海来自Android客户端8楼2020-01-11 13:34
                回复
                  第六个
                  对话框钩子两件套
                  都是当有人在对话框打字发言的时候触发
                  .
                  function chatHook(str){}
                  .
                  当有人发言时str是发言内容
                  .
                  .
                  function serverMessageReceiveHook(str){}
                  .
                  当有人发言时str是发言人的名字
                  这两个函数均可被preventDefault()阻止
                  所以可以根据选择性的阻止发言内容或者不同发言人的发言


                  IP属地:上海来自Android客户端9楼2020-01-11 13:36
                  回复
                    第七个
                    经验等级检测两件套
                    .
                    function playerAddExpHook(player, experienceAdded){}
                    .
                    当获得经验球的时候触发
                    .
                    player为获得经验的玩家
                    experienceAdded貌似是获得经验球的数量(大概
                    .
                    .
                    function playerExpLevelChangeHook(player, levelsAdded){}
                    .
                    当玩家等级变化的时候触发
                    .
                    player为变化等级的玩家
                    levelsAdded为变化的级数
                    .
                    这两个也可以通过preventDefault()阻止


                    IP属地:上海来自Android客户端10楼2020-01-11 13:37
                    回复
                      第八个
                      受伤检测
                      .
                      function entityHurtHook(attacker, victim, halfhearts){}
                      当有生物受到伤害时触发
                      .
                      attacker为伤害原因,或者叫攻击者
                      victim为受到伤害的对象
                      halfhearts为伤害值
                      .
                      同样该伤害也可被preventDefault()阻止


                      IP属地:上海来自Android客户端11楼2020-01-11 13:39
                      回复
                        接下来就是不能使用preventDefault()的钩子函数
                        第九个
                        撞击物实体检测
                        .
                        function projectileHitEntityHook(projectile, targetEntity)
                        当撞击物撞击实体时触发
                        例如弓箭射中生物或者雪球射中生物时触发
                        .
                        projectile为撞击物
                        targetEntity为被撞击的实体
                        .
                        .
                        function projectileHitBlockHook(projectile, blockX, blockY, blockZ, side)
                        当撞击物撞击方块时触发
                        .
                        projectile为撞击物
                        blockX, blockY, blockZ分别为被撞击方块的xyz坐标
                        side为被撞击方向
                        跟上类似


                        IP属地:上海来自Android客户端12楼2020-01-11 13:40
                        回复
                          第十个
                          吃检测
                          function eatHook(hearts, saturationRatio){}
                          当玩家吃东西的时候触发
                          .
                          hearts为该食物可以增加的饥饿值
                          (正常玩家吃饱的情况下有20饥饿值,完全饿的情况下为0)
                          .
                          saturationRatio为该食物增加的饱和比
                          .
                          关于饱和比我参考了https://minecraft-zh.gamepedia.com/%E9%A5%A5%E9%A5%BF#.E6.9C.BA.E5.88.B6
                          的文献
                          .
                          食物饱和度(foodSaturationLevel):它表示玩家目前的饱和度等级,决定了饥饿度下降的速度,吃不同种类的食物补充的饱和度不同。这是一项隐藏的食物变量,这个变量的值是无法超过食物水平的,其初始值为5。当饱和度降至0时,饥饿条会规律地颤抖。


                          IP属地:上海来自Android客户端13楼2020-01-11 13:42
                          回复
                            第十一个
                            生物加载移除检测
                            function entityAddedHook(entity)
                            当生物加载/生成的时候会触发
                            .
                            entity为被生成/加载的实体
                            .
                            需要注意的是进入游戏的时候旁边的生物都会被加载一遍
                            .
                            function entityRemovedHook(entity)
                            当生物移除的时候触发
                            .
                            entity为被移除的实体
                            .
                            .


                            IP属地:上海来自Android客户端14楼2020-01-11 13:42
                            回复
                              第十二个
                              加载游戏检测
                              function newLevel(){}
                              当进入存档时触发
                              .


                              IP属地:上海来自Android客户端15楼2020-01-11 13:43
                              回复