2013-08-01 2 views
0

adminchat.java에서 AsyncPlayerChatEvent.java를 실행하고 싶습니다. 특히 사람이 command/ac를 입력하면 AsycPlayerChatEvent.java를 사용하여 처리 할 수 ​​있습니다. ive googled하지만 낫지는 않지만 AsyncPlayerChatEvent.AsyncPlayerChatEvent();를 추가해 보았습니다. 하지만 그것은 작동하지 않았습니다. 여기 코드가 있습니다.다른 클래스 파일에서 Java .class 파일을 실행하십시오. (보다 구체적으로)

adminchat.java

package alo.adminchat; 

import java.util.IllegalFormatException; 
import java.util.Set; 
import org.bukkit.entity.Player; 
import org.bukkit.event.Cancellable; 
import org.bukkit.event.HandlerList; 
import org.bukkit.event.player.PlayerEvent; 

import org.bukkit.command.Command; 
import org.bukkit.command.CommandSender; 

import org.bukkit.plugin.java.JavaPlugin; 

public final class adminchat extends JavaPlugin 
{ 

    @Override 
     public void onEnable() 
    { 
     System.out.println("Adminchat by Alo k2ivitus!"); 
      // TODO Insert logic to be performed when the plugin is enabled 
    } 

     @Override 
     public void onDisable() 
     { 
      System.out.println("Adminchat by Alo sulgus!"); 
      // TODO Insert logic to be performed when the plugin is disabled 
     } 
     public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) 
     { 
      if(cmd.getName().equalsIgnoreCase("achelp")) 
      { // If the player typed /ac then do the following... 
       // doSomething 
       return false; 
      } //If this has happened the function will return true. 
       // If this hasn't happened the a value of false will be returned. 
      return false; 
     } 
     public boolean onCommand2(CommandSender sender, Command cmd, String label, String[] args) 
     { 
      if(cmd.getName().equalsIgnoreCase("ac")) 
      { // If the player typed /ac then do the following... 
       AsyncPlayerChatEvent.AsyncPlayerChatEvent(); //This is what needs fixing 
       return true; 
      } //If this has happened the function will return true. 
       // If this hasn't happened the a value of false will be returned. 
      return false; 
     } 


} 

AsyncPlayerChatEvent.java

package alo.adminchat; 

import java.util.IllegalFormatException; 
import java.util.Set; 
import org.bukkit.entity.Player; 
import org.bukkit.event.Cancellable; 
import org.bukkit.event.HandlerList; 
import org.bukkit.event.player.PlayerEvent; 

public class AsyncPlayerChatEvent extends PlayerEvent implements Cancellable { 
    private static final HandlerList handlers = new HandlerList(); 
    private boolean cancel = false; 
    private String message; 
    private String format = "<%1$s> %2$s"; 
    private final boolean recipients; 


    public AsyncPlayerChatEvent(final boolean async, final Player who, final String message, final Set<Player> players) { 
     super(who, async); 
     this.message = message; 
     recipients = player.hasPermission("adminchat.use"); 
    } 

    public String getMessage() { 
     return message; 
    } 

    public void setMessage(String message) { 
     this.message = message; 
    } 

    public String getFormat() { 
     return format; 
    } 

    public void setFormat(final String format) throws IllegalFormatException, NullPointerException { 
     // Oh for a better way to do this! 
     try { 
      String.format(format, player, message); 
     } catch (RuntimeException ex) { 
      ex.fillInStackTrace(); 
      throw ex; 
     } 

     this.format = format; 
    } 

    public boolean getRecipients() { 
     return recipients; 
    } 

    public boolean isCancelled() { 
     return cancel ; 
    } 

    public void setCancelled(boolean cancel) { 
     this.cancel = cancel; 
    } 

    @Override 
    public HandlerList getHandlers() { 
     return handlers; 
    } 

    public static HandlerList getHandlerList() { 
     return handlers; 
    } 
} 
+0

당신 "는'.class' 파일을 실행"무엇을 의미합니까? 'AsyncPlayerChatEvent'는 메인 클래스가 아니며 ('main' 메쏘드가 없습니다), 메인이 아닌 클래스를 "실행할"수 없습니다. – chrylis

+0

이 문제를 해결할 수있는 방법은 없나요? 죄송합니다. 자바에 처음 신되었습니다. –

+0

'AsyncPlayerChatEvent'로 무엇을하고 싶은지 구체적으로 알려주세요. 게시 한 코드에 따라 실제로 흥미로운 일을하지 않는 것은 C++의'struct'와 같은 데이터 객체 일뿐입니다. 플레이어의 다른 서비스로 보낼 것을 만들려고합니까? – chrylis

답변

0

대신 AsyncPlayerChatEvent.AsyncPlayerChatEvent()와 생성자를 호출하는 대신 new AsyncPlayerChatEvent()를 사용해야합니다. 그러면 새 AsyncPlayerChatEvent이 생성되고 해당 생성자가 호출됩니다.

+0

은 생성자 AsyncPlayerChatEvent()가 정의되지 않았다고 말합니다. 죄송합니다. java에 새로 왔습니다 : ( –

+0

) @tbodt가 당신을 혼동시키는 타이핑 바로 가기를 가져 왔습니다. 생성자 문장은'new AsyncPlayerChatEvent (true, currentPlayer, textStringAfterAc, setOfPlayersWithPrivilege); ' APCE' 생성자 – chrylis

3

AsyncPlayerChatEvent의 인스턴스를 만들고 싶습니다.

new AsyncPlayerChatEvent(); 

그러나 당신은 당신의 인수에 전달해야

boolean async, Player who, String message, Set<Player> players 
+0

은 생성자 AsyncPlayerChatEvent()가 정의되지 않았다고 말합니다. 죄송합니다. java를 처음 사용하는 사람은 –

+1

예, 생성자를 호출하는 데 필요한 인수를 전달해야합니다. 게시 한 두 번째 코드 줄을 참조하십시오 .. – snh

+0

구문 오류의 목록, 만약 내가 새로운 AsyncPlayerChatEvent (boolean async, Player, String message, Set players); –

관련 문제