一种省流量占用低的假矿实现方式?
突然火起来的空岛小片

由于我所在的 MC 服务器前段时间因为 B 站视频的热门,新玩家如潮水般涌入服务器,一时间日常在线人数平均达到三十来人,人多的时候更能涨到六七十多人。如此多萌新的加入自然是为服务器增添了不少活力,但是人一多起来,就免不得出现一些作弊、盗窃的不良现象,像是矿透的情况就发生好几起。在此之前,ZTH 的反矿透手段只是简单的挖矿触发提示在线管理,管理发现异常手动确认,属于人工钓鱼式反作弊。但玩家量一多起来之后就处理不过来了。

一开始我们尝试使用比较常见的假矿,即很单纯的将石头和矿物全部混淆成矿物,效果是这样的:

矿物 100% 的被藏在了假矿里,效果非常好,还能顺带降低开 X-Ray 玩家的帧数。

但是这样的假矿用了两天后,我们发现了另一个问题。也许是因为假矿没有规律在地下随机生成,导致了服务端发送的区块数据包无法被压缩。每个玩家下载新区块的流量带宽翻了三四倍!

没办法,我们尝试把假矿模式换成隐藏矿物:

切换之后就变为带宽友好型了。图中能透出的矿物,实际上是暴露在空气、水或者岩浆中的小部分矿物。本以为只剩这些矿物矿透就没有什么意义了,但用了一段时间后发现,竟然有人开 Impact 的自动挖矿在夜深人静的时候自动挖钻石...... 无语。

既要带宽友好,又要能防止矿透和自动挖矿...... 经过一段时间的思考——比起隐藏矿物或者让石头盖住矿物,为什么不让矿物自身变成假矿呢?这种方案像是把前面两种常见反 X-Ray 结合起来:将已有的矿物替换成其他矿物,让矿透者不知道哪堆矿是真的钻石,让自动挖矿 AI 四处乱转到处抽奖。尽管这种方案会暴露矿物的位置,但实际上是一种折磨作弊者的方案:

矿透者即使知道了矿石的位置,也不能知道自己想要的矿物究竟在哪里

对于带宽,这种隐藏矿物的方案比起第一种方案来说,大大减少了无法被压缩的区域数量,其带宽消耗仅高出原版一点,比较省流量;对于矿透作弊者,他将找不到自己想要的矿物究竟在哪里,只能在一次又一次的挖掘后敲到假的矿物;对于自动挖矿 AI,由于其基于矿透寻找最近的目标矿物位置,因此其将四处碰壁,在地下无尽打转。

配置示例

如果你使用 Paper 提供的 Anti-Xray 功能,可以参考这个例子:

anti-xray:
      enabled: true
      use-permission: false
      engine-mode: 2 # 模式 2,将 hidden-blocks 用 hidden-blocks 打乱
      chunk-edge-mode: 1
      max-block-height: 72
      max-chunk-section-index: 3
      update-radius: 2
      lava-obscures: true
      hidden-blocks: 
      - coal_ore
      - iron_ore
      - gold_ore
      - redstone_ore
      - lapis_ore
      - diamond_ore
      - emerald_ore
      - obsidian
      # 此处的配置文件使用后将会在主世界也出现一些下界矿,可自行使用 Paper 的分世界设置
      - nether_gold_ore 
      - nether_quartz_ore
      - ancient_debris
      replacement-blocks: []

如果你使用 Orebfuscator 插件,可以参考此配置:

obfuscation-overworld: # 这里的示例是主世界的,下界同理
    enabled: true
    minY: -128
    maxY: 72
    worlds:
    - world
    hiddenBlocks:
    - minecraft:emerald_ore
    - minecraft:diamond_ore
    - minecraft:gold_ore
    - minecraft:iron_ore
    - minecraft:coal_ore
    - minecraft:lapis_ore
    - minecraft:redstone_ore
    randomBlocks: # 和上面的被隐藏的方块保持一致即可,即用矿物打乱矿物
      minecraft:coal_ore: 10
      minecraft:diamond_ore: 20
      minecraft:emerald_ore: 10
      minecraft:gold_ore: 10
      minecraft:iron_ore: 10
      minecraft:lapis_ore: 5
      minecraft:redstone_ore: 5

评论

  1. Android Chrome 111.0.0.0
    1年前
    2023-4-08 21:15:24

    每次玩儿MC就直接晕3D

  2. zjw
    Windows Edge 109.0.1518.61
    1年前
    2023-1-22 18:38:04

    我写了个触发性的插件. 每当玩家挖钻石矿的时候都会记录地点和时间戳, 如果有两次挖掘的地点距离很远, 但时间差远小于其他玩家的平均值, 那么就会触发报警, 我就上线隐身跟过去看, 然后确定情况就ban

  3. A_Honey_Block
    Windows Edge 103.0.1264.71
    2年前
    2022-7-28 8:55:29

    块妈!神!

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇