下面列出了怎么用org.bukkit.event.weather.WeatherChangeEvent的API类实例代码及写法,或者点击链接到github查看源代码。
@SuppressWarnings("null")
@Override
public boolean check(final Event e) {
if (types == null)
return true;
if (!(e instanceof WeatherChangeEvent || e instanceof ThunderChangeEvent))
return false;
final boolean rain = e instanceof WeatherChangeEvent ? ((WeatherChangeEvent) e).toWeatherState() : ((ThunderChangeEvent) e).getWorld().hasStorm();
final boolean thunder = e instanceof ThunderChangeEvent ? ((ThunderChangeEvent) e).toThunderState() : ((WeatherChangeEvent) e).getWorld().isThundering();
return types.check(e, new Checker<WeatherType>() {
@Override
public boolean check(final WeatherType t) {
return t.isWeather(rain, thunder);
}
});
}
public void setStorm(boolean hasStorm) {
CraftServer server = world.getServer();
WeatherChangeEvent weather = new WeatherChangeEvent(this, hasStorm);
server.getPluginManager().callEvent(weather);
if (!weather.isCancelled()) {
world.worldInfo.setRaining(hasStorm);
// These numbers are from Minecraft
if (hasStorm) {
setWeatherDuration(rand.nextInt(12000) + 12000);
} else {
setWeatherDuration(rand.nextInt(168000) + 12000);
}
}
}
@EventHandler
public void onWeatherEvent(WeatherChangeEvent we) {
if (we.isCancelled()) {
return;
}
List<Game> games = BedwarsRel.getInstance().getGameManager().getGamesByWorld(we.getWorld());
if (games.size() == 0) {
return;
}
for (Game game : games) {
if (game.getState() != GameState.STOPPED) {
we.setCancelled(true);
break;
}
}
}
@EventHandler(ignoreCancelled = true, priority = EventPriority.NORMAL)
public void onWeatherChange(WeatherChangeEvent e) {
RedProtect.get().logger.debug(LogLevel.DEFAULT, "GlobalListener - Is onChangeWeather event");
World w = e.getWorld();
if (!RedProtect.get().config.globalFlagsRoot().worlds.get(w.getName()).weather.allow_weather) {
int attempts = RedProtect.get().config.globalFlagsRoot().worlds.get(w.getName()).weather.attempts_before_rain;
if (e.toWeatherState()) {
if (!rainCounter.containsKey(w)) {
rainCounter.put(w, attempts);
e.setCancelled(true);
} else {
int acTry = rainCounter.get(w);
if (acTry - 1 <= 0) {
Bukkit.getScheduler().runTaskLater(RedProtect.get(), () -> w.setWeatherDuration(RedProtect.get().config.globalFlagsRoot().worlds.get(w.getName()).weather.rain_time * 20), 40);
rainCounter.put(w, attempts);
} else {
rainCounter.put(w, acTry - 1);
e.setCancelled(true);
}
}
}
}
}
@EventHandler
public void onWeatherChange(WeatherChangeEvent event) {
InstanceWorld instance = plugin.getInstanceWorld(event.getWorld());
if (instance instanceof EditWorld && event.toWeatherState()) {
event.setCancelled(true);
} else if (instance instanceof GameWorld) {
Boolean raining = ((GameWorld) instance).getDungeon().getRules().getState(GameRule.RAIN);
if (raining == null) {
return;
}
if ((raining && !event.toWeatherState()) || (!raining && event.toWeatherState())) {
event.setCancelled(true);
}
}
}
@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);
}
}
/**
* Tracks weather changes and acid rain
*
* @param e - event
*/
@EventHandler(priority = EventPriority.NORMAL)
public void onWeatherChange(final WeatherChangeEvent e) {
if (DEBUG)
plugin.getLogger().info("DEBUG: " + e.getEventName());
// Check that they are in the ASkyBlock world
// plugin.getLogger().info("weather change noted");
if (!e.getWorld().getName().equalsIgnoreCase(Settings.worldName)) {
return;
}
this.isRaining = e.toWeatherState();
// plugin.getLogger().info("is raining = " + isRaining);
}
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
public void onWeatherChange(final WeatherChangeEvent event) {
cancelAlways(event, event.getWorld());
}
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
public void onWeatherChange(final WeatherChangeEvent event) {
cancelAlways(event, event.getWorld());
}
@EventHandler
public void noWeather(final WeatherChangeEvent event) {
event.setCancelled(true);
}
@EventHandler
public void onWeatherChange(WeatherChangeEvent e) {
if (e.getWorld().getName().equals(world.getName())) {
e.setCancelled(true);
}
}
@SuppressWarnings("unchecked")
@Override
public boolean setTime(final int time) {
return super.setTime(time, getExpr(), WeatherChangeEvent.class, ThunderChangeEvent.class);
}
@EventHandler
public void onWeather(WeatherChangeEvent event) {
event.setCancelled(true);
}
@EventHandler
public void onWeatherChange(WeatherChangeEvent event) {
event.setCancelled(true);
}
@EventHandler
public void onWeatherChange(WeatherChangeEvent ev) {
if (!p.getConfig().getBoolean("weather")) {
ev.setCancelled(true);
}
}