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

回到目录







第五章:分段和第一个插件

今天呢,我们先来看看"{"和"}"是什么东西

{就像一个段落的开头

相同的,}就像一个段落的结尾

这些段落之间有很多句子,就是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:}
没事
这里我发模版
  1. name: (插件名字)
  2. main: (刚刚创建的包的名字).(主类的名字)
  3. version: 0.0.1-SNAPSHOT
复制代码


这里main可能搞不懂, 我解释一下, 比如说我们创建了一个包名字叫net.berry64.asdf
而里面的插件主类名字叫main.java
那么这里的main就填:
  1. net.berry64.asdf.main
复制代码

version呢, 就是插件的版本号,按理说应该每次更新都要增加一位数或者使用一个不重复的数字...

不过我看起来像那种会管他的人吗OAO
0.0.1 很容易理解成第一个插件版本,而后面又有个-SNAPSHOT, 就是快照的意思

记住每一个冒号后面都必须有一个空格!!!!!!!!!!!!!!!!!!!!!!!!!!!!

像这样,一个可以用的插件就出来了,不过没有什么功能


现在我们回到MyFirstPlugin.java写一段代码
public class MyFirstPlugin后面加上
  1. extends JavaPlugin implements Listener
复制代码
这样就可以了(对于大神们我说叫新手一直加一个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来注册这个指令
在下面我们输入:
  1. commands:
  2.   HAYO:
  3.     description: HAYO
  4.     usage: /<command>
复制代码
提示一下,空格什么的都很严格的现在我分开来,空格用[]代替
commands:
[][]HAYO:
[][][][]description:[]HAYO
[][][][]usage:[]/<command>
这样就是注册了一个指令了,全部保存然后右键主文件,导出
找到java 下面的 Jar文件,点继续
然后设置保存位置,就好了!{:10_512:}
还不赶紧放到plugins里面试试看?
按理说你输入/HAYO 应该会收到一个消息的
读完了吱一声啊!然后求点人气和金币,给人气自己不丢什么,不想给至少吱一声让我知道谁看了啊


回到目录





Tom112233
最近也在学习java。  这帖子必须顶啊

网络摆渡客
这个开发工具还是有必要说一下的。

tufeiyes
我还是一个新手 还在找寻更大MOD满足个人的需求 JAVA 这太高科技了 直言 咱没看懂

欢心世界
霸气霸气啊新手的福利啊牛逼吧主加油哦

stool
还行-.-
希望能继续保持

936728431
收藏了

defoliation_h
写到
extends JavaPlugin implements Listener
的时候就出问题了,我已经按部就班的做好了环境配置可是还是有错误

Grandiose
= =。。其实写的还是可以的,但是我觉得你最好先讲讲包啊类啊之类的东西,但我觉得你写的时候很不正经,开玩笑不是应该这么开的【好吧你比教我的那位正经多了...

不知道是不是因为学过一点点的原因我读起来没什么压力,但是我觉得最好不要直接跳到插件,因为中间还有很多内容没讲,比如引入bulabula的,而且到了后面就没有代码示例了...

还有建议你把一些常用快捷键加上去,比如保存的就是ctrl+s

liuyipeng001
能不能换成中文的= =

liuyipeng001
h22391386 发表于 2014-12-26 20:55
写到
extends JavaPlugin implements Listener
的时候就出问题了,我已经按部就班的做好了环境配置可是还是 ...

我也是= =

耗子
并非正解啊0 0!

48856209
  1. package 第三周编程作业;

  2. import java.util.Scanner;

  3. public class 数字特征值 {

  4.         public static void main(String[] args) {
  5.                 // TODO Auto-generated method stub
  6.                 Scanner in = new Scanner(System.in);
  7. //                程序初始化
  8.                 System.out.println(": 数字特征值 - 奇偶特征值 : 计算器");
  9.                 System.out.print("请输入一个非负整数,不大于1000000:");
  10. //                优化用户界面
  11.                 int a=0;
  12.                 int b=a;
  13.                 int count=0;
  14.                 int c=0;
  15.                 int d=0;
  16.                 int e=0;
  17.                 int ce=0;
  18.                 int binary=0;
  19.                 int count1=0;
  20.                 a = in.nextInt();
  21. //                定义变量
  22.                 if (a<0)
  23.                 {
  24.                         System.out.println("所输入的值不能是负数!程序终止.");
  25.                         System.exit(0);
  26.                 }
  27.                 else
  28.                 {
  29.                         if ( a > 1000000 )
  30.                         {
  31.                                 System.out.println("所输入的值不能大于1000000!程序终止.");
  32.                                 System.exit(0);
  33.                         }
  34.                 }
  35. //                判断输入是否正确
  36.                 while ( a > 0 )
  37.                 {
  38.                         b = a%10;
  39.                         a = a/10;
  40.                         d = b;
  41.                         count=count+1;
  42.                         /*判断的d(b)值为单双 输出为d*/
  43.                         if(d%2 == 0)
  44.                         {
  45.                                 c=0;
  46.                         }
  47.                         else
  48.                         {        if (d == 0)
  49.                                 {
  50.                                         c=0;
  51.                                 }
  52.                                 else
  53.                                 {
  54.                                         c=1;
  55.                                 }
  56.                         }
  57.                         /*判断累积器的单双 输出为e*/
  58.                         if(count%2 == 0)
  59.                         {
  60.                                 e=0;
  61.                         }
  62.                         else
  63.                         {        if (count == 0)
  64.                                 {
  65.                                         e=0;
  66.                                 }
  67.                                 else
  68.                                 {
  69.                                         e=1;
  70.                                 }
  71.                         }
  72. //                        比较c,e的大小关系 若相等则输出1 若不相等输出0 输出de
  73.                         if (c == e)
  74.                         {
  75.                                 ce=1;
  76.                         }
  77.                         else
  78.                         {
  79.                                 ce=0;
  80.                         }
  81.                                 binary=(int)(Math.pow(2,(count-1)));
  82.         //                        得出二进制值
  83.                         if (ce == 1)
  84.                         {
  85.                                 count1=count1+binary;
  86.                         }
  87.                 }
  88.                 System.out.println("奇偶特征值:");
  89.                 System.out.println(count1);
  90. //                输出
  91.                 in.close();
  92.         }

  93. }
复制代码

看起来楼主是一位编程大触XD
刚刚完成第三周编程作业 可以帮我优化一下代码吗?

berry64
48856209 发表于 2015-1-3 13:37
看起来楼主是一位编程大触XD
刚刚完成第三周编程作业 可以帮我优化一下代码吗? ...

要我优化成什么样子

48856209
berry64 发表于 2015-1-3 13:38
要我优化成什么样子

在保证正常功能的前提下
越短越好
你可以先试一下这段代码

berry64
48856209 发表于 2015-1-3 13:45
在保证正常功能的前提下
越短越好
你可以先试一下这段代码

要短的话那么只能
else{
    if(){
}
}改成
else if(){
}
然后删除解释的东西,别的就真的没什么了

48856209
berry64 发表于 2015-1-3 13:58
要短的话那么只能
else{
    if(){

嗯..好吧
教学模式还是有待改进的 毕竟不可能一上来就能开始学写插件
我觉得你可以写一个java入门教程 文字的表现力有时候其实不如视频 所以我觉得你可以试试看两者结合
帖子里打的不恰当的比方其实不如不打 就直接用它本身的术语 这种比分我看了都会觉得难以理解 相信你的教程可以写得更好

berry64
48856209 发表于 2015-1-3 14:26
嗯..好吧
教学模式还是有待改进的 毕竟不可能一上来就能开始学写插件
我觉得你可以写一个java入门教程 文 ...

谢谢哈......我也这么觉得不过走觉得JavaNotes的更好,如果懂英文的可以去看JavaNotes
是bukkit官方推荐=w=

世界丶终焉
唔唔,楼主为啥不说的更详细点,比如说实现更多的功能该怎么写呢,比如清理掉落物的。

Top2001_1
求把你的bukkit-1.7.2-R0.3那个传给我 我找不到

Top2001_1
求大神指点 给个图 往那儿个后面啊 说我语法错误

1440519152
必须支持

1440519152
Grandiose 发表于 2014-12-30 22:46
= =。。其实写的还是可以的,但是我觉得你最好先讲讲包啊类啊之类的东西,但我觉得你写的时候很不正经,开 ...

其实我觉得还是可以的,可能是因为我有一点Java基础,但是对插件API的用法不是很了解,看到这个帖子终于开始教写插件了,简直如获至宝!

天朝蜘蛛
看不懂哈   但是还是谢谢楼主了

vv4304
@Override

public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){if (cmd.getName().equalsIgnoreCase("[指令]")){
sender.sendMessage("HAYO");
return true;
}
return false;
}



这一段能详细解释吗....

leavessoft
感谢楼主分享~辛苦了

Falling_空城
本来做mod开发的,最近也入了插件坑,看了此贴收获很大

woaijuan
这是JAVA语言吧,不过里面英语不认识咋办

世界丶终焉
楼主,按照你的方法,放到服务端里插件没办法被读取是怎么回事。

1205507755
tufeiyes 发表于 2014-12-25 23:17
我还是一个新手 还在找寻更大MOD满足个人的需求 JAVA 这太高科技了 直言 咱没看懂 ...

同感~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

cyk1790897855
LZ的主文件指的是哪个文件

第一页 上一页 下一页 最后一页