How do i get the signs line data when i player clicks it. I've tryed with PlayerInteract event but im stuck so any help would be apreciated
Something like this: Code:java @EventHandlerpublic void onInteract(PlayerInteractEvent event) { Block clicked = event.getClickedBlock(); Player player = getPlayer(); if(clicked != null) { if(clicked.getType().equals(Material.SIGN_POST) || clicked.getType().equals(Material.WALL_SIGN) { Sign sign = (Sign) clicked; sign.getLine(/* Whatever line number */); } }}
You are my hero of the day Just tested. it isn't working. EDIT by Moderator: merged posts, please use the edit button instead of double posting.
Sure @EventHandler public void onInteract(PlayerInteractEvent event) { Block clicked = event.getClickedBlock(); Player player = event.getPlayer(); if(clicked != null) { if(clicked.getType().equals(Material.SIGN_POST) || clicked.getType().equals(Material.WALL_SIGN)) { Sign sign = (Sign) clicked; if (sign.getLine(1).equalsIgnoreCase("Post!")){ sign.setLine(1, "Done"); } } } } This gives errors on setLine and getLine cuz they're undefined for type Sign EDIT by Moderator: merged posts, please use the edit button instead of double posting.
Can I see your imports? There is org.bukkit.material.sign <-- You don't want this one and org.bukkit.block.sign <-- You want this one
Haha thanks it worked i had the materail due to my previous attempts. You just ramade the rank as hero of my day Thank you Now i got this error Code: 12:22:27 [ALLVARLIG] Could not pass event PlayerInteractEvent to LootSigns v1.0 org.bukkit.event.EventException at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:341) at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:477) at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:462) at org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:177) at net.minecraft.server.ItemInWorldManager.interact(ItemInWorldManager.java:361) at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:650) at net.minecraft.server.Packet15Place.handle(SourceFile:58) at net.minecraft.server.NetworkManager.b(NetworkManager.java:282) at net.minecraft.server.NetServerHandler.d(NetServerHandler.java:111) at net.minecraft.server.ServerConnection.b(SourceFile:35) at net.minecraft.server.DedicatedServerConnection.b(SourceFile:30) at net.minecraft.server.MinecraftServer.r(MinecraftServer.java:569) at net.minecraft.server.DedicatedServer.r(DedicatedServer.java:215) at net.minecraft.server.MinecraftServer.q(MinecraftServer.java:486) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:419) at net.minecraft.server.ThreadServerApplication.run(SourceFile:818) Caused by: java.lang.ClassCastException: org.bukkit.craftbukkit.block.CraftBlock cannot be cast to org.bukkit.block.Sign at me.CevinWa.NoDay.Line_Checker.onInteract(Line_Checker.java:50) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:339) ... 16 more 12:22:27 [ALLVARLIG] Could not pass event PlayerInteractEvent to NoDay v1.0 org.bukkit.event.EventException at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:341) at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:477) at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:462) at org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:177) at net.minecraft.server.ItemInWorldManager.interact(ItemInWorldManager.java:361) at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:650) at net.minecraft.server.Packet15Place.handle(SourceFile:58) at net.minecraft.server.NetworkManager.b(NetworkManager.java:282) at net.minecraft.server.NetServerHandler.d(NetServerHandler.java:111) at net.minecraft.server.ServerConnection.b(SourceFile:35) at net.minecraft.server.DedicatedServerConnection.b(SourceFile:30) at net.minecraft.server.MinecraftServer.r(MinecraftServer.java:569) at net.minecraft.server.DedicatedServer.r(DedicatedServer.java:215) at net.minecraft.server.MinecraftServer.q(MinecraftServer.java:486) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:419) at net.minecraft.server.ThreadServerApplication.run(SourceFile:818) Caused by: java.lang.ClassCastException: org.bukkit.craftbukkit.block.CraftBlock cannot be cast to org.bukkit.block.Sign at me.CevinWa.NoDay.Line_Checker.onInteract(Line_Checker.java:50) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:339) ... 16 more > EDIT by Moderator: merged posts, please use the edit button instead of double posting.
Question, i know the lines are like args, so the first line is line[0] but am i able to put something on a 5th line? line[4] and not have it erase when the server restarts?
It wouldn't show, and most likely give an error, since it will try to write to it. If you want to attach information to the sign, just save the location and the information to your config.
Well i know you can exceed the max number of letters on a sign and the server will remember what it all says, up until you restart server, then it goes by the numbers you can see