美文网首页
Bukkit插件开发教程 - 序章

Bukkit插件开发教程 - 序章

作者: Zoyn_ | 来源:发表于2017-12-09 20:28 被阅读0次

    序章

    历史:

    以下历史也许会出现错误,可以当做故事来看,与教程无太大关系

    众所周知在 Minecraft 早期时的多人游戏是只有一个 minecraft_server.jar 的端的,而它并不能满足服主们的需求,只有少数服主可以通过第三方修改,因为它是被混淆
    并且这个端的内部代码写得并不是很好,因为它是由 Notch 一个人完成的

    那么既然服主有需求那就有了"市场"所以在早期的Minecraft社区就出现了几次较大的"变革"


    hMod(Mod向):

    hMod是由一个叫 hey0 的大佬制作出来的,也就是那时候所说的hey0端
    hMod的原理呢其实就是反混淆,将混淆过的代码,反混淆成可读的代码,所以在服务器加入自己的原创内容,就没有这么困难了...

    这里我们可以把hMod理解为一个Wrapper,将我们的代码"翻译"成官方端的代码

    hMod.png

    但事情永不可能这么顺心如意,不久之后hey0就弃坑了


    Bukkit:

    既然hey0弃坑了就有第二人接坑,而这个人就是现在被Mojang"收购"的大佬 —— Dinnerbone,并且叫上了几个志同道合的朋友推翻重做,将其反混淆(人工),并且做出了一个叫做BukkitAPI的东西,这一重做就是我们现在熟知的Bukkit,但是虽然是反混淆,但是还是有部分的字段,方法没有反混淆,还是a,b,c...之类的类名 —— 来源 Bukkit About Us
    我们来了解一下Bukkit给我们都做了些什么

    Bukkit.png

    Bukkit制作当中出现的一些问题(2012-2013)

    Bukkit 时代看似辉煌,但实际上有不少隐患出现:

    • Bukkit 本身的衰落。
      2012 年 2 月,Bukkit 的开发团队(Dinnerbone,EvilSeph,Grum,Tahg)收到来自 Mojang 的 offer,于是欣然应邀加盟 Mojang;作为条件,他们不能再开发 Bukkit,而是负责开发新版本的 SMP(多人联机) 和其他与 Minecraft 有关的工作,比如编写 Plugin API。
      Dinnerbone 和 Grum 这两位可以说是对整个 Bukkit 计划贡献最大的人,反编译和反混淆由 Grum 全权负责,然后 Dinnerbone 则接过代码坐在电脑桌前除了上厕所外不停歇地码上二三十个小时,为的就是以最快的速度将新版本的 Bukkit API 和 CraftBukkit 呈现在大众面前。如今他们走了,虽然有人接班,但是他们都没有了 DinnerboneGrum 的那份旁人难以理解的激情,更新对他们来说更像是一份义务而不是责任。这也不能怪他们,但伴之而来的就是 CraftBukkit 的更新越来越慢,当初两天就能更新完,现在要花上两个月;而Bukkit 在 1.5 后鲜有再加入新的 API,意思就是上文提到的“翻译”活越来越少人肯去做,导致许多 SMP(多人联机) 的新功能都无法单纯地利用 Bukkit API 实现,必须还得配合之前提到的那种直接修改源代码的蛋疼方法...

    • 收费泛滥
      服务器们收费的方式推陈出新,以 Hypixel 为例,VIP 出完了出 VIP+ 之后又推出 MVP...

    • 版权问题
      CraftBukkit 内置了 Minecraft 反编译过后的源代码,无形中已经侵犯了 Mojang 的版权;而 Bukkit 采用的是 GPL 协议...

    Spigot!

    自从原开发团队离去后,先不提越来越慢的更新和越来越落后的 BukkitAPICraftBukkit 的性能也饱受诟病。许多人都自己私下制作了 CraftBukkit 的优化版本,当时最出名的是 CraftBukkit++,着重优化了农作物生长的部分,能显著提高 TPS ,但是每个优化版本都只是优化了一小部分,这个优化通讯,这个优化实体,这个优化 AI,这个优化地图加载...

    那么有没有一款包含所有优化的 CraftBukkit 呢? 有!
    就是由

    md_5_64px.png
    md_5 开发的 Spigot

    Spigot 是个"强化版"的 CraftBukkit,只要换上它你的服务器立刻流畅几倍,提供的 API 和配置文件都更丰富,并且完全开源免费。


    开发前的准备:

    那我们有了一个初步的概念之后我们就来讲讲关于Java的东西吧
    众所周知Minecraft是用Java语言进行开发的,并且BukkitAPI也是用Java语言来开发的,所以在学习之前你需要了解以下Java知识

    • Java基础语法,与部分基础知识 如if,基本数据类型,try catch等…
    • 面向对象思想
    • YAML语法
    • JSON语法 (非必须)
    • 集合类的使用(Collection类和Map类等)
    • 反射(非必须)
    • SQL语法(非必须)

    服务端的选择

    这里我列举一些常见的服务端,它们各有各的好处,在这里我就不一一列举了

    单服服务端

    • minecraft_server
    • craftbukkit
    • spigot (Recommended)
    • PaperSpigot
    • TacoSpigot
    • TorchSpigot
    • GlowStone

    Bungee服务端

    • BungeeCord
    • WaterFall (Recommended)
    • FlexPipe

    本文开发环境

    本文的开发环境如下

    • spigot-1.10.2-R1.jar
    • jdk-1.8.0_77

    本书为了面向广大开发者决定使用以下两种IDE进行开发

    • IntelliJ IDEA
    • Eclipse (可能要凉)

    相关文章

      网友评论

          本文标题:Bukkit插件开发教程 - 序章

          本文链接:https://www.haomeiwen.com/subject/wnwguxtx.html