Skip to content

Commit

Permalink
Merge remote-tracking branch 'leumasme/fix-morpheus-waking' into dev
Browse files Browse the repository at this point in the history
  • Loading branch information
Dream-Master committed Aug 26, 2024
2 parents b2a3a61 + 8c8988c commit b69d950
Show file tree
Hide file tree
Showing 6 changed files with 59 additions and 1 deletion.
1 change: 1 addition & 0 deletions dependencies.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ dependencies {
transformedModCompileOnly("curse.maven:extra-utilities-225561:2264384")
transformedModCompileOnly(rfg.deobf("curse.maven:extratic-72728:2299292"))
transformedModCompileOnly(rfg.deobf("curse.maven:journeymap-32274:4500658"))
transformedModCompileOnly(rfg.deobf("curse.maven:morpheus-69118:2280761"))
transformedModCompileOnly(deobf('https://dist.creeper.host/ichun/filespg/PortalGun-4.0.0-beta-6.jar'))
transformedModCompileOnly("curse.maven:travellers-gear-224440:2262113")
transformedModCompileOnly(rfg.deobf("curse.maven:witchery-69673:2234410"))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -557,6 +557,13 @@ public class FixesConfig {
@Config.RequiresMcRestart
public static boolean java12MineChemCompat;

// Morpheus

@Config.Comment("Fix not properly waking players if not everyone is sleeping")
@Config.DefaultBoolean(true)
@Config.RequiresMcRestart
public static boolean fixMorpheusWaking;

// Optifine

@Config.Comment("Forces the chunk loading option from optifine to default since other values can crash the game")
Expand Down
10 changes: 9 additions & 1 deletion src/main/java/com/mitchej123/hodgepodge/mixins/Mixins.java
Original file line number Diff line number Diff line change
Expand Up @@ -846,7 +846,15 @@ public enum Mixins {
// Candycraft
FIX_SUGARBLOCK_NPE(new Builder("Fix NPE when interacting with sugar block")
.addMixinClasses("candycraft.MixinBlockSugar").setPhase(Phase.LATE).setSide(Side.BOTH)
.setApplyIf(() -> FixesConfig.fixCandycraftBlockSugarNPE).addTargetedMod(TargetedMod.CANDYCRAFT));
.setApplyIf(() -> FixesConfig.fixCandycraftBlockSugarNPE).addTargetedMod(TargetedMod.CANDYCRAFT)),

// Morpheus
FIX_NOT_WAKING_PLAYERS_ACCESSOR(new Builder("WorldServer Accessor for Morpheus waking fix")
.addMixinClasses("minecraft.WorldServerAccessor").setPhase(Phase.EARLY).setSide(Side.SERVER)
.setApplyIf(() -> FixesConfig.fixMorpheusWaking).addTargetedMod(TargetedMod.VANILLA)),
FIX_NOT_WAKING_PLAYERS(new Builder("Fix players not being woken properly when not everyone is sleeping")
.addMixinClasses("morpheus.MixinMorpheusWakePlayers").setPhase(Phase.LATE).setSide(Side.SERVER)
.setApplyIf(() -> FixesConfig.fixMorpheusWaking).addTargetedMod(TargetedMod.MORPHEUS));

private final List<String> mixinClasses;
private final List<TargetedMod> targetedMods;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ public enum TargetedMod {
LWJGL3IFY("lwjgl3ify", "me.eigenraven.lwjgl3ify.core.Lwjgl3ifyCoremod", "lwjgl3ify"),
MINECHEM("Minechem", null, "minechem"),
MINEFACTORY_RELOADED("MineFactory Reloaded", null, "MineFactoryReloaded"),
MORPHEUS("Morpheus", null, "Morpheus"),
MRTJPCORE("MrTJPCore", null, "MrTJPCoreMod"),
NOTENOUGHITEMS("NotEnoughItems", "codechicken.nei.asm.NEICorePlugin", "NotEnoughItems"),
OPTIFINE("Optifine", "optifine.OptiFineForgeTweaker", "Optifine"),
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.mitchej123.hodgepodge.mixins.early.minecraft;

import net.minecraft.world.WorldServer;

import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Invoker;

@Mixin(WorldServer.class)
public interface WorldServerAccessor {

@Invoker("wakeAllPlayers")
void hodgepodge$wakeAllPlayers();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package com.mitchej123.hodgepodge.mixins.late.morpheus;

import net.minecraft.world.World;
import net.quetzi.morpheus.SleepChecker;

import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;

import com.mitchej123.hodgepodge.mixins.early.minecraft.WorldServerAccessor;

@Mixin(value = SleepChecker.class, remap = false)
public class MixinMorpheusWakePlayers {

@Inject(
method = "advanceToMorning",
at = @At(
value = "INVOKE",
target = "Lnet/minecraft/world/WorldProvider;resetRainAndThunder()V",
shift = At.Shift.BEFORE),
cancellable = true)
public void hodgepodge$fixWakePlayers(World world, CallbackInfo c) {
if (!(world instanceof WorldServerAccessor worldServer)) return;
worldServer.hodgepodge$wakeAllPlayers();
c.cancel();
}
}

0 comments on commit b69d950

Please sign in to comment.