返回提交历史
Modified
gradle.properties
+1
-1
Modified
src/main/java/com/xfestudio/mydimension/MyDimensionEvents.java
+35
-17
XFEstudio/MyDimension
修复一个可能导致睡觉时间不到白天的问题
6ceff37
代码差异
2 个文件
+36
-18
@@ -11,7 +11,7 @@ loader_version_range=[47,)
11
11
mod_id=mydimension
12
12
mod_name=\u6211\u7684\u7ef4\u5ea6
13
13
mod_license=CC0-1.0
14
mod_version=1.2.1
14
mod_version=1.2.2
15
15
mod_group_id=com.xfestudio.mydimension
16
16
maven_group=com.xfestudio
17
17
archives_base_name=mydimension
@@ -9,6 +9,8 @@ import net.minecraft.commands.CommandSourceStack;
9
9
import net.minecraft.commands.arguments.EntityArgument;
10
10
import net.minecraft.commands.arguments.selector.EntitySelector;
11
11
import net.minecraft.network.chat.Component;
12
import net.minecraft.network.protocol.game.ClientboundGameEventPacket;
13
import net.minecraft.network.protocol.game.ClientboundSetTimePacket;
12
14
import net.minecraft.server.level.ServerLevel;
13
15
import net.minecraft.server.level.ServerPlayer;
14
16
import net.minecraft.world.InteractionHand;
@@ -18,10 +20,10 @@ import net.minecraft.world.entity.LivingEntity;
18
20
import net.minecraft.world.entity.Mob;
19
21
import net.minecraft.world.entity.MobSpawnType;
20
22
import net.minecraft.world.item.ItemStack;
23
import net.minecraft.world.level.GameRules;
21
24
import net.minecraftforge.event.CommandEvent;
22
25
import net.minecraftforge.event.entity.living.MobSpawnEvent;
23
26
import net.minecraftforge.event.entity.player.PlayerInteractEvent;
24
import net.minecraftforge.event.entity.player.PlayerWakeUpEvent;
25
27
import net.minecraftforge.event.level.SleepFinishedTimeEvent;
26
28
import net.minecraftforge.eventbus.api.Event;
27
29
import net.minecraftforge.eventbus.api.EventPriority;
@@ -31,7 +33,7 @@ import java.util.Collection;
31
33
import java.util.Locale;
32
34
33
35
public class MyDimensionEvents {
34
private static final long DAY_LENGTH = 24000L;
36
private static final int CLEAR_WEATHER_DURATION = 6000;
35
37
36
38
@SubscribeEvent(priority = EventPriority.HIGHEST, receiveCanceled = true)
37
39
public void sendMobToEtherealMind(PlayerInteractEvent.EntityInteract event) {
@@ -88,16 +90,7 @@ public class MyDimensionEvents {
88
90
return;
89
91
}
90
92
91
makeEtherealMorning(level);
92
}
93
94
@SubscribeEvent
95
public void wakeUpInEtherealMind(PlayerWakeUpEvent event) {
96
if (!event.updateLevel() || !(event.getEntity() instanceof ServerPlayer player) || !player.level().dimension().equals(ModDimensions.ETHEREAL_MIND)) {
97
return;
98
}
99
100
makeEtherealMorning(player.serverLevel());
93
makeEtherealMorning(level, event.getNewTime());
101
94
}
102
95
103
96
private static String firstWord(String input) {
@@ -105,11 +98,36 @@ public class MyDimensionEvents {
105
98
return space < 0 ? input : input.substring(0, space);
106
99
}
107
100
108
private static void makeEtherealMorning(ServerLevel level) {
109
long dayTime = level.getDayTime();
110
long morning = dayTime - (dayTime % DAY_LENGTH) + DAY_LENGTH;
111
level.setDayTime(morning);
112
level.setWeatherParameters(6000, 0, false, false);
101
private static void makeEtherealMorning(ServerLevel etherealMind, long morning) {
102
ServerLevel overworld = etherealMind.getServer().overworld();
103
overworld.setDayTime(morning);
104
overworld.setWeatherParameters(CLEAR_WEATHER_DURATION, 0, false, false);
105
syncEtherealMindWeather(etherealMind);
106
syncEtherealMindTime(etherealMind);
107
}
108
109
private static void syncEtherealMindWeather(ServerLevel level) {
110
level.setRainLevel(0.0F);
111
level.setThunderLevel(0.0F);
112
level.getServer().getPlayerList().broadcastAll(
113
new ClientboundGameEventPacket(ClientboundGameEventPacket.STOP_RAINING, 0.0F),
114
level.dimension()
115
);
116
level.getServer().getPlayerList().broadcastAll(
117
new ClientboundGameEventPacket(ClientboundGameEventPacket.RAIN_LEVEL_CHANGE, 0.0F),
118
level.dimension()
119
);
120
level.getServer().getPlayerList().broadcastAll(
121
new ClientboundGameEventPacket(ClientboundGameEventPacket.THUNDER_LEVEL_CHANGE, 0.0F),
122
level.dimension()
123
);
124
}
125
126
private static void syncEtherealMindTime(ServerLevel level) {
127
level.getServer().getPlayerList().broadcastAll(
128
new ClientboundSetTimePacket(level.getGameTime(), level.getDayTime(), level.getGameRules().getBoolean(GameRules.RULE_DAYLIGHT)),
129
level.dimension()
130
);
113
131
}
114
132
115
133
private static void sendTargetToEtherealMind(PlayerInteractEvent event, Entity targetEntity) {