如何在配置中设置爆炸功率?

时间:2014-02-22 08:26:48

标签: java bukkit

我正在尝试在配置中将 float explosionPower 设置为10F,以便我可以通过插件轻松更改它。我该怎么做?

代码:

@EventHandler
@SuppressWarnings("deprecation")
public void onPlayerInteractBlock(PlayerInteractEvent event) {
    Player player = event.getPlayer();
    float explosionPower = 10F;
    if (player.getItemInHand().getType() == Material.DIAMOND_SWORD) {
    player.getWorld().strikeLightning(player.getTargetBlock(null, 50).getLocation());
    player.getWorld().createExplosion(player.getTargetBlock(null, 50).getLocation(), explosionPower);
    }

2 个答案:

答案 0 :(得分:1)

您可以通过以下方式获取配置中的浮点值:

float explosionPower = this.getConfig.getFloat("path");

路径就在配置中,所以使用上面的代码,在配置中它看起来像这样:

path: 10

path应更改为powerexplosionPower

您很可能希望在主文件中执行此操作。此外,您不必使用float literal,因此您可以使用10.0f代替10,而不是9.2f,而不是9.2。 1}}。以下是您的代码示例:

@EventHandler
@SuppressWarnings("deprecation")
public void onPlayerInteractBlock(PlayerInteractEvent event) {
    Player player = event.getPlayer();
    float explosionPower = this.getConfig.getFloat("power"); //this is what we changed
    if(player.getItemInHand().getType() == Material.DIAMOND_SWORD) {
        player.getWorld().strikeLightning(player.getTargetBlock(null, 50).getLocation());
        player.getWorld().createExplosion(player.getTargetBlock(null, 50).getLocation(), explosionPower);
    }
}

然而,使用上面的代码,配置看起来像:

power: 10

此外,为了使您的代码更好,这里有一个重新完成的版本:

@EventHandler
@SuppressWarnings("deprecation")
public void onPlayerInteractBlock(PlayerInteractEvent event){
    Player player = event.getPlayer();
    if (player.getItemInHand().getType().equals(Material.DIAMOND_SWORD)){
        float explosionPower = this.getConfig.getFloat("power");
        player.getWorld().strikeLightning(player.getTargetBlock(null, 50).getLocation());
        player.getWorld().createExplosion(player.getTargetBlock(null, 50).getLocation(), explosionPower);
    }
}

答案 1 :(得分:0)

您可以将float作为字符串写入配置,然后将其作为字符串读取,并使用Float.valueOf(String s);将其转换为float。这是一个例子:

float explosionPower = Float.valueOf(yourConfig.getString("pathtolong"));