- public static ItemStack item3 = new ItemStack(Material.EMERALD_BLOCK);
- public static ItemMeta item3Meta = item3.getItemMeta();
- public void anNiu() {
- item3Meta.setDisplayName("§a加/减10$");
- List<String> arg0 = item3Meta.getLore();
- arg0.add("lore-描述");
- item3Meta.setLore(arg0);
- item3.setItemMeta(item3Meta);
- }
eclipse中没有报错
然后运行
后台报错
[14:56:13] [Server thread/ERROR]: Error occurred while enabling LoadEnaleDisable v1.0 (Is it up to date?)
java.lang.NullPointerException
at com.asdfee.MyPluginInventory.anNiu(MyPluginInventory.java:49) ~[?:?]
at com.asdfee.MyPluginInventory.<init>(MyPluginInventory.java:29) ~[?:?]
at com.asdfee.LoadEnableDisable.onEnable(LoadEnableDisable.java:42) ~[?:?]
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:321) ~[spigot-1.8.8-R0.1-SNAPSHOT.jar:git-Spigot-db6de12-f4cf906]
at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:340) [spigot-1.8.8-R0.1-SNAPSHOT.jar:git-Spigot-db6de12-f4cf906]
at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:405) [spigot-1.8.8-R0.1-SNAPSHOT.jar:git-Spigot-db6de12-f4cf906]
at org.bukkit.craftbukkit.v1_8_R3.CraftServer.loadPlugin(CraftServer.java:357) [spigot-1.8.8-R0.1-SNAPSHOT.jar:git-Spigot-db6de12-f4cf906]
at org.bukkit.craftbukkit.v1_8_R3.CraftServer.enablePlugins(CraftServer.java:317) [spigot-1.8.8-R0.1-SNAPSHOT.jar:git-Spigot-db6de12-f4cf906]
at org.bukkit.craftbukkit.v1_8_R3.CraftServer.reload(CraftServer.java:741) [spigot-1.8.8-R0.1-SNAPSHOT.jar:git-Spigot-db6de12-f4cf906]
at org.bukkit.Bukkit.reload(Bukkit.java:535) [spigot-1.8.8-R0.1-SNAPSHOT.jar:git-Spigot-db6de12-f4cf906]
at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:25) [spigot-1.8.8-R0.1-SNAPSHOT.jar:git-Spigot-db6de12-f4cf906]
at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) [spigot-1.8.8-R0.1-SNAPSHOT.jar:git-Spigot-db6de12-f4cf906]
at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchCommand(CraftServer.java:641) [spigot-1.8.8-R0.1-SNAPSHOT.jar:git-Spigot-db6de12-f4cf906]
at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchServerCommand(CraftServer.java:627) [spigot-1.8.8-R0.1-SNAPSHOT.jar:git-Spigot-db6de12-f4cf906]
at net.minecraft.server.v1_8_R3.DedicatedServer.aO(DedicatedServer.java:412) [spigot-1.8.8-R0.1-SNAPSHOT.jar:git-Spigot-db6de12-f4cf906]
at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:375) [spigot-1.8.8-R0.1-SNAPSHOT.jar:git-Spigot-db6de12-f4cf906]
at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654) [spigot-1.8.8-R0.1-SNAPSHOT.jar:git-Spigot-db6de12-f4cf906]
at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557) [spigot-1.8.8-R0.1-SNAPSHOT.jar:git-Spigot-db6de12-f4cf906]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_161]
[14:56:13] [Server thread/INFO]: Server permissions file permissions.yml is empty, ignoring it
[14:56:13] [Server thread/INFO]: CONSOLE: [0;32;1mReload complete.[m
先判断这个物品是否有lore,再get,否则会空指针异常
建议使用三元运算符 List<String> lores = itemMeta.hasLore()?itemMeta.getLore():new ArrayList<String>();
建议使用三元运算符 List<String> lores = itemMeta.hasLore()?itemMeta.getLore():new ArrayList<String>();
1231231231231
建议taboolib
这段代码用意有些不明啊 一楼正解 三元运算符 顺带一提 如果你希望有一个固定的静态ItemStack
用static{}来执行设置DisplayName和Lore吧
用static{}来执行设置DisplayName和Lore吧
这个函数实现的功能是给玩家手里的物品加lore,lz可以参考下
复制代码
- public static void addLore(Player p,String arg0){
- ItemStack i = p.getInventory().getItemInMainHand();
- ItemMeta im = i.getItemMeta();
- String newStr = arg0.replaceAll("&", "§");
- List<String> lr = new ArrayList<>();
- if(i.hasItemMeta()&&im.hasLore()) {
- lr.addAll(im.getLore());
- }
- lr.add(newStr);
- im.setLore(lr);
- i.setItemMeta(im);
- }
在这里你应该能看到一行文字:
你没有检查hasLore()就直接调用getLore(),从一开始你就错了。
关于Lore的正确设置姿势,先直接创建一个ArrayList,然后把你要加的内容逐一加进去,最后直接调用setLore()就好了。
Plugins should check if hasLore() returns true before calling this method.
你没有检查hasLore()就直接调用getLore(),从一开始你就错了。
关于Lore的正确设置姿势,先直接创建一个ArrayList,然后把你要加的内容逐一加进去,最后直接调用setLore()就好了。
meta.setLore( Arrays.asList(
("第一行" ),
("第二行"),
("第三行")
));
("第一行" ),
("第二行"),
("第三行")
));