本帖最后由 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的主文件指的是哪个文件