Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@ out
.gradle
build
run

.idea
12 changes: 6 additions & 6 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -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'
Expand All @@ -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)
Expand Down Expand Up @@ -84,6 +82,7 @@ minecraft {
}

task libJar(type: Jar) {
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
from(sourceSets.main.java) {
include "net/quetzi/morpheus/api/*"
}
Expand All @@ -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 {
Expand All @@ -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

Expand Down
Binary file modified gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
3 changes: 1 addition & 2 deletions gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -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
18 changes: 8 additions & 10 deletions src/main/java/net/quetzi/morpheus/Morpheus.java
Original file line number Diff line number Diff line change
@@ -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;

Expand All @@ -27,7 +24,7 @@ public class Morpheus {
public static Morpheus instance;
public static Logger logger = LogManager.getLogger(MODID);

public static final HashMap<RegistryKey<World>, WorldSleepState> playerSleepStatus = new HashMap<RegistryKey<World>, WorldSleepState>();
public static final HashMap<ResourceKey<Level>, WorldSleepState> playerSleepStatus = new HashMap<net.minecraft.resources.ResourceKey<Level>, WorldSleepState>();
public static final SleepChecker checker = new SleepChecker();
public static MorpheusRegistry register = new MorpheusRegistry();

Expand All @@ -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());
}
}
17 changes: 9 additions & 8 deletions src/main/java/net/quetzi/morpheus/MorpheusRegistry.java
Original file line number Diff line number Diff line change
@@ -1,36 +1,37 @@
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;

import java.util.HashMap;

public class MorpheusRegistry implements IMorpheusAPI {
public static HashMap<RegistryKey<World>, INewDayHandler> registry;
public static HashMap<ResourceKey<Level>, 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<World> dimension) {
public void registerHandler(INewDayHandler newDayHandler, ResourceKey<Level> 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<World> dimension) {
public void unregisterHandler(Registry<Level> dimension) {
Morpheus.logger.warn("New day handler for dimension " + dimension + " has been removed");
registry.remove(dimension);
}

public boolean isDimRegistered(RegistryKey<World> dim) {
public boolean isDimRegistered(Registry<Level> dim) {
return registry.containsKey(dim);
}
}
11 changes: 6 additions & 5 deletions src/main/java/net/quetzi/morpheus/api/IMorpheusAPI.java
Original file line number Diff line number Diff line change
@@ -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<World> dimension);
void registerHandler(INewDayHandler newDayHandler, ResourceKey<Level> dimension);

void unregisterHandler(RegistryKey<World> dimension);
void unregisterHandler(Registry<Level> dimension);
}
43 changes: 14 additions & 29 deletions src/main/java/net/quetzi/morpheus/commands/CommandMorpheus.java
Original file line number Diff line number Diff line change
Expand Up @@ -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<CommandSource> cmdDisp) {
LiteralArgumentBuilder<CommandSource> morpheusCommand = Commands.literal("morpheus");
public static void register(CommandDispatcher<CommandSourceStack> cmdDisp) {
LiteralArgumentBuilder<CommandSourceStack> 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);
}
}
12 changes: 6 additions & 6 deletions src/main/java/net/quetzi/morpheus/helpers/DateHandler.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package net.quetzi.morpheus.helpers;

import net.minecraft.util.text.TextFormatting;
import net.minecraft.ChatFormatting;

import java.util.Calendar;

Expand All @@ -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;
Expand Down
39 changes: 20 additions & 19 deletions src/main/java/net/quetzi/morpheus/helpers/MorpheusEventHandler.java
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -14,54 +15,54 @@
public class MorpheusEventHandler {
@SubscribeEvent
public void loggedInEvent(PlayerLoggedInEvent event) {
RegistryKey<World> playerWorld = event.getPlayer().getEntityWorld().func_234923_W_();
if (!event.getPlayer().getEntityWorld().isRemote) {
ResourceKey<Level> 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<World> playerWorld = event.getPlayer().getEntityWorld().func_234923_W_();
if (!event.getPlayer().getEntityWorld().isRemote) {
ResourceKey<Level> 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<World> dimid = event.world.func_234923_W_();
if (!event.world.isRemote) {
public void worldTickEvent(LevelTickEvent event) {
ResourceKey<Level> 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);
}
Expand Down
Loading