Skip to content

Commit 4d081cc

Browse files
committed
Add toggle mod keybinding
1 parent 7510f6f commit 4d081cc

File tree

10 files changed

+50
-39
lines changed

10 files changed

+50
-39
lines changed

common/src/main/java/io/github/discusser/toomanyentities/TooManyEntities.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,17 @@
11
package io.github.discusser.toomanyentities;
22

3+
import com.mojang.blaze3d.systems.VertexSorter;
4+
import dev.architectury.event.events.client.ClientTickEvent;
35
import dev.architectury.injectables.annotations.ExpectPlatform;
6+
import dev.architectury.registry.client.keymappings.KeyMappingRegistry;
47
import io.github.discusser.toomanyentities.config.MapGuiProvider;
58
import io.github.discusser.toomanyentities.config.TooManyEntitiesConfig;
69
import me.shedaniel.autoconfig.AutoConfig;
710
import me.shedaniel.autoconfig.gui.registry.GuiRegistry;
811
import me.shedaniel.autoconfig.serializer.GsonConfigSerializer;
12+
import net.minecraft.client.option.KeyBinding;
13+
import net.minecraft.client.util.InputUtil;
14+
import net.minecraft.text.Text;
915
import org.slf4j.Logger;
1016
import org.slf4j.LoggerFactory;
1117

@@ -16,10 +22,31 @@ public final class TooManyEntities {
1622
public static final Logger LOGGER = LoggerFactory.getLogger("too_many_entities");
1723
public static final String MODID = "too_many_entities";
1824
public static final HashMap<String, Integer> entityCounts = new HashMap<>();
25+
public static boolean modEnabled = true;
26+
1927

2028
public static void init() {
2129
}
2230

31+
public static void registerKeyBindings() {
32+
KeyBinding KEY_TOGGLE_MOD = new KeyBinding(
33+
"key.too_many_entities.toggle_mod",
34+
InputUtil.Type.KEYSYM,
35+
InputUtil.GLFW_KEY_O,
36+
"category.too_many_entities.too_many_entities"
37+
);
38+
KeyMappingRegistry.register(KEY_TOGGLE_MOD);
39+
ClientTickEvent.CLIENT_POST.register(minecraft -> {
40+
while (KEY_TOGGLE_MOD.wasPressed()) {
41+
modEnabled = !modEnabled;
42+
if (minecraft.player != null) {
43+
String key = "text.too_many_entities.mod_" + (modEnabled ? "enabled" : "disabled");
44+
minecraft.player.sendMessage(Text.translatable(key));
45+
}
46+
}
47+
});
48+
}
49+
2350
public static void initClient() {
2451
AutoConfig.register(TooManyEntitiesConfig.class, GsonConfigSerializer::new);
2552
GuiRegistry registry = AutoConfig.getGuiRegistry(TooManyEntitiesConfig.class);

forge/src/main/java/io/github/discusser/toomanyentities/forge/mixin/client/CommonWorldRendererMixin.java renamed to common/src/main/java/io/github/discusser/toomanyentities/mixin/client/CommonWorldRendererMixin.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package io.github.discusser.toomanyentities.forge.mixin.client;
1+
package io.github.discusser.toomanyentities.mixin.client;
22

33
import com.llamalad7.mixinextras.sugar.Local;
44
import io.github.discusser.toomanyentities.TooManyEntities;
@@ -15,10 +15,8 @@ public class CommonWorldRendererMixin {
1515
@Inject(method = "renderEntity", at = @At(value = "HEAD"), cancellable = true)
1616
private void beforeEntityRender(CallbackInfo info, @Local(argsOnly = true) Entity entity) {
1717
String key = entity.getType().getTranslationKey();
18-
int maxEntityCount = TooManyEntitiesConfig.instance.applyMaxEntityCountGlobally
19-
? TooManyEntitiesConfig.instance.maxEntityCount
20-
: TooManyEntitiesConfig.instance.entityMaxCounts.get(key);
21-
if (maxEntityCount > 0 && TooManyEntities.entityCounts.getOrDefault(key, 0) > maxEntityCount) {
18+
int maxEntityCount = TooManyEntitiesConfig.instance.applyMaxEntityCountGlobally ? TooManyEntitiesConfig.instance.maxEntityCount : TooManyEntitiesConfig.instance.entityMaxCounts.get(key);
19+
if (TooManyEntities.modEnabled && maxEntityCount > 0 && TooManyEntities.entityCounts.getOrDefault(key, 0) > maxEntityCount) {
2220
info.cancel();
2321
}
2422
}

common/src/main/resources/assets/too_many_entities/lang/en_us.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,9 @@
99
"text.autoconfig.too_many_entities.option.applyMaxEntityCountGlobally": "Apply Max Entity Count Globally",
1010
"text.autoconfig.too_many_entities.option.applyMaxEntityCountGlobally.@Tooltip": "If this option is enabled, the maximum entity count defined above will be used for every single entity type. If this option is disabled, each entity type will use its own maximum entity count",
1111
"text.autoconfig.too_many_entities.option.useEntityCulling": "Use Entity Culling",
12-
"text.autoconfig.too_many_entities.option.useEntityCulling.@Tooltip": "If this option is enabled, and the mod Entity Culling is installed, the number of entities rendered will be taken from the entity culling mod. This allows you to have more visible entities without necessarily reducing performance. There can be flickering when using this option, so only enable it if you want to."
12+
"text.autoconfig.too_many_entities.option.useEntityCulling.@Tooltip": "If this option is enabled, and the mod Entity Culling is installed, the number of entities rendered will be taken from the entity culling mod. This allows you to have more visible entities without necessarily reducing performance. There can be flickering when using this option, so only enable it if you want to.",
13+
"key.too_many_entities.toggle_mod": "Toggle Mod",
14+
"category.too_many_entities.too_many_entities": "Too Many Entities",
15+
"text.too_many_entities.mod_enabled": "Too Many Entities enabled!",
16+
"text.too_many_entities.mod_disabled": "Too Many Entities disabled!"
1317
}

common/src/main/resources/too_many_entities.mixins.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
"minVersion": "0.8",
66
"plugin": "io.github.discusser.toomanyentities.mixin.TooManyEntitiesMixinPlugin",
77
"client": [
8+
"client.CommonWorldRendererMixin",
89
"client.DebugHudMixin",
910
"client.WorldRendererMixin"
1011
],

fabric/src/main/java/io/github/discusser/toomanyentities/fabric/TooManyEntitiesClientFabric.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,6 @@ public final class TooManyEntitiesClientFabric implements ClientModInitializer {
77
@Override
88
public void onInitializeClient() {
99
TooManyEntities.initClient();
10+
TooManyEntities.registerKeyBindings();
1011
}
1112
}

fabric/src/main/java/io/github/discusser/toomanyentities/fabric/mixin/client/CommonWorldRendererMixin.java

Lines changed: 0 additions & 30 deletions
This file was deleted.

fabric/src/main/resources/fabric.mod.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@
3131
"java": ">=17",
3232
"architectury": ">=9.2.14",
3333
"fabric-api": "*",
34-
"cloth-config": ">=11.1.118"
34+
"cloth-config": ">=11.1.118",
35+
"fabric-key-binding-api-v1": "*"
3536
},
3637
"recommends": {
3738
"entityculling": ">=1.6.6",

fabric/src/main/resources/too_many_entities-fabric.mixins.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
"minVersion": "0.8",
66
"plugin": "io.github.discusser.toomanyentities.mixin.TooManyEntitiesMixinPlugin",
77
"client": [
8-
"client.CommonWorldRendererMixin",
98
"client.EntityCullingWorldRendererMixin"
109
],
1110
"injectors": {

forge/src/main/java/io/github/discusser/toomanyentities/forge/TooManyEntitiesForge.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,23 @@
44
import io.github.discusser.toomanyentities.TooManyEntities;
55
import io.github.discusser.toomanyentities.config.TooManyEntitiesConfig;
66
import me.shedaniel.autoconfig.AutoConfig;
7+
import net.minecraftforge.api.distmarker.Dist;
8+
import net.minecraftforge.client.event.RegisterKeyMappingsEvent;
79
import net.minecraftforge.common.MinecraftForge;
10+
import net.minecraftforge.eventbus.api.EventPriority;
811
import net.minecraftforge.eventbus.api.IEventBus;
12+
import net.minecraftforge.eventbus.api.SubscribeEvent;
913
import net.minecraftforge.fml.common.Mod;
1014
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
1115
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
1216

1317
@Mod(TooManyEntities.MODID)
18+
@Mod.EventBusSubscriber(modid = TooManyEntities.MODID, bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT)
1419
public final class TooManyEntitiesForge {
1520
public TooManyEntitiesForge() {
1621
IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus();
1722
modEventBus.addListener(this::clientSetup);
23+
1824
EventBuses.registerModEventBus(TooManyEntities.MODID, modEventBus);
1925

2026
TooManyEntities.init();
@@ -25,4 +31,9 @@ private void clientSetup(FMLClientSetupEvent ignoredEvent) {
2531

2632
TooManyEntities.initClient();
2733
}
34+
35+
@SubscribeEvent(priority = EventPriority.HIGHEST)
36+
public static void registerBindings(RegisterKeyMappingsEvent event) {
37+
TooManyEntities.registerKeyBindings();
38+
}
2839
}

forge/src/main/resources/too_many_entities-forge.mixins.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
"minVersion": "0.8",
66
"plugin": "io.github.discusser.toomanyentities.mixin.TooManyEntitiesMixinPlugin",
77
"client": [
8-
"client.CommonWorldRendererMixin",
98
"client.EntityCullingWorldRendererMixin"
109
],
1110
"injectors": {

0 commit comments

Comments
 (0)