下面列出了怎么用org.bukkit.WeatherType的API类实例代码及写法,或者点击链接到github查看源代码。
@Override
public void onEnable() {
Bukkit.getWorlds().forEach(world -> {
Section section = getConfig().getSection(world.getName());
if (section == null) return;
if (!section.getBoolean("Enabled", false)) return;
WeatherType type;
try {
type = WeatherType.valueOf(section.getString("State", "CLEAR"));
} catch (IllegalArgumentException ex) {
logger.warn("Invalid weather state '"
+ section.getString("State") + "' for the world '" + world.getName() + "'.");
type = WeatherType.CLEAR;
}
worldStates.put(world.getName(), type);
if (type == WeatherType.CLEAR) {
world.setWeatherDuration(0);
} else {
world.setWeatherDuration(100);
}
});
}
private String setArenaWeather(String arenaWeather) {
arenaWeather = arenaWeather.toUpperCase();
WeatherType c = null;
if (!arenaWeather.equalsIgnoreCase("default")) {
try {
c = WeatherType.valueOf(arenaWeather);
} catch (Exception e) {
return i18n("admin_command_invalid_arena_weather");
}
}
game.setArenaWeather(c);
return i18n("admin_command_arena_weather_set").replace("%weather%", c == null ? "default" : c.name());
}
private String setArenaWeather(String arenaWeather) {
arenaWeather = arenaWeather.toUpperCase();
WeatherType c = null;
if (!arenaWeather.equalsIgnoreCase("default")) {
try {
c = WeatherType.valueOf(arenaWeather);
} catch (Exception e) {
return i18n("admin_command_invalid_arena_weather");
}
}
game.setArenaWeather(c);
return i18n("admin_command_arena_weather_set").replace("%weather%", c == null ? "default" : c.name());
}
@SuppressWarnings("deprecation")
@Override
public void completeOption() {
Vote weather = gameMap.getWeatherOption().getVoted();
WeatherType w = WeatherType.CLEAR;
if (weather != Vote.WEATHERSUN) {
w = WeatherType.DOWNFALL;
}
if (weather == Vote.WEATHERTHUNDER) {
gameMap.setThunderStorm(true);
gameMap.setNextStrike(Util.get().getRandomNum(3, 20));
gameMap.setStrikeCounter(0);
} else if (weather == Vote.WEATHERSNOW) {
World world = gameMap.getAlivePlayers().get(0).getWorld();
for (int x = -200; x < 200; x++) {
for (int z = -200; z < 200; z++) {
if (SkyWarsReloaded.getNMS().getVersion() < 13) {
world.setBiome(x, z, Biome.valueOf("ICE_MOUNTAINS"));
} else {
world.setBiome(x, z, Biome.SNOWY_TUNDRA);
}
}
}
List<Chunk> chunks = Util.get().getChunks(world);
for (Chunk chunk: chunks) {
world.refreshChunk(chunk.getX(), chunk.getZ());
}
}
for (Player player: gameMap.getAllPlayers()) {
player.setPlayerWeather(w);
}
}
@EventHandler
public void onWeather(WeatherChangeEvent event) {
WeatherType type = this.worldStates.get(event.getWorld().getName());
if (type == null) return;
if (type == WeatherType.CLEAR && event.toWeatherState()) {
event.setCancelled(true);
} else if (type == WeatherType.DOWNFALL && !event.toWeatherState()) {
event.setCancelled(true);
}
}
public void setWeather(WeatherType weather) {
this.weather = weather;
}