Minecraft(我的世界)中文论坛

标题: 插件教程第二章 —— 命令

作者: a8105    时间: 2014-6-10 19:36
标题: 插件教程第二章 —— 命令
本帖最后由 810587921 于 2014-6-12 23:07 编辑


  

  










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

                上一章                                               回到索引                                               下一章
作者: 1277832129    时间: 2014-6-10 19:36
总算是发布了
作者: 我的大刀是蛮子    时间: 2014-6-10 19:38
我是来支持一下的
作者: SkyCatcher    时间: 2014-6-10 19:39
纯图片……
我在想外链挂了的时候
作者: a8105    时间: 2014-6-10 19:40
SkyCatcher 发表于 2014-6-10 19:39
纯图片……
我在想外链挂了的时候

有word的下载地址
作者: qiu1995    时间: 2014-6-14 22:48
大神你好,这是我写的源码,但是放到服务器中运行弹出这些错误。望过目
源码
  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    时间: 2014-6-14 22:49
qiu1995 发表于 2014-6-14 22:48
大神你好,这是我写的源码,但是放到服务器中运行弹出这些错误。望过目
源码

= =惨……本来想折叠的,用错成引用了……见谅……
作者: a8105    时间: 2014-6-14 22:52
qiu1995 发表于 2014-6-14 22:49
= =惨……本来想折叠的,用错成引用了……见谅……

别用TAB的空格,用普通的空格
commands:
  jac:  (这里2个空格)
    description: 这里4个
作者: qiu1995    时间: 2014-6-15 00:25
810587921 发表于 2014-6-14 22:52
别用TAB的空格,用普通的空格
commands:
  jac:  (这里2个空格)

OK!可以运行了,= =竟然不能用TAB的……
作者: 敏感词好多    时间: 2014-7-23 23:28
小白 我看不懂 还是去找视频把
作者: 修改器很好玩    时间: 2014-8-4 13:45
qiu1995 发表于 2014-6-14 22:48
大神你好,这是我写的源码,但是放到服务器中运行弹出这些错误。望过目
源码

public boolean onCommand打成了 public boolean cnCommand
作者: ylyangzhe    时间: 2014-8-23 14:55
问下各位大神,我这里为什么sender无法解析?

作者: a8105    时间: 2014-8-23 16:23
ylyangzhe 发表于 2014-8-23 14:55
问下各位大神,我这里为什么sender无法解析?

代码发来看看?
作者: ylyangzhe    时间: 2014-8-23 19:16
810587921 发表于 2014-8-23 16:23
代码发来看看?

我看了好像是要加一行“Player player=(player) sender”的是吗?
作者: ylyangzhe    时间: 2014-8-23 19:28
810587921 发表于 2014-8-23 16:23
代码发来看看?

好了,可以了
作者: ylyangzhe    时间: 2014-8-23 19:29
大神,我想问下传送到一个玩家,然后十秒后又返回原地的代码怎么写,或者有没有什么bukkit句式的百科之类的东东啊,比如我要给玩家一些效果啊,或者什么的,那些代码到哪里找?
作者: a8105    时间: 2014-8-23 19:34
ylyangzhe 发表于 2014-8-23 19:29
大神,我想问下传送到一个玩家,然后十秒后又返回原地的代码怎么写,或者有没有什么bukkit句式的百科之类的 ...

Location l=player1.getLocation();
player1.teleport(player2);
new X(player1,l).start();
class X extends Thread
{
    private Player player;
    private Location l;
    public X(Player player,Location l)
    {
        this.player=player;
        this.l=l;
    }
    public void run()
    {
        Thread.sleep(10*1000);
        player.teleport(l);
    }
}
作者: ylyangzhe    时间: 2014-8-24 11:35
810587921 发表于 2014-8-23 19:34
Location l=player1.getLocation();
player1.teleport(player2);
new X(player1,l).start();

谢谢!太感谢了!!
作者: ylyangzhe    时间: 2014-8-24 11:55
810587921 发表于 2014-8-23 19:34
Location l=player1.getLocation();
player1.teleport(player2);
new X(player1,l).start();

话说有些player1,player2还有teleport无法解析怎么办?
作者: a8105    时间: 2014-8-24 16:15
ylyangzhe 发表于 2014-8-24 11:55
话说有些player1,player2还有teleport无法解析怎么办?

示范而已,player1和player2自己想= =
作者: ylyangzhe    时间: 2014-8-24 19:33
810587921 发表于 2014-8-24 16:15
示范而已,player1和player2自己想= =

= = 我怎么想= =
作者: a8105    时间: 2014-8-24 19:35
ylyangzhe 发表于 2014-8-24 19:33
= = 我怎么想= =

onCommand(......)
{
    Player player1=(Player)sender;
    Player player2=Bukkit.getPlayer(args[0]);
    Location l=player1.getLocation();
    player1.teleport(player2);
    new X(player1,l).start();

}
class X extends Thread
{
    private Player player;
    private Location l;
    public X(Player player,Location l)
    {
        this.player=player;
        this.l=l;
    }
    public void run()
    {
        Thread.sleep(10*1000);
        player.teleport(l);
    }
}
作者: ylyangzhe    时间: 2014-8-25 09:47
810587921 发表于 2014-8-24 19:35
onCommand(......)
{
    Player player1=(Player)sender;

嘻嘻,感谢大神
作者: 钻石荣耀    时间: 2014-10-4 19:49
player.setHealth(0);
再给玩家设置生命值的时候
需要强制转换类型
快速修正后是这样的
((Object) player).setHealth(0.0);
((CommandSender) player).sendMessage("自杀成功");
包括这一句也是要强转的
但是前面一句快速修正以后还是错误
没有为类型 Object 定义方法 setHealth(double)
这是提示的错误
求解答{:10_509:}
作者: a8105    时间: 2014-10-4 22:28
钻石荣耀 发表于 2014-10-4 19:49
player.setHealth(0);
再给玩家设置生命值的时候
需要强制转换类型

不知道你导入了Player类包没有
Player player=(Player)sender;
player.setHe......
player.sendMessage("");
另外CommandSender也自带sendMessage方法
作者: 痴醉年华。    时间: 2014-11-5 08:18
本帖最后由 痴醉年华。 于 2014-11-5 08:19 编辑

楼主,我多次尝试,都无法在游戏内使用命令
直接复制主类,在游戏内都无法使用命令(能够加载插件)

pulgin.yml

name: JC
main: com.tip001.test.JC
version: 1.0
commands:
  jiaocheng:
description: 说明
usage: 使用说明
aliases: [j , jc]
作者: 痴醉年华。    时间: 2014-11-5 12:22
痴醉年华。 发表于 2014-11-5 08:18
楼主,我多次尝试,都无法在游戏内使用命令
直接复制主类,在游戏内都无法使用命令(能够加载插件)

问题解决了,plugin.yml空格要要分级
作者: qq867648970    时间: 2015-1-12 11:00
楼主插件的变量有多少?有没有完整的解析?
作者: qq867648970    时间: 2015-1-13 13:42
a8  replaceall参数是什么意思?
作者: 914554688wyt    时间: 2015-4-3 18:37
本帖最后由 914554688wyt 于 2015-4-3 18:49 编辑

我有一个问题 在发送信息的那一块
if(args[0].equalsIgnoreCase("m"))
{
   if(!(sender instanceof Player))
   {
       if(args.length>3)
{
sender.sendMessage("§a参数过长!");
return true;
}
if(args.length<3)
{
sender.sendMessage("§a参数过短!");
return true;

}
       Playerp=getServer().getPlayer(args[1]);
if(p==null)
{
sender.sendMessage("§a玩家不存在,发送消息失败");
return true;
}
p.sendMessage(args[2].replaceAll("&", "§"));
sender.sendMessage("§a给"+p.getName()+"的信息发送成功");
       return true;
   }
   sender.sendMessage("§a该命令只能由玩家进行");
   return true;
}
中的p.sendMessage(args[2].replaceAll("&", "§"));
发送内容吧&替换成§后的args[2]
但是args[2]不是名字吗
arg[3]好像才是内容哦!
@810587921
麻烦了!

....哦哦 是从0开始算的吗 0..2

作者: linzhy    时间: 2015-7-26 11:10
Loading libraries, please wait...
[11:08:13 INFO]: Starting minecraft server version 1.7.2
[11:08:13 INFO]: Loading properties
[11:08:13 INFO]: Default game type: SURVIVAL
[11:08:13 INFO]: Generating keypair
[11:08:13 INFO]: Starting Minecraft server on *:25565
[11:08:13 INFO]: This server is running CraftBukkit version git-Bukkit-1.7.2-R0.
3-2-g85f5776-b3024jnks (MC: 1.7.2) (Implementing API version 1.7.2-R0.4-SNAPSHOT
)
[11:08:13 ERROR]: Could not load 'plugins\JC.jar' in folder 'plugins'
org.bukkit.plugin.InvalidPluginException: java.lang.UnsupportedClassVersionError
: com/zithub/moran/JC : Unsupported major.minor version 52.0
        at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.j
ava:131) ~[craftbukkit-1.7.2-R0.4-20140316.221310-4.jar:git-Bukkit-1.7.2-R0.3-2-
g85f5776-b3024jnks]
        at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.
java:328) ~[craftbukkit-1.7.2-R0.4-20140316.221310-4.jar:git-Bukkit-1.7.2-R0.3-2
-g85f5776-b3024jnks]
        at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager
.java:251) [craftbukkit-1.7.2-R0.4-20140316.221310-4.jar:git-Bukkit-1.7.2-R0.3-2
-g85f5776-b3024jnks]
        at org.bukkit.craftbukkit.v1_7_R1.CraftServer.loadPlugins(CraftServer.ja
va:350) [craftbukkit-1.7.2-R0.4-20140316.221310-4.jar:git-Bukkit-1.7.2-R0.3-2-g8
5f5776-b3024jnks]
        at org.bukkit.craftbukkit.v1_7_R1.CraftServer.<init>(CraftServer.java:31
2) [craftbukkit-1.7.2-R0.4-20140316.221310-4.jar:git-Bukkit-1.7.2-R0.3-2-g85f577
6-b3024jnks]
        at net.minecraft.server.v1_7_R1.PlayerList.<init>(PlayerList.java:63) [c
raftbukkit-1.7.2-R0.4-20140316.221310-4.jar:git-Bukkit-1.7.2-R0.3-2-g85f5776-b30
24jnks]
        at net.minecraft.server.v1_7_R1.DedicatedPlayerList.<init>(SourceFile:14
) [craftbukkit-1.7.2-R0.4-20140316.221310-4.jar:git-Bukkit-1.7.2-R0.3-2-g85f5776
-b3024jnks]
        at net.minecraft.server.v1_7_R1.DedicatedServer.init(DedicatedServer.jav
a:126) [craftbukkit-1.7.2-R0.4-20140316.221310-4.jar:git-Bukkit-1.7.2-R0.3-2-g85
f5776-b3024jnks]
        at net.minecraft.server.v1_7_R1.MinecraftServer.run(MinecraftServer.java
:424) [craftbukkit-1.7.2-R0.4-20140316.221310-4.jar:git-Bukkit-1.7.2-R0.3-2-g85f
5776-b3024jnks]
        at net.minecraft.server.v1_7_R1.ThreadServerApplication.run(SourceFile:6
17) [craftbukkit-1.7.2-R0.4-20140316.221310-4.jar:git-Bukkit-1.7.2-R0.3-2-g85f57
76-b3024jnks]
Caused by: java.lang.UnsupportedClassVersionError: com/zithub/moran/JC : Unsuppo
rted major.minor version 52.0
        at java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.7.0_13]
        at java.lang.ClassLoader.defineClass(Unknown Source) ~[?:1.7.0_13]
        at java.security.SecureClassLoader.defineClass(Unknown Source) ~[?:1.7.0
_13]
        at java.net.URLClassLoader.defineClass(Unknown Source) ~[?:1.7.0_13]
        at java.net.URLClassLoader.access$100(Unknown Source) ~[?:1.7.0_13]
        at java.net.URLClassLoader$1.run(Unknown Source) ~[?:1.7.0_13]
        at java.net.URLClassLoader$1.run(Unknown Source) ~[?:1.7.0_13]
        at java.security.AccessController.doPrivileged(Native Method) ~[?:1.7.0_
13]
        at java.net.URLClassLoader.findClass(Unknown Source) ~[?:1.7.0_13]
        at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.
java:77) ~[craftbukkit-1.7.2-R0.4-20140316.221310-4.jar:git-Bukkit-1.7.2-R0.3-2-
g85f5776-b3024jnks]
        at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.
java:62) ~[craftbukkit-1.7.2-R0.4-20140316.221310-4.jar:git-Bukkit-1.7.2-R0.3-2-
g85f5776-b3024jnks]
        at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.7.0_13]
        at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.7.0_13]
        at java.lang.Class.forName0(Native Method) ~[?:1.7.0_13]
        at java.lang.Class.forName(Unknown Source) ~[?:1.7.0_13]
        at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.jav
a:40) ~[craftbukkit-1.7.2-R0.4-20140316.221310-4.jar:git-Bukkit-1.7.2-R0.3-2-g85
f5776-b3024jnks]
        at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.j
ava:127) ~[craftbukkit-1.7.2-R0.4-20140316.221310-4.jar:git-Bukkit-1.7.2-R0.3-2-
g85f5776-b3024jnks]
        ... 9 more
[11:08:14 WARN]: **** SERVER IS RUNNING IN OFFLINE/INSECURE MODE!
[11:08:14 WARN]: The server will make no attempt to authenticate usernames. Bewa
re.
[11:08:14 WARN]: While this makes the game possible to play without internet acc
ess, it also opens up the ability for hackers to connect with any username they
choose.
[11:08:14 WARN]: To change this, set "online-mode" to "true" in the server.prope
rties file.
[11:08:14 INFO]: Preparing level "world"
[11:08:14 INFO]: Preparing start region for level 0 (Seed: -6971495887187099410)

[11:08:15 INFO]: Preparing spawn area: 68%
[11:08:15 WARN]: Could not get information about this CraftBukkit version; perha
ps you are running a custom one?: FileNotFoundException
[11:08:15 INFO]: Preparing start region for level 1 (Seed: -6971495887187099410)

[11:08:16 WARN]: Could not get latest artifact information: FileNotFoundExceptio
n
[11:08:16 INFO]: Preparing spawn area: 83%
[11:08:16 INFO]: Preparing start region for level 2 (Seed: -6971495887187099410)

[11:08:16 INFO]: Server permissions file permissions.yml is empty, ignoring it
[11:08:16 INFO]: Done (2.954s)! For help, type "help" or "?"
>
这是什么问题求大神解答



作者: 深蓝の回忆    时间: 2015-8-6 21:02
交作业。

package com.gmail.lycknight;

import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
public class Helloworld extends JavaPlugin
{
        @Override
        public void onEnable()
        {
            getLogger().info("THE PLUGIN START SUCCESSFUL!");
        }
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args)
        {   
                if(label.equalsIgnoreCase("HW"))
                {
                        if(args.length==0)
                        {
                            sender.sendMessage("[HW] /HW m 信息");
                            sender.sendMessage("[HW] /HW kill 自杀");
                            return true;
                        }
                if(args[0].equalsIgnoreCase("m"))
                {
                        if(sender instanceof Player)
                        {
                                sender.sendMessage("sussessful");
                                return true;
                        }
                        sender.sendMessage("no");
                        return true;
                }
                if(args[0].equalsIgnoreCase("kill"))
                {
                        if(sender instanceof Player)
                        {
                                Player player=(Player) sender;
                                player.setHealth(0.0);
                                player.sendMessage("你居然自杀了");
                                return true;
                        }
                        sender.sendMessage("no");
                        return true;
                }
                        Player player=(Player) sender;
                        player.setHealth(0.0);
                        player.sendMessage("不存在的参数");
                        return true;
                }
            return false;
        }
}
作者: 深蓝の回忆    时间: 2015-8-6 21:02
交作业。

package com.gmail.lycknight;

import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
public class Helloworld extends JavaPlugin
{
        @Override
        public void onEnable()
        {
            getLogger().info("THE PLUGIN START SUCCESSFUL!");
        }
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args)
        {   
                if(label.equalsIgnoreCase("HW"))
                {
                        if(args.length==0)
                        {
                            sender.sendMessage("[HW] /HW m 信息");
                            sender.sendMessage("[HW] /HW kill 自杀");
                            return true;
                        }
                if(args[0].equalsIgnoreCase("m"))
                {
                        if(sender instanceof Player)
                        {
                                sender.sendMessage("sussessful");
                                return true;
                        }
                        sender.sendMessage("no");
                        return true;
                }
                if(args[0].equalsIgnoreCase("kill"))
                {
                        if(sender instanceof Player)
                        {
                                Player player=(Player) sender;
                                player.setHealth(0.0);
                                player.sendMessage("你居然自杀了");
                                return true;
                        }
                        sender.sendMessage("no");
                        return true;
                }
                        Player player=(Player) sender;
                        player.setHealth(0.0);
                        player.sendMessage("不存在的参数");
                        return true;
                }
            return false;
        }
}
作者: CrazyEm    时间: 2015-8-11 17:12
请问在如何用if识别玩家是否输入了存在的指令?
求作业的详细代码,谢!
作者: HuaiYang    时间: 2015-8-19 23:12
@810587921
恶霸细心,还留作业,还给我们作业,感动啊!!![diamond_sword]
表示作业完成了~等会上截图~
作者: 旅行小哥    时间: 2015-10-2 21:41
完整代码有问题。。

作者: ddee    时间: 2016-2-5 22:04
大神求教:我的插件能在服务器里装载了,但是打/ts kill 没反应,我是在cmd窗口试的,求教
  1. package com.ts;
  2. import org.bukkit.command.Command;
  3. import org.bukkit.command.CommandSender;
  4. import org.bukkit.entity.*;
  5. import org.bukkit.plugin.java.JavaPlugin;
  6. public class mctest extends JavaPlugin
  7. {
  8.         public void onEnable()//貌似是插件在开启的时候总是要初始化需要用的
  9.         {
  10.                 getLogger().info("MCTEST插件已加载");//向后台发送信息
  11.         }
  12.         public boolean cnCommand(CommandSender sender,Command cmd,String label,String[] args)
  13.         {
  14.                 if(label.equalsIgnoreCase("ts"))
  15.                 {
  16.                         if(args.length==0)
  17.                         {
  18.                                 sender.sendMessage("§a/ts me 暂无作用");
  19.                                 sender.sendMessage("§a/ts kill 自杀");
  20.                                 sender.sendMessage("§a/ts m 远离这个世界");
  21.                                 return true;
  22.                         }
  23.                 }
  24.                 if(args [0].equalsIgnoreCase("me"))
  25.                 {
  26.                                 sender.sendMessage("§a都说没作用了!");
  27.                                 return true; //返回值
  28.                         sender.sendMessage("§a该命令只能由玩家执行");//否则返回信息
  29.                         return true; //返回值
  30.                 }
  31.                 if(args [0].equalsIgnoreCase("kill")) //判断信息,equalsIgnoreCase忽略大小写
  32.                 {
  33.                                 player.sendMessage("§a你被骗了!"); //提示信息
  34.                                 return true; //返回值
  35.                 }
  36.                 if(args [0].equalsIgnoreCase("m")) //判断信息,equalsIgnoreCase忽略大小写
  37.                 {
  38.                                 player.setHealth(0.0);
  39.                                 player.sendMessage("§c永别了,世界!"); //提示信息
  40.                                 return true; //返回值
  41.                 }
  42.                 return false;
  43.         }
  44. }
复制代码

作者: kjkj2173135    时间: 2016-2-18 09:35
这章我似乎看不懂
作者: mopolun520    时间: 2016-2-21 04:04
问下LZ 不太了解replaceAll这个代码的意思
是把§替换为&吗?
作者: 卿风_    时间: 2016-3-23 17:47
QAQ求大神 解释
我那个核心用的自己的服务器的核心 paperspigot1.8.8
然后放到服务器 没有用处QAQ  连运行都没运行]
这是咋拉
作者: 2541459039    时间: 2016-4-22 22:40
{:10_492:}新手萌萌表示 图片全挂了
作者: 2892741402    时间: 2016-7-8 14:55
大神,怎么回事啊??
[02:59:11 ERROR]: Could not load 'plugins\JC.jar' in folder 'plugins'
org.bukkit.plugin.InvalidDescriptionException: Invalid plugin.yml
        at org.bukkit.plugin.java.JavaPluginLoader.getPluginDescription(JavaPlug
inLoader.java:162) ~[spigot-1.7.x-1.8.1.jar:git-Spigot-1649]
        at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager
.java:133) [spigot-1.7.x-1.8.1.jar:git-Spigot-1649]
        at org.bukkit.craftbukkit.v1_7_R4.CraftServer.loadPlugins(CraftServer.ja
va:369) [spigot-1.7.x-1.8.1.jar:git-Spigot-1649]
        at net.minecraft.server.v1_7_R4.DedicatedServer.init(DedicatedServer.jav
a:152) [spigot-1.7.x-1.8.1.jar:git-Spigot-1649]
        at net.minecraft.server.v1_7_R4.MinecraftServer.run(MinecraftServer.java
:458) [spigot-1.7.x-1.8.1.jar:git-Spigot-1649]
        at net.minecraft.server.v1_7_R4.ThreadServerApplication.run(SourceFile:6
28) [spigot-1.7.x-1.8.1.jar:git-Spigot-1649]
Caused by: org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInp
utException: Input length = 1
        at org.yaml.snakeyaml.reader.StreamReader.update(StreamReader.java:200)
~[spigot-1.7.x-1.8.1.jar:git-Spigot-1649]
        at org.yaml.snakeyaml.reader.StreamReader.<init>(StreamReader.java:60) ~
[spigot-1.7.x-1.8.1.jar:git-Spigot-1649]
        at org.yaml.snakeyaml.Yaml.load(Yaml.java:412) ~[spigot-1.7.x-1.8.1.jar:
git-Spigot-1649]
        at org.bukkit.plugin.PluginDescriptionFile.<init>(PluginDescriptionFile.
java:232) ~[spigot-1.7.x-1.8.1.jar:git-Spigot-1649]
        at org.bukkit.plugin.java.JavaPluginLoader.getPluginDescription(JavaPlug
inLoader.java:157) ~[spigot-1.7.x-1.8.1.jar:git-Spigot-1649]
        ... 5 more
Caused by: java.nio.charset.MalformedInputException: Input length = 1
        at java.nio.charset.CoderResult.throwException(Unknown Source) ~[?:1.7.0
_40]
        at sun.nio.cs.StreamDecoder.implRead(Unknown Source) ~[?:1.7.0_40]
        at sun.nio.cs.StreamDecoder.read(Unknown Source) ~[?:1.7.0_40]
        at java.io.InputStreamReader.read(Unknown Source) ~[?:1.7.0_40]
        at org.yaml.snakeyaml.reader.UnicodeReader.read(UnicodeReader.java:123)
~[spigot-1.7.x-1.8.1.jar:git-Spigot-1649]
        at java.io.Reader.read(Unknown Source) ~[?:1.7.0_40]
        at org.yaml.snakeyaml.reader.StreamReader.update(StreamReader.java:184)
~[spigot-1.7.x-1.8.1.jar:git-Spigot-1649]
        at org.yaml.snakeyaml.reader.StreamReader.<init>(StreamReader.java:60) ~
[spigot-1.7.x-1.8.1.jar:git-Spigot-1649]
        at org.yaml.snakeyaml.Yaml.load(Yaml.java:412) ~[spigot-1.7.x-1.8.1.jar:
git-Spigot-1649]
        at org.bukkit.plugin.PluginDescriptionFile.<init>(PluginDescriptionFile.
java:232) ~[spigot-1.7.x-1.8.1.jar:git-Spigot-1649]
        at org.bukkit.plugin.java.JavaPluginLoader.getPluginDescription(JavaPlug
inLoader.java:157) ~[spigot-1.7.x-1.8.1.jar:git-Spigot-1649]
        ... 5 more
作者: a8105    时间: 2016-7-8 18:22
2892741402 发表于 2016-7-8 14:55
大神,怎么回事啊??
[02:59:11 ERROR]: Could not load 'plugins\JC.jar' in folder 'plugins'
org.bukki ...

plugin.yml有问题
作者: 2892741402    时间: 2016-7-8 22:27
810587921 发表于 2016-7-8 18:22
plugin.yml有问题

谢谢,不过已经知道了
作者: 2892741402    时间: 2016-7-9 16:41
大神,我复习了一下,这又咋了
[04:44:36 ERROR]: Could not load 'plugins\JC.jar' in folder 'plugins'
org.bukkit.plugin.InvalidDescriptionException: commands are of wrong type
        at org.bukkit.plugin.PluginDescriptionFile.loadMap(PluginDescriptionFile
.java:941) ~[spigot-1.7.x-1.8.1.jar:git-Spigot-1649]
        at org.bukkit.plugin.PluginDescriptionFile.<init>(PluginDescriptionFile.
java:232) ~[spigot-1.7.x-1.8.1.jar:git-Spigot-1649]
        at org.bukkit.plugin.java.JavaPluginLoader.getPluginDescription(JavaPlug
inLoader.java:157) ~[spigot-1.7.x-1.8.1.jar:git-Spigot-1649]
        at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager
.java:133) [spigot-1.7.x-1.8.1.jar:git-Spigot-1649]
        at org.bukkit.craftbukkit.v1_7_R4.CraftServer.loadPlugins(CraftServer.ja
va:369) [spigot-1.7.x-1.8.1.jar:git-Spigot-1649]
        at net.minecraft.server.v1_7_R4.DedicatedServer.init(DedicatedServer.jav
a:152) [spigot-1.7.x-1.8.1.jar:git-Spigot-1649]
        at net.minecraft.server.v1_7_R4.MinecraftServer.run(MinecraftServer.java
:458) [spigot-1.7.x-1.8.1.jar:git-Spigot-1649]
        at net.minecraft.server.v1_7_R4.ThreadServerApplication.run(SourceFile:6
28) [spigot-1.7.x-1.8.1.jar:git-Spigot-1649]
Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to java
.util.Map
        at org.bukkit.plugin.PluginDescriptionFile.loadMap(PluginDescriptionFile
.java:923) ~[spigot-1.7.x-1.8.1.jar:git-Spigot-1649]
        ... 7 more
作者: a8105    时间: 2016-7-9 17:56
2892741402 发表于 2016-7-9 16:41
大神,我复习了一下,这又咋了
[04:44:36 ERROR]: Could not load 'plugins\JC.jar' in folder 'plugins'
o ...

还是plugin.yml有问题
截图看看
作者: 2892741402    时间: 2016-7-17 16:22
810587921 发表于 2016-7-9 17:56
还是plugin.yml有问题
截图看看

前几天没玩电脑,现在来了
作者: 黄总    时间: 2016-7-28 18:31
看不到图,只好下文档了
301 当月外链流量已用完 图片挂了~{:10_492:}
作者: 7864    时间: 2016-8-24 17:26
可以用c++编插件吗QAQ,再学一个语言感觉要累死
作者: duibuqi_    时间: 2017-4-2 17:10
提示: 作者被禁止或删除 内容自动屏蔽
作者: 掉渣渣    时间: 2018-12-11 18:11
作业
  1. package com.zxcsqq;

  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 LoadEnableDisable  extends JavaPlugin{
  7.         /**
  8.         当插件被Load(加载)时执行的代码
  9.         getLogger().info() -> 代表或其控制台Log并且发送一行info信息
  10.         **/
  11.             @Override
  12.             public void onLoad() {
  13.                 getLogger().info("onLoad 被调用!");
  14.             }

  15.         /**
  16.         当插件被Enable(开启)时执行的代码
  17.         getLogger().info() -> 代表或其控制台Log并且发送一行info信息
  18.         **/
  19.             @Override
  20.             public void onEnable() {
  21.                 getLogger().info("onEnable 被调用");
  22.             }

  23.         /**
  24.         当插件被Disable(关闭)时执行的代码
  25.         getLogger().info() -> 代表或其控制台Log并且发送一行info信息
  26.         **/
  27.             @Override
  28.             public void onDisable() {
  29.                 getLogger().info("onDisable 被调用");
  30.             }

  31.             @Override
  32.             public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
  33.                    
  34.                         if(label.equalsIgnoreCase("jc")) {
  35.                                 if(args.length==0) {
  36.                                         sender.sendMessage("§a/jc message  信息");
  37.                                         sender.sendMessage("§a/jc kill  自杀");
  38.                                         sender.sendMessage("§a/jc m [玩家名]  [信息]");
  39.                                         return true;
  40.                                 }
  41.                                
  42.                                 if(args[0].equalsIgnoreCase("message")) {
  43.                                         if(sender instanceof Player) {sender.sendMessage("§a【测试信息】你好你好");return true;}
  44.                                         sender.sendMessage("§c该命令只能由玩家执行");
  45.                                 }
  46.                                
  47.                                 if(args[0].equalsIgnoreCase("kill")) {
  48.                                         if(sender instanceof Player) {Player player = (Player)sender;player.setHealth(0.0);player.sendMessage("§a你自杀了");return true;}
  49.                                         sender.sendMessage("§c该命令只能由玩家执行");
  50.                                 }
  51.                                
  52.                                 if(args[0].equalsIgnoreCase("m")) {
  53.                                         if(!(sender instanceof Player)) {if(args.length>3) {sender.sendMessage("§a参数过长!");return true;}
  54.                                         if(args.length<3) {sender.sendMessage("§a参数过短!");return true;}
  55.                                         Player p = getServer().getPlayer(args[1]);
  56.                                         if(p==null) {sender.sendMessage("§a玩家不存在,发送消息失败");return true;}
  57.                                         p.sendMessage(args[2].replaceAll("&", "§"));
  58.                                         sender.sendMessage("§a给"+p.getName()+"的信息发送成功");
  59.                                         return true;
  60.                                         }
  61.                                         sender.sendMessage("§c该命令不能由玩家执行");
  62.                                         return true;
  63.                                 }
  64.                                 if(sender instanceof Player) {
  65.                                         Player player = (Player)sender;
  66.                                         player.setHealth(0.0);
  67.                                         player.sendMessage("§a参数错误你被惩罚");
  68.                                         return true;
  69.                                 }
  70.                         }
  71.                     return false;
  72.             }
  73.         }
复制代码

作者: 3190525474    时间: 2018-12-13 18:59
大神啊,为啥我看的好懵啊。。看不懂啊,????
作者: 3190525474    时间: 2018-12-13 19:00
哭唧唧。,
是我逻辑思维不好吗,。