From 65bd588a3fcb7e0fb73415f26941fff3bba6d4f2 Mon Sep 17 00:00:00 2001 From: Jack Fitch <55409055+Jack1424@users.noreply.github.com> Date: Fri, 21 Oct 2022 23:42:01 -0400 Subject: [PATCH] cancel default time and weather commands (when RTW is enabled) --- .../realtimeweather/RealTimeWeather.java | 30 +++++++++++++++---- 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/src/main/java/io/github/jack1424/realtimeweather/RealTimeWeather.java b/src/main/java/io/github/jack1424/realtimeweather/RealTimeWeather.java index d319e1a..ed85324 100644 --- a/src/main/java/io/github/jack1424/realtimeweather/RealTimeWeather.java +++ b/src/main/java/io/github/jack1424/realtimeweather/RealTimeWeather.java @@ -2,6 +2,11 @@ package io.github.jack1424.realtimeweather; import org.bukkit.GameRule; import org.bukkit.World; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerCommandPreprocessEvent; +import org.bukkit.event.server.ServerCommandEvent; import org.bukkit.plugin.java.JavaPlugin; import org.json.simple.JSONArray; import org.json.simple.JSONObject; @@ -16,12 +21,7 @@ import java.time.zone.ZoneRulesException; import java.util.*; import java.util.logging.Logger; -public final class RealTimeWeather extends JavaPlugin { - /* - TODO: - - Override default minecraft time/weather commands (when applicable) - */ - +public final class RealTimeWeather extends JavaPlugin implements Listener { private Logger logger; private ZoneId timezone; private boolean timeEnabled, weatherEnabled, debug; @@ -43,6 +43,8 @@ public final class RealTimeWeather extends JavaPlugin { if (weatherEnabled) setupWeather(); + getServer().getPluginManager().registerEvents(this, this); + logger.info("Started!"); } @@ -59,6 +61,22 @@ public final class RealTimeWeather extends JavaPlugin { logger.info("Stopping..."); } + @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) + public void onOperatorSet(PlayerCommandPreprocessEvent event) { + if ((timeEnabled && event.getMessage().contains("time set")) || (weatherEnabled && event.getMessage().contains("weather"))) { + event.setCancelled(true); + event.getPlayer().sendMessage("Command cancelled (RealTimeWeather is controlling this)"); + } + } + + @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) + public void onOperatorSetConsole(ServerCommandEvent event) { + if ((timeEnabled && event.getCommand().contains("time set")) || (weatherEnabled && event.getCommand().contains("weather"))) { + event.setCancelled(true); + event.getSender().sendMessage("Command cancelled (RealTimeWeather is controlling this)"); + } + } + private void setupTime() { try { timezone = ZoneId.of(Objects.requireNonNull(getConfig().getString("Timezone")));