Minecraft(我的世界)中文论坛

 找回密码
 注册(register)

!header_login!

只需一步,立刻登录

查看: 14362|回复: 52

[插件开发教程] 插件教程第二章 —— 命令

[复制链接]
a8105 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
14702
钻石
性别
保密
注册时间
2012-2-19
查看详细资料
发表于 2014-6-10 19:36:05 | 显示全部楼层 |阅读模式

您尚未登录,立即登录享受更好的浏览体验!

您需要 登录 才可以下载或查看,没有帐号?注册(register)

x
本帖最后由 810587921 于 2014-6-12 23:07 编辑


  

  










PS:
这些全都是图片..
用文字说字符非法
是我用word写好截图的= =
word:
点我

                上一章                                               回到索引                                               下一章

评分

参与人数 17人气 +17 金粒 +179 收起 理由
吕乐乐 + 1 + 20 图全裂了
2892741402 + 1 + 5 Mcbbs有你更精彩~
卿风_ + 1 + 15 很棒的作品!
yangyilang + 1 + 2 Mcbbs有你更精彩~
ttxzt + 1 + 5 用手打,加深印象
党靖皓1234 + 5 用图是不是不让我们复制..只能手打.
diannaodi + 1 + 1 嗯,自己打才能知道这里免得意思,我现在大.
kwzh + 1 Mcbbs有你更精彩~
q1499562875 + 1 + 1 不坑,看来你们没有设置全部字母提示,我很.
wodeshijieglq + 1 全是图好坑爹啊,徒手橹字
982957484 + 1 I think all are photo very good!
baibai + 1 + 15 全是图片 这要徒手输入好坑爹
s1208119168 + 1 + 20 全是图,他流弊了
q88724653 + 1 + 20 Mcbbs有你更精彩~
擦拭 + 1 + 15 写的很详细而且通俗易懂,我这种不会java的.
m535494 + 1 + 5 很棒的作品!
1277832129 + 2 + 50 来了

查看全部评分

1277832129 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
10380
钻石
性别
保密
注册时间
2012-6-20
查看详细资料
发表于 2014-6-10 19:36:57 来自手机 | 显示全部楼层
总算是发布了
回复

使用道具 举报

我的大刀是蛮子 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
1754
钻石
性别
保密
注册时间
2013-6-20
查看详细资料
发表于 2014-6-10 19:38:38 | 显示全部楼层
我是来支持一下的
回复

使用道具 举报

SkyCatcher 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
11145
钻石
性别
保密
注册时间
2012-6-27
查看详细资料
发表于 2014-6-10 19:39:38 | 显示全部楼层
纯图片……
我在想外链挂了的时候
回复

使用道具 举报

a8105 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
14702
钻石
性别
保密
注册时间
2012-2-19
查看详细资料
 楼主| 发表于 2014-6-10 19:40:53 | 显示全部楼层
SkyCatcher 发表于 2014-6-10 19:39
纯图片……
我在想外链挂了的时候

有word的下载地址
回复

使用道具 举报

qiu1995 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
4369
钻石
性别
保密
注册时间
2012-5-23
查看详细资料
发表于 2014-6-14 22:48:13 | 显示全部楼层
大神你好,这是我写的源码,但是放到服务器中运行弹出这些错误。望过目
源码
  1. package com.hxj;
  2. import org.bukkit.command.Command;
  3. import org.bukkit.command.CommandSender;
  4. import org.bukkit.entity.Player;
  5. import org.bukkit.plugin.java.JavaPlugin;
  6. public class jac extends JavaPlugin
  7. {
  8.         public void onEnable()//貌似是插件在开启的时候总是要初始化需要用的
  9.         {
  10.                 getLogger().info("插件已加载");//向后台发送信息
  11.         }
  12.         public boolean cnCommand(CommandSender sender,Command cmd,String label,String[] args)
  13.         {
  14.                 if(label.equalsIgnoreCase("jac"))
  15.                 {
  16.                         if(args.length==0)
  17.                         {
  18.                                 sender.sendMessage("§a/jac me 信息");
  19.                                 sender.sendMessage("§a/jac kill 自杀");
  20.                                 sender.sendMessage("§a/jac m [玩家名] [信息] 发送信息");
  21.                                 return true;
  22.                         }
  23.                 }
  24.                 if(args [0].equalsIgnoreCase("me"))
  25.                 {
  26.                         if(sender instanceof Player)//如果sender 是由玩家执行的,则执行
  27.                         {
  28.                                 sender.sendMessage("§a测试.........");//sender 为命令的发送者,可以是玩家也可以是控制台
  29.                                 return true; //返回值
  30.                         }
  31.                         sender.sendMessage("§a该命令只能由玩家执行");//否则返回信息
  32.                         return true; //返回值
  33.                 }
  34.                 if(args [0].equalsIgnoreCase("kill")) //判断信息,equalsIgnoreCase忽略大小写
  35.                 {
  36.                         if(sender instanceof Player) //如果sender 是由玩家执行的,则执行
  37.                         {
  38.                                 Player player=(Player)sender; //Player为玩家变量,player为变量名,(Player)sender 为强制转换
  39.                                 player.setHealth(0.0); //设置生命值
  40.                                 player.sendMessage("§a你自杀了!"); //提示信息
  41.                                 return true; //返回值
  42.                         }
  43.                         sender.sendMessage("§a该命令只能由玩家执行"); //否则返回信息
  44.                         return true; //返回值
  45.                 }
  46.                 if(args [0].equalsIgnoreCase("m"))
  47.                 {
  48.                         if(!(sender instanceof Player))//当sender instanceof Player发送者不是player时则继续
  49.                         {
  50.                                 if(args.length>3)
  51.                                 {
  52.                                         sender.sendMessage("§a参数过长!");
  53.                                         return true;
  54.                                 }
  55.                                 if(args.length<3)
  56.                                 {
  57.                                         sender.sendMessage("§a参数过短!");
  58.                                         return true;
  59.                                 }
  60.                                 Player p=getServer().getPlayer(args[1]);//getServer().getPlayer(args[1])为在服务器中搜索关键词为X名字的玩家
  61.                                 if(p==null)
  62.                                 {
  63.                                         sender.sendMessage("§a玩家不存在,发送消息失败");
  64.                                         return true;
  65.                                 }
  66.                                 p.sendMessage(args[2].replaceAll("&","§"));
  67.                                 sender.sendMessage("§a给"+p.getName()+"的信息发送成功");
  68.                                 return true;
  69.                         }
  70.                         sender.sendMessage("§a该命令只能由玩家进行");
  71.                         return true;
  72.                 }
  73.                 return false;
  74.         }
  75. }
复制代码


控制台错误提示
  1. 22:46:29 [信息] This server is running CraftBukkit version git-Bukkit-1.6.4-R2.0
  2. -b2918jnks (MC: 1.6.4) (Implementing API version 1.6.4-R2.0)
  3. 22:46:30 [严重] Could not load 'plugins\jac.jar' in folder 'plugins'
  4. org.bukkit.plugin.InvalidDescriptionException: Invalid plugin.yml
  5.         at org.bukkit.plugin.java.JavaPluginLoader.getPluginDescription(JavaPlug
  6. inLoader.java:257)
  7.         at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager
  8. .java:132)
  9.         at org.bukkit.craftbukkit.v1_6_R3.CraftServer.loadPlugins(CraftServer.ja
  10. va:241)
  11.         at org.bukkit.craftbukkit.v1_6_R3.CraftServer.<init>(CraftServer.java:21
  12. 9)
  13.         at net.minecraft.server.v1_6_R3.PlayerList.<init>(PlayerList.java:56)
  14.         at net.minecraft.server.v1_6_R3.DedicatedPlayerList.<init>(SourceFile:11
  15. )
  16.         at net.minecraft.server.v1_6_R3.DedicatedServer.init(DedicatedServer.jav
  17. a:107)
  18.         at net.minecraft.server.v1_6_R3.MinecraftServer.run(MinecraftServer.java
  19. :393)
  20.         at net.minecraft.server.v1_6_R3.ThreadServerApplication.run(SourceFile:5
  21. 83)
  22. Caused by: while scanning for the next token
  23. found character         '\t' that cannot start any token
  24. in "<reader>", line 5, column 1:
  25.         jac:
  26.     ^
  27.         at org.yaml.snakeyaml.scanner.ScannerImpl.fetchMoreTokens(ScannerImpl.ja
  28. va:358)
  29.         at org.yaml.snakeyaml.scanner.ScannerImpl.checkToken(ScannerImpl.java:17
  30. 9)
  31.         at org.yaml.snakeyaml.parser.ParserImpl$ParseBlockMappingValue.produce(P
  32. arserImpl.java:591)
  33.         at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:161)
  34.         at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:146)
  35.         at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:133)
  36.         at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java
  37. :237)
  38.         at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:160)
  39.         at org.yaml.snakeyaml.composer.Composer.composeDocument(Composer.java:12
  40. 3)
  41.         at org.yaml.snakeyaml.composer.Composer.getSingleNode(Composer.java:106)
  42.         at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseCons
  43. tructor.java:121)
  44.         at org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:480)
  45.         at org.yaml.snakeyaml.Yaml.load(Yaml.java:411)
  46.         at org.bukkit.plugin.PluginDescriptionFile.<init>(PluginDescriptionFile.
  47. java:188)
  48.         at org.bukkit.plugin.java.JavaPluginLoader.getPluginDescription(JavaPlug
  49. inLoader.java:252)
  50.         ... 8 more
复制代码


大神请帮忙查看错误在哪。
另外这个是plugin.yml的内容
name: jac
main: com.hxj.jac
version: 1.0
commands:
        jac:
                description:
                usage: /jac
回复

使用道具 举报

qiu1995 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
4369
钻石
性别
保密
注册时间
2012-5-23
查看详细资料
发表于 2014-6-14 22:49:26 | 显示全部楼层
qiu1995 发表于 2014-6-14 22:48
大神你好,这是我写的源码,但是放到服务器中运行弹出这些错误。望过目
源码

= =惨……本来想折叠的,用错成引用了……见谅……
回复

使用道具 举报

a8105 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
14702
钻石
性别
保密
注册时间
2012-2-19
查看详细资料
 楼主| 发表于 2014-6-14 22:52:41 | 显示全部楼层
qiu1995 发表于 2014-6-14 22:49
= =惨……本来想折叠的,用错成引用了……见谅……

别用TAB的空格,用普通的空格
commands:
  jac:  (这里2个空格)
    description: 这里4个
回复

使用道具 举报

qiu1995 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
4369
钻石
性别
保密
注册时间
2012-5-23
查看详细资料
发表于 2014-6-15 00:25:57 | 显示全部楼层
810587921 发表于 2014-6-14 22:52
别用TAB的空格,用普通的空格
commands:
  jac:  (这里2个空格)

OK!可以运行了,= =竟然不能用TAB的……
回复

使用道具 举报

敏感词好多 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
61
钻石
性别
保密
注册时间
2014-7-20
查看详细资料
发表于 2014-7-23 23:28:38 | 显示全部楼层
小白 我看不懂 还是去找视频把
回复

使用道具 举报

修改器很好玩 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
3698
钻石
性别
保密
注册时间
2013-2-20
查看详细资料
发表于 2014-8-4 13:45:13 | 显示全部楼层
qiu1995 发表于 2014-6-14 22:48
大神你好,这是我写的源码,但是放到服务器中运行弹出这些错误。望过目
源码

public boolean onCommand打成了 public boolean cnCommand
回复

使用道具 举报

ylyangzhe 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
842
钻石
性别
保密
注册时间
2012-12-7
查看详细资料
发表于 2014-8-23 14:55:46 | 显示全部楼层
问下各位大神,我这里为什么sender无法解析?
回复

使用道具 举报

a8105 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
14702
钻石
性别
保密
注册时间
2012-2-19
查看详细资料
 楼主| 发表于 2014-8-23 16:23:23 | 显示全部楼层
ylyangzhe 发表于 2014-8-23 14:55
问下各位大神,我这里为什么sender无法解析?

代码发来看看?
回复

使用道具 举报

ylyangzhe 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
842
钻石
性别
保密
注册时间
2012-12-7
查看详细资料
发表于 2014-8-23 19:16:54 | 显示全部楼层

我看了好像是要加一行“Player player=(player) sender”的是吗?
回复

使用道具 举报

ylyangzhe 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
842
钻石
性别
保密
注册时间
2012-12-7
查看详细资料
发表于 2014-8-23 19:28:25 | 显示全部楼层

好了,可以了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册(register)

本版积分规则

Archiver|小黑屋|Mcbbs.net ( 京ICP备15023768号-1 ) | 京公网安备 11010502037624号 | 手机版

GMT+8, 2020-4-10 17:57 , Processed in 0.053309 second(s), Total 23, Slave 22 queries, Release: Build.2020.04.01.1425, Gzip On, MemCached On.

"Minecraft"以及"我的世界"为Mojang Synergies AB的商标 本站与Mojang以及微软公司没有从属关系

© 2010-2020 我的世界中文论坛 版权所有 本站原创图文内容版权属于原创作者,未经许可不得转载

快速回复 返回顶部 返回列表