1
0
Fork 0
mirror of https://github.com/Miasmusa/Shadow.git synced 2025-04-22 01:03:26 -04:00
This commit is contained in:
0x150 2021-12-18 19:05:11 +01:00
parent 490ebc4683
commit 3102b0a1be
6 changed files with 74 additions and 2 deletions

View file

@ -1,11 +1,15 @@
package me.x150.sipprivate;
import me.x150.sipprivate.keybinding.KeybindingManager;
import me.x150.sipprivate.util.ConfigManager;
import net.fabricmc.api.ModInitializer;
import net.minecraft.client.MinecraftClient;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.io.File;
public class SipoverPrivate implements ModInitializer {
public static final String MOD_ID = "sipoverprivate";
@ -13,12 +17,24 @@ public class SipoverPrivate implements ModInitializer {
public static Logger LOGGER = LogManager.getLogger();
public static MinecraftClient client = MinecraftClient.getInstance();
public static File BASE = new File(MinecraftClient.getInstance().runDirectory, "sip");
public static void log(Level level, String message) {
LOGGER.log(level, "[" + MOD_NAME + "] " + message);
}
@Override public void onInitialize() {
log(Level.INFO, "Initializing");
Runtime.getRuntime().addShutdownHook(new Thread(ConfigManager::saveState));
if (BASE.exists() && !BASE.isDirectory()) {
BASE.delete();
}
if (!BASE.exists()) {
BASE.mkdir();
}
KeybindingManager.init();
ConfigManager.loadState();
log(Level.INFO, "Done initializing");
//TODO: Initializer
}

View file

@ -0,0 +1,17 @@
package me.x150.sipprivate.mixin;
import me.x150.sipprivate.util.ConfigManager;
import net.minecraft.client.network.ClientPlayerEntity;
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(ClientPlayerEntity.class)
public class ClientPlayerEntityMixin {
@Inject(method = "tick", at = @At("HEAD")) void tick(CallbackInfo ci) {
if (!ConfigManager.enabled) {
ConfigManager.enableModules();
}
}
}

View file

@ -0,0 +1,20 @@
package me.x150.sipprivate.mixin;
import me.x150.sipprivate.keybinding.KeybindingManager;
import net.minecraft.client.Keyboard;
import net.minecraft.client.MinecraftClient;
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(Keyboard.class)
public class KeyboardMixin {
@Inject(method = "onKey", at = @At("RETURN")) void atomic_postKeyPressed(long window, int key, int scancode, int action, int modifiers, CallbackInfo ci) {
if (window == MinecraftClient.getInstance().getWindow()
.getHandle() && MinecraftClient.getInstance().currentScreen == null) { // make sure we are in game and the screen has been there for at least 10 ms
KeybindingManager.updateSingle(key, action);
}
}
}

View file

@ -0,0 +1,15 @@
package me.x150.sipprivate.mixin;
import me.x150.sipprivate.util.ConfigManager;
import net.minecraft.client.MinecraftClient;
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(MinecraftClient.class)
public class MinecraftClientMixin {
@Inject(method = "stop", at = @At("HEAD")) void real(CallbackInfo ci) {
ConfigManager.saveState();
}
}

View file

@ -31,7 +31,7 @@ public class ConfigManager {
public static boolean enabled = false;
static {
CONFIG_FILE = new File(SipoverPrivate.client.runDirectory, "config.sip");
CONFIG_FILE = new File(SipoverPrivate.BASE, "config.sip");
}
/**

View file

@ -2,7 +2,11 @@
"required": true,
"package": "me.x150.sipprivate.mixin",
"compatibilityLevel": "JAVA_8",
"mixins": [],
"mixins": [
"ClientPlayerEntityMixin",
"KeyboardMixin",
"MinecraftClientMixin"
],
"client": [],
"server": [],
"injectors": {