2017-05-13 15 views
-1

나는 는 자바 정적 및 비 정적 세계 인터페이스하지 instanceable 오류

가 비 정적 방법 spawnParticle에 정적 참조 (blabla를) 만들 수 없습니다

이 무엇입니까

에 문제가 나는

public class Particle implements CommandExecutor 
    { 

    @Override 
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] arg) { 

     if (sender instanceof Player) 
     { 
      Particle particle = new Particle(); 
      Player player = (Player) sender; 
      double x = ((Player) sender).getLocation().getX(); 
      double y = ((Player) sender).getLocation().getY(); 
      double z = ((Player) sender).getLocation().getZ(); 

      World.spawnParticle(org.bukkit.Particle.TOTEM, x, y, z, 1, 0, 0, 0); 

     } 
     return false; 
    } 


} 

가 이미 해결이 아닌 정적 정적 문제에 대해 많이 읽고 그 문제가 무엇을 의미하는지 알고 .. 내 코드를 호출,하지만 난 정말 여기를 해결하는 방법을 잘 모릅니다. 그 세계로 확장 된 문제는 인터페이스이며 인하되지 않습니다. 수정이 도움이됩니다

+0

다음 World''의 인스턴스를 만들어 그것을'spawnParticle' 전화를 가지고,이 인터페이스를 구현합니다. –

+0

이렇게 생각 해보세요. 세상에 산란하지 않고 어떻게 입자를 생성해야합니까? 아니면 모든 세계가 같은 입자를 산란 시키려고합니까? –

+0

'인하스'? '상쾌한'? 너 무슨 소리 야? – EJP

답변

1

이 메서드는 인스턴스 메서드입니다.이 메서드는 인스턴스를 new로, World는 인터페이스이므로 인스턴스로 만들 수 없으므로 클래스를 인스턴스화해야합니다. 즉, 플레이어는 세계

을 (클래스 WorldEvent를 가져올 것을 잊지 마세요)

if (sender instanceof Player) 
     { 
      Particle particle = new Particle(); 
      Player player = (Player) sender; 
      double x = ((Player) sender).getLocation().getX(); 
      double y = ((Player) sender).getLocation().getY(); 
      double z = ((Player) sender).getLocation().getZ(); 
      World w = sender.getWorld(); 
      w.spawnParticle(org.bukkit.Particle.TOTEM, x, y, z, 1, 0, 0, 0); 

     } 
+0

지금까지 도움을 주셔서 감사합니다. 그러나 그 대답은 다음과 같습니다 : 1. World 유형 2를 인스턴스화 할 수 없습니다. 줄 중단 점 : 입자 [행 : 23] - onCommand (CommandSender, Command, String, String []) – qBASHp

+0

월드 클래스 코드를 추가 할 수 있습니까? 세계 정상급인가요? 공공 추상 클래스 월드 같은 의미 ... 등? –

+0

월드 클래스는 bukkit 라이브러리에서 가져온 것입니다. 그래서 그다지 확실하지 않습니다. - import org.bukkit.World – qBASHp