I am trying to make a conversation chat thingie but.....

Discussion in 'Plugin Development' started by Datdenkikniet, Jan 4, 2014.

Thread Status:
Not open for further replies.
  1. Well, I have my conversation class and my event class all setup (and my listener class) but for some reason I get errors:
    codes and errors (open)

    Conversation class (open)

    Code:java
    1.  
    2. package me.datdenkikniet.utils;
    3.  
    4. import me.datdenkikniet.Main;
    5. import me.datdenkikniet.events.ChatEvent;
    6.  
    7. import org.bukkit.Bukkit;
    8. import org.bukkit.ChatColor;
    9. import org.bukkit.conversations.BooleanPrompt;
    10. import org.bukkit.conversations.Conversation;
    11. import org.bukkit.conversations.ConversationContext;
    12. import org.bukkit.conversations.ConversationFactory;
    13. import org.bukkit.conversations.ConversationPrefix;
    14. import org.bukkit.conversations.FixedSetPrompt;
    15. import org.bukkit.conversations.Prompt;
    16. import org.bukkit.entity.Player;
    17.  
    18. public class Converse {
    19. private ConversationFactory factory;
    20. public class Prefix implements ConversationPrefix{
    21. public Prefix(){}
    22. @Override
    23. public String getPrefix(ConversationContext arg0) {
    24. return ChatColor.GREEN + "Conversation: ";
    25. }
    26.  
    27. }
    28. public void startConverstion(Player p){
    29. this.factory = new ConversationFactory(plugin).thatExcludesNonPlayersWithMessage("You can only do this as player!").withTimeout(20).withPrefix(new Prefix()).withFirstPrompt(new TwoAnswerPrompt()).withEscapeSequence("/quit");
    30. this.factory.buildConversation(p).begin();
    31. }
    32. Main plugin;
    33. public Converse(Main instance){
    34. plugin = instance;
    35. }
    36. public class TwoAnswerPrompt extends FixedSetPrompt{
    37. @Override
    38. public String getPromptText(ConversationContext arg0) {
    39. return ChatColor.GREEN + "Do you want to say something: " + ChatColor.DARK_AQUA + "y" + ChatColor.GREEN + "es or " + ChatColor.DARK_AQUA + "n" + ChatColor.GREEN + "o";
    40. }
    41. public TwoAnswerPrompt(){
    42. super("yes", "no", "y", "n");
    43. }
    44. protected Prompt acceptValidatedInput(ConversationContext arg0, String arg1) {
    45. if (arg1.equalsIgnoreCase("y") || arg1.equalsIgnoreCase("yes")){
    46. Player p = (Player) arg0.getForWhom();
    47. Bukkit.getPluginManager().callEvent(new ChatEvent("I just said yes!", Bukkit.getPlayer("datdenkikniet")));
    48. } else if (arg1.equalsIgnoreCase("n") || arg1.equalsIgnoreCase("no")){
    49. Bukkit.getPluginManager().callEvent(new ChatEvent("I just said yes!", Bukkit.getPlayer("datdenkikniet")));
    50. }
    51. return END_OF_CONVERSATION;
    52. }
    53.  
    54. }
    55. }
    56.  


    event class (open)

    Code:java
    1.  
    2. package me.datdenkikniet.events;
    3.  
    4. import org.bukkit.entity.Player;
    5. import org.bukkit.event.Event;
    6. import org.bukkit.event.HandlerList;
    7.  
    8. public class ChatEvent extends Event{
    9. private Player p;
    10. private String StringToChat;
    11. private static final HandlerList handlers = new HandlerList();
    12. public HandlerList getHandlers() {
    13. return ChatEvent.handlers;
    14. }
    15. public ChatEvent(String toChat, Player playerToChat){
    16. this.StringToChat = toChat;
    17. this.p = playerToChat;
    18. }
    19. public Player getPlayer(){
    20. return this.p;
    21. }
    22. public String getMessage(){
    23. return this.StringToChat;
    24. }
    25. }
    26.  


    event listener (open)

    Code:java
    1.  
    2. package me.datdenkikniet.listeners;
    3.  
    4. import me.datdenkikniet.events.ChatEvent;
    5.  
    6. import org.bukkit.event.EventHandler;
    7. import org.bukkit.event.Listener;
    8.  
    9. public class CustomCHat implements Listener{
    10. @EventHandler
    11. public void chat(ChatEvent e){
    12. e.getPlayer().performCommand("me " + e.getMessage());
    13. }
    14. }
    15.  


    the command executor (open)

    Code:java
    1.  
    2. package me.datdenkikniet.commands;
    3.  
    4. import me.datdenkikniet.Main;
    5. import me.datdenkikniet.utils.Converse;
    6.  
    7. import org.bukkit.command.Command;
    8. import org.bukkit.command.CommandExecutor;
    9. import org.bukkit.command.CommandSender;
    10. import org.bukkit.entity.Player;
    11.  
    12. public class Talk implements CommandExecutor{
    13. Main plugin;
    14. public Talk(Main instance){
    15. plugin=instance;
    16. }
    17. public boolean onCommand(CommandSender arg0, Command arg1, String arg2,
    18. String[] arg3) {
    19. if (arg1.getName().equalsIgnoreCase("talk")){
    20. Converse s = new Converse(plugin);
    21. s.startConverstion((Player)arg0);
    22. return true;
    23. }
    24. return false;
    25. }
    26.  
    27. }
    28.  


    and finally the error (open)

    Code:
    04.01 18:13:34 [Server] INFO me/datdenkikniet/utils/Converse$TwoAnswerPrompt.acceptValidatedInput(Lorg/bukkit/conversations/ConversationContext;Ljava/lang/String;)Lorg/bukkit/conversations/Prompt; @43: invokeinterface
    04.01 18:13:34 [Server] INFO Location:
    04.01 18:13:34 [Server] INFO Exception Details:
    04.01 18:13:34 [Server] INFO Caused by: java.lang.VerifyError: Bad type on operand stack
    04.01 18:13:33 [Server] INFO at net.minecraft.server.v1_7_R1.ThreadServerApplication.run(SourceFile:617) [craftbukkit_dev.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
    04.01 18:13:33 [Server] INFO at net.minecraft.server.v1_7_R1.MinecraftServer.run(MinecraftServer.java:457) [craftbukkit_dev.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
    04.01 18:13:33 [Server] INFO at net.minecraft.server.v1_7_R1.MinecraftServer.t(MinecraftServer.java:545) [craftbukkit_dev.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
    04.01 18:13:33 [Server] INFO at net.minecraft.server.v1_7_R1.DedicatedServer.u(DedicatedServer.java:250) [craftbukkit_dev.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
    04.01 18:13:33 [Server] INFO at net.minecraft.server.v1_7_R1.MinecraftServer.u(MinecraftServer.java:655) [craftbukkit_dev.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
    04.01 18:13:33 [Server] INFO at net.minecraft.server.v1_7_R1.ServerConnection.c(SourceFile:134) [craftbukkit_dev.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
    04.01 18:13:33 [Server] INFO at net.minecraft.server.v1_7_R1.NetworkManager.a(NetworkManager.java:146) [craftbukkit_dev.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
    04.01 18:13:33 [Server] INFO at net.minecraft.server.v1_7_R1.PacketPlayInChat.handle(PacketPlayInChat.java:47) [craftbukkit_dev.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
    04.01 18:13:33 [Server] INFO at net.minecraft.server.v1_7_R1.PacketPlayInChat.a(PacketPlayInChat.java:28) [craftbukkit_dev.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
    04.01 18:13:33 [Server] INFO at net.minecraft.server.v1_7_R1.PlayerConnection.a(PlayerConnection.java:814) [craftbukkit_dev.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
    04.01 18:13:33 [Server] INFO at net.minecraft.server.v1_7_R1.PlayerConnection.handleCommand(PlayerConnection.java:932) [craftbukkit_dev.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
    04.01 18:13:33 [Server] INFO at org.bukkit.craftbukkit.v1_7_R1.CraftServer.dispatchCommand(CraftServer.java:542) ~[craftbukkit_dev.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
    04.01 18:13:33 [Server] INFO at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:196) ~[craftbukkit_dev.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
    04.01 18:13:33 [Server] INFO at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[craftbukkit_dev.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
    04.01 18:13:33 [Server] INFO org.bukkit.command.CommandException: Unhandled exception executing command 'talk' in plugin ServerPlugin v0.1
    04.01 18:13:33 [Server] ERROR null


    thanks for reading, and sorry for the big post :s
     
  2. Offline

    RawCode

    add some debug output to every method.
     
  3. Also, your event doesn't have the required static 'getHandlerList' method.
     
Thread Status:
Not open for further replies.

Share This Page