提供: Minecraft Modding Wiki
2012年3月26日 (月) 11:23時点におけるMiyabi (トーク | 投稿記録)による版
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
移動先: 案内検索

このページでは、ゲーム内での天候を変更するBukkit Pluginについて解説します。
参考に使用しているPluginは、simpleWeatherです。

ソース[編集]

package me.gregtucker.simpleWeather;

import java.util.logging.Logger;
import org.bukkit.World;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;

public class simpleWeather extends JavaPlugin
{
  Logger log = Logger.getLogger("Minecraft");

  // コマンド実行時に呼ばれる
  public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { Player player = null;
    if ((sender instanceof Player)) {
    // 実行インスタンスがPlayerの場合
      player = (Player)sender;
      if (((player.hasPermission("simpleWeather.set")) || 
           (player.isOp()) || 
           (player.hasPermission("simpleWeather.*")) || 
           (player.hasPermission("*"))) && 
          (cmd.getName().equalsIgnoreCase("weather")) && 
          (args.length == 2)) {
      // プレイヤーがパーミッションを持つかOPである上に、コマンドがweather、引数が指定されていたときに実行
        if (args[1].equalsIgnoreCase("thunder")) {
        // 引数にthunderが指定された
          player.getWorld().setStorm(true); //雨を降らせる
          player.getWorld().setThundering(true); //落雷を有効に
          player.sendMessage(player.getName() + " has changed weather to thunder"); //実行メッセージの送信
        }
        else if (args[1].equalsIgnoreCase("rain")) {
        // 引数にrainが指定された
          player.getWorld().setStorm(true); //雨を降らせる
          player.sendMessage(player.getName() + " has changed weather to rain");
        }
        else if (args[1].equalsIgnoreCase("sun")) {
        // 引数にsunが指定された
          player.getWorld().setStorm(false); //雨を止める
          player.getWorld().setThundering(false); //落雷を止める
          player.sendMessage(player.getName() + " has changed weather to sun");
        }

        return true;
      }

    }

    return false;
  }

  public void onEnable()
  {
    // Pluginが読み込まれた際に表示するメッセージ
    this.log.info("SimpleWeather has been enabled.");
  }

  public void onDisable()
  {
    // Pluginが解放された際に表示するメッセージ
    this.log.info("SimpleWeather has been Disable.");
  }
}

その他[編集]

引数にrainを付けて実行した際、

player.getWorld().setThundering(false);

が無いのはいいのかな…という気がする。
これではthunderを実行した後、rainを実行しても、雷が止まないかも。