diff --git a/src/main/java/com/mitchej123/hodgepodge/core/LoadingConfig.java b/src/main/java/com/mitchej123/hodgepodge/core/LoadingConfig.java index 5d3197af..f2ab3a26 100644 --- a/src/main/java/com/mitchej123/hodgepodge/core/LoadingConfig.java +++ b/src/main/java/com/mitchej123/hodgepodge/core/LoadingConfig.java @@ -70,6 +70,7 @@ public class LoadingConfig { public boolean fixIgnisFruitAABB; public boolean fixNetherLeavesFaceRendering; public boolean optimizeASMDataTable; + public boolean squashBedErrorMessage; // render debug public boolean renderDebug; @@ -240,6 +241,12 @@ public LoadingConfig(File file) { true, "Optimize ASMDataTable getAnnotationsFor for faster startup") .getBoolean(); + squashBedErrorMessage = config.get( + "fixes", + "squashBedErrorMessage", + true, + "Stop \"You can only sleep at night\" message filling the chat") + .getBoolean(); increaseParticleLimit = config.get("tweaks", "increaseParticleLimit", true, "Increase particle limit") .getBoolean(); diff --git a/src/main/java/com/mitchej123/hodgepodge/mixins/Mixins.java b/src/main/java/com/mitchej123/hodgepodge/mixins/Mixins.java index 4448232d..54e98d6e 100644 --- a/src/main/java/com/mitchej123/hodgepodge/mixins/Mixins.java +++ b/src/main/java/com/mitchej123/hodgepodge/mixins/Mixins.java @@ -123,6 +123,11 @@ public enum Mixins { TargetedMod.VANILLA), OPTIMIZE_ASMDATATABLE_INDEX( "forge.MixinASMDataTable", Side.BOTH, () -> Hodgepodge.config.optimizeASMDataTable, TargetedMod.VANILLA), + SQUASH_BED_ERROR_MESSAGE( + "minecraft.MixinNetHandlePlayClient", + Side.CLIENT, + () -> Hodgepodge.config.squashBedErrorMessage, + TargetedMod.VANILLA), RENDER_DEBUG("minecraft.MixinRenderGlobal", Side.CLIENT, () -> Hodgepodge.config.renderDebug, TargetedMod.VANILLA), // Potentially obsolete vanilla fixes diff --git a/src/main/java/com/mitchej123/hodgepodge/mixins/minecraft/MixinNetHandlePlayClient.java b/src/main/java/com/mitchej123/hodgepodge/mixins/minecraft/MixinNetHandlePlayClient.java new file mode 100644 index 00000000..2329baeb --- /dev/null +++ b/src/main/java/com/mitchej123/hodgepodge/mixins/minecraft/MixinNetHandlePlayClient.java @@ -0,0 +1,41 @@ +package com.mitchej123.hodgepodge.mixins.minecraft; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.network.NetHandlerPlayClient; +import net.minecraft.network.play.server.S02PacketChat; +import net.minecraft.util.ChatComponentTranslation; +import net.minecraftforge.client.event.ClientChatReceivedEvent; +import net.minecraftforge.common.MinecraftForge; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Overwrite; +import org.spongepowered.asm.mixin.Shadow; + +@Mixin(value = NetHandlerPlayClient.class) +public class MixinNetHandlePlayClient { + + private static final int randomChannel = 43284; + + @Shadow + private Minecraft gameController; + + /** + * @author Quarri6343 + * @reason Stop "You can only sleep at night" message filling the chat + */ + @Overwrite + public void handleChat(S02PacketChat p_147251_1_) { + ClientChatReceivedEvent event = new ClientChatReceivedEvent(p_147251_1_.func_148915_c()); + if (!MinecraftForge.EVENT_BUS.post(event) && event.message != null) { + if (event.message.equals(new ChatComponentTranslation("tile.bed.noSleep", new Object[0])) + || event.message.equals(new ChatComponentTranslation("tile.bed.notSafe", new Object[0])) + || event.message.equals(new ChatComponentTranslation("tile.bed.occupied", new Object[0]))) { + this.gameController + .ingameGUI + .getChatGUI() + .printChatMessageWithOptionalDeletion(event.message, randomChannel); + } else { + this.gameController.ingameGUI.getChatGUI().printChatMessage(event.message); + } + } + } +}