Minecraft(我的世界)中文论坛

 找回密码
 注册(register)

!header_login!

只需一步,立刻登录

查看: 65135|回复: 1214

[综合] [综合] 开插件服! —— 从负基础萌新到大触 |入门|进阶|优化| (BoneStudio)

    [复制链接]
极光creeper 当前离线
积分
8125
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2017-8-26
查看详细资料
 楼主| 发表于 2019-10-1 14:54:56 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 极光creeper 于 2020-9-1 22:27 编辑

||||||
———————| 超基础 |————————| 进阶 |————————| 高思想 |——————>

\ /

本文语言简单平实 ,易于理解,全文介绍细致入微,带你分析上百个问题实例,章节关联性极强
在本帖内,你将与吾辈一同亲临战场;与各类概念、问题、细节、难点进行对战
收录了新人开服时会遇到的绝大多数问题;同时也为开服老司机提供了更多优化方案与细节
本帖根本没有回复可见 完全是全年龄向的(大雾
...
  更多内容请看最下方目录,详细内容请进入章节查看


字数统计:
游客,如果您要查看本帖隐藏内容请回复


我又来写新人教程祸害大家了

在开始之前 我来聊聊为什么建议新人开插件服
萌新也可以看的 内容和我自身关系不大
1 首先的首先 不管你有没有了解过 反正开插件服 成本远低于开mod服
2 插件服简单啊 你从来没见过别人问 "插件服需要ban什么东西吗"
3 插件服的玩家体验极高 任意客户端都可以加入游戏 不需要特别下mod
4 相信大家也了解过 插件服的流畅程度 普遍比mod服好很多

以上内容只是我看法中的一些 渣渣,我在后面会详细分析这些内容
插件服的优势很多 因为我说多了 一些萌新会害怕吾辈......
我了解的一些萌新甚至会直接关掉这个帖子233 所以前言这里先不展开说
什么?这种理论知识 你一点头绪都没有?没关系 我接下来会慢慢说
让我们先来聊聊天吧



不喜欢和老娘聊天吗 我是真的14岁啊

没错喵! 前言这里 我们先多聊聊天吧
本教程是 完全新人向 教程, 旨在提高 想开插件服却能力不足的服主 的普遍素质

如果你对本帖的介绍有其他见解,或本帖内有地方说明出现谬误、错误的话
欢迎各位指出

本帖的受众人群是?   萌新、 真·萌新、 完全不会java的萌新、想试着开服的萌新
                              假萌新、 开着插件服的服主、 觉得自家插件服不够好想来取经的服主
                              顺着全民开服热潮来的,希望玩家有极佳游玩体验的服主
                              服务器管理员、 服主不负责的服务器的管理员
                              甚至是 部分开mod服的服主
                              (汉化 优化等实际上是通用的 虽然不是100%有用 但是就是有用)
                              如果你们点开了这个帖子 那么我会隔着电脑屏幕 顺着网线 欢迎你们ww

可能不适合哪些人?  开宝可梦服的服主
                               (我个人的确不喜欢 但是你们也可以看我帖子 而且优化和没优化的区别不大)
                               用CatServer(或Pro)的服主
                               (核心的确出彩 但是就是有一堆插件不兼容 本帖主要是介绍插件服 而你是mod服)
                               想开服但是不肯付出时间的服主
                               能力不够却喜欢耍嘴皮子 找理由 自我逃避的服主
                               只愿意续费服务器,却把活丢给其他管理的服主


本帖不欢迎哪些人?   





啊 你来惹 我是本次集训班的讲师 极光creeper 14岁接下来的一段时间里 你可能就要和我一起度过一段美好的时光

...嗯?你说你是..萝莉控?Gunna,不要摸我啊バカ!

恩恩 接下来 给大家说一下 你们在接下来的课程里会遇到什么吧
我们围绕着 "提升玩家游戏体验" "提升服务器质量" "提升服主素养" 三个方面讲课
当然 是纯萌新向的 老娘会细致解释所有的问题: 为什么这些很重要? 哪些细节很重要?
我会给出很多很多的插件 包括好用的、难用的。但是,他们一定都是实用的

本帖的锚点目录
https://shimo.im/docs/Tr3txtW8CGwyGvVD

课程大纲:
第一课: 1 插件服为什么能够大幅提升玩家游戏体验 ?
               1.1 插件服设备配置怎么选择 ?
            2 啧,服务器核心好多,就算是mod核心 能不能也一起讲解一下呢?
            3 在没有鹿盔的情况下如何在Spigots与Paper中抉择 ?
            4 插件服玩法相较mod服的局限性 ?
            5 mod服明明比插件服玩法更多,为什么说玩家体验差 ?

:课间休息(没有用的吐槽环节)
老师...上面提到的鹿盔是什么东西...

第二课: 1 戳!开服!
            2 不知道什么时候会遇到的 完全没用的术语
            3 超简单平实的语言讲解的简单服务器结构 (即服务器根目录)
            4 我毛线球插件都没有装啊喂,老师能帮我整理、推荐一下吗?

            :课间休息(没有用的垃圾分类环节)
老师...想装的插件也太多了啊 垃圾分类可行吗 ESS是干垃圾吗


第三课: 0 ————————我还是建议你装几个软件的——————————
            0 很有用的软件
            1 配置文件大教学I   : 最愚蠢的讲师,最方便的操作,最高兴的服主
            2 配置文件大教学II  : 手把手教你!基础插件 的配置文件: 阅读理解题 与 修改阅读理解题

:课间休息(没有用的脸红环节)
老师...你好可爱...

第四课: 1 配置文件大教学III : 手把手教你!GM权限组插件 的配置文件: 第一印象很难?然而这是填词游戏啊
            2 配置文件大教学IV : 手把手教你!LP权限组插件 的配置文件: 得了,权限组插件操作都一样的
            3 配置文件大教学V : 手把手教你!服务器 内某一个配置文件: 太菜了!学完上面的内容,这也太简单了吧!
            4 通过BungeeCord从零开个群组服!架设你的插件群组服,配置、优化与安全。

:课间休息(不可名状的环节)
老师...你...到底是刀客塔还是休伯利安号清洁工还是提督还是魔物娘子还是御者

第五课: 1 配置文件大教学VI : 手把手教你!汉化你的插件 的配置文件: 放心 我老早就已经准备好教案了
            2 针对第二课内推荐的 所有插件存在的使用疑惑、问题,进行收集并解答


第六课: 0 ————————接下来的可能不会很容易 但不会难——————————
            1 老师,为什么没有课间休息
            2 需要更多的快乐
            3 创建你的服务器团队
            4 正式步入服务器优化 还是手把手教你的教程喵
                                       4.1 对 服务器 从配置文件上 进行优化
                                       4.2 对 服务器插件 从数量,配置上进行优化
                                       4.3 对 jvm调参 从最基础的初步认识开始 进行优化
                                       4.4 从 服主心理 开始分析 让你深刻体会 哪些事有必要做 哪些事完全无意义
                                       4.5 从 玩家心理 开始分析 为什么服主要做这些事 为什么有些内容无意义
            5 [全版本]优化的其他黑科技 (第四次修改目录时添加)
               [高版本]的要命优化 (第四次修改目录时添加)


第七课: 1 配置文件大教学VII : 手把手教你!小游戏反作弊 的配置文件: 只有我这种研究过的 才有资格来教反作弊配置
            2 配置文件大教学VIII : 手把手教你!生存向反作弊 的配置文件: 喵 老师我还有不知道多少绝学没有教给大家
请注意 第七课均使用NCP反作弊插件进行教学 本插件是免费插件 看本帖也不需要交学费
            3 地形教学 : 手把手教你!在Worldedit中除了//set和//undo ,你还需要一些笔刷和技巧!



______使用滚轮返回上方 点击目录里的第一课 即可
本页3800+字


有人问我能不能录成视频什么的来着,

本帖内容采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可

鸣谢:





评分

参与人数 88人气 +122 金粒 +827 贡献 +3 收起 理由
lSoRryl + 1 MCBBS有你更精彩~
尘萧丶SM + 1 + 15 神乎其技!6的飞起!
yunduan0425 + 1 神乎其技!6的飞起!
dengyu + 2 + 20 MCBBS有你更精彩~
24707414 + 1 MCBBS有你更精彩~
feng37712 + 2 MCBBS有你更精彩~
柳旭泽 + 1 + 10 Ssssssssssssssssssss
jayceon + 1 神乎其技!6的飞起!
CR2359 + 1 MCBBS有你更精彩~
.OwO. + 1 good
pull1025 + 1 MCBBS有你更精彩~
MC_涅槃 + 2 + 30 MCBBS有你更精彩~
界外烁星 + 1 大佬666,谢谢大佬
方形云朵 + 1 辛苦大佬啦,写的太--棒啦,受教很大,再次.
枫之羽倾尘 + 1 Ssssssssssssssssssss
浪过 + 1 MCBBS有你更精彩~
428751434 + 5 像这种中文一样的子我居然我完了!震惊.
九天狼 + 2 + 30 我巴不得把金粒全都给你!太棒了!.
yl2388390392 + 1 神乎其技!6的飞起!
SilverRain0515 + 2 谢谢老师!~

查看全部评分

阴阳师元素祭祀 当前离线
积分
24257
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2013-12-14
查看详细资料
发表于 2019-10-1 14:56:20 | 显示全部楼层

评论区0L (1L在楼下)

本帖最后由 阴阳师元素祭祀 于 2019-10-1 19:43 编辑

终于发了
部分地方可能有点问题x
能理解就好x

我明明不是楼主


本楼也用作编辑器奇怪的特性实验地点

评分

参与人数 1人气 +3 金粒 +25 收起 理由
极光creeper + 3 + 25 感谢!

查看全部评分

回复

使用道具 举报

极光creeper 当前离线
积分
8125
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2017-8-26
查看详细资料
 楼主| 发表于 2020-2-13 09:54:29 | 显示全部楼层
本帖最后由 极光creeper 于 2020-8-24 22:36 编辑

——————————————————————————


NO.6.3

    拿什么来拯救我们的1.15.X +?!

        救不了,别救了,entity开销太恐怖了,1.14.X也是

        本章会整理很多黑科技,以助于大家拯救自己的服务器,尤其是paper

        好,大家好,吾辈回来啦!
        在作业过关后,我完成了一首日语歌的汉化,还顺利的辞去了自己所在服务器的职务
        在steam为柚子社剧情超棒的千恋万花补了票
        现在我有充足的时间来更新了
有歌词

//由于某些原因,您使用目录跳转的页面上有一些显示bug
//您可以前往 360楼 查看完美的排版+内容(笑



1.16更新了 我看到了
来码字了
见识了很多有趣的新事物,或许阈值优化之外,我们还能干点其他的事
但是现在能实现类似想法的项目不多,我也试着去"参与"了一个,当然,可惜,并不能帮上太多的忙

#本章节目录 {
    display: inline-block;
    致高版本服主: 2px;
    优化: -200px;
    插件推荐与误区: -100px;
    答疑: 5px;
    插件config: 200px;
    我再也不用markdown了: fixed;
}


    致高版本服主 :

  *  1.14.X是什么?
      - 这是过渡版本,再怎么优化也没什么显著的提升;
      - 当然,小游戏服仍然可以选择该版本.

  * 我的1.14.X服务器该怎么办?
      -  极光于2020.2.18日建议,更换为1.15.2服务器;编写本段时,1.16仅有单人预览版.
      -  1.15.2服务器在任何层面上都是1.14.X的优化版本.
      -  是的,你没有听错,我是认真的

  * 在性能上?
      -  1.15.2的tps有显著提高,且稳定;
      -  在此刻,optfine仍然存在不少bug,但可以让客户端非常流畅的运行,fps可轻松破百.

  * 性能排行?
      -  服务器、主频、核心线程数、核心数、带宽、分配的运行内存相同的情况下
      -  1.8.X及以下  >  1.9.X  >  1.10.X  >  1.11.X  >  1.12.X  >  1.13.X  >  1.15.X  >  1.14.X > 1.16.X
      -  其中 1.11.X 、1.14.X 被非官方地誉为过渡版本。相对看,它们拥有并不怎么好的优化,与糟糕玩家体验.


我猜有人没看到我上面歌曲右边的提示,再来提示一遍
//直接在主楼使用index跳转的话,排版是爆炸的
//您可以前往 360楼 查看完美的排版+内容(笑



    优化 :

       零、毛线球啊

           1. 装jdk别装jre,你不知道你什么时候会用到的

           2. 装java8

           3. windows server占用比windows小一点;或者你换linux,她非常可爱

           4. 记得留1G给win的系统

           5. 我喜欢 spark;而timing是没有灵魂的

           6. 请记住,优化是为了玩家体验,你绝不能在优化的时候破坏玩法,除非这个'破坏'做到了更好的效果

           7. 音空Nesora(UID: 1274425) 在评论区451楼留言说 "换成1.15.2tps反而变得更低了"

               首先,由已知 '开服是玄学',推出 '这情况很正常'
               然后,你看看timing啊,你倒是说你的机子配置啊Kora

               优化这种东西,是靠理解的,不是靠抄我的配置的,我的配置是我服务端的,而不一定是你服务端的
               如何理解? 我每条边上的原因写的很清楚了,自己理解一下(笑)


       一、基础的优化(辣三个.yml文件)

       bukkit.yml :   (没怎么变)

       比较明智的做法是从低版本(如1.8)复制一份bukkit.yml过来看看
       高版本的bukkit.yml内有几个key是消失的
       例如 chunk-gc下的 "load-threshold: 0(即禁用区块gc)",和从来不出现的的 "database"

SQLite

MySQL




       spigot.yml :   (没怎么变)

       一个是 从硬核移动检测变成了速度百分比的样子,不需要改,我只是提及一下
#旧
moved-too-quickly-threshold: 100.0

#新
moved-too-quickly-multiplier: 10.0


       此外,删除了一些key,都无伤大雅
       让我们直接步入正文:  (下面的有点长,我懒得用spoiler了)

       题外: 我建议视距在8-10之间,如果非常非常卡,则可以调整至6-7之间.
       一起来看看spigot.yml最下方的一个 '世界设置'

world-settings:
  default:
    verbose: true
    view-distance: default
    arrow-despawn-rate: 1200
    trident-despawn-rate: 1200
    item-despawn-rate: 6000
    enable-zombie-pigmen-portal-spawns: false
    wither-spawn-sound-radius: 0
    hanging-tick-frequency: 100
    zombie-aggressive-towards-villager: true
    dragon-death-sound-radius: 0
    seed-village: 10387312
    seed-desert: 14357617
    seed-igloo: 14357618
    seed-jungle: 14357619
    seed-swamp: 14357620
    seed-monument: 10387313
    seed-shipwreck: 165745295
    seed-ocean: 14357621
    seed-outpost: 165745296
    seed-slime: 987234911
    nerf-spawner-mobs: false
    hopper-amount: 1
    mob-spawn-range: 4
    max-tnt-per-tick: 100
    max-entity-collisions: 0
    merge-radius:
      item: 8.0
      exp: 8.0
    ticks-per:
      hopper-transfer: 8
      hopper-check: 8
    entity-tracking-range:
      players: 48
      animals: 48
      monsters: 48
      misc: 32
      other: 64
    entity-activation-range:
      animals: 20
      monsters: 32
      raiders: 32
      misc: 5
      water: 16
      tick-inactive-villagers: true
    growth:
      cactus-modifier: 100
      cane-modifier: 100
      melon-modifier: 100
      mushroom-modifier: 100
      pumpkin-modifier: 100
      sapling-modifier: 100
      beetroot-modifier: 100
      carrot-modifier: 100
      potato-modifier: 100
      wheat-modifier: 100
      netherwart-modifier: 100
      vine-modifier: 100
      cocoa-modifier: 100
      bamboo-modifier: 100
      sweetberry-modifier: 100
      kelp-modifier: 100
    hunger:
      jump-walk-exhaustion: 0.05
      jump-sprint-exhaustion: 0.2
      combat-exhaustion: 0.1
      regen-exhaustion: 6.0
      swim-multiplier: 0.01
      sprint-multiplier: 0.1
      other-multiplier: 0.0
    squid-spawn-range:
      min: 45.0
    max-tick-time:
      tile: 20
      entity: 25


       欢迎回来,你有没有仔细看上的东西?
       很眼熟?是的,我在上一章优化的时候都给过最优的配置,稍后我会整合一份.
       那么 我们现在又是要干什么呢?

world-settings:
  default:
    verbose: true


       能继续眼熟吗?你有没有想要对spigot.yml进行改动,干些坏事的冲动?

       改成这样怎么样?

world-settings:
  world:
    verbose: true
  world_nether:
    verbose: true
  world_the_end:
    verbose: true


       盲生,你发现华点了吗?
       default将默认应用所有未被配置的世界
       但你可以将世界单独拿出来配置

       我们可以为每个世界单独整一份优化与玩法
       我们上面见过很多优化,比如怪物的ai是否需要打开?清理速度?
       6.2里面我提到过,如果大服使用服务端自带的保存,可能会突然卡一下

       如果,我是说如果,如果有机会分开保存呢?我们下文还会提到的

       对了,甚至还有一个 dragon-death-sound-radius: 0
       主世界没有龙,所以我们为什么要配置它
       对于我的主城,选择了这么设置饥饿
:(
    hunger:
      jump-walk-exhaustion: 0
      jump-sprint-exhaustion: 0
      combat-exhaustion: 0
      regen-exhaustion: 0
      swim-multiplier: 0
      sprint-multiplier: 0

       个人认为这能减少改变玩家 NBT/DataTags 的次数,但我并不清楚这会如何工作
       如果 对这一机制有了解,请务必告诉大家

       对于建筑服,你可以使用gamerule来让作物停止生长
       或者?
:(
    growth:
      cactus-modifier: 0
      cane-modifier: 0
      melon-modifier: 0
      mushroom-modifier: 0
#... 下略


        可以注意到还有seed这种东西,world可以有,但是非主世界就删掉吧
:(
    seed-village: 10287312
    seed-desert: 14357617
#... 下略


        然后spigot.yml就没什么要紧的了,优化还是都在上一章都提到了
        以下是 建议的一些配置
:(
    max-tick-time:
      tile: 1000
      entity: 1000

    ticks-per:
      hopper-transfer: 8
      hopper-check: 8

#楼下两个麻烦分清楚
#这个是显示
    entity-tracking-range:
      players: 48
      animals: 48
      monsters: 48
      misc: 32
      other: 32

#这个是活跃范围、影响较大
    entity-activation-range:
      animals: 20
      monsters: 32
      raiders: 32
      misc: 5
      water: 16
      tick-inactive-villagers: true
#我建议保持 tick-inactive-villagers 为true
#这非常非常小幅度的降低了性能,但保证了安全


余下3部分、待更

Paper.yml
同上,也有类似的内容,我先跳过不介绍



插件推荐与误区

   优化插件能优化服务器吗?
   大概吧

   优化插件无非就是修改,插入一些东西
   比如限制ai,动态限制ai,随tps限制ai
   生物堆叠,异步加载区块(然后其他插件操作的时候就开始报错,笑)
   等等

   显然他们在以作者的意图来控制,改变原版的各种计算机制与逻辑
   但既然是作者的意图,你就不能保证它一定有效,或对于你的服务器有效了
   所以让我们来看看我测评的插件,和误区、细节讲解

   挺无聊的,或许在这段后部分有干货,跳过也可以的



答疑

    要几核?
    1.14以下,无所谓,2核够了
    1.14及以上,最少4核

    为啥?不是说主要 只吃单核么?
    "主要只吃单核",又不是"只吃单核"
    你家其他核心还是可以工作的,有一些引擎或者不太要命的东西也会放在其他核上干活
    虽然占用看来是一核比一核少,但是肯定是有用的

    又如: 光线引擎就明显跑在其它核上

                     
    让我们看另一个例子,spigot开发者md_5,paper开发者Aikar 也参与了讨论

    原贴: [url=https://www.spigotmc.org/threads/450147[/url]
    翻译: 询问关于服务器基础架构的问题

    1楼: BitCash(楼主):
    你好,我一直在计划开设一个Skyblock的大型服务器(在几个星期到一个月内会再开第二个Skyblock服务器)
    我有一台专用的独立机,规格如下:

    2个 Intel Xeon E5-2620v3 - 12内核/ 24线程 - 2.4GHz/ 3.2GHz
    128GB DDR4 ECC 1866MHz
    2个 4TB HDD SATA Soft RAID
    500Mbps带宽(非按量计费)

    我有以下几个问题:
    1) 如果预计有大约250-300名玩家,我应该给我的Skyblock服务器添加多少内存?
    2) 独立机是必要的吗?还是应该降级/升级配置?
    3) 服务器需要多个大厅,我应该给它们(每个)分配多少ram?
    4) 为了无延迟和稳定,需要有多少个Bungeecord代理服务器,每个代理服务器应该分配多少ram?
    5) 每台服务器分配多少个核心?每台服务器1核是理想的吗?为一台服务器分配多个核心是否提高了性能?

    2楼: spigot论坛管理员,spigot开发者md_5:

    1.  8-12GB即可
    2.  对于1-2台服务器,这可能不是正确的硬件选择。您需要更快的CPU和更少的内核。
    译者注: "更少的内核" 是针对问题中的12核24线程而言的,这的确多了点,但并不是说不需要多个内核

    3.  你明明只有1-2台服务器,为什么需要多个大厅呢?
    4.  1个BC就够了
    5.  一般来说,你不用明确地去分配核心;你的确需要多核

    3楼: BitCash(楼主):

    谢谢,这帮我理清了很多东西

    回到问题3,如果我重启服务器或者服务器崩溃了,我希望大厅能够容纳所有弹回来的玩家
    1个大厅服务器或许足够了,但是我认为5-6个会更好

    另外,你推荐哪种CPU (比如 i9 等)

    此外,给250-300人的空岛服务器分配8-12GB会不会太少了,我认为我需要32GB

    我应该给我的大厅服务器分配多少ram?

    4楼: spigot论坛管理员,spigot开发者md_5:
    (回复是对应的)
    如果你的空岛服务器能塞那么多玩家,为什么你的大厅不行呢,如果你想,你可以使用2个大厅来处理延迟峰值

    高时钟速度的CPU就行

    不,不要给空岛服务器分配32GB,太多了,8-12GB就够了

    大厅分8-12GB也够了

    END
    剩下来的不翻译了,有兴趣的可以自己去看原贴
    Aikar对于后面吵起来的RAID阵列,
    mc代码中区块加载与内存关系,
    stream流操作的部分(尤其是AI)进行了评价。





For Your Sever Plugin Config Shopkeepers_Logo_With_Text_-_small.png

   让我们先看看 一个大家熟悉的东西
   Shopkeeper 你的村民商店创造者,绝大多数玩法都可以用到它
   我们来看看它的config,以及它可能是如何工作的
   不会java也一点关系也没有,很亲民的

我从它的Config中拆一部分下来,这是yaml,你别说你看不懂啊
enabled-living-shops:
- VILLAGER
- COW
- MUSHROOM_COW
- SHEEP
- PIG
- CHICKEN
- OCELOT
- RABBIT
- WOLF
- SNOWMAN
- IRON_GOLEM
#...

   没错,这些是 '注册' 在Shopkeeper の Config里的生物类型
   如果我现在想要生成一个苦力怕作为村民商店,而上面Config内却没有,你就无法生成这个苦力怕村民了
   那么,我们从插件的实现方面来想,Shopkeeper,是怎么写出来的?

   假设我生成了1个烈焰人村民商店,但其他地方又有很多普通的烈焰人
   当我右击烈焰人的时候,一定会对那个烈焰人进行判断

   如果那个烈焰人是"村民型号的 烈焰人",那么我就会打开一个村民的gui,让玩家可以进行交易
   如果那个烈焰人不是,那么就什么事都不发生

   所以我们来看看代码,看不懂就当你看懂了就好
   防止插件之间冲突的细节就不说了,如你所示,这是用交互来判断的
   如果你不知道什么是交互,你可能不太适合继续看下去,多去研究研究吧!
   因为了解交互,并不需要任何java基础
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = false)
        void onEntityInteract(PlayerInteractEntityEvent event) {
                // 用来防止 fake interact event:
                if (event instanceof TestPlayerInteractEntityEvent) return;
                if (!(event.getRightClicked() instanceof LivingEntity)) return;
                // ...略
// ...阅读其他内容,你还可以在各处找到以下语句
        public Entity getEntity();

        public EntityType getEntityType();

        public Collection<? extends LivingShopObjectType<?>> getAll();

        public LivingShopObjectType<?> get(EntityType entityType);

   你发现了什么吗,我想,如果你在这里少 '注册' 一点生物,判断也少了吧
   如果你想要其他的生物,就到时候再 '注册' 吧
   不妨先改成下面的样子?
enabled-living-shops:
- VILLAGER

   虽然这算是很不起眼的优化,但是你可是有一大堆插件可以优化呢 w

   shopkeeper 内几乎全都是玩法的配置,只不过很少有人碰而已
   每一个中、大型插件,都是王之财宝 (Gate of Babylon) 啊!
   希望大家仔细阅读每一个config,了解所有配置文件、配置文件中每个key的作用
   我准备了两个问题

   阅读题:

   1. 阅读下Config.yml内的节选,并回答问题;key的英译中对理解有帮助。
  1. disable-gravity: false
  2. gravity-chunk-range: 4
复制代码

   问: 1. 这两个key是什么的配置(2')
         2. 结合实际,谈谈村民商店在浮空时 间歇性 跳动的原因(3'+3')
         3. 指出本段中的一个严重谬误,如果你答对了,那么就不用看下去了(92')







Again For Your Sever Plugin Config

    那么,其他插件呢?
    ...可能是太突兀了点,但是让我们回归服务端的本质
    我们稍后解答上面的第二问,和这里的问题

    mc服务器可以视作数据包发来发去,如果简化模型,去掉新人难以理解的成分?
    你可以认为是在服务端运算一些数据,然后把数据发给客户端,在客户端渲染

    举个简化后的栗子:

    我干了什么?  我撸掉了oil早的 噬菌体II 模型
    我的客户端显示了什么?  我面前的方块消失了

    '方块消失',这只是你客户端的显示(渲染),目前也 只有 你的客户端看到方块消失了

    假设 你的客户端也存在一个服务器的地图文件
    那么你只是修改了你客户端 "本地" 的地图文件
    服务器那边的地图文件还是有 噬菌体II 的,其他玩家也能看到 噬菌体II
   
    很好,各位应该想出来了
    你的客户端得告诉服务端你破坏了方块,所以你需要向服务器发送破坏掉这个方块的数据包

    这样的话,服务器的地图会更新
    而服务器将会 发送数据包 给其他的玩家,其他玩家的客户端收到以后,也会正确的显示(渲染)
    这样的话,Oil造的 噬菌体II 就这么在所有人的眼里都消失了

    你不知道数据包是什么?
       数据包就是一个包,就算什么都不懂也没事.
       就当是发短信那样,你给亲爱的 论坛版主yys 发了一句'辣鸡' ,
       论坛版主yys 收到以后,变成了辣鸡 ,
       同时大家都知道 论坛版主yys 是辣鸡了。


   很好,例子结束了,栗子也吃完了,虽然现在根本不是栗子上市的时节
   请问亲爱的读者    明白了什么?
   没错,服务端+客户端的通讯,就是发数据包,抛绣球,丢来丢去,然后就结束了!

   试想有100个玩家在移动,100个玩家在破坏方块,100个Citizen的NPC在刷新,会发生什么事?

   100个玩家移动:
   你的服务器需要同时接受100个玩家移动的数据包
   并且将每个数据包再发给余下99个玩家,每个玩家都要收到其他99个玩家移动的数据包

   100个玩家在破坏方块:
   对于新人,我希望你的回答是照葫芦画瓢的
{
   你的服务器需要同时接受100个玩家破坏的数据包
   并且将每个数据包再发给余下99个玩家,每个玩家都要收到其他99个玩家破坏的数据包
}
   如果你的反应如上,那么你应该是一个很聪明的家伙www
   不过,同时,你的服务器必须修改服务器的地图

   而修改地图是什么操作?是一个写入文件的操作

   写入文件,是很容易造成卡顿的事
   不知道你们有没有体会呢?
   (虽然实际上会先修改缓存里的地图,也还有一个缓冲区,但新人完全不用理解这个括号)
   
   虽然上面的模型已经被我简化了
   但是我认为这已经 能让你们理解为什么玩家越多,插件越多,服务器会越卡了





    待续
   


   什么?你说aikar给了好看的zgc参数?

   用之前先动动脑

   我问几个问题
   1. 你为啥要zgc
   2. 你认识zgc吗,除了cms,g1gc,zgc,你还知道其他的吗?
   3. 啥是zgc啊,zgc的逻辑是怎么样的
   4. 你知道你为什么要用zgc吗?因为性能?

   不妙,太不妙了,回答不出来上面的问题,你甚至都还没走出第一步
   更别提用zgc,研究zgc了
   对于你未知的事物,你真的敢用吗(笑

   zgc最早是在linux上,java14的时候才塞到win上的,换言之,这是个测试产品
   他们被制造出来,一定是有目的,并且试着去解决一些问题的
   比如g1gc就解决了cms碎片空间的问题,我在6.2章里提过的样子
   
   回到zgc,他出生的目的是为了尽可能降低Stop The World,STW,也就是挂起其他所有线程的这么一个暂停时间的
   (如果你问 "其他挂起所有线程" 是什么,那我也没法回答,我只能回答你 不挂起的 是gc它自己 )
   如果你对STW的简写不眼熟,那就不眼熟吧,不要紧的

   这玩意啊,既然目标是把STW压得更加低,那你应该认识到一件事
   用zgc的目的是让STW尽可能低得不能再低,那我觉得mc是没有这种变态需求的
   顺便一提,你还需要一个java14,离谱莉

   以及,如果提到zgc,我一定会再提到一个shenandoah gc
   他们有非常多的相同点,比如
   他们都是并发gc,那就不必分代了,所以不要聊到什么eden啊young啊old啊
   他们都适用超级超级大的堆 (不懂可以去看6.2章,或者你就当看说书继续读下去)
   他们的STW时间基本都由GC Root决定,而不是堆的大小,这是各方面很多因素决定的,不细说
   一旦开始gc,他们要让应用线程基本完全停下,然后全都来扫垃圾,这样速度才能快,STW时间才短
   他们都实现了一个特殊用途的指针,可以在不更新引用的情况下直接对对象下刀 (悲
   扯远了

   还是这句话 "古尔丹,代价呢?"
   zgc献祭了什么,来获取非常短的STW时间呢?
     zgc不得不在 gc线程 和 你mc的线程 中间切来切去,这导致了————
     它献祭了并发量,这导致zgc的并发量 远不及 g1gc
     你需要分配大量内存给gc,才能确保zgc不会起反作用
     这个大量,肯定是没有aikar说的那么轻松的

   那,zgc的好处是什么?我觉得对mc来说基本没有,大家可以不必使用
   
   zgc很糟糕吗?还没有那么糟糕 (笑
   zgc在gc的时候会压一次分页page,也是不需要担心类似cms的碎片空间问题的
   但是我真的看不出来有什么太大的优越之处

   一旦进入fgc,甚至是有内存溢出风险的
   mc这里,我肯定不推荐用zgc
   除非你服务器大得离谱,我指 hy 或者 wynn 或者 宽裕到一堆子服都是64G+的内存

   我可喜欢g1gc和cms了
   测试/小服可以考虑cms
   中/大服可以考虑g1gc
   总之,我肯定不推荐用zgc
   












评分

参与人数 2人气 +3 金粒 +15 收起 理由
xiaoer233 + 1 + 15 神乎其技!6的飞起!
秋韵 + 2 MCBBS有你更精彩~

查看全部评分

回复

使用道具 举报

极光creeper 当前离线
积分
8125
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2017-8-26
查看详细资料
 楼主| 发表于 2019-10-1 14:56:46 | 显示全部楼层
本帖最后由 极光creeper 于 2020-2-13 16:42 编辑

(主楼编辑次数: ....计数君睡着了 大概480次)
(其他楼编辑次数: 大概800次)

——————————————————————————


NO.7








学业紧张,我尽量12月底之前更新完
刚刚发现还需要测试一些东西,大体的介绍框架是ok了,需要花一点时间码字

我为什么要来写反作弊教程

好问题!
有很多人都是因为挂端, hax的问题选择了mod服
也有人使用外置登陆证,但是这就把我们插件服不需要装mod ,随意客户端都能玩的优质体验,这个优点给抹灭了
因为实际上这就和mod服没什么大区别了, 这也就是为什么我不是非常喜欢vv的原因,因为体验上和mod基本一致了
虽然客制化程度高,但是却失去了插件服的最大优势,不管多好玩都得不偿失
所以vv更适合mod服,虽然不知道能不能好好的兼容

那问题来了, No Cheat Plus这个反作弊到底多有意思?
走过栏杆卡住?经常卡回弹?至少用了NCP不会有太大问题
而且我知道aac虽然很垃圾,而且是付费的,而且仍然有人用cracked的AAC破解版
我觉得实在是太蠢了

而我介绍 No Cheat Plus 这个免费反作弊的目的就是为了让你们不要去用盗版&破解的插件
也不要去特地买配置/付钱找人写配置
这个插件真的挺强的,功能与效果超超超超强大,我后文会仔细教学如何配置
唯一可惜的是,插件的免费版已经停止更新了,支持的版本仅有1.5.2-1.12
付费版请至mcmarket下载 (地址待补)
我在此要特别感谢原作者asofold (他的马甲名为NoCheatPlus) 与其他的开发者 做出的贡献

下载地址

Docs地址

源代码地址


草绳:


首先我想说的是,这个插件没有经验是完全无法配置的
也就是本段的内容都是我的经验之谈,虽然我大可以自信地说基本不会出问题
但是难免会有少数纰漏,以及自己藏着的一点点小技巧没有说
欢迎大家指出&补充&探讨
以及有些东西它就是测几次得出来的,不要问我怎么二度优化我给的这些阈值 或者怎么测阈值
我也是瞎猫碰死耗子测法的,防不住就继续改数值,很粗暴

站内搬运贴
[安全|管理|修正]NoCheatPlus —— ncp广泛使用的免费反作弊[1.7-1.12.2]
https://www.mcbbs.net/thread-820424-1-1.html
感谢 xmdhs 做出的贡献

中文wiki
[插件介绍][上古之石]NoCheatPlus教程以及WiKi翻译
https://www.mcbbs.net/thread-516608-1-1.html
感谢 snowclay 做出的贡献



那么我们就上了!(教程仅针对免费版,付费版有少量额外功能,但是我觉得你们自己也能研究的出来)


从最简单的开始(无需配置)
1让我们来看看在不配置的情况下能 完美防住 什么黑端功能(在安装ProtocolLib的情况下)

不要问为什么有不少是英文,因为写黑端的都是外国人
如果我和你解释这些功能是什么意思,我觉得我就有拖字数之嫌了,后文也多少会提到的
所以大家随便看看就过去了,且作弊功能分类不是按照ncpwiki,而是根据某黑端来的

—  [机制问题]通过某些诡异的操作向其他玩家发包,让其他玩家变卡(掉线等)
—  [combat]AutoClicker 猖狂cps>20 连点
—  [机制问题]通过某些更加诡异的操作获取其他玩家坐标(位置)
—  [blatant]Antifall/Nofall
—  [other]AntiAFK
—  [world]ChestSteal
—  [render] ESP/ItemESP/StorageESP/nameTags
—  [机制问题/]Blink(这个是对数据封包进行修改然后提供一个假延迟的功能,后文还要进一步制裁的)
—  PotionSaver/Antidebuff(仍然是利用数据包机制的漏洞)
—  [blatant]Fastplace
—  [blatant]Fastconsume
—  [utiliity]AmorSwitch/ThrowDebuff

反作弊里你第一个就能上手的配置
2回弹判定修正 ( I - Compatibility - overrideflags)
意义:
      如果你试过一些反作弊,很容易发现回弹非常严重
      尤其是在水,雪片,荷叶,栏杆,半砖,地毯,箱子,铁砧,玻璃板,铁栏杆上回弹很要命

      这关乎玩家的网络情况,也关乎阈值设置,很容易就能触发检测,导致回弹或kick
      当然,其最初意义当然是防止hax,将他们强制拉回
      本功能与下文一些功能合在一起,可以在一定范围内检测如下作弊功能

不止包含Speed系与Walk系(但不含Safewalk与Invwalk)
      骑乘状态下超速/非正常移动 (黑端一般是通过额外发包或利用某些...实现的)
      超速,飞行Fly(前者安全黑客的话基本是额外发包,限制方法也很多;后者闭着眼睛抓)
      水上飞 (可以在overrideflags里面设置来禁止)
      速掘 等


①:我们提到回弹 "关乎玩家的网络情况,也关乎阈值设置"
       那么对于网络状况不佳的玩家,对于完全100%顶到上限的阈值,仍然会有很严重的回弹
       解决方法就是放宽阈值(下文会提),那么对于网络状况极佳的hax而言,他们可以通过"安全黑客"
       即稍稍开启一定的作弊功能并限制他们启用时的上限,仍然可以有机会绕过反作弊
       不过在这种情况下,如果网络有点波动,他们就会被回弹来回弹去,很有意思233

位置位于配置文件的最后,大概基本是在697行处
下面这一个引用框里的先坑了,先更新其他的
#先来看看挖掘时间的限制(修改)好了
  blocks:
    breakingtime:
      SAND:AXE:DIAMOND:0:10000
#简单的看一下这串东西 "沙子:斧头:钻石:效率0级(无):10000"
      IRON_BLOCK:PICKAXE:DIAMOND:12: 1139
#
allowinstantbreak: []
#在上方的方块不会被ncp检测挖掘速度,在小游戏或生存或anni内将一些无关紧要的方块设置后可以减少一定的延迟

下来是overrideflags:
我们先来看几个例子
      snow: default
#[英文]雪片
      piston_moving_piece: default+ign_passable+ground_height
#[英文]活塞头移动时
#[注]付费版已改为moving_piston
      WATER_LILY: default+ign_passable+ground_height+height8_1
#[Bukiit材料名]荷叶
      '101': solid+ground+xz100+height100+ground_height+ign_passable
#[数字ID]铁栅栏
      '102': solid+ground+xz100+height100+ground_height+ign_passable
#[数字ID]玻璃板

没错,你可以使用3种常见的方法来代表方块的ID,不过还是要符合规则的
其次要注意的是单纯的数字id在识别时会出问题,需要改成字符串形式 即 '数字id'

接下来让我们来看看,这些跟在方块后参数是什么,是如何防止回弹的
这些参数更像是在描述你要防止走上去会回弹的方块
让反作弊知道这是一个什么类型的方块,以通过特定的行为模式来检测玩家的各种行为,以免误判
简单的说就是让ncp不要把碰撞体特殊的方块和一整个完整的方块混为一谈
举个例子,玩家是不能正常走进一个完整的固体方块的,但是比如栅栏的模型并不是一整个格子
玩家贴着栏杆走就会被判定卡在方块里走,当然是会回弹的
所以你要去告诉ncp怎么判断(遍历)会比较好

   我会给参数一些标记,请在后文看教程的时候仔细看看标记,不要只看我的中文注释
[0]: 基本用不到
[1]: 对流畅度无太大影响
[2]: 需要酌情添加此参数
[3]: 很吃性能

    坐标值flags:

  full
#平面上普通的整块方块坐标(无高度)
#无需设置&无用参数
#[0]


  xz100
#立体的普通整块方块
#无需设置,因为默认都是按这个判断的
#[0]


  height100
#覆盖方块的高度为1格高
#你甚至可以把栏杆设置为1格高,虽然由于碰撞体还是无法通过
#会被方块可通过性(passable)的判断无视
#[1]


  height150
#覆盖方块的高度为1.5格高
#仍然会被方块可通过性(passable)的判断无视
#[2]


  height_8sim_dec        
#如果一类方块的高度能从1格高向下降低,数据值从0增加到0x7,其中0x7是最低的。
#0x8表示整块方块/方块下落中。参数适用于流动的水/熔岩 且碰撞体检测只为0.5格高或1格高
#[2]


[不推荐|已过时]f_height_8sim_inc
#同理 目标方块数据值随着高度的增加而增加,最大为0x7,重复到0x15。
#且碰撞体检测只能为0.5格高或1格高
#参数适用于雪片


  height_8_inc
#和f_height_8sim_dec相反(但和上面过时的那个参数一样),用于方块数据值向上增加的方块.
#参数适用于雪片
#[3]


  height8_1
#适用于0.0625格高的方块,适用于荷叶,羊毛毯
#配合protocollib食用,实现额外的客户端通讯,免得玩家上下回弹得爽_死
#[2]

固体方块flags:

  solid
#默认值,不认识这单词的自己百度
#[0]


  ground
#玩家可以站在上面的方块,也可以在上面蹲下
#[1]


  ign_passable
#可以通过任何方式通过的方块,即绕过检测
#在固体方块同类flags中比较时,建议优先选择此参数
#[-1]


  passable_x4
#数据值0x04的方块
#适用于栅栏门
#[1]


  ground_height
#将方块标记为一个地面固体方块(即可以踩)
#但玩家在从上方通过时不会被判定为作弊
#适用于所有 楼梯,台阶,半砖等


  min_height16_1
#需要和ground_height同时设置
#适用于0.0625格高的方块
#适用于羊毛毯与荷叶
#[1]


  min_height16_15
#需要和ground_height同时设置
#适用于1 - 0.0625格高的方块
#适用于雪片,台阶等方块
#[1]

液体方块flags:

  liquid
#液体行为模式(mod)

  water
#水行为模式

  lava
#岩浆行为模式

    特殊行为flags:

  variable
#方块碰撞体会改变
#如栏杆,单个栏杆和连起来的多个栏杆碰撞体不同
#[1]


  thin_fence
#细的栏杆
#适用于铁栅栏、各种玻璃板


  thick_fence
#厚的栏杆
#适用于木质与石制栏杆,但是木质的是默认自带的



  stairs
#固体半砖或楼梯均适用

  facing_low3d2_nswe
#适用于损伤值(数据值data)用来表示不同朝向方块的方块
#尤其是梯子
#[3](会检测许多不存在的数据值)


  [不推荐]attached_low2_snew
#同上,适用于数据值上限为2的方块

    移动flags(基本为预设,但效果不佳)

  ice
#玩家在固体方块 蓝冰/浮冰 上的行为预设

  climbable
#在可以爬的方块(梯子与藤蔓)上的行为预设
#同时在落在这些方块上时会绕过Nofall/AntiFall的检测
#因为如果拉住这俩方块的话就不会有摔落伤害嘛


  bounce_25
#史莱姆方块的弹跳检测与摔落伤害检测行为预设
#除非玩家在mod方块上的表现与史莱姆方块完全一致,否则仍然会被检测为作弊
#即对mod相性几乎为0


  falldist_half
#玩家落入液体时的行为预设
#其表现为距离/2,同时忽略伤害检测


  allow_lowjump
#玩家跳跃行为检测的预设
#避免玩家方块顶头时正常跳跃,或在台阶(等)上正常跳跃被检测为作弊



  [无意义]rails
#意义不明的矿车轨道检测

  [无意义]leaves
#指示方块为叶子

  [无意义]carpet
#指示方块为地毯

    传递方块碰撞体的flags:

collide_edges
#通过元flags标记碰撞体的模型边缘 , 并传递给被碰撞的方块
#用不来就别用,当做没看到,假装自己会了就行
#这种事情甚至没什么要不要紧的。你会,那就优化;你不会,当然也不是负优化

所以我们看了那么多不明觉厉的配置
    大概可以猜到对于雪啊 地毯啊 栏杆啊 进行一些配置了
    下面这个你们随性用


  1.       snow: default
  2.       (免费)moving_piston: default+ign_passable+ground_height
  3.       (付费)piston_moving_piece: default+ign_passable+ground_height
  4.       DEAD_TUBE_CORAL: default+ign_passable+ground_height
  5.       DEAD_TUBE_CORAL_WALL_FAN: default+ign_passable+ground_height
  6.       DEAD_BRAIN_CORAL: default+ign_passable+ground_height
  7.       DEAD_BRAIN_CORAL_WALL_FAN: default+ign_passable+ground_height
  8.       DEAD_BUBBLE_CORAL: default+ign_passable+ground_height
  9.       DEAD_BUBBLE_CORAL_WALL_FAN: default+ign_passable+ground_height
  10.       DEAD_FIRE_CORAL: default+ign_passable+ground_height
  11.       DEAD_FIRE_CORAL_WALL_FAN: default+ign_passable+ground_height
  12.       DEAD_HORN_CORAL: default+ign_passable+ground_height
  13.       DEAD_HORN_CORAL_WALL_FAN: default+ign_passable+ground_height
  14.       DEAD_TUBE_CORAL_FAN: default+ign_passable+ground_height
  15.       DEAD_BRAIN_CORAL_FAN: default+ign_passable+ground_height
  16.       DEAD_BUBBLE_CORAL_FAN: default+ign_passable+ground_height
  17.       WATER_LILY: default+ign_passable+ground_height+height8_1
  18.       GRASS_PATH: default+ign_passable+ground_height+ALLOW_LOWJUMP
  19.       STEP: default+ign_passable+ground_height+ALLOW_LOWJUMP
  20.       '101': solid+ground+xz100+height100+ground_height+ign_passable
  21.       '102': solid+ground+xz100+height100+ground_height+ign_passable
  22.       '60': default+ign_passable+ALLOW_LOWJUMP+XZ100+MIN_HEIGHT16_15
  23.       '96': default+ign_passable+ALLOW_LOWJUMP
  24.       '171': default++ign_passable+ALLOW_LOWJUMP+ground_height
复制代码




    2、时隔2个月,吾辈又跑来更新了
    接下来就是一些简单到不能再简单的教程了(虽然和我上文说的难度完全不一样
    由于这个极光2个月前教程安排不当,所以我们接着这个烂坑的逻辑继续下去
    我只简单的举一些例子,然后给一点我的配置,各位需要理解后再去使用

   [Blockbreak] Direction <- 请戳ta
唔?可爱的例子来了!看这个方块破坏时玩家朝向的范例!

      配置路径:checks.blockbreak.direction
      权限(绕过):nocheatplus.checks.blockbreak.direction
      Exemption:BLOCKBREAK_DIRECTION

以上内容大概真的没有用

      方向检查会迫使玩家看向(改变视角的位置)他们想要破坏的方块

      相关内容:

然后 没有然后了,我们了解了这个direction可以在玩家破坏方块时检查一下是不是hax
接下来打开配置文件
  blockbreak:
    active: default
    direction:
      active: true
      actions: cancel vl>6 cmdc:blockdirection:1:11 cancel

根据我们之前了解的知识,可以如此解读这个配置文件

  blockbreak:       #破坏方块时的一系列检测
    active: default       #active,即是否开启,处于默认状态(默认开启)
    direction:       #破坏方块时一系列检测中的一个,名为direction
      active: true       #开启状态
      actions: cancel vl>6 cmdc:blockdirection:1:11 cancel     #看后文

上面我们看到wiki里有个active和action,active很好理解,就是启不启用
而action 则是ncp的灵魂之一
在下文介绍中,我会将其翻译为'动作',而 cancel,log,cmd,cmdc,vl>X都是很重要的内容,请仔细阅读

以及在看的时候请带着这个例子一起看
actions: vl>550 log:xswl:0:5:if cmdc:notifyflyspeed1:1:60 vl>4000 cmdc:notifyflyspeed2:1:40 vl>9500 cmdc:notifyflyspeed3:1:30

Action
_  描述  -
cancel
"cancel"意为'取消' ,"cancel"这个动作在上文active: true(即启用)的情况下是不基于你配置的.
你可以简单理解为cancel是必须加的,因为你要告诉NCP,你需要禁止玩家作出一些hax行为,例如自瞄或者杀戮光环.
一旦发生,则'cancel'(取消)玩家的hax行为,且再一般情况下会增加NCP的警戒等级(后文我译为vl.,即等级的缩写).
但是实际上有一些特殊情况,可能会拉高延迟,所以会考虑不在绿区vl.时cancel
我会在后文解释何为绿区vl.
log
创建并显示/记录日志消息. 你可以自定义日志消息的注册,记录频率,记录的时间和记录时玩家的地点
其格式为 log : string : delay : repeat : target
log 只是简单的告诉NCP,你注册了对于有某个hax行为的玩家的日志记录.
string 通过字符串记录的消息.
delay一个数字,它表示在hax消息被记录之前,
    该delay操作最初(如果已经被记录过,则会绕过delay)必须执行多少次.
    如果你服务器检查中经常出现误报,并且您只希望玩家在一分钟内多次被判hax时才显示日志消息,请在log里加入delay.
repeat一个数字,表示在一条消息被记录后需要经过多少才能再次记录该玩家(即冷却).
    这是防止玩家恶意触发log记录,变向攻击服务器所必需的.
    我建议设置为5秒,如果你认为自己的服务器玩家实在是太有爱了,当然可以使用较低的值.
    建议在此处至少使用1(1秒)
    例子: log:bdirection:0:5:if
    这个if我们后面再说
cmd
我推荐使用cmdc而非cmd,但教学是一样的
执行Bukkit或其他插件的命令,是console级执行的. 像日志记录一样,都可以自定义.
其格式为 cmd : string : delay : repeat
cmd 只是简单的告诉NCP,你注册了一个cmd,这个cmd动作会在玩家被判断为hax时执行,在后文 你会有其他了解.
string 执行你配置文件中的字符串类型的指令.
delay一个数字,它表示在某个玩家的hax消息被记录之前
    该delay操作最初(如果已经被记录过,则会绕过delay)必须执行多少次.
    如果你服务器检查中经常出现误报,并且您只希望玩家在一分钟内多次被判hax时才执行cmd指令
    请在cmd里加入delay.
repeat一个数字,表示在一条消息被记录后需要经过多少才能再次记录该玩家(即冷却).
    这是防止玩家恶意触发cmd行为,变向攻击服务器所必需的.
    我建议设置为5秒,如果你认为自己的服务器玩家实在是太有爱了,当然可以使用较低的值.
    建议在此处至少使用1(1秒)
cmdc
cmd 一模一样,只是你能在里面用&来作为颜色代码了
vl>X
旨在表示"至少警戒等级达到X级才会触发"。用于定义仅在玩家达到特定违规级别时才执行的动作
玩家被ncp检查出嫌疑后一般会增加 "vl" 值,同样,vl值会随着时间的推移而减少。
警戒等级对于不同的反hax检查中都是独立的,例如,它们可能描述移动距离超出限制,攻击次数超过攻速限制.
也就是说,对于每一种启用的hax检查,都会有一个独立的vl.

表达式 "vl>x" 实际上并不能被称为 action.
它限制了之后写入的所有action仅在玩家的违规级别至少达到给定值时才执行.
这允许你定义action层 并处理各类不同的 重复的或高警戒等级玩家的检查.
举个例子,刷屏检查会在玩家达到特定警戒等级时才踢出玩家

target
我们上面提到log的时候,其格式为log : string : delay : repeat : target
细心的各位可能已经发现我没有介绍target,那么我们现在来介绍一下
target这里可以填3个东西
c  即in console,意为将log消息发送在后台
i   即in game,意为将log消息发送在游戏内
f  即in file,意为将log消息保存在后台某个文件内
你可以组合这三个单词,能够有7种情况
c,i,f 这三种
以及
ci  后台,游戏
cf  后台,以及保存在文件内
if   游戏,以及保存在文件内
cif  后台,游戏,以及保存在文件内


    什么?你还是一头雾水?
    正常正常,极光写的教程本来就不是给人看的,只要你对这种'参数'有一些些感觉了
    我们就可以步入下一步了,实战演练,以及喜闻乐见的 "我丢配置, 你来用" 时间

上面表格里有几个红色的字符串,这个比较有意思,我们先跳过,先教难的部分

      _警戒等级 vl>X
  她实在是太棒了,分级处理作弊事件,还变向杜绝了误判


    如图:
    ActionLevels.gif
   
    我们来分模块看 分别是 绿色1级警戒等级 黄色2级警戒等级 蓝色3级警戒等级
    先总览一下,绿色模块是1级的 所以不需要判断警戒等级就可以直接使用
    其效果为cancel,即告诉ncp会阻止这类行为的发生
    其对应的警戒等级范围 为绿区的0到黄区内设置的警戒等级
   
    接下来敲一个空格 输入 vl>1000 就进入了黄区
    那么现在再回过头去看绿区的话,就能发现其对应范围为0~1000
    同样,我们需要在玩家的vl进入黄区时也cancel一下,所以也要加上cancel
    既然进入黄区了,我们要考虑制裁一下这个玩家,所以我们执行了一个叫做'kickfly'的指令
    但实际上并没有这个指令,所以我们会在后文进行教学,如何注册你自定义的指令(仅使用ncp功能,不用敲java)

   随后就是蓝区了,同理,我们会看到其范围是当vl>1300
   也就是说 黄区的范围为1000 ~ 1300蓝区范围为 1300 ~ 更高
   其会cancel玩家的hax行为,并执行'bkicker'指令

   玩家在绿区中并不会被特别处罚,所以即使是疯狂误判,也需要达到vl1000才会进入黄区被处罚
   所以说可以变向杜绝误判
ps:  如果卡在半空中什么的是会被服务器核心那边踢出去的,这个倒真的没办法补救
   但功能也够强大了,不仅防止误判,还能有效限制hax猖狂程度,毕竟谁都不想一上来就进蓝区对吧

  1. actions:
  2. vl>550 log:xswl:0:5:if cmdc:notifyflyspeed1:1:60
  3. vl>4000 cmdc:notifyflyspeed2:1:40
  4. vl>9500 cmdc:notifyflyspeed3:1:30
复制代码

等级1  在警戒等级低于vl 550时不作处罚
等级2  在vl 550~4000时 应用名为xswl的log日志格式,其内容需要在其他地方定义,我们稍后说
     delay为0,这适用于服务器hax较多的时候
     repeat为1,这不能有效防止黑客刷一堆log,但多少能限制一点
     if,将log保存在文件内,并在游戏内提醒管理员
    并且执行notifyflyspeed1指令
     delay为1,这意味着每分钟内,玩家从第二次触发hax警告后才会被处罚
     repeat为60,即玩家每60秒才能被处理一次2级处罚
等级3  在vl 4000~9500时,执行notifyflyspeed2指令
     delay为1,同上
     repeat为40,即玩家每40秒才能被处理一次3级处罚
等级4  在vl 大于9500时,执行notifyflyspeed3指令
     delay为1,同上
     repeat为30,即玩家每30秒才能被处理一次4级处罚

   如你所见,处罚等级的分区数量没有上限,你可以继续添加等级5,等级6,乃至等级100的处罚
   但更多的判断会一定程度上影响流畅度,虽然ncp的优化做的不算糟糕,但还请服主们不要玩得太猛
此段教程内,我没有使用cancel,这是由于 这个action是moving的
cancel此类事件会导致服务器占用提高,并且会导致玩家回弹增加
且moving较易被误判,所以才使用了4段分级

需要注意的是,如果你的指令中包含kick,ban
则必须在执行kick,ban的那个等级中先cancel一下,否则会出现一些你不想见到的bug
甚至出现一些可利用的游戏漏洞,情况很多,不作列举,仅在此提醒


      _Strings
  她实在是太棒了,超优雅的解决方案,防止每次hax检查都执行冗长的操作


    我们基本上可以将其想象为重定向或别名
    看一些简单的例子就能了解了

log的string:
  1.   ban: 封禁玩家账号 [player]
  2.   ban-ip: 封禁玩家IP地址 [ip]
复制代码
这里的[player][ip]都是占位符

cmd的string:
  kick: ncp kick [player]

有很多其他的占位符
[check][locationfrom][locationto][distance][violations][tags][food][health][blocktype][reachdistance][packets][limit]
你们可以翻译一下
    [check]是检查类型
    [locationfrom][locationto]分别是移动起始点 与 末点
    [distance]是距离
    [violations]是被处理时的vl警惕等级
    [tags]是损伤值
    [food][health]分别是食物类型和生命值数量或造成的伤害
    [blocktype]是破坏/放置方块类型
    [reachdistance]是reach检查时的手长距离
    [packets][limit]是客户端发包和发包上限

免费版的string教学至此结束
付费版的就难了很多,尤其是语法,给你们康康
  notifyflyspeed2: ncp delay conditionalcommands:ccmd [player] unless -ping->251|-tps-<18.5|-time_online-<100 do ncp log stream notify &7(&6!&7) &6[player] &7is moving too quickly (&6ExtraElytra&7) (&6[violations]VL&7)

主要是多了stream notify do unless 以及ping tps timeonline的判断这种
有付费版的可以把paypal的付费截图打下码发给我 然后我再来写教程(笑,不然写了也没人看

先上配置文件
[attach]等一下等一下 我先不传了[attach]
需要强调的是,本配置文件的...怎么说呢...
就 它的版权已经完全搞不清楚了,我改动过,但是最初的作者到我这里至少经过十几次传递
然后我这边的这个配置文件也只是树枝上的一根枝条,类似但不同的配置已经数不过来了
你可以拿去用,也可以拿去改动,但是你不能说这是你写的,或者说,我现在也完全没办法考究到底是谁写的了
有线索的可以提供一下,然后我去交流一下,如果真的能找到原作者,如果他不允许的话,那么我就删,好趴


      _配置文件阈值全教学
  功能介绍,措施介绍,阈值优化,无脑简单


    从头开始!
   一、[Blockbreak]
  blockbreak:
    active: default
#启用blockbreak,破坏方块时的检测

#Blockbreak下的direction
    direction:
#这个方向检查会强制玩家看向(视角朝向)他们想要破坏的方块.
      active: true
      actions: cancel vl>6 cmdc:blockdirection:1:11 cancel

#Blockbreak下的fastbreak
    fastbreak:
#在生存模式下,fastbreak会强制玩家以服务器端计算的速度破坏方块.
#阻止黑端通过发包等方式直接破坏目标方块.
#为了消除lag spikes延迟峰值,NCP会允许客户端那边稍微加快一点方块破坏的速度.
#以避免在服务器端或客户端遇到延迟(网络或CPU超时)时出现误判.

      active: true
      strict: true
#如果strict设置为true,fastbreak将计算从交互到方块破坏之间的时间.
#如果设置为false,它将计算两次方块破坏的时间间隔
#false情况下,黑端可以轻松绕过,但是NCP会强制客户端以正常速度破坏方块
#在服务器延迟较高,或者在服务器有mod的情况下建议设置为false
#这会让NCP以另一种更加优雅的方式解决各种你想不到的野鸡的问题(笑

      delay: 97
#在这里,您可以为所有方块添加一些额外的破坏时间.
#以避免在服务器在严重延迟时产生误报.
#(以毫秒为单位).

      intervalsurvival: 100
#生存模式下的方块破坏时间的百分比.
#设置低于100的值会导致客户端那边能更快地破坏方块.
#(以百分比为单位).

      grace: 2000
#(以毫秒(ms)为单位)
#增加这个值会让玩家在ncp_Blockbreak_fastbreak的每个hax检查周期内更快地破坏方块.
#但 反之并不会减缓破坏速度

      actions: cancel vl>3 cmdc:fastbreak1:1:15 cancel vl>25 cmdc:fastbreak2:1:11 cancel vl>45 cmdc:fastbreak3:1:11 cancel

#特别内容:
#1、如果delay配置的值较小,则破坏时间较短的方块可能会被瞬间破坏
#     客户端那边看起来就像是创造模式,例如你空手撸了羊毛地毯,然后地毯瞬间消失,地上出现一个掉落物
#     服务器端这边则有更大可能会误判
#2、fastbreak功能需要与下文的frequency配合使用:
#     如果fastbreak的delay设置的过小,或出现了新的黑端原理,
#     则frequency将会强制限制短时间内可破坏的方块的的数量,而与方块类型无关
#3、请勿将intervalsurvival设置为高于100%的值,否则黑端会很难被ncp检测到

#防止玩家快速破坏方块是frequency的检测内容,
#它并不计算单个方块可以被破坏的速度,此处只会计算一段时间内破坏的方块上限。
#这样,可以把各种黑端的模式下破坏方块的速度限制在一个合理的频率上。
#同样,这样的机制极大地减少了误判

frequency:
      active: true
      #是否启用
      intervalcreative: 95
      #在创造模式下,破坏2个方块的速度间隔至少为{95}。(毫秒)
      intervalsurvival: 45
      #在生存模式下,破坏2个方块的速度间隔至少为{45}。(毫秒)
      shortterm:
        ticks: 5
      #一般来说,1秒是20ticks
      #在这里意味着 每5ticks....(看下文)

        limit: 6
      #上述时间内可以破坏的方块数
      #本设置实在是很精巧,虽然我想大家不一定能体会到
      #这防止了误判以及很严重的一些卡顿与延迟问题

      actions: cancel vl>40 log:instantnuker:0:11:i cancel cmd:javaerror:1:6
      #作为一个以毫秒与ticks计数的配置,大家很清楚这会导致卡顿
      #所以插件作者优化了过程,一般来说每隔2秒才会触发一次本判断
      #同样的,那个shortterm(短期设置)也有所优化,玩家在快速破坏一定方块后需要停2秒

   #本设置将强制玩家在破坏方块之前先挥动手臂
   #该动画能使其他玩家注意到某些玩家是否有开hax

   noswing:
      active: true
      actions: cancel vl>5 cmdc:noswing:1:11 cancel

   #玩家可以稍微增加他们破坏方块的距离
   #这项检查将尝试通过判断玩家和方块的位置来确定距离。
   #麻烦和后文攻击判断里的reach区分一下

    reach:
      active: true
      actions: cancel vl>5 cmdc:blockreach:1:11 cancel

   #此检查会强迫玩家先与方块进行交互,然后才能破坏它。
   #这个反作弊的判断实在是太精巧了

    wrongblock:
      active: true
      #level: 每次触发检测时警惕等级如何增加
      level: 10
      actions: cancel
      #但我只是简单的cancel了一下,欢迎大家添加制裁方案
      
这个level对生存服性能影响较大,如果没有特别需求,绝对建议只加cancel


下面是blockinteract的配置
  blockinteract:
    active: default

    direction:
      active: false
      actions: cancel
#这个方向检查会强制玩家看向(视角朝向)他们想要交互的方块.
#BukkitAPI会在放置、破坏方块前抛出一个交互事件
#如果禁用交互的话,则不会触发本检测,但是仍然很吃占用,有必要再开

    reach:
      active: false
      actions: cancel
#这项检查可以确保从方块到玩家的距离是合理的,然后该玩家才能与之交互(比如打开一扇门)
#但是容易误判,且免费版不能改参数,我选择了关掉

    speed:
      active: true
#限制玩家交互次数,同样限制了一些黑科技,以免hax崩掉其他玩家客户端
      interval: 2000
#interval单位毫秒,在该动态时间段内,玩家交互次数会被保存在缓存里
      limit: 55
#limit单位次,在interval时间段内,玩家交互次数的上限为 {55}
      actions: cancel vl>5 cmdc:blockspeed:1:11 cancel vl>60 cancel cmd:javaerror:1:6
#3段防误判,由于interval是动态,所以limit55是不可能误判的
#长时间tps低于15的时候就别开服了吧,我的参数也救不了你

    visible:
      active: false
      actions: cancel
#神器 但是在这里的visible没有用,要到下文pvp的那个才有用
#用处是 : 防止黑端隔墙破坏方块,Anni都给我开起来,其他服不要开
#免费版优化就非常不错了,但是这里没有用
#如果你不开发插件是不会知道怎么工作的,我后面到pvp那个再科普
#"射光"

下次于: 2019.1.25 更新



1

1





评分

参与人数 7人气 +10 金粒 +52 收起 理由
zhan_long_yan + 2 + 40 MCBBS有你更精彩~
Salt_lovely + 2 MCBBS有你更精彩~
88089766w + 6 神乎其技!6的飞起!
HotPe_e + 2 支持优秀教程 qwq
2760160577 + 1 莫得金利
Sssss... + 2 MCBBS有你更精彩~
超人152 + 1 + 6 大佬我想知道你那音乐部分代码怎么写的.

查看全部评分

回复

使用道具 举报

weiyh 当前离线
积分
579
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2017-6-8
查看详细资料
发表于 2019-10-1 14:57:36 来自手机 | 显示全部楼层
前排支持一波极光大大
回复

使用道具 举报

1585390955 当前离线
积分
60
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2015-12-24
查看详细资料
发表于 2019-10-1 14:58:19 | 显示全部楼层
来了来了,极光nb!!!
回复

使用道具 举报

殇凌·残胤 当前离线
积分
4243
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2017-2-19
查看详细资料
发表于 2019-10-1 15:10:56 | 显示全部楼层
趁yys不在承包极光
极光又高产啊!(揉眼睛

评分

参与人数 1金粒 +1 收起 理由
阴阳师元素祭祀 + 1 ?

查看全部评分

回复

使用道具 举报

X836696023 当前离线
积分
3921
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2017-11-5
查看详细资料
发表于 2019-10-1 15:39:39 | 显示全部楼层
教程很好,学到了很多东西。。。
我和你楼主一样,也讨厌快餐服
回复

使用道具 举报

cc7w 当前离线
积分
33306
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2014-3-6
查看详细资料
发表于 2019-10-1 16:01:08 | 显示全部楼层
目录的一~七课为什么不弄成并列结构...
回复

使用道具 举报

翼LOVE·小爱 当前离线
积分
5325
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2015-5-11
查看详细资料
发表于 2019-10-1 16:04:54 | 显示全部楼层
很棒的教程,资瓷!
回复

使用道具 举报

极光creeper 当前离线
积分
8125
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2017-8-26
查看详细资料
 楼主| 发表于 2019-10-1 16:05:01 来自手机 | 显示全部楼层
cc7w 发表于 2019-10-1 16:01
目录的一~七课为什么不弄成并列结构...

8月写草稿的时候发现很容易手残点错
我经常把上面一章点到下面一章去
而且点错了也发现不了X
所以就野鸡了一点
回复

使用道具 举报

当前离线
积分
14308
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2019-7-10
查看详细资料
发表于 2019-10-1 17:19:40 | 显示全部楼层
我被sans吸引了,看了帖子十分钟,原来我不开服:(
回复

使用道具 举报

skyliye 当前离线
积分
14900
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2016-11-24
查看详细资料
发表于 2019-10-1 18:24:28 | 显示全部楼层
虽说我开的是mod服,但是我还是要给这篇教程五星好评~
VNAJV41D(7T8F51Q(IL)XXK.jpg
回复

使用道具 举报

1416868137 当前离线
积分
604
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2019-9-19
查看详细资料
头像被屏蔽
发表于 2019-10-1 18:32:06 | 显示全部楼层
前排支持一下这个不错教程,希望更新个mod服务器的
回复

使用道具 举报

机械自律体 当前离线
积分
3359
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2018-4-11
查看详细资料
发表于 2019-10-1 18:57:36 | 显示全部楼层
前排支持教程,插件初入者路过。
回复

使用道具 举报

AzureZeng 当前离线
积分
10130
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2016-2-13
查看详细资料
发表于 2019-10-1 19:03:03 | 显示全部楼层
你来了.jpg

先收藏吧,以后如果我需要开 Minecraft 服务器再来看#逃
↓怪异的目录空格。
image.png

评分

参与人数 1人气 +1 收起 理由
极光creeper + 1 用空格会无端失踪X

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2020-10-29 13:18 , Processed in 0.122573 second(s), Total 30, Slave 29 queries, Release: Build.2020.10.27 1523, Gzip On, Redis On.

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

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

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