Base functions and first module #1

Merged
c0de merged 18 commits from initial-functions into main 2023-03-22 23:20:13 +00:00
5 changed files with 11 additions and 79 deletions
Showing only changes of commit d651d41d8f - Show all commits

View File

@ -1,53 +0,0 @@
package dev.c0de.minecraft.client;
import net.minecraft.client.MinecraftClient;
import java.util.HashMap;
import java.util.List;
import java.util.Optional;
import java.util.TreeMap;
public class KeybindManager {
private final HashMap<String, Boolean> states = new HashMap<>();
private final List<Module> modules;
public KeybindManager(List<Module> modules) {
this.modules = modules;
}
public void tick(MinecraftClient client) {
// Execute the onTick function of each module
modules.forEach(module -> module.onTick(this, client));
// Toggle the module state with keybind
modules.stream().filter(module -> module.getKey() != null).forEach(module -> {
if (module.getKey().wasPressed()) {
final String name = module.getClass().getName();
final boolean newState = states.get(name);
c0deFoxModClient.LOGGER.info(name);
states.put(name, !states.getOrDefault(name, false));
module.setState(newState);
module.onToggle(this, client);
}
});
}
public boolean getState(Class<?> cls) {
return states.getOrDefault(cls.getName(), false);
}
public TreeMap<String, Boolean> getSortedStates() {
final TreeMap<String, Boolean> keyStates = new TreeMap<>();
states.forEach((key, value) -> {
final Optional<Module> foundModule = modules.stream().filter(module -> module.getClass().getName().equals(key)).findFirst();
foundModule.ifPresent(module -> keyStates.put(module.getKey().getTranslationKey(), value));
});
return keyStates;
}
}

View File

@ -8,12 +8,10 @@ public abstract class Module {
protected KeyBinding key; protected KeyBinding key;
protected boolean state; protected boolean state;
public void onTick(KeybindManager manager, MinecraftClient client) { public void onTick(MinecraftClient client) {
} }
public void onToggle(KeybindManager manager, MinecraftClient client) { public void onToggle(MinecraftClient client) {
} }
public void setState(boolean state) { public void setState(boolean state) {
@ -21,10 +19,10 @@ public abstract class Module {
} }
public KeyBinding getKey() { public KeyBinding getKey() {
return key; return this.key;
} }
public boolean isState() { public boolean isState() {
return state; return this.state;
} }
} }

View File

@ -7,6 +7,7 @@ import net.fabricmc.api.Environment;
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
import net.minecraft.client.MinecraftClient; import net.minecraft.client.MinecraftClient;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -19,23 +20,14 @@ public class c0deFoxModClient implements ClientModInitializer {
public static final Logger LOGGER = LoggerFactory.getLogger("c0defox"); public static final Logger LOGGER = LoggerFactory.getLogger("c0defox");
private static c0deFoxModClient self; private static c0deFoxModClient self;
private static KeybindManager keybindManager;
// Load in modules as independent parts of the mod protected Fullbright fullbright;
private static List<Module> modules;
@Override @Override
public void onInitializeClient() { public void onInitializeClient() {
ClientTickEvents.END_CLIENT_TICK.register(this::tick); ClientTickEvents.END_CLIENT_TICK.register(this::tick);
self = this; fullbright = new Fullbright();
// Add new modules here
modules = List.of(
new Fullbright()
);
keybindManager = new KeybindManager(modules);
LOGGER.info("Ready"); LOGGER.info("Ready");
} }
@ -44,13 +36,9 @@ public class c0deFoxModClient implements ClientModInitializer {
return self; return self;
} }
public static KeybindManager getKeybindManager() {
return keybindManager;
}
// Called on every game tick // Called on every game tick
public void tick(MinecraftClient client) { public void tick(MinecraftClient client) {
keybindManager.tick(client); fullbright.onTick(client);
} }
} }

View File

@ -3,7 +3,6 @@ package dev.c0de.minecraft.client.modules;
import dev.c0de.minecraft.c0deFoxMod; import dev.c0de.minecraft.c0deFoxMod;
import dev.c0de.minecraft.client.Module; import dev.c0de.minecraft.client.Module;
import dev.c0de.minecraft.client.c0deFoxModClient; import dev.c0de.minecraft.client.c0deFoxModClient;
import dev.c0de.minecraft.client.KeybindManager;
import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper; import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper;
import net.minecraft.client.MinecraftClient; import net.minecraft.client.MinecraftClient;
@ -21,12 +20,12 @@ public class Fullbright extends Module {
"key.c0defox.fullbright", "key.c0defox.fullbright",
InputUtil.Type.KEYSYM, InputUtil.Type.KEYSYM,
GLFW.GLFW_KEY_B, GLFW.GLFW_KEY_B,
"category.c0defox.default" "key.categories.c0defox"
)); ));
} }
@Override @Override
public void onTick(KeybindManager manager, MinecraftClient client) { public void onTick(MinecraftClient client) {
update(client, DEFAULT); update(client, DEFAULT);
if (this.isState()) { if (this.isState()) {
c0deFoxModClient.LOGGER.warn("Active State"); c0deFoxModClient.LOGGER.warn("Active State");

View File

@ -1,4 +1,4 @@
{ {
"category.c0defox.default": "c0de's mods", "key.categories.c0defox": "c0de's mods",
"key.c0defox.fullbright": "Fullbright" "key.c0defox.fullbright": "Fullbright"
} }