本帖最后由 berry64 于 2019-1-29 10:52 编辑 

 
 
然后名字叫他MyFirstPlugin,意思是我的第一个插件
 
 
对着src右键→新建→包
名字叫他:com.github.(你自己喜欢的名字)
这里我的是com.github.berry64,别用我的,你可以用com.github.asdf或者什么的
只要不重复就可以了
可以com.qq.(你的QQ号)
然后对着主文件右键→属性
 
 
就够啦,jar文件只要你开服务器的核心文件就够了
这里我用@stool 的帖子
核心文件
然后右键创建的包,选择新建
然后创建一个新的类,名字叫他MyFirstPlugin
 
 
然后这个就是我们的主文件了
现在我们创建plugin.yml也就是让bukkit加载他的必要文件,
右键主文件,新建→文件
 
 
然后你就可以看见我们创建了plugin.yml!
plugin.yml格式非常规范,有点错bukkit就不读,也不知道为何
我觉得挺讨厌的{:10_522:}
没事
这里我发模版
复制代码
这里main可能搞不懂, 我解释一下, 比如说我们创建了一个包名字叫net.berry64.asdf而里面的插件主类名字叫main.java
那么这里的main就填:
复制代码
version呢, 就是插件的版本号,按理说应该每次更新都要增加一位数或者使用一个不重复的数字...
不过我看起来像那种会管他的人吗OAO
0.0.1 很容易理解成第一个插件版本,而后面又有个-SNAPSHOT, 就是快照的意思
记住每一个冒号后面都必须有一个空格!!!!!!!!!!!!!!!!!!!!!!!!!!!!
像这样,一个可以用的插件就出来了,不过没有什么功能
 
 
现在我们回到MyFirstPlugin.java写一段代码
public class MyFirstPlugin后面加上复制代码这样就可以了(对于大神们我说叫新手一直加一个Listener总是好的)
如果报错了你就把鼠标放在上面然后看解决方案,如果有的话导入,没有的话那就说明你没弄好
然后,我们要创建一个指令
输入
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){if (cmd.getName().equalsIgnoreCase("[指令]")){
sender.sendMessage("HAYO");
return true;
}
return false;
}如果不理解的话, 这里有写好的代码:
这样,java里面的指令已经创好了,记得把[指令]换成你要的英文指令
现在我们打开plugin.yml来注册这个指令
在下面我们输入:
复制代码提示一下,空格什么的都很严格的现在我分开来,空格用[]代替
commands:
[][]HAYO:
[][][][]description:[]HAYO
[][][][]usage:[]/<command>
这样就是注册了一个指令了,全部保存然后右键主文件,导出
找到java 下面的 Jar文件,点继续
然后设置保存位置,就好了!{:10_512:}
还不赶紧放到plugins里面试试看?
按理说你输入/HAYO 应该会收到一个消息的

第五章:分段和第一个插件
今天呢,我们先来看看"{"和"}"是什么东西
{就像一个段落的开头
相同的,}就像一个段落的结尾
这些段落之间有很多句子,就是java代码里面;前面的东西啦
;就是句号。(好快)
然后呢,就开始写我们的第一个插件!
于是,我们先建一个Java项目
 
然后名字叫他MyFirstPlugin,意思是我的第一个插件
 
对着src右键→新建→包
名字叫他:com.github.(你自己喜欢的名字)
这里我的是com.github.berry64,别用我的,你可以用com.github.asdf或者什么的
只要不重复就可以了
可以com.qq.(你的QQ号)
然后对着主文件右键→属性
 
就够啦,jar文件只要你开服务器的核心文件就够了
这里我用@stool 的帖子
核心文件
然后右键创建的包,选择新建
然后创建一个新的类,名字叫他MyFirstPlugin
 
然后这个就是我们的主文件了
现在我们创建plugin.yml也就是让bukkit加载他的必要文件,
右键主文件,新建→文件
 
然后你就可以看见我们创建了plugin.yml!
plugin.yml格式非常规范,有点错bukkit就不读,也不知道为何
我觉得挺讨厌的{:10_522:}
没事
这里我发模版
- name: (插件名字)
 
- main: (刚刚创建的包的名字).(主类的名字)
 
- version: 0.0.1-SNAPSHOT
这里main可能搞不懂, 我解释一下, 比如说我们创建了一个包名字叫net.berry64.asdf而里面的插件主类名字叫main.java
那么这里的main就填:
- net.berry64.asdf.main
version呢, 就是插件的版本号,按理说应该每次更新都要增加一位数或者使用一个不重复的数字...
不过我看起来像那种会管他的人吗OAO
0.0.1 很容易理解成第一个插件版本,而后面又有个-SNAPSHOT, 就是快照的意思
记住每一个冒号后面都必须有一个空格!!!!!!!!!!!!!!!!!!!!!!!!!!!!
像这样,一个可以用的插件就出来了,不过没有什么功能
 
现在我们回到MyFirstPlugin.java写一段代码
public class MyFirstPlugin后面加上
- extends JavaPlugin implements Listener
如果报错了你就把鼠标放在上面然后看解决方案,如果有的话导入,没有的话那就说明你没弄好
然后,我们要创建一个指令
输入
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){if (cmd.getName().equalsIgnoreCase("[指令]")){
sender.sendMessage("HAYO");
return true;
}
return false;
}如果不理解的话, 这里有写好的代码:
这样,java里面的指令已经创好了,记得把[指令]换成你要的英文指令
现在我们打开plugin.yml来注册这个指令
在下面我们输入:
- commands:
 
-   HAYO:
 
-     description: HAYO
 
- usage: /<command>
commands:
[][]HAYO:
[][][][]description:[]HAYO
[][][][]usage:[]/<command>
这样就是注册了一个指令了,全部保存然后右键主文件,导出
找到java 下面的 Jar文件,点继续
然后设置保存位置,就好了!{:10_512:}
还不赶紧放到plugins里面试试看?
按理说你输入/HAYO 应该会收到一个消息的
读完了吱一声啊!然后求点人气和金币,给人气自己不丢什么,不想给至少吱一声让我知道谁看了啊
最近也在学习java。  这帖子必须顶啊
这个开发工具还是有必要说一下的。
我还是一个新手 还在找寻更大MOD满足个人的需求 JAVA 这太高科技了 直言 咱没看懂
霸气霸气啊新手的福利啊牛逼吧主加油哦
还行-.-
希望能继续保持
希望能继续保持
收藏了 
写到
extends JavaPlugin implements Listener
的时候就出问题了,我已经按部就班的做好了环境配置可是还是有错误
extends JavaPlugin implements Listener
的时候就出问题了,我已经按部就班的做好了环境配置可是还是有错误
= =。。其实写的还是可以的,但是我觉得你最好先讲讲包啊类啊之类的东西,但我觉得你写的时候很不正经,开玩笑不是应该这么开的【好吧你比教我的那位正经多了...
不知道是不是因为学过一点点的原因我读起来没什么压力,但是我觉得最好不要直接跳到插件,因为中间还有很多内容没讲,比如引入bulabula的,而且到了后面就没有代码示例了...
还有建议你把一些常用快捷键加上去,比如保存的就是ctrl+s
不知道是不是因为学过一点点的原因我读起来没什么压力,但是我觉得最好不要直接跳到插件,因为中间还有很多内容没讲,比如引入bulabula的,而且到了后面就没有代码示例了...
还有建议你把一些常用快捷键加上去,比如保存的就是ctrl+s
能不能换成中文的= =
h22391386 发表于 2014-12-26 20:55
写到
extends JavaPlugin implements Listener
的时候就出问题了,我已经按部就班的做好了环境配置可是还是 ...
我也是= =
并非正解啊0 0!
- package 第三周编程作业;
 
 
- import java.util.Scanner;
 
 
- public class 数字特征值 {
 
 
-         public static void main(String[] args) {
 
-                 // TODO Auto-generated method stub
 
-                 Scanner in = new Scanner(System.in);
 
- //                程序初始化
 
-                 System.out.println(": 数字特征值 - 奇偶特征值 : 计算器");
 
-                 System.out.print("请输入一个非负整数,不大于1000000:");
 
- //                优化用户界面
 
-                 int a=0;
 
-                 int b=a;
 
-                 int count=0;
 
-                 int c=0;
 
-                 int d=0; 
 
-                 int e=0;
 
-                 int ce=0;
 
-                 int binary=0;
 
-                 int count1=0;
 
-                 a = in.nextInt();
 
- //                定义变量
 
-                 if (a<0)
 
-                 {
 
-                         System.out.println("所输入的值不能是负数!程序终止.");
 
-                         System.exit(0);
 
-                 }
 
-                 else
 
-                 {
 
-                         if ( a > 1000000 )
 
-                         {
 
-                                 System.out.println("所输入的值不能大于1000000!程序终止.");
 
-                                 System.exit(0);
 
-                         }
 
-                 }
 
- //                判断输入是否正确
 
-                 while ( a > 0 )
 
-                 {
 
-                         b = a%10;
 
-                         a = a/10;
 
-                         d = b;
 
-                         count=count+1;
 
-                         /*判断的d(b)值为单双 输出为d*/
 
-                         if(d%2 == 0)
 
-                         {
 
-                                 c=0;
 
-                         }
 
-                         else
 
-                         {        if (d == 0)
 
-                                 {
 
-                                         c=0;
 
-                                 }
 
-                                 else
 
-                                 {
 
-                                         c=1;
 
-                                 }
 
-                         }
 
-                         /*判断累积器的单双 输出为e*/
 
-                         if(count%2 == 0)
 
-                         {
 
-                                 e=0;
 
-                         }
 
-                         else
 
-                         {        if (count == 0)
 
-                                 {
 
-                                         e=0;
 
-                                 }
 
-                                 else
 
-                                 {
 
-                                         e=1;
 
-                                 }
 
-                         }
 
- //                        比较c,e的大小关系 若相等则输出1 若不相等输出0 输出de
 
-                         if (c == e)
 
-                         {
 
-                                 ce=1;
 
-                         }
 
-                         else
 
-                         {
 
-                                 ce=0;
 
-                         }
 
-                                 binary=(int)(Math.pow(2,(count-1)));
 
-         //                        得出二进制值
 
-                         if (ce == 1)
 
-                         {
 
-                                 count1=count1+binary;
 
-                         }
 
-                 }
 
-                 System.out.println("奇偶特征值:");
 
-                 System.out.println(count1);
 
- //                输出
 
-                 in.close();
 
-         }
 
 
- }
 
看起来楼主是一位编程大触XD
刚刚完成第三周编程作业 可以帮我优化一下代码吗?
48856209 发表于 2015-1-3 13:37
看起来楼主是一位编程大触XD
刚刚完成第三周编程作业 可以帮我优化一下代码吗? ...
要我优化成什么样子
48856209 发表于 2015-1-3 13:45
在保证正常功能的前提下
越短越好
你可以先试一下这段代码
要短的话那么只能
else{
if(){
}
}改成
else if(){
}
然后删除解释的东西,别的就真的没什么了
berry64 发表于 2015-1-3 13:58
要短的话那么只能
else{
if(){
嗯..好吧
教学模式还是有待改进的 毕竟不可能一上来就能开始学写插件
我觉得你可以写一个java入门教程 文字的表现力有时候其实不如视频 所以我觉得你可以试试看两者结合
帖子里打的不恰当的比方其实不如不打 就直接用它本身的术语 这种比分我看了都会觉得难以理解 相信你的教程可以写得更好
48856209 发表于 2015-1-3 14:26
嗯..好吧
教学模式还是有待改进的 毕竟不可能一上来就能开始学写插件
我觉得你可以写一个java入门教程 文 ...
谢谢哈......我也这么觉得不过走觉得JavaNotes的更好,如果懂英文的可以去看JavaNotes
是bukkit官方推荐=w=
唔唔,楼主为啥不说的更详细点,比如说实现更多的功能该怎么写呢,比如清理掉落物的。
求把你的bukkit-1.7.2-R0.3那个传给我 我找不到
求大神指点 给个图 往那儿个后面啊 说我语法错误
必须支持
Grandiose 发表于 2014-12-30 22:46
= =。。其实写的还是可以的,但是我觉得你最好先讲讲包啊类啊之类的东西,但我觉得你写的时候很不正经,开 ...
其实我觉得还是可以的,可能是因为我有一点Java基础,但是对插件API的用法不是很了解,看到这个帖子终于开始教写插件了,简直如获至宝!
看不懂哈   但是还是谢谢楼主了
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){if (cmd.getName().equalsIgnoreCase("[指令]")){
sender.sendMessage("HAYO");
return true;
}
return false;
}
这一段能详细解释吗....
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){if (cmd.getName().equalsIgnoreCase("[指令]")){
sender.sendMessage("HAYO");
return true;
}
return false;
}
这一段能详细解释吗....
感谢楼主分享~辛苦了
本来做mod开发的,最近也入了插件坑,看了此贴收获很大
这是JAVA语言吧,不过里面英语不认识咋办
楼主,按照你的方法,放到服务端里插件没办法被读取是怎么回事。
tufeiyes 发表于 2014-12-25 23:17
我还是一个新手 还在找寻更大MOD满足个人的需求 JAVA 这太高科技了 直言 咱没看懂 ...
同感~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
LZ的主文件指的是哪个文件
谢谢,话说论坛里的mod教程有木1.8的,找的我好苦。
.project文件要不要加进去?
tufeiyes 发表于 2014-12-25 23:17
我还是一个新手 还在找寻更大MOD满足个人的需求 JAVA 这太高科技了 直言 咱没看懂 ...
在世界上Java是较低级的语言,最高是C语言。
cyk1790897855 发表于 2015-2-14 23:42
LZ的主文件指的是哪个文件
是刚才创的项目就是MyFrst...,就是这个也可以称为主文件。
好棒好棒~不过还是要注意身体的啦
netbeans同理吗
谢谢大师
public class MyFirstPlugin后面加上
extends JavaPlugin implements Listener
是在括号里面还是外面?
从这里 下面完全看不懂 求图
extends JavaPlugin implements Listener
是在括号里面还是外面?
从这里 下面完全看不懂 求图
yc453005841 发表于 2015-3-22 17:58
public class MyFirstPlugin后面加上
extends JavaPlugin implements Listener
是在括号里面还是外面?
public class MyFirstPlugin extends JavaPlugin implements Listener {
}
这样可以
奇怪,没法执行命令(例如执行/HAYO命令它也返回/HAYO)?
在return false那加了个发送消息的,判定boolean为false按你说的代码是怎么回事呢?
关注你的帖子很久了
楼主虽然我是租服务器的但是看到这帖子我还是说:GOOD
整个文件是这样的
name: FirstPlugin
main: org.oeasy.MyFirstPlugin
version: 0.0.1-SNAPSHOT
commands:
HAYO:
description: HAYO
usage: /<command>
楼主
@override 后面的是直接打在 MyFirstPlugin.java 文件里面还是重新创造一个包?
@override 后面的是直接打在 MyFirstPlugin.java 文件里面还是重新创造一个包?
@berry64 大神能否加我qq1411690572,我有问题
0611 发表于 2015-2-27 11:12
在世界上Java是较低级的语言,最高是C语言。
Java和C都是并列的,Java也是属于高级语言的一种,不懂别乱说
输入extends JavaPlugin implements Listener的时候为什会报错?@berry64
ghost10.0 发表于 2015-5-3 14:35
输入extends JavaPlugin implements Listener的时候为什会报错?@berry64
查看解决方案,一般都是应为你没有import
