热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Minecraft1.7.2基于BukkitAPI的插件编写教程《一》

基于BukkitAPI的插件编写教程在教程开始之前,请确保你有一定的编程基础.如果你对编程属于一无所知,那么请你先去阅读Java编程基础.准备工作首先
基于Bukkit API的插件编写教程
在教程开始之前,请确保你有一定的编程基础.如果你对编程属于一无所知,那么请你先去阅读Java编程基础.

准备工作

首先你要准备一个IDE和一个JDK
JDK我推荐你使用JDK 7 虽然Java 8已经发布,但是我还是推荐你使用Java 7 
下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
IDE方面有很多的选择 比如IDEA Eclipse NetBeans
这里我们使用Eclipse
下载地址: http://www.eclipse.org/downloads/

这里提供的Eclipse和JDK都存在32bit 和64bit的选择,请根据自己的系统来选择

当你下载完Eclipse和JDK后我们就可以开始安装了

关于JDK的安装 你还需要进行环境变量配置
关于JDK的环境配置 网络上有很多
http://blog.csdn.net/tianshuai1111/article/details/7367700
http://jingyan.baidu.com/article/c85b7a6414f2ee003bac95d5.html

关于Eclipse的安装 只需要解压到一个目录 然后运行他即可.第一次运行会让你选择工作目录,不过这无关紧要.
请按照自己的习惯设置相关的目录

其次你需要对你即将要编写的插件有一个明确的计划
现在请你思考一下这些问题
  1. 你要做什么类型的插件
  2. 这个插件是拿来做什么
  3. 插件的实现方式
当你思考完后,我相信你有一个明确的方案了.
不过我相信你对于第三点 插件的实现方式  一定会存在疑问(群众 :废话你都没说 我咋知道

写一个主类

至此 我们正式进入了插件的编写环节
首先 我们新建一个Java 项目 如图:

选择新建>Java项目后,会出现 如图所示


项目名:这是作为Java项目的名称 属于一种代号 方便你能找到他
位置:Java项目存储在本地磁盘的位置 当你勾选使用默认位置的时候 Java项目所在的位置总是在{workspace}/{project} 
最后 笔者编辑后的 如图所示:

接下来 请不要点击完成 我们还需要为该Java项目添加依赖
点击下一步 选择库>添加外部JAR 如图所示

图中我们选定的bukkit-1.7.2-R0.2.jar正是本教程所使用的Bukkit API  插件的编写 全部依赖于这个jar文件
下载地址:http://pan.baidu.com/s/1mgyszMC<百度云> 
当我们添加完成后 就可以点击完成了
当你完成这步后 你可以清晰的看到你的包资源浏览器中出现了一个叫做SimplePlugin的空项目


到此为止 我们已经完成了Bukkit 插件编写的第一步 项目的建立 当然如果你的插件中出现了中文 请设置项目的编码为UTF-8

接下来 这个项目我们就要为其添加源码
右击这个项目 选择新建>类 

这里笔者 已经填写好了相关的信息
包:关于包的概念 这里我引用了http://blog.sina.com.cn/s/blog_4cd9865b010009h1.html这篇博文
在Java的编写中 你有一些命名规则需要去了解 这只是作为一个潜规则存在
参考地址:http://wenku.baidu.com/view/2e56f51a964bcf84b9d57b18.html

名称:类的名称 具体命名规则 请参考上方的参考资料
超类:这个类继承的父类 在Bukkit 插件编写中 指定的主类你必须要继承JavaPlugin这个类 当然你也可以实现JavaPlugin这个类中所实现的接口

当你新建好类 IDE会根据你的这些设置 自动帮你补全代码

这时你的插件还需要对其重载 加载和关闭的方法
他们看起来是这样的
    @Override
    public void onEnable()
    {
        
    }
    @Override
    public void onDisable()
    {
        
    }
@Override 是JDK提供的一个高级注释 用于表示重载
当你完成对onEnable()和onDisable()的重载时 你的主类也就完成了 虽然并没有什么功能

为了让插件看起来cool  我们准备在这两个方法中加入点什么

JavaPlugin 作为Bukkit API 提供的一个类 当你继承他时 会提供一些已经实现的功能给与作为插件编写者的你 
this 是Java中的关键词 用以表明当前实例
getLogger() 是JavaPlugin提供的一个方法 用于获取插件的Logger
这样我们 华而不实 的主类就完成了。

对于Bukkit的编写我们还缺少一步 那就是为Bukkit指明插件的文件
这个文件就是plugin.yml
在Bukkit的插件加载机制中 plugin.yml是至关重要的标识 如果没有plugin.yml 插件也就不会被载入

我们选中项目 右击选择 新建>文件
文件名为plugin.yml
当我们建立完成后 IDE为我们默认打开plugin.yml文件

如图所示 这是我完成的plugin.yml
对于Bukkit的插件加载机制来说 你必须填写的三个项目
name:插件的名字
version: 插件的版本
main: 插件的主类 请注意是<主类所在的包>.<主类>
(如果 你在plugin.yml 使用了中文 请使用转码工具转换为UTF-8 无Bom)
关于plugin.yml更加详细的说明 请参考官方的Wiki http://wiki.bukkit.org/Plugin_YAML

插件的打包

当你为你的插件写好主类和plugin.yml 这个时候就需要打包插件来实现测试
在你的Eclipse中选中项目 然后右击>导出>Java-JAR文件
如图所示进行设置

如果IDE提示导出失败 请再进行导出一次 因为失败的原因 很可能是资源并没有同步.

测试你的插件

把你打包完成的插件放到你找好的服务端中的plugins文件夹


然后我们运行我们的服务端 就可以从图片中看到 插件被正确的运行了

至此 一个仅有控制台通告功能的插件我们就完成了

Tips:
      Bukkit的组成成分:主类,自制事件,监听器,命令执行器,资源文件,信息文件

课后作业

了解Plugin.yml的参数

推荐阅读
  • 长期从事ABAP开发工作的专业人士,在面对行业新趋势时,往往需要重新审视自己的发展方向。本文探讨了几位资深专家对ABAP未来走向的看法,以及开发者应如何调整技能以适应新的技术环境。 ... [详细]
  • OBS Studio自动化实践:利用脚本批量生成录制场景
    本文探讨了如何利用OBS Studio进行高效录屏,并通过脚本实现场景的自动生成。适合对自动化办公感兴趣的读者。 ... [详细]
  • 问题场景用Java进行web开发过程当中,当遇到很多很多个字段的实体时,最苦恼的莫过于编辑字段的查看和修改界面,发现2个页面存在很多重复信息,能不能写一遍?有没有轮子用都不如自己造。解决方式笔者根据自 ... [详细]
  • 函子(Functor)是函数式编程中的一个重要概念,它不仅是一个特殊的容器,还提供了一种优雅的方式来处理值和函数。本文将详细介绍函子的基本概念及其在函数式编程中的应用,包括如何通过函子控制副作用、处理异常以及进行异步操作。 ... [详细]
  • 2023年,Android开发前景如何?25岁还能转行吗?
    近期,关于Android开发行业的讨论在多个平台上热度不减,许多人担忧其未来发展。本文将探讨当前Android开发市场的现状、薪资水平及职业选择建议。 ... [详细]
  • 使用TabActivity实现Android顶部选项卡功能
    本文介绍如何通过继承TabActivity来创建Android应用中的顶部选项卡。通过简单的步骤,您可以轻松地添加多个选项卡,并实现基本的界面切换功能。 ... [详细]
  • 本文详细介绍了 `org.apache.tinkerpop.gremlin.structure.VertexProperty` 类中的 `key()` 方法,并提供了多个实际应用的代码示例。通过这些示例,读者可以更好地理解该方法在图数据库操作中的具体用途。 ... [详细]
  • 软件测试行业深度解析:迈向高薪的必经之路
    本文深入探讨了软件测试行业的发展现状及未来趋势,旨在帮助有志于在该领域取得高薪的技术人员明确职业方向和发展路径。 ... [详细]
  • 二维码的实现与应用
    本文介绍了二维码的基本概念、分类及其优缺点,并详细描述了如何使用Java编程语言结合第三方库(如ZXing和qrcode.jar)来实现二维码的生成与解析。 ... [详细]
  • JUnit下的测试和suite
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 一、Advice执行顺序二、Advice在同一个Aspect中三、Advice在不同的Aspect中一、Advice执行顺序如果多个Advice和同一个JointPoint连接& ... [详细]
  • spring boot使用jetty无法启动 ... [详细]
  • 本文探讨了如何通过Service Locator模式来简化和优化在B/S架构中的服务命名访问,特别是对于需要频繁访问的服务,如JNDI和XMLNS。该模式通过缓存机制减少了重复查找的成本,并提供了对多种服务的统一访问接口。 ... [详细]
  • Jenkins API当前未直接提供获取任务构建队列长度的功能,因此需要通过解析HTML页面来间接实现这一需求。 ... [详细]
  • 本文详细介绍了如何利用 Bootstrap Table 实现数据展示与操作,包括数据加载、表格配置及前后端交互等关键步骤。 ... [详细]
author-avatar
因为梦想2013
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有