Skip to content
Merged
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
1 change: 0 additions & 1 deletion fog/build.fabric.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ dependencies {
implementation(project(mruProject.path))
implementation(mcLibrary("yacl-fabric"))
implementation(mcLibrary("modmenu"))
implementation(mcLibrary("architectury-fabric"))
compileOnly(mcLibrary("iris-fabric"))
compileOnly(mcLibrary("polytone-fabric"))
add(polytoneLibraries.name, mcLibrary("polytone-fabric"))
Expand Down
1 change: 0 additions & 1 deletion fog/build.neoforge.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ val polytoneLibraries = configurations.create("polytoneLibraries") {
dependencies {
implementation(project(mruProject.path))
implementation(mcLibrary("yacl-neoforge"))
implementation(mcLibrary("architectury-neoforge"))
compileOnly(mcLibrary("iris-neoforge"))
compileOnly(mcLibrary("polytone-neoforge"))
add(polytoneLibraries.name, mcLibrary("polytone-neoforge"))
Expand Down
39 changes: 15 additions & 24 deletions fog/src/main/java/dev/imb11/fog/client/FogClient.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
package dev.imb11.fog.client;

import dev.architectury.event.events.client.ClientPlayerEvent;
import dev.architectury.event.events.client.ClientTickEvent;
import dev.architectury.registry.ReloadListenerRegistry;
import cc.cassian.mru.Platform;
import dev.imb11.fog.client.command.FogClientCommands;
import dev.imb11.fog.client.registry.FogRegistry;
import dev.imb11.fog.client.resource.FogResourceReloader;
import dev.imb11.fog.client.util.FogKeybinds;
import dev.imb11.fog.config.FogConfig;
//? fabric {
import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback;
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
import net.fabricmc.fabric.api.resource.v1.ResourceLoader;
//?}
import net.minecraft.server.packs.PackType;
import org.jetbrains.annotations.NotNull;
import org.slf4j.Logger;
Expand All @@ -21,35 +23,24 @@ public class FogClient {
public static final @NotNull Logger LOGGER = LoggerFactory.getLogger(MOD_ID);

public static Path getConfigPath(String configFileName, String configExtension) {
return getConfigFolder().resolve(configFileName + "." + configExtension);
return Platform.INSTANCE.configPath().resolve(configFileName + "." + configExtension);
}

public static boolean isModInstalled(String modid) {
/*? if fabric {*/
return net.fabricmc.loader.api.FabricLoader.getInstance().isModLoaded(modid);
/*?} elif neoforge {*/
/*return net.neoforged.fml.loading.FMLLoader.getCurrent().getLoadingModList().getModFileById(modid) != null;
*//*?}*/
}

public static Path getConfigFolder() {
/*? if fabric {*/
return net.fabricmc.loader.api.FabricLoader.getInstance().getConfigDir().resolve(MOD_ID);
/*?} elif neoforge {*/
/*return net.neoforged.fml.loading.FMLLoader.getCurrent().getGameDir().resolve("config").resolve(MOD_ID);
*//*?}*/
return Platform.INSTANCE.isLoaded(modid);
}

public static void initialize() {
LOGGER.info("Loading {}.", MOD_NAME);
FogConfig.load();
FogClientCommands.register();

FogKeybinds.init();
ReloadListenerRegistry.register(PackType.CLIENT_RESOURCES, new FogResourceReloader(), FogResourceReloader.IDENTIFIER);
ClientTickEvent.CLIENT_LEVEL_POST.register(world -> FogManager.getInstance().onEndTick(world));
ClientPlayerEvent.CLIENT_PLAYER_JOIN.register(player -> {
FogManager.INSTANCE = new FogManager();
FogRegistry.resetCaches();
//? fabric {
ClientCommandRegistrationCallback.EVENT.register((dispatcher, context) -> {
FogClientCommands.register(dispatcher);
});
ResourceLoader.get(PackType.CLIENT_RESOURCES).registerReloadListener(FogResourceReloader.IDENTIFIER, new FogResourceReloader());
ClientTickEvents.END_LEVEL_TICK.register((level)->FogManager.getInstance().onEndTick(level));
//?}
}
}
Original file line number Diff line number Diff line change
@@ -1,38 +1,48 @@
package dev.imb11.fog.client.command;

import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
import com.mojang.brigadier.context.CommandContext;
import dev.architectury.event.events.client.ClientCommandRegistrationEvent;
import dev.imb11.fog.client.FogManager;
import dev.imb11.fog.client.util.TickUtil;
import dev.imb11.fog.client.util.color.Color;
import dev.imb11.fog.config.FogConfig;
//? fabric {
import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource;
import static net.fabricmc.fabric.api.client.command.v2.ClientCommands.literal;
//?} else {
/*
import net.minecraft.commands.CommandSourceStack;
import static com.mojang.brigadier.builder.LiteralArgumentBuilder.literal;
*///?}
import net.minecraft.client.Minecraft;
import net.minecraft.client.multiplayer.ClientLevel;
import net.minecraft.network.chat.Component;
import net.minecraft.ChatFormatting;
import net.minecraft.network.chat.MutableComponent;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

public class FogClientCommands {
public static void register() {
ClientCommandRegistrationEvent.EVENT.register((dispatcher, context) -> {
var fogNode = ClientCommandRegistrationEvent.literal("fog");
//~ if fabric 'CommandSourceStack'->'FabricClientCommandSource' {
public static void register(CommandDispatcher<FabricClientCommandSource> dispatcher) {
LiteralArgumentBuilder<FabricClientCommandSource> fogNode = literal("fog");

fogNode = fogNode.then(ClientCommandRegistrationEvent.literal("reset").executes(FogClientCommands::reset));
fogNode = fogNode.then(LiteralArgumentBuilder.<FabricClientCommandSource>literal("reset").executes(commandContext -> reset(new ClientCommandContext(commandContext))));

fogNode = fogNode.then(ClientCommandRegistrationEvent.literal("toggle").executes(FogClientCommands::toggle));
fogNode = fogNode.then(LiteralArgumentBuilder.<FabricClientCommandSource>literal("toggle").executes(commandContext -> toggle(new ClientCommandContext(commandContext))));

fogNode = fogNode.then(ClientCommandRegistrationEvent.literal("debug").executes(FogClientCommands::outputDebug));
fogNode = fogNode.then(LiteralArgumentBuilder.<FabricClientCommandSource>literal("debug").executes(commandContext -> outputDebug(new ClientCommandContext(commandContext))));

dispatcher.register(fogNode);
});
dispatcher.register(fogNode);
}
//~}

private static int outputDebug(CommandContext<ClientCommandRegistrationEvent.ClientCommandSourceStack> commandContext) {
private static int outputDebug(ClientCommandContext commandContext) {
@NotNull var client = Minecraft.getInstance();
@Nullable ClientLevel clientWorld = client.level;
if (clientWorld == null) {
commandContext.getSource().arch$sendFailure(Component.translatable("fog.command.debug.failure"));
commandContext.sendFailure(Component.translatable("fog.command.debug.failure"));
return 0;
}

Expand Down Expand Up @@ -68,27 +78,53 @@ private static int outputDebug(CommandContext<ClientCommandRegistrationEvent.Cli
manager.currentEndMultiplier.get(tickDelta)
);

commandContext.getSource().arch$sendSuccess(() -> Component.literal(debugInfoTable), false);
commandContext.sendFeedback(Component.literal(debugInfoTable));
return 1;
}

private static int reset(@NotNull CommandContext<ClientCommandRegistrationEvent.ClientCommandSourceStack> commandContext) {
private static int reset(@NotNull ClientCommandContext commandContext) {
FogConfig.load();
FogManager.INSTANCE = new FogManager();
commandContext.getSource().arch$sendSuccess(
() -> Component.literal("§b§7[§rFog§b§7]§r ").append(Component.translatable("fog.command.reset").withStyle(ChatFormatting.GOLD)), false);
commandContext.sendFeedback(
Component.literal("§b§7[§rFog§b§7]§r ").append(Component.translatable("fog.command.reset").withStyle(ChatFormatting.GOLD)));
return 1;
}

public static int toggle(@NotNull CommandContext<ClientCommandRegistrationEvent.ClientCommandSourceStack> commandContext) {
private static int toggle(@NotNull ClientCommandContext commandContext) {
FogConfig config = FogConfig.getInstance();
config.enableMod = !config.enableMod;

FogConfig.save();

commandContext.getSource().arch$sendSuccess(() -> Component.literal("§b§7[§rFog§b§7]§r ").append(
Component.translatable("fog.command.toggle." + (config.enableMod ? "enabled" : "disabled")).withStyle(ChatFormatting.GOLD)), false);
commandContext.sendFeedback(Component.literal("§b§7[§rFog§b§7]§r ").append(
Component.translatable("fog.command.toggle." + (config.enableMod ? "enabled" : "disabled")).withStyle(ChatFormatting.GOLD)));

return 1;
}

//? fabric {

private record ClientCommandContext(CommandContext<FabricClientCommandSource> commandContext) {
public void sendFailure(MutableComponent failure) {
commandContext.getSource().sendError(failure);
}

public void sendFeedback(MutableComponent feedback) {
commandContext.getSource().sendFeedback(feedback);

}
}
//?} else {

/*private record ClientCommandContext(CommandContext<CommandSourceStack> commandContext) {

public void sendFailure(MutableComponent failure) {
commandContext.getSource().sendFailure(failure);
}

public void sendFeedback(MutableComponent feedback) {
commandContext.getSource().sendSuccess(()-> feedback, false);
}
}
*///?}
}
30 changes: 18 additions & 12 deletions fog/src/main/java/dev/imb11/fog/client/util/FogKeybinds.java
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
package dev.imb11.fog.client.util;

import dev.architectury.event.events.client.ClientTickEvent;
import dev.architectury.registry.client.keymappings.KeyMappingRegistry;
import dev.imb11.fog.config.FogConfig;
//? fabric {
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
import net.fabricmc.fabric.api.client.keymapping.v1.KeyMappingHelper;
//?}
import net.minecraft.client.KeyMapping;
import com.mojang.blaze3d.platform.InputConstants;
import net.minecraft.client.Minecraft;
import net.minecraft.network.chat.Component;
import net.minecraft.ChatFormatting;

Expand All @@ -21,18 +24,21 @@ public static void init() {

);

KeyMappingRegistry.register(toggleKeybind);
//? fabric {
KeyMappingHelper.registerKeyMapping(toggleKeybind);
ClientTickEvents.END_LEVEL_TICK.register((level)->FogKeybinds.tickKeyMapping());
//?}
}

ClientTickEvent.CLIENT_POST.register(client -> {
while (toggleKeybind.consumeClick()) {
FogConfig config = FogConfig.getInstance();
config.enableMod = !config.enableMod;
public static void tickKeyMapping() {
while (toggleKeybind.consumeClick()) {
FogConfig config = FogConfig.getInstance();
config.enableMod = !config.enableMod;

FogConfig.save();
FogConfig.save();

client.gui.getChat().addClientSystemMessage(Component.literal("§b§7[§rFog§b§7]§r ").append(
Component.translatable("fog.command.toggle." + (config.enableMod ? "enabled" : "disabled")).withStyle(ChatFormatting.GOLD)));
}
});
Minecraft.getInstance().gui.getChat().addClientSystemMessage(Component.literal("§b§7[§rFog§b§7]§r ").append(
Component.translatable("fog.command.toggle." + (config.enableMod ? "enabled" : "disabled")).withStyle(ChatFormatting.GOLD)));
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,53 @@
/*package dev.imb11.fog.loaders.neoforge;

import dev.imb11.fog.client.FogClient;
import dev.imb11.fog.client.FogManager;
import dev.imb11.fog.client.command.FogClientCommands;
import dev.imb11.fog.client.resource.FogResourceReloader;
import dev.imb11.fog.client.util.FogKeybinds;
import dev.imb11.fog.config.FogConfig;
import net.minecraft.client.Minecraft;
import net.neoforged.api.distmarker.Dist;
import net.neoforged.bus.api.SubscribeEvent;
import net.neoforged.fml.ModContainer;
import net.neoforged.fml.common.EventBusSubscriber;
import net.neoforged.fml.common.Mod;
import net.neoforged.neoforge.client.event.AddClientReloadListenersEvent;
import net.neoforged.neoforge.client.event.ClientTickEvent;
import net.neoforged.neoforge.client.event.RegisterClientCommandsEvent;
import net.neoforged.neoforge.client.event.RegisterKeyMappingsEvent;
import net.neoforged.neoforge.client.gui.IConfigScreenFactory;

@EventBusSubscriber
@Mod(value = "fog", dist = Dist.CLIENT)
public class FogClientNeoForge {
public FogClientNeoForge(ModContainer container) {
FogClient.initialize();
container.registerExtensionPoint(IConfigScreenFactory.class,
(client, parent) -> FogConfig.getInstance().getYetAnotherConfigLibInstance().generateScreen(parent));
}

@SubscribeEvent
public static void registerKeyMappings(RegisterKeyMappingsEvent event) {
event.register(FogKeybinds.toggleKeybind);

}

@SubscribeEvent
public static void tickLevel(ClientTickEvent.Post event) {
FogKeybinds.tickKeyMapping();
FogManager.getInstance().onEndTick(Minecraft.getInstance().level);
}

@SubscribeEvent
public static void registerReloadListener(AddClientReloadListenersEvent event) {
event.addListener(FogResourceReloader.IDENTIFIER, new FogResourceReloader());
}

@SubscribeEvent
public static void registerClientCommands(RegisterClientCommandsEvent event) {
FogClientCommands.register(event.getDispatcher());
}
}

*//*?}*/
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package dev.imb11.fog.mixin.client;

import dev.imb11.fog.client.FogManager;
import dev.imb11.fog.client.registry.FogRegistry;
import net.minecraft.client.multiplayer.ClientPacketListener;
import net.minecraft.network.protocol.game.ClientboundLoginPacket;
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;

@Mixin(ClientPacketListener.class)
public class ClientPacketListenerMixin {
@Inject(method = "handleLogin", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Options;setServerRenderDistance(I)V", shift = At.Shift.AFTER))
private void handleLogin(ClientboundLoginPacket packet, CallbackInfo ci) {
FogManager.INSTANCE = new FogManager();
FogRegistry.resetCaches();
}
}
9 changes: 1 addition & 8 deletions fog/src/main/resources/META-INF/neoforge.mods.toml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ description="An expansive and dynamic overhaul to Minecraft's fog rendering syst
config="fog.mixins.json"

[mc-publish]
dependencies=["architectury-api", "yacl"]
dependencies=["yacl"]

[[dependencies.fog]]
modId="neoforge"
Expand All @@ -39,13 +39,6 @@ versionRange="[${target_mru},)"
ordering="NONE"
side="CLIENT"

[[dependencies.fog]]
modId="architectury"
type="required"
versionRange="[${target_architectury},)"
ordering="AFTER"
side="CLIENT"

[[dependencies.fog]]
modId="yet_another_config_lib_v3"
type="required"
Expand Down
2 changes: 0 additions & 2 deletions fog/src/main/resources/fabric.mod.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,15 +34,13 @@
"fabricloader": ">=${target_loader}",
"fabric-api": "*",
"mru": "${target_mru}",
"architectury": ">=${target_architectury}",
"yet_another_config_lib_v3": "${target_yacl}",
"minecraft": "${target_minecraft}",
"java": ">=25"
},
"custom": {
"mc-publish": {
"dependencies": [
"architectury-api",
"yacl"
]
}
Expand Down
1 change: 1 addition & 0 deletions fog/src/main/resources/fog.mixins.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
"defaultRequire": 1
},
"client": [
"client.ClientPacketListenerMixin",
"client.rendering.FogRendererMixin"
]
}
7 changes: 0 additions & 7 deletions fog/src/main/resources/pack.mcmeta

This file was deleted.

Loading