From 99e790909a7f702364f21d732520cdc946b30a8e Mon Sep 17 00:00:00 2001 From: ArnoKeesmand Date: Mon, 31 Aug 2026 16:53:59 +0200 Subject: [PATCH] fix night/day --- .../commands/utility/DayCommand.java | 22 +++++++++++++------ .../commands/utility/NightCommand.java | 22 +++++++++++++------ .../data/essential_commands/lang/en_us.json | 1 + 3 files changed, 31 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/fibermc/essentialcommands/commands/utility/DayCommand.java b/src/main/java/com/fibermc/essentialcommands/commands/utility/DayCommand.java index ff37db23..dafd5ecc 100644 --- a/src/main/java/com/fibermc/essentialcommands/commands/utility/DayCommand.java +++ b/src/main/java/com/fibermc/essentialcommands/commands/utility/DayCommand.java @@ -7,24 +7,32 @@ import com.mojang.brigadier.exceptions.CommandSyntaxException; import net.minecraft.commands.CommandSourceStack; +import net.minecraft.core.Holder; import net.minecraft.server.level.ServerLevel; -import net.minecraft.world.level.storage.ServerLevelData; +import net.minecraft.world.clock.ClockTimeMarkers; +import net.minecraft.world.clock.WorldClock; + +import java.util.Optional; public class DayCommand implements Command { @Override public int run(CommandContext context) throws CommandSyntaxException { CommandSourceStack source = context.getSource(); PlayerData playerData = PlayerData.accessFromContextOrThrow(context); - ServerLevel world = source.getServer().overworld(); - if (world.isBrightOutside()) { + ServerLevel level = source.getPlayer().level(); + + Optional> clock = level.dimensionType().defaultClock(); + if (clock.isEmpty()) { + playerData.sendCommandError("generic.level.no_clock"); + return -2; + } + + if (level.isBrightOutside()) { playerData.sendCommandFeedback("cmd.day.error.already_daytime"); return -1; } - long time = world.getGameTime(); - long timeToDay = 24000L - time % 24000L; - - ((ServerLevelData)world.getLevelData()).setGameTime(time + timeToDay); + level.getServer().clockManager().moveToTimeMarker(clock.get(), ClockTimeMarkers.DAY); playerData.sendCommandFeedback("cmd.day.feedback"); return 1; } diff --git a/src/main/java/com/fibermc/essentialcommands/commands/utility/NightCommand.java b/src/main/java/com/fibermc/essentialcommands/commands/utility/NightCommand.java index 17eec15c..f1989a4a 100644 --- a/src/main/java/com/fibermc/essentialcommands/commands/utility/NightCommand.java +++ b/src/main/java/com/fibermc/essentialcommands/commands/utility/NightCommand.java @@ -7,24 +7,32 @@ import com.mojang.brigadier.exceptions.CommandSyntaxException; import net.minecraft.commands.CommandSourceStack; +import net.minecraft.core.Holder; import net.minecraft.server.level.ServerLevel; -import net.minecraft.world.level.storage.ServerLevelData; +import net.minecraft.world.clock.ClockTimeMarkers; +import net.minecraft.world.clock.WorldClock; + +import java.util.Optional; public class NightCommand implements Command { @Override public int run(CommandContext context) throws CommandSyntaxException { CommandSourceStack source = context.getSource(); PlayerData playerData = PlayerData.accessFromContextOrThrow(context); - ServerLevel world = source.getServer().overworld(); - if (world.isDarkOutside()) { + ServerLevel level = source.getPlayer().level(); + + Optional> clock = level.dimensionType().defaultClock(); + if (clock.isEmpty()) { + playerData.sendCommandError("generic.level.no_clock"); + return -2; + } + + if (level.isDarkOutside()) { playerData.sendCommandFeedback("cmd.night.error.already_nighttime"); return -1; } - long time = world.getGameTime(); - long timeToNight = 13000L - time % 24000L; - - ((ServerLevelData)world.getLevelData()).setGameTime(time + timeToNight); + level.getServer().clockManager().moveToTimeMarker(clock.get(), ClockTimeMarkers.NIGHT); playerData.sendCommandFeedback("cmd.night.feedback"); return 1; } diff --git a/src/main/resources/data/essential_commands/lang/en_us.json b/src/main/resources/data/essential_commands/lang/en_us.json index 58bd78d9..d2d6f9f4 100644 --- a/src/main/resources/data/essential_commands/lang/en_us.json +++ b/src/main/resources/data/essential_commands/lang/en_us.json @@ -103,6 +103,7 @@ "generic.confirm": "Confirm", "generic.deny": "Deny", "generic.accept": "Accept", + "generic.level.no_clock": "This dimension does not have a clock", "essentialcommands.fullprefix": "[Essential Commands] ", "essentialcommands.smallprefix": "[EC] ",