私は、胸の場所が自分のconfig.yml内のどの場所とも一致しない場合、誰かが胸を開いたときにチェックするプラグインを作成しようとしています。今、私はこのコードを持っている :Bukkitプラグインがconfig.ymlから場所を取得する
public class Listeners implements Listener {
public Core plugin;
public Listeners(Core core) {
this.plugin = core;
}
@EventHandler
private void onPlayerInteract(PlayerInteractEvent e) {
if(e.getAction() == Action.RIGHT_CLICK_BLOCK) {
if(plugin.createMode) {
if (e.getClickedBlock().getType() == Material.CHEST) {
e.setCancelled(true);
Location loc = e.getClickedBlock().getLocation();
String name = plugin.name;
plugin.getConfig().set(name + ".world", loc.getWorld().getName());
plugin.getConfig().set(name + ".x", loc.getBlockX());
plugin.getConfig().set(name + ".y", loc.getBlockY());
plugin.getConfig().set(name + ".z", loc.getBlockZ());
plugin.saveConfig();
e.getPlayer().sendMessage(ChatColor.GOLD + "[ChestTreasure] " + ChatColor.RESET + "Treasury chest successfully created!");
plugin.createMode = false;
}
} else {
if(e.getClickedBlock().getType() == Material.CHEST) {
plugin.chests.clear();
for (String key : plugin.getConfig().getKeys(false)){
//We are getting every key from our config.yml file
ConfigurationSection location = plugin.getConfig().getConfigurationSection(key);
String world = location.getString(key + ".world");
int x = location.getInt(key + ".x");
int y = location.getInt(key + ".y");
int z = location.getInt(key + ".z");
e.getPlayer().sendMessage("Hondnota x je " + String.valueOf(x));
Location l = new Location(Bukkit.getWorld(world), x, y, z);
plugin.chests.add(l);
}
for(Location l : plugin.chests) {
e.getPlayer().sendMessage(String.valueOf(e.getClickedBlock().getLocation().getX()));
if(l == e.getClickedBlock().getLocation()) {
e.getPlayer().sendMessage("Jeej");
}
}
}
}
}
}
}
をしかし、私は胸を右クリックすると、メッセージjeej doesntのが表示され、何が表示され、すべてがメッセージHodnotaある
ArratList<Location> list = new ArrayList();
foreach(get world, x, y, z from each key in section Locations in my config) {
list.add(new Location(world, x, y, z));
foreach(Location l : list) {
if(l == p.location...
}
}
編集:だから私はこのような何かをしたいですx je 0しかし、私は自分の設定にいくつかのキーがあり、xは0ではありません。コンソールでは、このエラーが表示されます:あなたが何ができるか
[12:25:13 ERROR]: Could not pass event PlayerInteractEvent to ChestTreasure v1.0
org.bukkit.event.EventException
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:310) ~[spigot.jar:git-Spigot-5391d73-0ebb9c7]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot.jar:git-Spigot-5391d73-0ebb9c7]
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [spigot.jar:git-Spigot-5391d73-0ebb9c7]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [spigot.jar:git-Spigot-5391d73-0ebb9c7]
at org.bukkit.craftbukkit.v1_10_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:231) [spigot.jar:git-Spigot-5391d73-0ebb9c7]
at net.minecraft.server.v1_10_R1.PlayerInteractManager.a(PlayerInteractManager.java:492) [spigot.jar:git-Spigot-5391d73-0ebb9c7]
at net.minecraft.server.v1_10_R1.PlayerConnection.a(PlayerConnection.java:890) [spigot.jar:git-Spigot-5391d73-0ebb9c7]
at net.minecraft.server.v1_10_R1.PacketPlayInUseItem.a(SourceFile:55) [spigot.jar:git-Spigot-5391d73-0ebb9c7]
at net.minecraft.server.v1_10_R1.PacketPlayInUseItem.a(SourceFile:11) [spigot.jar:git-Spigot-5391d73-0ebb9c7]
at net.minecraft.server.v1_10_R1.PlayerConnectionUtils$1.run(SourceFile:13) [spigot.jar:git-Spigot-5391d73-0ebb9c7]
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_91]
at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_91]
at net.minecraft.server.v1_10_R1.SystemUtils.a(SourceFile:45) [spigot.jar:git-Spigot-5391d73-0ebb9c7]
at net.minecraft.server.v1_10_R1.MinecraftServer.D(MinecraftServer.java:733) [spigot.jar:git-Spigot-5391d73-0ebb9c7]
at net.minecraft.server.v1_10_R1.DedicatedServer.D(DedicatedServer.java:399) [spigot.jar:git-Spigot-5391d73-0ebb9c7]
at net.minecraft.server.v1_10_R1.MinecraftServer.C(MinecraftServer.java:672) [spigot.jar:git-Spigot-5391d73-0ebb9c7]
at net.minecraft.server.v1_10_R1.MinecraftServer.run(MinecraftServer.java:571) [spigot.jar:git-Spigot-5391d73-0ebb9c7]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_91]
Caused by: java.lang.IllegalArgumentException: Name cannot be null
at org.apache.commons.lang.Validate.notNull(Validate.java:192) ~[spigot.jar:git-Spigot-5391d73-0ebb9c7]
at org.bukkit.craftbukkit.v1_10_R1.CraftServer.getWorld(CraftServer.java:1023) ~[spigot.jar:git-Spigot-5391d73-0ebb9c7]
at org.bukkit.Bukkit.getWorld(Bukkit.java:500) ~[spigot.jar:git-Spigot-5391d73-0ebb9c7]
at me.sudoman281.chestTreasure.Listeners.onPlayerInteract(Listeners.java:47) ~[?:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_91]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_91]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_91]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_91]
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot.jar:git-Spigot-5391d73-0ebb9c7]
... 17 more
"あなたはこのようなもの"をあなたは知っているようです。どうやらそれでは不十分で、より具体的なものがほしいと思っています。正確に何を望んでいるのかを具体的に説明しなければなりません。 – Julian
より明記してください。 – manetsus
リスナー47はどのラインですか? – Kerooker