--- a/net/minecraft/server/commands/TimeCommand.java +++ b/net/minecraft/server/commands/TimeCommand.java @@ -56,8 +_,15 @@ } public static int setTime(CommandSourceStack source, int time) { - for (ServerLevel serverLevel : source.getServer().getAllLevels()) { - serverLevel.setDayTime(time); + for (ServerLevel serverLevel : io.papermc.paper.configuration.GlobalConfiguration.get().commands.timeCommandAffectsAllWorlds ? source.getServer().getAllLevels() : java.util.List.of(source.getLevel())) { // CraftBukkit - SPIGOT-6496: Only set the time for the world the command originates in // Paper - add config option for spigot's change + // serverLevel.setDayTime(time); + // CraftBukkit start + org.bukkit.event.world.TimeSkipEvent event = new org.bukkit.event.world.TimeSkipEvent(serverLevel.getWorld(), org.bukkit.event.world.TimeSkipEvent.SkipReason.COMMAND, time - serverLevel.getDayTime()); + org.bukkit.Bukkit.getPluginManager().callEvent(event); + if (!event.isCancelled()) { + serverLevel.setDayTime(serverLevel.getDayTime() + event.getSkipAmount()); + } + // CraftBukkit end } source.getServer().forceTimeSynchronization(); @@ -66,8 +_,14 @@ } public static int addTime(CommandSourceStack source, int amount) { - for (ServerLevel serverLevel : source.getServer().getAllLevels()) { - serverLevel.setDayTime(serverLevel.getDayTime() + amount); + for (ServerLevel serverLevel : io.papermc.paper.configuration.GlobalConfiguration.get().commands.timeCommandAffectsAllWorlds ? source.getServer().getAllLevels() : java.util.List.of(source.getLevel())) { // CraftBukkit - SPIGOT-6496: Only set the time for the world the command originates in // Paper - add config option for spigot's change + // CraftBukkit start + org.bukkit.event.world.TimeSkipEvent event = new org.bukkit.event.world.TimeSkipEvent(serverLevel.getWorld(), org.bukkit.event.world.TimeSkipEvent.SkipReason.COMMAND, amount); + org.bukkit.Bukkit.getPluginManager().callEvent(event); + if (!event.isCancelled()) { + serverLevel.setDayTime(serverLevel.getDayTime() + event.getSkipAmount()); + } + // CraftBukkit end } source.getServer().forceTimeSynchronization();