2017-05-13 53 views
-1

我有Java静态和非静态和世界的接口不instanceable错误

不能使静态参考非静态方法spawnParticle(布拉布拉)

这是一个问题我把我的代码..

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

'Inhace'? 'Inhanced'?你在说什么? – EJP

回答

1

该方法是一个实例方法,这意味着你必须实例与新的对象和世界是一个接口,所以你不能实例化它,你必须实例类实现此接口,玩家拥有世界

(不要忘记导入该类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.行断点:Particle [line:23] - onCommand CommandSender,命令,字符串,字符串[]) – qBASHp

+0

你可以把世界级的代码吗?世界级是抽象的吗?我的意思是像公共抽象类世界...等? –

+0

那么世界级是从bukkit图书馆进口的东西,所以不幸的是我不太确定 - 进口org.bukkit.World – qBASHp