最MC论坛

标题: [Java] =|=|=|=|=谁说没Java基础就不能写插件?=|=|=|=|= [打印本页]

作者: Dead_Fish    时间: 2017-3-19 13:43
标题: [Java] =|=|=|=|=谁说没Java基础就不能写插件?=|=|=|=|=
本帖最后由 Dead_Fish 于 2017-10-8 20:29 编辑

ps.序号后面标红代表重要/必看,蓝色代表选读,黑色代表可不读。

1.准备工作:
首先,下载最新的JDK6(不建议下载JDK7):http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-javase6-419409.htm,然后下载Eclipse:http://www.eclipse.org/downloads/  






2.认识Eclipse:  (选读)
你要知道,Eclipse是外国佬写的,需要英语基础,如果实在没基础,就去下载个中文包放上去吧






3.HelloWolrd:  (上半节)
学编程第一个一般都是HelloWorld,我也不破例了
打开Eclipse,点击右边的workdBench,再创建一个Java项目(左上角的File - New - Java Project )[attach]17901[/attach] [attach]17902[/attach]全部设置完毕后,再点击Finish,打开项目,再打开src,创建一个Package(包)[attach]17903[/attach]
路径的命名规则:为保证不与其它程序或插件产生冲突,包名应该用你的域名或者邮箱倒过来作为包路径,应全部为小写(包路径对大小写不敏感)
  例如:
  com.github.<你的用户名>
  或
  com.gmail.<你的用户名>
  后面的扩展路径则可以按用途命名
  之后应以插件名结尾(因为你可能不只制作一个插件),
  为了避免与服务端产生冲突,请不要使用以下路径:(简单说,就是名字不能带有)
  - org.bukkit
  - net.bukkit
  - com.bukkit


类名的命名规则:为增强可读性,应由无空格的多个单词连接而成,每个单词的首字母应大写(类名对大小写敏感)
创建完Package之后,再右键刚刚创建的Package - New - Class  名字随意,最好要加数字,不能以.开头或以.结尾(例如.myplugin / myplugin.)
打开刚刚创建的Class,你会发现里面已经有了代码---未完继续






4.HelloWorld: (下半节)
在第三行加入: import org.bukkit.plugin.java.JavaPlugin  这代表导入JavaPlugin 的类
然而! 这样是不完全的,我们还需要在public class <你的Class名> {    的{前面,加一个extends JavaPlugin,这代表引用了上面导入的JavaPlugn类
完成了这些之后,就可以添加进代码了
有两个代码会在插件被启用/取消启用时调用: 分别是:
onEnable()   /  onDisable()
在class里添加进去,他们看起来是这样的: ([]代表几个空格)
public class <Class名> extends JavaPlugin {
[][][]@Override
[][][]public void onEnable(){
[][][][][][][]//加载时做什么
}
[][][]@Override
[][][]public void onDisable(){
[][][][][][][]//卸载时做什么
}
可以加上getLogger().info("在控制台发送的信息(没有彩色字)");

也许你看蒙的,那我就放个图给你们理解一下吧: [attach]17904[/attach]
写完之后就需要创建plugin.yml了:   右键项目 - New - File - Filename填plugin.yml  - Finish  打开后填入以下信息:
name: <插件名称>
main: <包名称.主类>
version: <版本,数字形式表达>    Author: <作者,可以填你的游戏名>(可填可不填)
例子:
[attach]17905[/attach]
做完之后,点击项目名 - Export - Java File - 把.classpath 和 .project 去掉勾,然后写好插件的路径(Jar File填路径),点击Finish
放进服务端里: 看看看! 跑起来了 :  [attach]17906[/attach]






5.为你的插件添加指令: (上半节)
打开之前写的HelloWorld插件的编辑界面(当然你重新创一个也行)
打开之后,找到你的主类(这里指的一般是插件类的主要部分,就是你plugin.yml里main里路径.类名的那个类)
打开后,在public class <你的类名> extends JavaPlugin{
                 <--->
                 }
的中间,加上一个Override标识符和
        @Override
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
                return true;
        }因为onCommand是布尔值,布尔值相当于真和假,所以每添加一组指令,都要加上一个return true/false;
ps.如果加的是return true 则输入后除了显示指令应该显示的(不知道如何表达了),如果是return false 则会一直显示plugin.yml 里的useage里的(这个待会讲)
        @Override
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
                if (cmd.getName().equalsIgnoreCase("HelloWorld")){
                        if (sender.isOp()){
                                sender.sendMessage(ChatColor.BLUE+"你好,我的世界");
                        }else{
                                sender.sendMessage(ChatColor.GREEN+"你好,世界");
                        }
                        return true;
                }
                return true;
        }

讲解: if (cmd.getName().equlasIgnoreCase("HelloWorld")){
              if (sender.isOp()){
                       sender.sendMessage(ChatColor.BLUE+"你好,我的世界");
                     } else{
                         sender.sendMessage(ChatColor.GREEN+"你好,世界");
                     }
           }
如果(获得命令<不区分大小写>=HelloWorld则执行)-(检测)如果sender(命令触发者)是OP-触发者(点)发送信息蓝+你好我的世界
                                                                              -否则(玩家不是op)-发送信息绿+你好世界







6.为你的插件添加指令: (下半节)
做完之后,就开始在plugin.yml 里添加指令了
打开Eclipse里的plugin.yml
另起一行输入:(一个[]代表一个空格)
commands:
[][]<Command>:    ##插件的指令
[][][][]description: "注释"     ##插件的注释,如果要中文就要加上""
[][][][]usage: /<command> ##指令的使用(如果return 是false的话,就会发出这里写的,最好去实践一下。)
[][][][]permission: Skill.use    ##使用权限
[][][][]permission-message: You don't have permission use this Commands    ##如果没权限则显示
举个栗子:
[attach]18442[/attach]
这样,一个插件的雏(chu)形就做好了。




作者: Spider_Man    时间: 2017-3-19 14:14
完美,谁说没java基础就不能写的?  顶!
作者: 我335    时间: 2017-3-19 14:16
顶~ 好人一生平安
作者: 老厉害了    时间: 2017-3-19 14:29
顶,我需要定制插件,大神能帮帮忙吗
作者: lss233    时间: 2017-3-19 19:29
不错的教程。支持一下
作者: Spider_Man    时间: 2017-3-20 19:55
每日一顶,爱死这个教程了
作者: luannan    时间: 2017-4-14 18:08
谁教我我不会。交我的人加我QQ;2823411132

作者: 御姐姐    时间: 2017-4-26 16:45
虽然看不懂,但是很厉害的样子,点赞
作者: dawdawdawd    时间: 2017-4-29 14:55
非常好的教程,支持
作者: eswlsljbse    时间: 2017-5-1 19:56
我想问,为什么每个教写插件的都用Hello Wolrd来教
作者: Ghost_LMD    时间: 2017-8-15 19:03
Spider_Man 发表于 2017-3-19 14:14
完美,谁说没java基础就不能写的?  顶!

楼主,我看不懂
作者: Jones    时间: 2017-8-21 22:01
支持一个,不过比某bbs上的教程更难以让人消化
作者: Jones    时间: 2017-10-28 21:51
其实吧我想说个笑话:我用JDK1.8
作者: Jones    时间: 2017-10-28 21:54
控制台输出消息可以使用ChatColor,给玩家发送聊天信息/发送公告等可使用§,懒的话也可以用&然后.replace("&", "§")




欢迎光临 最MC论坛 (http://www.zuimc.com/) Powered by Discuz! X3.2