|
27 | 27 | long currentTicks = timeline.value().getCurrentTicks(clockManager); |
28 | 28 | source.sendSuccess(() -> Component.translatable("commands.time.query.timeline", timeline.getRegisteredName(), currentTicks), false); |
29 | 29 | return wrapTime(currentTicks); |
30 | | -@@ -162,33 +_,47 @@ |
| 30 | +@@ -162,33 +_,53 @@ |
31 | 31 | if (!clock.equals(timeline.value().clock())) { |
32 | 32 | throw ERROR_WRONG_TIMELINE_FOR_CLOCK.create(clock.getRegisteredName(), timeline.getRegisteredName()); |
33 | 33 | } else { |
|
43 | 43 | private static int setTotalTicks(final CommandSourceStack source, final Holder<WorldClock> clock, final int totalTicks) { |
44 | 44 | - ServerClockManager clockManager = source.getServer().clockManager(); |
45 | 45 | - clockManager.setTotalTicks(clock, totalTicks); |
| 46 | +- source.sendSuccess(() -> Component.translatable("commands.time.set.absolute", clock.getRegisteredName(), totalTicks), true); |
| 47 | +- return totalTicks; |
46 | 48 | + ServerClockManager clockManager = source.getLevel().clockManager(); |
47 | 49 | + long currentTotalTicks = clockManager.getTotalTicks(clock); |
48 | 50 | + org.bukkit.event.world.ClockTimeSkipEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callTimeSkipEvent(source, totalTicks - currentTotalTicks); |
| 51 | ++ final long newTotalTicks; |
49 | 52 | + if (event.callEvent()) { |
50 | | -+ clockManager.setTotalTicks(clock, currentTotalTicks + event.getSkipAmount()); |
| 53 | ++ newTotalTicks = currentTotalTicks + event.getSkipAmount(); |
| 54 | ++ clockManager.setTotalTicks(clock, newTotalTicks); |
| 55 | ++ } else { |
| 56 | ++ newTotalTicks = totalTicks; // just pass it through |
51 | 57 | + } |
52 | | - source.sendSuccess(() -> Component.translatable("commands.time.set.absolute", clock.getRegisteredName(), totalTicks), true); |
53 | | - return totalTicks; |
| 58 | ++ source.sendSuccess(() -> Component.translatable("commands.time.set.absolute", clock.getRegisteredName(), newTotalTicks), true); |
| 59 | ++ return wrapTime(newTotalTicks); |
54 | 60 | } |
55 | 61 |
|
56 | 62 | private static int addTime(final CommandSourceStack source, final Holder<WorldClock> clock, final int time) { |
|
69 | 75 | private static int setTimeToTimeMarker(final CommandSourceStack source, final Holder<WorldClock> clock, final ResourceKey<ClockTimeMarker> timeMarkerId) throws CommandSyntaxException { |
70 | 76 | - ServerClockManager clockManager = source.getServer().clockManager(); |
71 | 77 | - if (!clockManager.moveToTimeMarker(clock, timeMarkerId)) { |
| 78 | ++ // Paper start - per-world time |
72 | 79 | + ServerClockManager clockManager = source.getLevel().clockManager(); |
73 | 80 | + java.util.OptionalLong targetTime = clockManager.getTotalTicksToTimeMarker(clock, timeMarkerId); |
74 | 81 | + if (targetTime.isEmpty()) { |
|
79 | 86 | + if (event.callEvent()) { |
80 | 87 | + clockManager.setTotalTicks(clock, currentTime + event.getSkipAmount()); |
81 | 88 | + } |
| 89 | ++ // Paper end - per-world time |
82 | 90 | source.sendSuccess( |
83 | 91 | () -> Component.translatable("commands.time.set.time_marker", clock.getRegisteredName(), timeMarkerId.identifier().toString()), true |
84 | 92 | ); |
85 | | -@@ -197,16 +_,17 @@ |
| 93 | +@@ -197,13 +_,13 @@ |
86 | 94 | } |
87 | 95 |
|
88 | 96 | private static int setPaused(final CommandSourceStack source, final Holder<WorldClock> clock, final boolean paused) { |
89 | 97 | - source.getServer().clockManager().setPaused(clock, paused); |
90 | | -+ source.getLevel().clockManager().setPaused(clock, paused); |
| 98 | ++ source.getLevel().clockManager().setPaused(clock, paused); // Paper - per-world time |
91 | 99 | source.sendSuccess(() -> Component.translatable(paused ? "commands.time.pause" : "commands.time.resume", clock.getRegisteredName()), true); |
92 | 100 | return 1; |
93 | 101 | } |
94 | 102 |
|
95 | 103 | private static int setRate(final CommandSourceStack source, final Holder<WorldClock> clock, final float rate) { |
96 | 104 | - source.getServer().clockManager().setRate(clock, rate); |
97 | | -+ source.getLevel().clockManager().setRate(clock, rate); |
| 105 | ++ source.getLevel().clockManager().setRate(clock, rate); // Paper - per-world time |
98 | 106 | source.sendSuccess(() -> Component.translatable("commands.time.rate", clock.getRegisteredName(), rate), true); |
99 | 107 | return 1; |
100 | 108 | } |
101 | | -+ // Paper end - per-world time |
102 | | - |
103 | | - private static int wrapTime(final long ticks) { |
104 | | - return Math.toIntExact(ticks % 2147483647L); |
|
0 commit comments