Minecraft(我的世界)中文论坛

标题: 插件教程第一章 —— 制作你的第一个插件

作者: a8105    时间: 2014-6-9 23:47
标题: 插件教程第一章 —— 制作你的第一个插件
本帖最后由 810587921 于 2014-11-4 17:47 编辑

需要的工具:
eclipse
如果你需要接触一些教程中没提到的功能等等,你需要百度翻译然后参阅doc
准备工作:
eclipse下载地址:
http://www.eclipse.org/downloads/
eclipse汉化教程:
http://tieba.baidu.com/p/2262774845
doc地址:
http://jd.bukkit.org/




安装好eclipse,汉化并设置好空间后,打开他
然后在包资源管理器这里,右键-新建-Java 项目


项目名:
可以填写为插件名
当你创建好项目后,你需要导入API,API为开服务器用的,craftbukkit-1.6.4-R2.0.jar之类的,对着创建好的项目右键
右键-属性-Java 构建路径-库
然后选择添加外部Jar,选择好API,导入:


导入好后,点击确定
然后伸展开项目的列表


对着src右键-新建-包
包名的命名可以为你的网站:com.XX
或者邮箱:[email protected]等等
不能命名为以下:
org.bukkit
net.bukkit
com.bukkit
net.minecraft

创建好包后,对着包右键-新建-类
类名可以是插件名,或者插件名Listener(监听)
等等
这时候应该是这样


然后在public class JC那里继承JavaPlugin,使他成为插件的子类
  1. package com.github.a810587921;

  2. import org.bukkit.plugin.java.JavaPlugin;

  3. public class JC extends JavaPlugin
  4. {

  5. }
复制代码
然后插件在开启的时候总是要初始化,因此在JC里写上
public void onEnable()
{
    //代码
}
  1. public class JC extends JavaPlugin
  2. {
  3.     public void onEnable()
  4.     {
  5.         getLogger().info("JC插件已被加载");
  6.     }
  7. }
复制代码
getLogger().info(信息)为向后台发送信息
onEnable()必须为这样写,请区分好大小写,否则可能会出现为毛插件写好了可是偏偏就是不加载的bug,因此请注意检查
然后得让他加载这个插件,怎么加载呢?
请对着项目(不是src和包!)右键-新建-文件(在文件夹下面,我这个版本)


填上plugin.yml,然后按下完成
打开它

然后填上:
  1. name: JC
  2. main: com.github.a810587921.JC
复制代码

JC为插件名字,也就是/plugin指令中显示的名字
version为版本,每当更新插件必须变更(我总是忘记..)
main为包名.主类(不要加.java或者.class!);
这时候应该是这样:





然后就是让他加载了,对着项目右键-导出
然后选择

然后选择下一步



.classpath和.project不必要选择,可以取消掉选择,导出目标为存放在哪里和命名为什么名字,选择好后就可以选择完成了
F:\JC.jar,这是我填的路径
完成后,你可以自己开个服务器,把XX.jar放在plugins文件夹,然后重启服务器,你会看到"XX插件已被加载"这一行
到这里,恭喜你!你已经制作出了自己的第一个插件,虽然他现在没什么用:D

PS: 如果你觉得该帖子对你有用,请评分一下,人气是不消耗的

         
                                                                                          回到索引                                               下一章            
作者: 叫我stere    时间: 2014-6-9 23:50
楼主,虽然我不懂,但还是支持你.......

话说大大是用什么发图片的....求教
作者: sobeit    时间: 2014-6-9 23:50
这篇教程不完善 请转步bukkitwiki
作者: SkyCatcher    时间: 2014-6-9 23:51
请无视楼上。
坐等第二章
作者: sobeit    时间: 2014-6-9 23:53
SkyCatcher 发表于 2014-6-9 23:51
请无视楼上。
坐等第二章

无视你妹啊,我知道你英语不太好的
作者: SkyCatcher    时间: 2014-6-9 23:57
sobeit 发表于 2014-6-9 23:53
无视你妹啊,我知道你英语不太好的

至少我过了那几级了你还没考试资格
作者: nlbbkb    时间: 2014-6-10 16:26
楼上几位别掐架了~顶一个楼主
作者: 1277832129    时间: 2014-6-10 18:28
我来帮忙顶了 刚刚没看到
作者: 大连机务段    时间: 2014-7-21 14:46
支持楼主
作者: xjlxzcdwq    时间: 2014-7-26 11:16
谢谢楼主让我学会遍插件
作者: lauhiulung    时间: 2014-7-26 16:47
可以在public class JC那里继承JavaPlugin,使他成为插件的子类这里加上图片吗?
我不太懂
作者: a8105    时间: 2014-7-26 16:51
lauhiulung 发表于 2014-7-26 16:47
可以在public class JC那里继承JavaPlugin,使他成为插件的子类这里加上图片吗?
我不太懂 ...

图片跟文字没区别..
public class JC extends JavaPlugin
{

}
作者: lauhiulung    时间: 2014-7-26 17:25
810587921 发表于 2014-7-26 16:51
图片跟文字没区别..
public class JC extends JavaPlugin
{

不用填其他東西吗?
package com.github.a810587921;

import org.bukkit.plugin.java.JavaPlugin;

public class JC extends JavaPlugin
{

}
public class JC extends JavaPlugin
{
    public void onEnable()
    {
        getLogger().info("JC插件已被加载");
    }
}
这些要填在那?

作者: lauhiulung    时间: 2014-7-26 17:35
810587921 发表于 2014-7-26 16:51
图片跟文字没区别..
public class JC extends JavaPlugin
{

还是我看错了?
可以告诉我吗?
我很想整插件
作者: a8105    时间: 2014-7-26 20:24
lauhiulung 发表于 2014-7-26 17:25
不用填其他東西吗?
package com.github.a810587921;

什么填在哪= =
作者: lauhiulung    时间: 2014-7-26 20:30
810587921 发表于 2014-7-26 20:24
什么填在哪= =

package com.github.a810587921;

import org.bukkit.plugin.java.JavaPlugin;

public class JC extends JavaPlugin
{

}
public class JC extends JavaPlugin
{
    public void onEnable()
    {
        getLogger().info("JC插件已被加载");
    }
}
這些,可以send照片或者copy整句文字給我看?
作者: a8105    时间: 2014-7-26 21:30
lauhiulung 发表于 2014-7-26 20:30
package com.github.a810587921;

import org.bukkit.plugin.java.JavaPlugin;

你发的这些就是全部了啊= =
作者: lauhiulung    时间: 2014-7-26 21:35
810587921 发表于 2014-7-26 21:30
你发的这些就是全部了啊= =

我不知道位置怎麼放

作者: a8105    时间: 2014-7-26 22:07
lauhiulung 发表于 2014-7-26 21:35
我不知道位置怎麼放

你怎么写文字到txt的就怎么写
作者: lauhiulung    时间: 2014-7-27 20:53
製作完插件后是不是要download 什么前置插件才能运行?
作者: a8105    时间: 2014-7-27 21:06
lauhiulung 发表于 2014-7-27 20:53
製作完插件后是不是要download 什么前置插件才能运行?

麻烦请看好教程再问问题..
作者: lauhiulung    时间: 2014-7-27 21:18
810587921 发表于 2014-7-27 21:06
麻烦请看好教程再问问题..

教程没有说
不知为何
没有插件加载那一行啊
已经完全跟住你说的做
作者: a8105    时间: 2014-7-27 21:53
lauhiulung 发表于 2014-7-27 21:18
教程没有说
不知为何
没有插件加载那一行啊

plugin.yml就是加载的关键..
作者: mingmars    时间: 2014-7-28 22:41
t很不错的
作者: q549365815    时间: 2014-8-19 22:55
额 我也不知道 我自己哪里出错 我跟您的 源码一样 库我也加进去了 然后把插件编译出来 想试试 可就是加载不到这个插件 不知道为什么
作者: a8105    时间: 2014-8-19 23:02
q549365815 发表于 2014-8-19 22:55
额 我也不知道 我自己哪里出错 我跟您的 源码一样 库我也加进去了 然后把插件编译出来 想试试 可就是加载不 ...

截图plugin.yml和主类
作者: q549365815    时间: 2014-8-20 11:06

   
作者: a6254814752    时间: 2014-8-20 14:01
完全看不懂,不过还是辛苦lz了
作者: birdcao    时间: 2014-8-20 16:33
这个方式开始开发是一个不错的开头,
以水桶服提供的api接口作为开始,做一点简单的插件,
不过只用这个接口不一定能处理好界面的问题
我大概看了一下Bukkit Documentation
可以做一些利用 聊天命令行作为交互的插件,
需要在客户端有个不错的界面部分好像还不行,或者我还没有看到
还需要了解更多的其他api接口,
我是个老程序猿了,但是minecraft的开发不了解,
有没有其他的资料的地址,交流一下
谢谢
作者: qq1063246373    时间: 2014-8-21 20:35
810587921 发表于 2014-7-26 22:07
你怎么写文字到txt的就怎么写

你可以发一下那个jar文件吗?
作者: 孒情。    时间: 2014-8-21 23:12
支持顶个看看试试把                     
作者: ChengziHtc    时间: 2014-9-8 13:29
到输入那里就卡主了。。。。不知道怎么输入. 输入后出现红色波浪线
作者: xingmot    时间: 2014-9-13 13:16
顶一个!试着写写看
作者: zycboss    时间: 2014-9-13 14:21
马克一下~~
作者: 517534027    时间: 2014-10-25 12:41
不会技术的围观T T
作者: 痴醉年华。    时间: 2014-11-2 23:25
感谢楼主的贡献
作者: 痴醉年华。    时间: 2014-11-2 23:47
java的jdk用什么版本的呀
作者: a8105    时间: 2014-11-2 23:54
痴醉年华。 发表于 2014-11-2 23:47
java的jdk用什么版本的呀

1.7或1.6吧
作者: 痴醉年华。    时间: 2014-11-3 09:57
810587921 发表于 2014-11-2 23:54
1.7或1.6吧

API(JAR)在哪里下载呀,找不到呀
作者: a8105    时间: 2014-11-3 15:33
痴醉年华。 发表于 2014-11-3 09:57
API(JAR)在哪里下载呀,找不到呀

开服务器用的就是
作者: b1b1b123b1    时间: 2014-11-3 17:21
[size=14.2857151031494px]新人请教一下,求楼主解答{:10_560:}[size=14.2857151031494px]。。。。不能截图,叙述一下。。。
[size=14.2857151031494px]17:14:31 [信息] Starting minecraft server version 1.6.4
[size=14.2857151031494px]17:14:31 [信息] Loading properties
[size=14.2857151031494px]17:14:31 [信息] Default game type: SURVIVAL
[size=14.2857151031494px]17:14:31 [信息] This server is running CraftBukkit version git-Spigot-1.6.4-R2.0
[size=14.2857151031494px]-79-g3e87b2b (MC: 1.6.4) (Implementing API version 1.6.4-R2.1-SNAPSHOT)
[size=14.2857151031494px]17:14:31 [信息] Generating keypair
[size=14.2857151031494px]17:14:32 [信息] Starting Minecraft server on *:25565
[size=14.2857151031494px]17:14:32 [严重] Could not load 'plugins\wuming.jar' in folder 'plugins'
[size=14.2857151031494px]org.bukkit.plugin.InvalidPluginException: java.lang.ClassNotFoundException: com.
[size=14.2857151031494px]gmail.wuming.JC
[size=14.2857151031494px]        at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.j
[size=14.2857151031494px]ava:184)
[size=14.2857151031494px]        at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.
[size=14.2857151031494px]java:306)
[size=14.2857151031494px]        at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager
[size=14.2857151031494px].java:230)
[size=14.2857151031494px]        at org.bukkit.craftbukkit.v1_6_R3.CraftServer.loadPlugins(CraftServer.ja
[size=14.2857151031494px]va:245)
[size=14.2857151031494px]        at net.minecraft.server.v1_6_R3.DedicatedServer.init(DedicatedServer.jav
[size=14.2857151031494px]a:118)
[size=14.2857151031494px]        at net.minecraft.server.v1_6_R3.MinecraftServer.run(MinecraftServer.java
[size=14.2857151031494px]:399)
[size=14.2857151031494px]        at net.minecraft.server.v1_6_R3.ThreadServerApplication.run(SourceFile:5
[size=14.2857151031494px]83)
[size=14.2857151031494px]Caused by: java.lang.ClassNotFoundException: com.gmail.wuming.JC
[size=14.2857151031494px]        at java.net.URLClassLoader$1.run(Unknown Source)
[size=14.2857151031494px]        at java.net.URLClassLoader$1.run(Unknown Source)
[size=14.2857151031494px]        at java.security.AccessController.doPrivileged(Native Method)
[size=14.2857151031494px]        at java.net.URLClassLoader.findClass(Unknown Source)
[size=14.2857151031494px]        at org.bukkit.plugin.java.PluginClassLoader.findClass0(PluginClassLoader
[size=14.2857151031494px].java:80)
[size=14.2857151031494px]        at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.
[size=14.2857151031494px]java:53)
[size=14.2857151031494px]        at java.lang.ClassLoader.loadClass(Unknown Source)
[size=14.2857151031494px]        at java.lang.ClassLoader.loadClass(Unknown Source)
[size=14.2857151031494px]        at java.lang.Class.forName0(Native Method)
[size=14.2857151031494px]        at java.lang.Class.forName(Unknown Source)
[size=14.2857151031494px]        at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.j
[size=14.2857151031494px]ava:173)
[size=14.2857151031494px]        ... 6 more


作者: 痴醉年华。    时间: 2014-11-4 10:09
楼主,我照着做了很多次还是无法加载,我试了试能够加载其他插件,自己做的插件就是加载不了,楼主帮忙看一下原因。
源码:http://pan.baidu.com/s/1o62Z3dC








作者: a8105    时间: 2014-11-4 15:24
痴醉年华。 发表于 2014-11-4 10:09
楼主,我照着做了很多次还是无法加载,我试了试能够加载其他插件,自己做的插件就是加载不了,楼主帮忙看一 ...

没有空格
name: JC
其他也是
作者: 痴醉年华。    时间: 2014-11-4 17:37
810587921 发表于 2014-11-4 15:24
没有空格
name: JC
其他也是

可以了,感谢楼主{:10_512:}
作者: 【实习】Xiao-Li    时间: 2014-11-4 19:41
为什么复制import org.bukkit.plugin.java.JavaPlugin;到里面
却显示未导入import org.bukkit.plugin.java.JavaPlugin;

作者: a8105    时间: 2014-11-4 19:42
【实习】Xiao-Li 发表于 2014-11-4 19:41
为什么复制import org.bukkit.plugin.java.JavaPlugin;到里面
却显示未导入import org.bukkit.plugin.java ...

用eclipse导入,复制代码不需要复制import
作者: 【实习】Xiao-Li    时间: 2014-11-4 19:46
810587921 发表于 2014-11-4 19:42
用eclipse导入,复制代码不需要复制import

呃呃,,不好意思哎 不懂
作者: 294727811    时间: 2014-11-4 20:48
支持!{:10_512:}
作者: qq7510201    时间: 2014-11-6 13:50
本帖最后由 qq7510201 于 2014-11-6 13:52 编辑

资源与文件系统不同步  怎么破


作者: wjwrh    时间: 2014-11-6 15:00
ep你不讲讲怎么安装233?
作者: 我的世界149    时间: 2014-12-30 14:01
为什么我的  加载失败  
作者: 我的世界149    时间: 2014-12-30 14:02
xjlxzcdwq 发表于 2014-7-26 11:16
谢谢楼主让我学会遍插件

你是怀化的
作者: baibai    时间: 2015-2-4 10:20
为何IDE无法加载JNI数据库啊楼主{:10_527:}
作者: MC_LengGuang    时间: 2015-2-26 22:59
为什么上面的图片我显示不了
作者: 羽羽___    时间: 2015-3-13 19:53
Cannot find main class `com.summerheart.dev'

加载插件就这样

plugin.yml
name: yuyupluguin
main: com.summerheart.dev
version: 0.0.1

yuyupluguin.java

package com.summerheart.dev;
import org.bukkit.plugin.java.JavaPlugin;
public class yuyupluguin extends JavaPlugin
{
            public void onEnable()
            {
                getLogger().info("yuyucraft插件已被加载");
            }
       
}

到服务端加载就报错
作者: a8105    时间: 2015-3-13 22:51
羽羽___ 发表于 2015-3-13 19:53
Cannot find main class `com.summerheart.dev'

加载插件就这样

main是插件主类的路径
例如包名为
a.b.c
然后主类名为d
main就得这样填:
main: a.b.c.d
然后你main类没主类的名字,只有包名的名字
作者: 491960546    时间: 2015-6-5 23:47
无法导出JAR文件什么鬼= =求解
作者: enjoy-shock    时间: 2015-7-19 19:07
叫我stere 发表于 2014-6-9 23:50
楼主,虽然我不懂,但还是支持你.......

话说大大是用什么发图片的....求教 ...

图床,,
作者: yuyanzhao    时间: 2015-7-19 19:52
提示: 作者被禁止或删除 内容自动屏蔽
作者: yuyanzhao    时间: 2015-7-19 19:53
提示: 作者被禁止或删除 内容自动屏蔽
作者: 【实习】Xiao-Li    时间: 2015-7-21 10:57
491960546 发表于 2015-6-5 23:47
无法导出JAR文件什么鬼= =求解

.............................
作者: 技术控Kevin    时间: 2015-7-31 19:35
终于学会做插件了
谢谢版主
作者: 白狼oy    时间: 2015-7-31 22:07
为毛我看到的是图全加载不出来啊!
作者: Minecraft_cloud    时间: 2015-8-2 00:14
感谢分享~感谢MCBBS~第一次学插件{:10_521:}
作者: moheng2014    时间: 2015-8-2 14:59
本帖最后由 moheng2014 于 2015-8-2 18:11 编辑

JAR 导出完成,但带有警告。请参阅“详细信息”以获取更多信息。
  已导出,但存在编译错误:moheng0001/src/com/github/a810587921/mohengcj0001.java
怎么办 ,,
错误行内容:package qq570084949;
无法解析类型 com.avaje.ebean.EbeanServer。从必需的 .class 文件间接引用了它

用我开服的jar文件就会出现     无法解析类型 com.avaje.ebean.EbeanServer。从必需的 .class 文件间接引用了它


然后换了别的不会提示这些错误的,在测试的时候又会出现  无法解析类型 com.avaje.ebean.EbeanServer。从必需的 .class 文件间接引用了它


求解怎么破 。。

服务器里的错误内容是这样的



作者: Pointer    时间: 2015-8-10 13:04
吊炸天的教程,不错
作者: Warning_lzm    时间: 2015-8-10 13:12
新建和导入我会了,其他和没看前一样(╯‵□′)╯︵┻━┻
作者: qwerty吃小庄    时间: 2015-8-10 13:20
会编程的大大就是厉害[diamond_gem]
作者: NikolaTesla    时间: 2015-10-2 19:21
  1. import org.bukkit.plugin.java.JavaPlugin;
复制代码

如何理解这一语句?
作者: tztwind    时间: 2015-10-14 23:40
提示: 作者被禁止或删除 内容自动屏蔽
作者: 1943736504    时间: 2015-10-16 18:57
哄哄,终于让我找到这贴了,不做伸手党。
作者: ESCesc    时间: 2016-1-23 15:58
有些图片看不了了。楼主修复下呗?
作者: 1441151179    时间: 2016-2-2 10:37
为什么我做出来放进服务器里没有任何提示
作者: ditaolu    时间: 2016-2-2 21:07
谢谢啦   顶顶~~~
作者: wangyu8    时间: 2016-2-13 03:34
有木有详细易懂的!
作者: Lucency    时间: 2016-2-16 19:51
这个api弄spigot行么  

作者: shengsheng123    时间: 2016-2-16 21:27
请问用户名按Tab键自动补全是怎么做的呀?
作者: kjkj2173135    时间: 2016-2-18 09:32
讲得很详细
赞一个
作者: g519403080    时间: 2016-3-31 22:10
图片已挂
作者: a1914039118    时间: 2016-4-8 21:43
圖片全掛了怎麼辦!!
作者: 晕晕晕    时间: 2016-4-9 21:20
图挂了

作者: Gjune    时间: 2016-4-18 11:08
图挂了!
作者: q513902026    时间: 2016-4-18 11:34
NikolaTesla 发表于 2015-10-2 19:21
如何理解这一语句?

引用org.bukkit.plugin.java.JavaPlugin类

作者: 小尐蓝猫    时间: 2016-5-1 07:40
图片全挂了 求补
作者: 席八2014    时间: 2016-5-2 15:17
图片全嗝屁了
作者: L天乾    时间: 2016-6-25 20:54
package com.github.a810587921;

import org.bukkit.plugin.java.JavaPlugin;

public class JC extends JavaPlugin
{

}
我用的是spigotR4.0,中间那句说无法搜索到org.bukkit,应该改成什么?
作者: Magic傲风    时间: 2016-7-22 00:55
可以!很有用!力挺!继续更新!
作者: Absolutefield    时间: 2016-8-23 12:01
dalao·····图片挂了
作者: 有货吗    时间: 2016-8-24 14:49
楼主你的图嗝屁了。。光看文字我看不懂。
作者: 酷车手BB弹    时间: 2016-9-12 15:31
喵大。图片挂了
作者: qq837958025    时间: 2016-9-23 17:23
图都炸了 瞄
作者: 蜘蛛丿恋夏    时间: 2016-10-14 18:48
图片看不清什么鬼
作者: QQ1357288463    时间: 2016-10-14 20:45
搂住你需要换一个图床
作者: MCHandler    时间: 2016-10-17 10:32
喵大,图挂完了!
作者: 南青啊!    时间: 2016-10-20 13:20
图挂了,求补图啊。

作者: @TGL    时间: 2016-10-21 18:05
图挂了,doc怎么下载,全是英文..
作者: IFEN1993    时间: 2016-11-14 16:21
问题是…图全挂了QAQ
作者: 星星。    时间: 2016-11-14 17:53
图挂了。。。。
作者: xiaojie1314    时间: 2016-11-14 18:05
66666666可以的
作者: zyx459223217    时间: 2016-11-29 14:07
不太会 路太坎坷