下面列出了怎么用org.bukkit.event.weather.ThunderChangeEvent的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 setThundering(boolean thundering) {
if (thundering && !hasStorm()) setStorm(true);
CraftServer server = world.getServer();
ThunderChangeEvent thunder = new ThunderChangeEvent(this, thundering);
server.getPluginManager().callEvent(thunder);
if (!thunder.isCancelled()) {
world.worldInfo.setThundering(thundering);
// These numbers are from Minecraft
if (thundering) {
setThunderDuration(rand.nextInt(12000) + 3600);
} else {
setThunderDuration(rand.nextInt(168000) + 12000);
}
}
}
@EventHandler(ignoreCancelled = true, priority = EventPriority.NORMAL)
public void onThunderChange(ThunderChangeEvent e) {
RedProtect.get().logger.debug(LogLevel.DEFAULT, "GlobalListener - Is onThunderChange 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.toThunderState()) {
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);
}
}
}
}
}
@SuppressWarnings("unchecked")
@Override
public boolean setTime(final int time) {
return super.setTime(time, getExpr(), WeatherChangeEvent.class, ThunderChangeEvent.class);
}
@EventHandler
public void onThunderChange(ThunderChangeEvent event) {
event.setCancelled(true);
}