diff --git a/.gitignore b/.gitignore index 3262057..f5c5e66 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,4 @@ out .gradle build run - +.idea \ No newline at end of file diff --git a/build.gradle b/build.gradle index 3585653..39dc3ab 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ buildscript { mavenCentral() } dependencies { - classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '3.+', changing: true + classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '5.1.+', changing: true } } apply plugin: 'net.minecraftforge.gradle' @@ -20,18 +20,16 @@ project.ext { } else { build = "-custom" } - mcVersion = "1.16.3" + mcVersion = "1.19.2" } version = "${project.ext.mcVersion}-${project.ext.major}.${project.minor}.${project.build}" group = "net.quetzi.morpheus" archivesBaseName = "Morpheus" -sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8' // Need this here so eclipse task generates correctly. - minecraft { //version = "${project.version}" - mappings channel: 'snapshot', version: '20200707-1.16.1' + mappings channel: 'official', version: '1.19.2' // replacing stuff in the source if (System.getenv("CI_PIPELINE_IID") != null) { ant.replace(file: 'src/main/java/net/quetzi/morpheus/helpers/References.java', token: '@MAJOR@', value: project.ext.major) @@ -84,6 +82,7 @@ minecraft { } task libJar(type: Jar) { + duplicatesStrategy = DuplicatesStrategy.EXCLUDE from(sourceSets.main.java) { include "net/quetzi/morpheus/api/*" } @@ -95,7 +94,7 @@ artifacts { } dependencies { - minecraft 'net.minecraftforge:forge:1.16.3-34.0.7' + minecraft "net.minecraftforge:forge:1.19.2-43.1.65" } jar { @@ -111,6 +110,7 @@ jar { } processResources { + duplicatesStrategy = DuplicatesStrategy.EXCLUDE // this will ensure that this task is redone when the versions change. inputs.property 'version', project.version diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 7a3265e..7454180 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index f1c2be9..070cb70 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ -#Sun Jun 09 13:16:08 BST 2019 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.9-all.zip diff --git a/src/main/java/net/quetzi/morpheus/Morpheus.java b/src/main/java/net/quetzi/morpheus/Morpheus.java index 4965fa5..be8b1ae 100644 --- a/src/main/java/net/quetzi/morpheus/Morpheus.java +++ b/src/main/java/net/quetzi/morpheus/Morpheus.java @@ -1,21 +1,18 @@ package net.quetzi.morpheus; -import net.minecraft.util.RegistryKey; -import net.minecraft.world.World; +import net.minecraft.resources.ResourceKey; +import net.minecraft.world.level.Level; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.ExtensionPoint; import net.minecraftforge.fml.ModLoadingContext; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.config.ModConfig; -import net.minecraftforge.fml.event.server.FMLServerStartingEvent; -import net.minecraftforge.fml.network.FMLNetworkConstants; +import net.minecraftforge.event.server.ServerStartingEvent; import net.quetzi.morpheus.commands.CommandMorpheus; import net.quetzi.morpheus.helpers.Config; import net.quetzi.morpheus.helpers.MorpheusEventHandler; import net.quetzi.morpheus.helpers.SleepChecker; import net.quetzi.morpheus.world.WorldSleepState; -import org.apache.commons.lang3.tuple.Pair; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -27,7 +24,7 @@ public class Morpheus { public static Morpheus instance; public static Logger logger = LogManager.getLogger(MODID); - public static final HashMap, WorldSleepState> playerSleepStatus = new HashMap, WorldSleepState>(); + public static final HashMap, WorldSleepState> playerSleepStatus = new HashMap, WorldSleepState>(); public static final SleepChecker checker = new SleepChecker(); public static MorpheusRegistry register = new MorpheusRegistry(); @@ -36,11 +33,12 @@ public Morpheus() { MinecraftForge.EVENT_BUS.register(this); MinecraftForge.EVENT_BUS.register(new MorpheusEventHandler()); ModLoadingContext.get().registerConfig(ModConfig.Type.SERVER, Config.SERVER_SPEC); - ModLoadingContext.get().registerExtensionPoint(ExtensionPoint.DISPLAYTEST, ()-> Pair.of(()->FMLNetworkConstants.IGNORESERVERONLY, (net, save)->true)); + // TODO: Port to 1.19.2 + //ModLoadingContext.get().registerExtensionPoint(IExtensionPoint.DisplayTest, ()-> Pair.of(()->NetworkConstants.IGNORESERVERONLY, (net, save)->true)); } @SubscribeEvent - public void serverLoad(FMLServerStartingEvent event) { - CommandMorpheus.register(event.getServer().getCommandManager().getDispatcher()); + public void serverLoad(ServerStartingEvent event) { + CommandMorpheus.register(event.getServer().getCommands().getDispatcher()); } } diff --git a/src/main/java/net/quetzi/morpheus/MorpheusRegistry.java b/src/main/java/net/quetzi/morpheus/MorpheusRegistry.java index 63e0614..feebf5b 100644 --- a/src/main/java/net/quetzi/morpheus/MorpheusRegistry.java +++ b/src/main/java/net/quetzi/morpheus/MorpheusRegistry.java @@ -1,8 +1,9 @@ package net.quetzi.morpheus; -import net.minecraft.util.RegistryKey; -import net.minecraft.world.World; -import net.minecraft.world.server.ServerWorld; +import net.minecraft.core.Registry; +import net.minecraft.resources.ResourceKey; +import net.minecraft.world.level.Level; +import net.minecraft.server.level.ServerLevel; import net.quetzi.morpheus.api.IMorpheusAPI; import net.quetzi.morpheus.api.INewDayHandler; import net.quetzi.morpheus.world.DefaultOverworldHandler; @@ -10,27 +11,27 @@ import java.util.HashMap; public class MorpheusRegistry implements IMorpheusAPI { - public static HashMap, INewDayHandler> registry; + public static HashMap, INewDayHandler> registry; public MorpheusRegistry() { registry = new HashMap<>(); - registerHandler(new DefaultOverworldHandler(), ServerWorld.field_234918_g_); + registerHandler(new DefaultOverworldHandler(), ServerLevel.OVERWORLD); } @Override - public void registerHandler(INewDayHandler newDayHandler, RegistryKey dimension) { + public void registerHandler(INewDayHandler newDayHandler, ResourceKey dimension) { if (registry.containsKey(dimension)) Morpheus.logger.warn("New day handler for dimension " + dimension + " has been replaced"); registry.put(dimension, newDayHandler); } @Override - public void unregisterHandler(RegistryKey dimension) { + public void unregisterHandler(Registry dimension) { Morpheus.logger.warn("New day handler for dimension " + dimension + " has been removed"); registry.remove(dimension); } - public boolean isDimRegistered(RegistryKey dim) { + public boolean isDimRegistered(Registry dim) { return registry.containsKey(dim); } } diff --git a/src/main/java/net/quetzi/morpheus/api/IMorpheusAPI.java b/src/main/java/net/quetzi/morpheus/api/IMorpheusAPI.java index b810654..d7e9ec2 100644 --- a/src/main/java/net/quetzi/morpheus/api/IMorpheusAPI.java +++ b/src/main/java/net/quetzi/morpheus/api/IMorpheusAPI.java @@ -1,16 +1,17 @@ package net.quetzi.morpheus.api; -import net.minecraft.util.RegistryKey; -import net.minecraft.world.World; +import net.minecraft.resources.ResourceKey; +import net.minecraft.world.level.Level; +import net.minecraft.core.Registry; public interface IMorpheusAPI { /** * Register your INewDayHandler with MorpheusRegistry * - * @param newdayhandler Method that updates time in the dimension to the next morning + * @param newDayHandler Method that updates time in the dimension to the next morning * @param dimension Dimension to be registered */ - void registerHandler(INewDayHandler newdayhandler, RegistryKey dimension); + void registerHandler(INewDayHandler newDayHandler, ResourceKey dimension); - void unregisterHandler(RegistryKey dimension); + void unregisterHandler(Registry dimension); } diff --git a/src/main/java/net/quetzi/morpheus/commands/CommandMorpheus.java b/src/main/java/net/quetzi/morpheus/commands/CommandMorpheus.java index ac80ea6..0499dc1 100644 --- a/src/main/java/net/quetzi/morpheus/commands/CommandMorpheus.java +++ b/src/main/java/net/quetzi/morpheus/commands/CommandMorpheus.java @@ -3,68 +3,53 @@ import com.mojang.brigadier.CommandDispatcher; import com.mojang.brigadier.arguments.IntegerArgumentType; import com.mojang.brigadier.builder.LiteralArgumentBuilder; -import net.minecraft.command.CommandSource; -import net.minecraft.command.Commands; -import net.minecraft.util.text.StringTextComponent; +import net.minecraft.commands.CommandSourceStack; +import net.minecraft.commands.Commands; +import net.minecraft.network.chat.Component; import net.quetzi.morpheus.helpers.Config; import net.quetzi.morpheus.helpers.References; public class CommandMorpheus { - public static void register(CommandDispatcher cmdDisp) { - LiteralArgumentBuilder morpheusCommand = Commands.literal("morpheus"); + public static void register(CommandDispatcher cmdDisp) { + LiteralArgumentBuilder morpheusCommand = Commands.literal("morpheus"); morpheusCommand.executes((command) -> { - if(command.getSource().hasPermissionLevel(2)) { - command.getSource().sendFeedback(new StringTextComponent("Usage: " + References.USAGE), true); + if(command.getSource().hasPermission(2)) { + command.getSource().sendSuccess(Component.literal("Usage: " + References.USAGE), true); }else { - command.getSource().sendFeedback(new StringTextComponent("Usage: " + References.USAGE_NOT_OP), true); + command.getSource().sendSuccess(Component.literal("Usage: " + References.USAGE_NOT_OP), true); } return 1; }); morpheusCommand .then(Commands.literal("version") .executes((command) -> { - command.getSource().sendFeedback(new StringTextComponent("Morpheus version: " + References.VERSION), true); + command.getSource().sendSuccess(Component.literal("Morpheus version: " + References.VERSION), true); return 1; })); morpheusCommand .then(Commands.literal("alert") - .requires(commandSource -> commandSource.hasPermissionLevel(2)) + .requires(commandSource -> commandSource.hasPermission(2)) .executes((command) -> { if (Config.SERVER.alertEnabled.get()) { Config.SERVER.alertEnabled.set(false); - command.getSource().sendFeedback(new StringTextComponent(References.ALERTS_OFF), true); + command.getSource().sendSuccess(Component.literal(References.ALERTS_OFF), true); } else { Config.SERVER.alertEnabled.set(true); - command.getSource().sendFeedback(new StringTextComponent(References.ALERTS_ON), true); + command.getSource().sendSuccess(Component.literal(References.ALERTS_ON), true); } return 1; })); morpheusCommand .then(Commands.literal("percent") - .requires(commandSource -> commandSource.hasPermissionLevel(2)) + .requires(commandSource -> commandSource.hasPermission(2)) .then(Commands.argument("value", IntegerArgumentType.integer(0,100)) .executes((command) -> { int newPercent = IntegerArgumentType.getInteger(command, "value"); Config.SERVER.perc.set(newPercent); Config.SERVER.perc.save(); - command.getSource().sendFeedback(new StringTextComponent("Sleep vote percentage set to " + Config.SERVER.perc.get() + "%"), true); + command.getSource().sendSuccess(Component.literal("Sleep vote percentage set to " + Config.SERVER.perc.get() + "%"), true); return 1; }))); -// morpheusCommand -// .then(Commands.literal("disable") -// .then(Commands.argument("dim", IntegerArgumentType.integer()) -// .executes((command) -> { -// if (command.getSource().hasPermissionLevel(2)) { -// int ageToDisable = command.getArgument("dim", Integer.class); -// if (Morpheus.register.isDimRegistered(ageToDisable)) { -// Morpheus.register.unregisterHandler(ageToDisable); -// command.getSource().sendFeedback(new StringTextComponent("Disabled sleep vote checks in dimension " + ageToDisable), true); -// } else { -// command.getSource().sendFeedback(new StringTextComponent("Sleep vote checks are already disabled in dimension " + ageToDisable), true); -// } -// } -// return 1; -// }))); cmdDisp.register(morpheusCommand); } } diff --git a/src/main/java/net/quetzi/morpheus/helpers/DateHandler.java b/src/main/java/net/quetzi/morpheus/helpers/DateHandler.java index 3a90e0d..5a5b25c 100644 --- a/src/main/java/net/quetzi/morpheus/helpers/DateHandler.java +++ b/src/main/java/net/quetzi/morpheus/helpers/DateHandler.java @@ -1,6 +1,6 @@ package net.quetzi.morpheus.helpers; -import net.minecraft.util.text.TextFormatting; +import net.minecraft.ChatFormatting; import java.util.Calendar; @@ -9,11 +9,11 @@ */ public class DateHandler { public enum Event { - XMAS(25, 12, TextFormatting.RED + References.XMASTEXT), - NEW_YEAR(1, 1, TextFormatting.GOLD + References.NEWYEARTEXT), - STPATRICKS(17, 3, TextFormatting.DARK_GREEN + References.STPATRICKSTEXT), - HALLOWEEN(31, 10, TextFormatting.DARK_PURPLE + References.HALLOWEENTEXT), - NONE(0, 0, TextFormatting.GOLD + Config.SERVER.onMorningText.get()); + XMAS(25, 12, ChatFormatting.RED + References.XMASTEXT), + NEW_YEAR(1, 1, ChatFormatting.GOLD + References.NEWYEARTEXT), + STPATRICKS(17, 3, ChatFormatting.DARK_GREEN + References.STPATRICKSTEXT), + HALLOWEEN(31, 10, ChatFormatting.DARK_PURPLE + References.HALLOWEENTEXT), + NONE(0, 0, ChatFormatting.GOLD + Config.SERVER.onMorningText.get()); private final int month; private final int day; diff --git a/src/main/java/net/quetzi/morpheus/helpers/MorpheusEventHandler.java b/src/main/java/net/quetzi/morpheus/helpers/MorpheusEventHandler.java index 1fd4a5e..e34eee4 100644 --- a/src/main/java/net/quetzi/morpheus/helpers/MorpheusEventHandler.java +++ b/src/main/java/net/quetzi/morpheus/helpers/MorpheusEventHandler.java @@ -1,9 +1,10 @@ package net.quetzi.morpheus.helpers; -import net.minecraft.util.RegistryKey; -import net.minecraft.world.World; +import net.minecraft.core.Registry; +import net.minecraft.resources.ResourceKey; +import net.minecraft.world.level.Level; import net.minecraftforge.event.TickEvent; -import net.minecraftforge.event.TickEvent.WorldTickEvent; +import net.minecraftforge.event.TickEvent.LevelTickEvent; import net.minecraftforge.event.entity.player.PlayerEvent.PlayerChangedDimensionEvent; import net.minecraftforge.event.entity.player.PlayerEvent.PlayerLoggedInEvent; import net.minecraftforge.event.entity.player.PlayerEvent.PlayerLoggedOutEvent; @@ -14,54 +15,54 @@ public class MorpheusEventHandler { @SubscribeEvent public void loggedInEvent(PlayerLoggedInEvent event) { - RegistryKey playerWorld = event.getPlayer().getEntityWorld().func_234923_W_(); - if (!event.getPlayer().getEntityWorld().isRemote) { + ResourceKey playerWorld = event.getEntity().getLevel().dimension(); + if (!event.getEntity().getLevel().isClientSide) { if (!Morpheus.playerSleepStatus.containsKey(playerWorld)) { Morpheus.playerSleepStatus.put(playerWorld, new WorldSleepState(playerWorld)); } - Morpheus.playerSleepStatus.get(playerWorld).setPlayerAwake(event.getPlayer().getGameProfile().getName()); + Morpheus.playerSleepStatus.get(playerWorld).setPlayerAwake(event.getEntity().getGameProfile().getName()); } } @SubscribeEvent public void loggedOutEvent(PlayerLoggedOutEvent event) { - RegistryKey playerWorld = event.getPlayer().getEntityWorld().func_234923_W_(); - if (!event.getPlayer().getEntityWorld().isRemote) { + ResourceKey playerWorld = event.getEntity().getLevel().dimension(); + if (!event.getEntity().getLevel().isClientSide) { if (Morpheus.playerSleepStatus.get(playerWorld) != null) { - Morpheus.playerSleepStatus.get(playerWorld).removePlayer(event.getPlayer().getGameProfile().getName()); + Morpheus.playerSleepStatus.get(playerWorld).removePlayer(event.getEntity().getGameProfile().getName()); } } } @SubscribeEvent public void changedDimensionEvent(PlayerChangedDimensionEvent event) { - if (!event.getPlayer().getEntityWorld().isRemote) { + if (!event.getEntity().getLevel().isClientSide) { if (!Morpheus.playerSleepStatus.containsKey(event.getTo())) { Morpheus.playerSleepStatus.put(event.getTo(), new WorldSleepState(event.getTo())); } // Remove player from old World state if (Morpheus.playerSleepStatus.get(event.getFrom()) != null) { - Morpheus.playerSleepStatus.get(event.getFrom()).removePlayer(event.getPlayer().getGameProfile().getName()); + Morpheus.playerSleepStatus.get(event.getFrom()).removePlayer(event.getEntity().getGameProfile().getName()); } // Add player to new world state - Morpheus.playerSleepStatus.get(event.getTo()).setPlayerAwake(event.getPlayer().getGameProfile().getName()); + Morpheus.playerSleepStatus.get(event.getTo()).setPlayerAwake(event.getEntity().getGameProfile().getName()); } } @SubscribeEvent - public void worldTickEvent(WorldTickEvent event) { - RegistryKey dimid = event.world.func_234923_W_(); - if (!event.world.isRemote) { + public void worldTickEvent(LevelTickEvent event) { + ResourceKey dimid = event.level.dimension(); + if (!event.level.isClientSide) { // This is called every tick, do something every 20 ticks - if (event.world.getGameTime() % 20L == 10 && event.phase == TickEvent.Phase.END) { - if (event.world.getPlayers().size() > 0) { + if (event.level.getGameTime() % 20L == 10 && event.phase == TickEvent.Phase.END) { + if (event.level.players().size() > 1) { if (!Morpheus.playerSleepStatus.containsKey(dimid)) { Morpheus.playerSleepStatus.put(dimid, new WorldSleepState(dimid)); } - if (Morpheus.playerSleepStatus.get(dimid).getPlayerCount() > event.world.getPlayers().size()) { + if (Morpheus.playerSleepStatus.get(dimid).getPlayerCount() > event.level.players().size()) { Morpheus.playerSleepStatus.get(dimid).resetPlayers(); } - Morpheus.checker.updatePlayerStates(event.world); + Morpheus.checker.updatePlayerStates(event.level); } else { Morpheus.playerSleepStatus.remove(dimid); } diff --git a/src/main/java/net/quetzi/morpheus/helpers/SleepChecker.java b/src/main/java/net/quetzi/morpheus/helpers/SleepChecker.java index 36376cd..e46ef29 100644 --- a/src/main/java/net/quetzi/morpheus/helpers/SleepChecker.java +++ b/src/main/java/net/quetzi/morpheus/helpers/SleepChecker.java @@ -1,81 +1,80 @@ package net.quetzi.morpheus.helpers; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.util.RegistryKey; -import net.minecraft.util.text.StringTextComponent; -import net.minecraft.util.text.TextFormatting; -import net.minecraft.world.World; -import net.minecraft.world.server.ServerWorld; +import net.minecraft.resources.ResourceKey; +import net.minecraft.world.entity.player.Player; +import net.minecraft.network.chat.Component; +import net.minecraft.ChatFormatting; +import net.minecraft.world.level.Level; +import net.minecraft.server.level.ServerLevel; import net.quetzi.morpheus.Morpheus; import net.quetzi.morpheus.MorpheusRegistry; import java.util.HashMap; public class SleepChecker { - private HashMap, Boolean> alertSent = new HashMap<>(); + private HashMap, Boolean> alertSent = new HashMap<>(); - public void updatePlayerStates(World world) { + public void updatePlayerStates(Level world) { //Don't bother updating if there is only 1 player - if (world.getPlayers().size() > 1) { + if (world.players().size() > 1) { // Iterate players and update their status - for (PlayerEntity player : world.getPlayers()) { + for (Player player : world.players()) { String username = player.getGameProfile().getName(); - RegistryKey playerWorld = player.getEntityWorld().func_234923_W_(); - if (player.isPlayerFullyAsleep() && !Morpheus.playerSleepStatus.get(playerWorld).isPlayerSleeping(username)) { + ResourceKey playerWorld = player.getLevel().dimension(); + if (player.isSleeping() && !Morpheus.playerSleepStatus.get(playerWorld).isPlayerSleeping(username)) { Morpheus.playerSleepStatus.get(playerWorld).setPlayerAsleep(username); // Alert players that this player has gone to bed alertPlayers(createAlert(playerWorld, player.getDisplayName().getString(), Config.SERVER.onSleepText.get()), world); - } else if (!player.isPlayerFullyAsleep() && Morpheus.playerSleepStatus.get(playerWorld).isPlayerSleeping(username)) { + } else if (!player.isSleeping() && Morpheus.playerSleepStatus.get(playerWorld).isPlayerSleeping(username)) { Morpheus.playerSleepStatus.get(playerWorld).setPlayerAwake(username); // Alert players that this player has woken up - if (!world.isDaytime() && !alertSent.get(world.func_234923_W_())) { + if (!world.isDay() && !alertSent.get(world.dimension())) { alertPlayers(createAlert(playerWorld, player.getDisplayName().getString(), Config.SERVER.onWakeText.get()), world); } } } - if (areEnoughPlayersAsleep(world.func_234923_W_())) { - if (!alertSent.containsKey(world.func_234923_W_())) { - alertSent.put(world.func_234923_W_(), false); + if (areEnoughPlayersAsleep(world.dimension())) { + if (!alertSent.containsKey(world.dimension())) { + alertSent.put(world.dimension(), false); } advanceToMorning(world); } else { - alertSent.put(world.func_234923_W_(), false); + alertSent.put(world.dimension(), false); } } } - private void alertPlayers(StringTextComponent alert, World world) { + private void alertPlayers(Component alert, Level world) { if ((alert != null) && (Config.SERVER.alertEnabled.get())) { - for (PlayerEntity player : world.getPlayers()) { - player.sendMessage(alert, player.getUniqueID()); + for (Player player : world.players()) { + player.displayClientMessage(alert, false); } } } - private StringTextComponent createAlert(RegistryKey dimension, String username, String text) { - Morpheus.logger.info(String.format("%s %s %s", username, text, Morpheus.playerSleepStatus.get(dimension).toString())); - return new StringTextComponent(String.format("%s%s%s %s %s", TextFormatting.WHITE, username, TextFormatting.GOLD, text, Morpheus.playerSleepStatus.get(dimension).toString())); + private Component createAlert(ResourceKey dimension, String username, String text) { + return Component.literal(String.format("%s%s%s %s %s", ChatFormatting.WHITE, username, ChatFormatting.GOLD, text, Morpheus.playerSleepStatus.get(dimension).toString())); } - private void advanceToMorning(World world) { + private void advanceToMorning(Level world) { try { - MorpheusRegistry.registry.get(world.func_234923_W_()).startNewDay(); + MorpheusRegistry.registry.get(world.dimension()).startNewDay(); } catch (Exception e) { - Morpheus.logger.error("Exception caught while starting a new day for dimension " + world.func_234923_W_()); + Morpheus.logger.error("Exception caught while starting a new day for dimension " + world.dimension()); e.printStackTrace(); } - if (!alertSent.get(world.func_234923_W_())) { + if (!alertSent.get(world.dimension())) { // Send Good morning message - alertPlayers(new StringTextComponent(DateHandler.getMorningText()), world); - Morpheus.playerSleepStatus.get(world.func_234923_W_()).wakeAllPlayers(); - alertSent.put(world.func_234923_W_(), true); + alertPlayers(Component.literal(DateHandler.getMorningText()), world); + Morpheus.playerSleepStatus.get(world.dimension()).wakeAllPlayers(); + alertSent.put(world.dimension(), true); } - if (world instanceof ServerWorld) { - ((ServerWorld) world).func_241113_a_(0, 0, false, false); + if (world instanceof ServerLevel) { + ((ServerLevel) world).setWeatherParameters(0, 0, false, false); } } - private boolean areEnoughPlayersAsleep(RegistryKey dimension) { + private boolean areEnoughPlayersAsleep(ResourceKey dimension) { if (Morpheus.playerSleepStatus.get(dimension).getSleepingPlayers() > 0) { return ((MorpheusRegistry.registry.get(dimension) != null) && Morpheus.playerSleepStatus.get(dimension).getPercentSleeping() >= Config.SERVER.perc.get()); } diff --git a/src/main/java/net/quetzi/morpheus/world/DefaultOverworldHandler.java b/src/main/java/net/quetzi/morpheus/world/DefaultOverworldHandler.java index a245698..334224f 100644 --- a/src/main/java/net/quetzi/morpheus/world/DefaultOverworldHandler.java +++ b/src/main/java/net/quetzi/morpheus/world/DefaultOverworldHandler.java @@ -1,9 +1,9 @@ package net.quetzi.morpheus.world; -import net.minecraft.world.World; -import net.minecraft.world.server.ServerWorld; -import net.minecraft.world.storage.ServerWorldInfo; -import net.minecraftforge.fml.server.ServerLifecycleHooks; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.storage.ServerLevelData; +import net.minecraftforge.server.ServerLifecycleHooks; import net.quetzi.morpheus.api.INewDayHandler; import java.util.Objects; @@ -12,11 +12,11 @@ public class DefaultOverworldHandler implements INewDayHandler { @Override public void startNewDay() { - World world = Objects.requireNonNull(ServerLifecycleHooks.getCurrentServer().getWorld(ServerWorld.field_234918_g_)).getWorld(); - ((ServerWorldInfo)world.getWorldInfo()).setDayTime(world.getWorldInfo().getDayTime() + getTimeToSunrise(world)); + Level world = Objects.requireNonNull(ServerLifecycleHooks.getCurrentServer().getLevel(ServerLevel.OVERWORLD)).getLevel(); + ((ServerLevelData)world.getLevelData()).setDayTime(world.getLevelData().getDayTime() + getTimeToSunrise(world)); } - private long getTimeToSunrise(World world) { + private long getTimeToSunrise(Level world) { long dayLength = 24000; return dayLength - (world.getDayTime() % dayLength); } diff --git a/src/main/java/net/quetzi/morpheus/world/WorldSleepState.java b/src/main/java/net/quetzi/morpheus/world/WorldSleepState.java index 502e7ac..d2fc1f5 100644 --- a/src/main/java/net/quetzi/morpheus/world/WorldSleepState.java +++ b/src/main/java/net/quetzi/morpheus/world/WorldSleepState.java @@ -1,19 +1,20 @@ package net.quetzi.morpheus.world; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.util.RegistryKey; -import net.minecraft.world.World; -import net.minecraftforge.fml.server.ServerLifecycleHooks; +import net.minecraft.resources.ResourceKey; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; +import net.minecraftforge.server.ServerLifecycleHooks; +import net.quetzi.morpheus.Morpheus; import net.quetzi.morpheus.helpers.Config; import java.util.HashMap; import java.util.Map.Entry; public class WorldSleepState { - private RegistryKey dimension; + private ResourceKey dimension; private HashMap playerStatus; - public WorldSleepState(RegistryKey dimension) { + public WorldSleepState(ResourceKey dimension) { this.dimension = dimension; this.playerStatus = new HashMap<>(); } @@ -32,9 +33,13 @@ public void resetPlayers() { private int getMiningPlayers() { int miningPlayers = 0; - for (PlayerEntity player : ServerLifecycleHooks.getCurrentServer().getPlayerList().getPlayers()) { - if ((player.getEntityWorld().func_234923_W_() == this.dimension) && (player.getPosY() < Config.SERVER.groundLevel.get())) { - miningPlayers++; + for (Player player : ServerLifecycleHooks.getCurrentServer().getPlayerList().getPlayers()) { + if ((player.getLevel().dimension() == this.dimension) && (player.getY() < Config.SERVER.groundLevel.get())) { + if (!this.playerStatus.getOrDefault(player.getGameProfile().getName(), false)) + { + // If player is "mining" and sleeping don't count it with the miners + miningPlayers++; + } } } return Config.SERVER.includeMiners.get() ? miningPlayers : 0; @@ -42,7 +47,7 @@ private int getMiningPlayers() { private int getSpectators() { int spectators = 0; - for (PlayerEntity player : ServerLifecycleHooks.getCurrentServer().getPlayerList().getPlayers()) { + for (Player player : ServerLifecycleHooks.getCurrentServer().getPlayerList().getPlayers()) { if (player.isSpectator() || player.isCreative()) { spectators++; }