Minecraft(我的世界)中文论坛

 找回密码
 注册(register)

!header_login!

只需一步,立刻登录

查看: 1000|回复: 7

[技巧教程] 服务器使用行为包防熊教程

[复制链接]
超凶猫 当前离线
积分
466
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2018-11-3
查看详细资料

协同作者

发表于 2020-8-26 01:32:58 | 显示全部楼层 |阅读模式

您尚未登录,立即登录享受更好的浏览体验!

您需要 登录 才可以下载或查看,没有帐号?注册(register)

x
本帖最后由 超凶猫 于 2020-12-18 11:47 编辑
这是一个给服务器使用行为包防熊的教程
本教程不包含行为包基础教程


教程针对使用基岩版专用服务端(BDS)以及其衍生第三方服务端。
我搞不懂这个论坛的编辑特性,只能用暴力排版了。


你没看错,行为包确实可以防熊,甚至可以防挂。但效果当然比不上插件,那为什么我还会做这个教程,因为行为包有他特殊的定位,而且还好玩!
来列出一下行为包与插件防熊的优劣。
  • 插件:
    优:功能齐全,效果好。
    劣:更新速度慢,每个版本都得更新。
  • 行为包:
    优:兼容性好,毕竟是官方的东西;跨大版本兼容,不用经常更新;只需BDS即可使用;无需学习写代码,高度自定义可行性。
    劣:功能少,远不及插件(毕竟行为包本来就不是搞这个的)。
由此可以得出:行为包虽然功能少点,但是可靠性比插件大得多,可以作为插件的备用,在mc有新版本的时候,插件往往需要两三天甚至一周来更新,期间如果强行更新服务器会导致服务器无保护状态,这时候行为包就排上用场了,还能你创造抢先一步的服务器宣传机会。

官方给的示例行为包内包含了一些html文件,以下简称官方文档。

--------基础篇,纯实体修改:

原文:

首先打开entities/player.json
最简单的防熊,使用组件
"minecraft:hurt_on_condition","minecraft:despawn","minecraft:block_sensor","minecraft:player.level"等配合过滤表,具体使用方法请查看官方文档。
"minecraft:hurt_on_condition":配合过滤表(Filters)实现满足某条件就给予某伤害。
原版如下:
  1. "minecraft:hurt_on_condition": {
  2.         "damage_conditions": [
  3.           {
  4.             "filters": { "test": "in_lava", "subject": "self", "operator": "==", "value": true },
  5.             "cause": "lava",
  6.             "damage_per_tick": 4
  7.           }
  8.         ]
  9. }
复制代码
在"damage_conditions"中增加项目,"cause"是伤害类型,有哪些可以查文档,"filters"过滤表就按你所希望的效果来做,比如拿着基岩,过滤表里的"has_equipment"类型比命令更好用,他支持所有方块,包括命令里没有的折跃门等。
"has_ability"可以检测实体拥有的“能力”,具体查文档。比如创造模式的玩家就拥有:mayfly、instabuild、invulnerable,飞行中会拥有flying,walkSpeed、flySpeed、lightning效果不明。例子:
  1. "minecraft:hurt_on_condition": {
  2.           "damage_conditions": [
  3.             {
  4.               "filters": { "test": "in_lava", "subject": "self", "operator": "==", "value": true },
  5.               "cause": "lava",
  6.               "damage_per_tick": 4
  7.             },
  8.             {
  9.               "filters": {
  10.                 "any_of": [
  11.                   { "test": "has_ability", "value": "noclip" },
  12.                   { "test": "has_ability", "value": "instabuild" },
  13.                   {
  14.                     "all_of": [
  15.                       {
  16.                         "any_of": [
  17.                           { "test": "has_ability", "value": "flying" },
  18.                           { "test": "has_ability", "value": "mayfly" },
  19.                           { "test": "has_ability", "value": "flySpeed" }
  20.                         ]
  21.                       },
  22.                       { "test": "has_tag", "operator": "not", "value": "can_fly" }
  23.                     ]
  24.                   },
  25.                   { "test": "has_ability", "value": "walkSpeed" },
  26.                   { "test": "has_equipment", "value": "minecraft:invisibleBedrock" },
  27.                   { "test": "has_equipment", "value": "minecraft:item.bed" },
  28.                   { "test": "has_equipment", "value": "minecraft:item.cauldron" },
  29.                   { "test": "has_equipment", "value": "minecraft:item.frame" },
  30.                   这里省略一大堆
  31.                   { "test": "has_equipment", "value": "minecraft:item.skull" },
  32.                   { "test": "has_equipment", "value": "minecraft:item.wooden_door" },
  33.                   { "test": "has_equipment", "value": "minecraft:movingBlock" },
  34.                   { "test": "has_equipment", "value": "minecraft:pistonarmcollision" },
  35.                   { "test": "has_equipment", "value": "minecraft:portal" },
  36.                   {
  37.                     "all_of": [
  38.                       { "test": "is_biome", "value": "the_nether" },
  39.                       { "test": "is_altitude", "operator": ">=", "value": 128 }
  40.                     ]
  41.                   }
  42.                 ]
  43.               },
  44.               "cause": "lightning",
  45.               "damage_per_tick": 999
  46.             }
  47.           ]
  48. }
复制代码
受到的伤害不能绕过创造,所以要用创造不能免疫的伤害(但似乎基岩版创造免疫一切伤害?)。例子里没有过滤掉管理员(即管理员也会跟普通玩家一样被制裁),你来尝试挑战一下加上无视管理员的过滤项吧,1.16前可以用("has_tag"),1.16后直接用event命令配合。这个组件的工作原理似乎是每刻检测一次,因此如果在两刻之间内执行非法操作可能会逃过一劫。

"minecraft:despawn"定义实体清除规则,被清除的玩家会“踢出”服务器,但玩家数据会回档,谨慎使用。

"minecraft:block_sensor"定义指定方块被破坏后范围内的实体会触发的事件,不是指破坏者,用于猪灵被金块破坏激怒。可以配合"minecraft:despawn"来做出当命令方块被破坏的时候“踢出”附近的玩家效果。

"minecraft:player.level"可以定义玩家经验等级上下限,直接把上限改成300把;反正生存下极限也差不多了。

对于创造模式免疫伤害的问题,虽然没见过无敌挂,但为了防止伪op或者命令方块编辑挂获取非法的真创造,除了把他清除掉(回档会让他回到生存模式)外,还可以用"minecraft:health",将玩家血量上限改成0,这样即使是创造也会死,吧血量改回正常值之前会一直无限死复活死,还没提示不会被刷屏。
  1. "minecraft:health": {
  2.           "value": 0,
  3.           "max": 0
  4. }
复制代码
但是,单纯修改"components"里面的组件不够好用,为了分辨管理员得用tag来标记管理员,但是tag会被目标选择器暴露,稍微聪明点的熊孩子会拿tell @s @e[tag=xxxx]来探测实体,即便是乱码tag也无济于事,因为一个tab键就能破解。要防止玩家用目标选择器,1.16前只能关闭作弊或者使用插件,1.16后直接event命令做触发,即使熊孩子搞到命令提示,event提示的也是所有实体的所有event,那么多event他怎么找?而且还可以伪装成正常的event。而且1.16.100后不但可以在event里执行命令,molang还可以查询玩家的计分板,以前玩家实体定义与动画控制器之间“通讯”只能用“变种”,不但不能做叠加状态,而且你还得做出吧变种还原回来的途径,换成计分板好这些困难就没有了!

不知道会不会有读者想到用jeb羊和卫道士那一套用命名来触发,用管理员的名字来做触发条件,这个我之前试过,他们的那个“minecraft:nameable”对玩家没用,但保不准可能什么时候就能用了,毕竟BugJump传统乱改特性。读者有空可以试。

对玩家实体的修改就到此,下面是命令方块矿车的修改。

读者们应该知道有些挂可以拿出命令方块矿车并且编辑他吧,上面讲过只要速度快,就可以在clear命令和"minecraft:hurt_on_condition"前拿出并放置,就算不能直接放置,塞发射器里对着铁轨也能弄出来。

行为包基础教程应该会教到,实体生成的时候默认触发一次"minecraft:entity_spawned",命令方块矿车也是的,不管是手放还是发射器,都会触发一次"minecraft:entity_spawned",我们要利用这一点,利用"minecraft:entity_spawned"来给矿车加上爆炸组件,引信设置0.0让他生成就瞬炸,设置威力大点,把熊孩子炸上天!

然后怎么弄出正常可用的命令方块矿车呢?很简单只需再加一个事件上去,名字随意了,不要给触发条件,把命令方块矿车独有的组件打包成组件组让这个事件触发。用summon命令在最后加上你的event,例如:/summon 某某某 ~~~ 你弄的event  ,即可召唤出正常的命令方块矿车。events是不会有命令提示的所以很安全。

基础篇你已经看完了,没行为包制作的基础应该很难看得懂;为行为包教程已经其他大佬做了,读者们可以去找找。


Minecraft.Wnxi 当前离线
积分
6211
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2020-5-16
查看详细资料
发表于 2020-8-26 13:24:28 | 显示全部楼层
这是还没有写好吗?加油哦。
回复

使用道具 举报

超凶猫 当前离线
积分
466
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2018-11-3
查看详细资料
 楼主| 发表于 2020-8-26 13:37:05 | 显示全部楼层
Minecraft.Wnxi 发表于 2020-8-26 13:24
这是还没有写好吗?加油哦。

这论坛排版和编辑气死人,乱七八糟的效果。
回复

使用道具 举报

Minecraft.Wnxi 当前离线
积分
6211
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2020-5-16
查看详细资料
发表于 2020-8-26 13:40:40 | 显示全部楼层
超凶猫 发表于 2020-8-26 13:37
这论坛排版和编辑气死人,乱七八糟的效果。

需要的话我可以帮你排,开一个协同编辑,然后把你正在编辑中的链接发给我,我帮你排
回复

使用道具 举报

超凶猫 当前离线
积分
466
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2018-11-3
查看详细资料
 楼主| 发表于 2020-8-26 13:47:59 | 显示全部楼层
Minecraft.Wnxi 发表于 2020-8-26 13:40
需要的话我可以帮你排,开一个协同编辑,然后把你正在编辑中的链接发给我,我帮你排 ...

协调编辑里加你了
回复

使用道具 举报

cao1liang 当前离线
积分
70
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2020-4-16
查看详细资料
发表于 2020-9-7 22:14:22 | 显示全部楼层
不懂过来看看了
回复

使用道具 举报

超凶猫 当前离线
积分
466
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2018-11-3
查看详细资料
 楼主| 发表于 2020-12-18 11:48:43 | 显示全部楼层
2020/12/18更新:添加了1.16.100的内容。
回复

使用道具 举报

youpuhe 当前离线
积分
246
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2019-7-23
查看详细资料
发表于 2021-2-13 10:09:23 | 显示全部楼层
BugJump传统乱改特性,可以说非常真实了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册(register)

本版积分规则

Archiver|小黑屋|Mcbbs.net ( 京ICP备15023768号-1 ) | 京公网安备 11010502037624号 | 手机版

GMT+8, 2021-4-20 02:52 , Processed in 0.055173 second(s), Total 27, Slave 21 queries, Release: Build.2021.04.07 1521, Gzip On, Redis On.

"Minecraft"以及"我的世界"为Mojang Synergies AB的商标 本站与Mojang以及微软公司没有从属关系

© 2010-2020 我的世界中文论坛 版权所有 本站原创图文内容版权属于原创作者,未经许可不得转载

快速回复 返回顶部 返回列表