提供: Minecraft Modding Wiki
このページでは、ゲーム内での天候を変更する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を実行しても、雷が止まないかも。