唯爱她°
  1. package dathoer.github.io.lore;

  2. import org.bukkit.command.Command;
  3. import org.bukkit.command.CommandSender;
  4. import org.bukkit.entity.Player;
  5. import org.bukkit.event.Listener;
  6. import org.bukkit.inventory.ItemStack;
  7. import org.bukkit.inventory.meta.ItemMeta;
  8. import org.bukkit.plugin.java.JavaPlugin;

  9. import java.util.ArrayList;
  10. import java.util.List;

  11. public final class Lore extends JavaPlugin implements Listener {



  12.     @Override
  13.     public void onEnable() {
  14.         // Plugin startup logic
  15.         System.out.println("&lore插件启用");


  16.     }

  17.     @Override
  18.     public void onDisable() {
  19.         // Plugin shutdown logic
  20.         System.out.println("&alore插件以关闭");
  21.     }
  22.     public boolean onCommand(CommandSender sender, Command cmd,String label,String[] args) {
  23.         if (sender instanceof Player) {
  24.             Player p = (Player) sender;
  25.             if (p.isOp())
  26.                 if (p.getInventory().getItemInMainHand() != null) {
  27.                     ItemStack item = p.getInventory().getItemInMainHand();
  28.                     List<String> lore = new ArrayList<>();
  29.                     ItemMeta meta = item.getItemMeta();
  30.                     if (label.equals("lore")) {
  31.                         if (args.length > 1 && args[0].equals("添加")) {
  32.                             if (meta.hasLore())
  33.                                 lore.addAll(meta.getLore());
  34.                             lore.add(replace(args[1]));
  35.                             meta.setLore(lore);
  36.                             item.setItemMeta(meta);
  37.                             p.getInventory().setItemInMainHand(item);
  38.                             return true;
  39.                         }
  40.                         if (args.length > 2 && args[0].equals("续写")) {
  41.                             if (!meta.hasLore()) {
  42.                                 p.sendMessage("该物品没有lore");
  43.                                 return true;
  44.                             }
  45.                             lore.addAll(meta.getLore());
  46.                             int a = args[1];
  47.                             int l = meta.getLore().size() + 1;
  48.                             if (a == -1 || 1 <= a) {
  49.                                 p.sendMessage("行数不正确,请重新输入");
  50.                                 return true;
  51.                             }
  52.                             lore.set(a - 1, String.valueOf(lore.get(a - 1)) + replace(args[2]));
  53.                             meta.setLore(lore);
  54.                             item.setItemMeta(meta);
  55.                             p.getInventory().setItemInMainHand(item);
  56.                             return true;
  57.                         }
  58.                         if (args.length > 2 && args[0].equals("增加")) {
  59.                             if (!meta.hasLore()) {
  60.                                 p.sendMessage("该物品没有lore");
  61.                                 return true;
  62.                             }
  63.                             lore.addAll(meta.getLore());
  64.                             int a = args[1];
  65.                             int l = meta.getLore().size() + 1;
  66.                             if (a == -1 || 1 <= a) {
  67.                                 p.sendMessage("行数不正确,请重新输入");
  68.                                 return true;
  69.                             }
  70.                             lore.add(a - 1, replace(args[2]));
  71.                             meta.setLore(lore);
  72.                             item.setItemMeta(meta);
  73.                             p.getInventory().setItemInMainHand(item);
  74.                             return true;
  75.                         }
  76.                         if (args.length > 2 && args[0].equals("设置")) {
  77.                             if (!meta.hasLore()) {
  78.                                 p.sendMessage("该物品没有lore");
  79.                                 return true;
  80.                             }
  81.                             lore.addAll(meta.getLore());
  82.                             int a = args[1];
  83.                             int l = meta.getLore().size() + 1;
  84.                             if (a == -1 || 1 <= a) {
  85.                                 p.sendMessage("行数不正确,请重新输入");
  86.                                 return true;
  87.                             }
  88.                             lore.add(a - 1, replace(args[2]));
  89.                             meta.setLore(lore);
  90.                             item.setItemMeta(meta);
  91.                             p.getInventory().setItemInMainHand(item);
  92.                             return true;
  93.                         }
  94.                         if (args.length > 2 && args[0].equals("删除 ")) {
  95.                             if (!meta.hasLore()) {
  96.                                 p.sendMessage("该物品没有lore");
  97.                                 return true;
  98.                             }
  99.                             lore.addAll(meta.getLore());
  100.                             int a = args[1];
  101.                             int l = meta.getLore().size() + 1;
  102.                             if (a == -1 || 1 <= a) {
  103.                                 p.sendMessage("行数不正确,请重新输入");
  104.                                 return true;
  105.                             }
  106.                             lore.remove(a - 1);
  107.                             meta.setLore(lore);
  108.                             item.setItemMeta(meta);
  109.                             p.getInventory().setItemInMainHand(item);
  110.                             return true;
  111.                         }
  112.                         if (args.length > 0 && args[0].equals("全部删除")) {
  113.                             meta.setLore(lore);
  114.                             item.setItemMeta(meta);
  115.                             p.getInventory().setItemInMainHand(item);
  116.                             return true;
  117.                         }
  118.                     }
  119.                 }
  120.         }
  121.         return false;
  122.     }

  123.     private static String replace(String 字符串) {
  124.     字符串 = 字符串.replace("&","§");
  125.     字符串 = 字符串.replace("^", " ");
  126.     return 字符串;
  127.     }
  128. }
复制代码
这里面,借鉴的 别人的源码
int a = args[1];这个有条红杠咋解决??



九仞
本帖最后由 九仞 于 2020-4-11 16:32 编辑

args是字符串数组,而你的a定义为整数,当然会报错
改成下面这样子就行
  1. try {

  2.     int a =Integer.parseInt(args[1]);

  3. }catch(NumberFormatException e) {

  4.     e.printStackTrace();

  5. }
复制代码

看了一下你的代码,你应该是初涉编程给你提个醒,少用中文变量,多做注释
对于变量的命名可以参考下面这两篇文章
https://blog.csdn.net/ZCF1002797280/article/details/51495229
https://blog.csdn.net/AndyNikolas/article/details/54773529

唯爱她°
九仞 发表于 2020-4-11 16:22
args是字符串数组,而你的a定义为整数,当然会报错
改成下面这样子就行

大佬
<span style=
">try</span><span style=
">catch</span><span style=
这些是个啥

九仞

刚刚BBS特性,源码出了问题

唯爱她°
九仞 发表于 2020-4-11 16:32
刚刚BBS特性,源码出了问题

那我就是把int a = args[1];
替换成你写的那个就行了吗

唯爱她°
九仞 发表于 2020-4-11 16:32
刚刚BBS特性,源码出了问题
  1.                             if (a == -1 || 1 <= a) {
  2.                                 p.sendMessage("行数不正确,请重新输入");
  3.                                 return true;
  4.                             }
  5.                             lore.set(a - 1, String.valueOf(lore.get(a - 1)) + replace(args[2]));
复制代码

这里出错了,替换后,那个a

九仞
唯爱她° 发表于 2020-4-11 16:37
那我就是把int a = args[1];
替换成你写的那个就行了吗

对,这里和你讲一下为什么要判断异常
因为输入的字符串可能并不是数字,这就会导致运行时异常
所以我只是简单的处理了异常,具体怎么处理,靠你来完善啦

唯爱她°
九仞 发表于 2020-4-11 16:39
对,这里和你讲一下为什么要判断异常
因为输入的字符串可能并不是数字,这就会导致运行时异常
所以我只是 ...

也就是说,我现在就改我发的那一段就好了吗

九仞
唯爱她° 发表于 2020-4-11 16:42
也就是说,我现在就改我发的那一段就好了吗

是的