Inspired by 2020's April Fools' 20w14infinite Snapshot, this mod brings endless randomly generated dimensions into Minecraft.
1package net.lerariemann.infinity;
2
3import com.mojang.blaze3d.platform.InputConstants;
4import dev.architectury.event.events.client.ClientTickEvent;
5import dev.architectury.registry.client.keymappings.KeyMappingRegistry;
6import net.lerariemann.infinity.item.F4Item;
7import net.lerariemann.infinity.registry.core.ModEntities;
8import net.lerariemann.infinity.registry.core.ModItems;
9import net.lerariemann.infinity.registry.payload.ModPayloads;
10import net.lerariemann.infinity.registry.payload.c2s.F4DeployC2SPayload;
11import net.lerariemann.infinity.registry.var.ModScreenHandlers;
12import net.lerariemann.infinity.util.VersionMethods;
13import net.minecraft.client.KeyMapping;
14import net.minecraft.world.InteractionHand;
15import net.minecraft.world.item.ItemStack;
16import org.lwjgl.glfw.GLFW;
17
18//? if >1.21.9 {
19/*import static net.minecraft.client.KeyMapping.Category.MISC;
20*///?}
21
22public class InfinityModClient {
23
24 //? if <1.21.9 {
25 public static String MISC = "key.categories.misc";
26 //?}
27
28 public static KeyMapping f4ConfigKey = new KeyMapping("key.infinity.f4",
29 InputConstants.Type.KEYSYM,
30 GLFW.GLFW_KEY_F4,
31 MISC);
32 public static KeyMapping postProcessorConfigKey = new KeyMapping("key.infinity.postprocessor",
33 InputConstants.Type.KEYSYM,
34 GLFW.GLFW_KEY_F12,
35 MISC);
36
37 public static void initializeClient() {
38 ModEntities.registerEntityRenderers();
39 ModScreenHandlers.register();
40 KeyMappingRegistry.register(f4ConfigKey);
41 ModPayloads.registerS2CPacketsReceivers();
42 ClientTickEvent.CLIENT_POST.register(client -> {
43 while (f4ConfigKey.consumeClick()) if (client.player != null
44 && client.player.getItemInHand(InteractionHand.MAIN_HAND).is(ModItems.F4.get())) {
45 F4DeployC2SPayload.INSTANCE.send();
46 var result = F4Item.deploy(client.level, client.player, InteractionHand.MAIN_HAND);
47 ItemStack interactionHolderResult = VersionMethods.getInteractionHolderResult(result);
48 if (interactionHolderResult != null)
49 client.player.setItemInHand(InteractionHand.MAIN_HAND, interactionHolderResult);
50 }
51 while (postProcessorConfigKey.consumeClick()) client.gameRenderer.togglePostEffect();
52 });
53 }
54}