From 07b57d56373138bb4903ec876d2bf66bda4d6338 Mon Sep 17 00:00:00 2001 From: isXander Date: Fri, 14 Apr 2023 15:53:35 +0100 Subject: [PATCH] separate resource pack --- .../dev/isxander/controlify/Controlify.java | 14 +++ .../assets/controlify/lang/en_us.json | 22 +--- .../controller_identification.json5 | 11 ++ .../assets/controlify/lang/en_us.json | 23 ++++ .../assets/controlify/mappings/tm_t16000.json | 113 ++++++++++++++++++ .../resourcepacks/extra_mappings/pack.mcmeta | 6 + .../resourcepacks/extra_mappings/pack.png | Bin 0 -> 32357 bytes 7 files changed, 168 insertions(+), 21 deletions(-) create mode 100644 src/main/resources/resourcepacks/extra_mappings/assets/controlify/controllers/controller_identification.json5 create mode 100644 src/main/resources/resourcepacks/extra_mappings/assets/controlify/lang/en_us.json create mode 100644 src/main/resources/resourcepacks/extra_mappings/assets/controlify/mappings/tm_t16000.json create mode 100644 src/main/resources/resourcepacks/extra_mappings/pack.mcmeta create mode 100644 src/main/resources/resourcepacks/extra_mappings/pack.png diff --git a/src/main/java/dev/isxander/controlify/Controlify.java b/src/main/java/dev/isxander/controlify/Controlify.java index f6a22db..7579278 100644 --- a/src/main/java/dev/isxander/controlify/Controlify.java +++ b/src/main/java/dev/isxander/controlify/Controlify.java @@ -22,6 +22,8 @@ import dev.isxander.controlify.utils.DebugLog; import dev.isxander.controlify.utils.ToastUtils; import dev.isxander.controlify.virtualmouse.VirtualMouseHandler; import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; +import net.fabricmc.fabric.api.resource.ResourceManagerHelper; +import net.fabricmc.fabric.api.resource.ResourcePackActivationType; import net.fabricmc.loader.api.FabricLoader; import net.minecraft.CrashReport; import net.minecraft.CrashReportCategory; @@ -29,6 +31,7 @@ import net.minecraft.ReportedException; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screens.Screen; import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; import org.jetbrains.annotations.NotNull; import org.lwjgl.glfw.GLFW; import org.slf4j.Logger; @@ -144,6 +147,13 @@ public class Controlify implements ControlifyApi { LOGGER.info("Pre-initializing Controlify..."); + ResourceManagerHelper.registerBuiltinResourcePack( + Controlify.id("extra_mappings"), + FabricLoader.getInstance().getModContainer("controlify").orElseThrow(), + Component.translatable("controlify.resource_pack.extra_mappings"), + ResourcePackActivationType.DEFAULT_ENABLED + ); + this.inGameInputHandler = new InGameInputHandler(Controller.DUMMY); // initialize with dummy controller before connection in case of no controller this.virtualMouseHandler = new VirtualMouseHandler(); @@ -427,4 +437,8 @@ public class Controlify implements ControlifyApi { if (instance == null) instance = new Controlify(); return instance; } + + public static ResourceLocation id(String path) { + return new ResourceLocation("controlify", path); + } } diff --git a/src/main/resources/assets/controlify/lang/en_us.json b/src/main/resources/assets/controlify/lang/en_us.json index 7226b83..7dc52b5 100644 --- a/src/main/resources/assets/controlify/lang/en_us.json +++ b/src/main/resources/assets/controlify/lang/en_us.json @@ -229,25 +229,5 @@ "controlify.joystick_mapping.unmapped.axis_direction.negative": "(Negative)", "controlify.joystick_mapping.unmapped.axis_direction.positive": "(Positive)", - "controlify.joystick_mapping.tm_t16000.axis.roll": "Roll", - "controlify.joystick_mapping.tm_t16000.axis.pitch": "Pitch", - "controlify.joystick_mapping.tm_t16000.axis.yaw": "Yaw", - "controlify.joystick_mapping.tm_t16000.axis.throttle": "Throttle", - "controlify.joystick_mapping.tm_t16000.button.trigger": "Trigger", - "controlify.joystick_mapping.tm_t16000.button.a": "A", - "controlify.joystick_mapping.tm_t16000.button.x": "X", - "controlify.joystick_mapping.tm_t16000.button.b": "B", - "controlify.joystick_mapping.tm_t16000.left_1": "Left 1", - "controlify.joystick_mapping.tm_t16000.left_2": "Left 2", - "controlify.joystick_mapping.tm_t16000.left_3": "Left 3", - "controlify.joystick_mapping.tm_t16000.left_4": "Left 4", - "controlify.joystick_mapping.tm_t16000.left_5": "Left 5", - "controlify.joystick_mapping.tm_t16000.left_6": "Left 6", - "controlify.joystick_mapping.tm_t16000.right_1": "Right 1", - "controlify.joystick_mapping.tm_t16000.right_2": "Right 2", - "controlify.joystick_mapping.tm_t16000.right_3": "Right 3", - "controlify.joystick_mapping.tm_t16000.right_4": "Right 4", - "controlify.joystick_mapping.tm_t16000.right_5": "Right 5", - "controlify.joystick_mapping.tm_t16000.right_6": "Right 6", - "controlify.joystick_mapping.tm_t16000.hat": "Hat" + "controlify.resource_pack.extra_mappings": "Extra Mappings" } diff --git a/src/main/resources/resourcepacks/extra_mappings/assets/controlify/controllers/controller_identification.json5 b/src/main/resources/resourcepacks/extra_mappings/assets/controlify/controllers/controller_identification.json5 new file mode 100644 index 0000000..84242fa --- /dev/null +++ b/src/main/resources/resourcepacks/extra_mappings/assets/controlify/controllers/controller_identification.json5 @@ -0,0 +1,11 @@ +[ + { + "name": "Thrustmaster T16000M", + "theme": "thrustmaster", + "mapping": "tm_t16000m", + + "hids": [ + [0x044f, 0xb10a] + ] + } +] diff --git a/src/main/resources/resourcepacks/extra_mappings/assets/controlify/lang/en_us.json b/src/main/resources/resourcepacks/extra_mappings/assets/controlify/lang/en_us.json new file mode 100644 index 0000000..7147254 --- /dev/null +++ b/src/main/resources/resourcepacks/extra_mappings/assets/controlify/lang/en_us.json @@ -0,0 +1,23 @@ +{ + "controlify.joystick_mapping.tm_t16000.axis.roll": "Roll", + "controlify.joystick_mapping.tm_t16000.axis.pitch": "Pitch", + "controlify.joystick_mapping.tm_t16000.axis.yaw": "Yaw", + "controlify.joystick_mapping.tm_t16000.axis.throttle": "Throttle", + "controlify.joystick_mapping.tm_t16000.button.trigger": "Trigger", + "controlify.joystick_mapping.tm_t16000.button.a": "A", + "controlify.joystick_mapping.tm_t16000.button.x": "X", + "controlify.joystick_mapping.tm_t16000.button.b": "B", + "controlify.joystick_mapping.tm_t16000.left_1": "Left 1", + "controlify.joystick_mapping.tm_t16000.left_2": "Left 2", + "controlify.joystick_mapping.tm_t16000.left_3": "Left 3", + "controlify.joystick_mapping.tm_t16000.left_4": "Left 4", + "controlify.joystick_mapping.tm_t16000.left_5": "Left 5", + "controlify.joystick_mapping.tm_t16000.left_6": "Left 6", + "controlify.joystick_mapping.tm_t16000.right_1": "Right 1", + "controlify.joystick_mapping.tm_t16000.right_2": "Right 2", + "controlify.joystick_mapping.tm_t16000.right_3": "Right 3", + "controlify.joystick_mapping.tm_t16000.right_4": "Right 4", + "controlify.joystick_mapping.tm_t16000.right_5": "Right 5", + "controlify.joystick_mapping.tm_t16000.right_6": "Right 6", + "controlify.joystick_mapping.tm_t16000.hat": "Hat" +} diff --git a/src/main/resources/resourcepacks/extra_mappings/assets/controlify/mappings/tm_t16000.json b/src/main/resources/resourcepacks/extra_mappings/assets/controlify/mappings/tm_t16000.json new file mode 100644 index 0000000..786be43 --- /dev/null +++ b/src/main/resources/resourcepacks/extra_mappings/assets/controlify/mappings/tm_t16000.json @@ -0,0 +1,113 @@ +{ + "axes": [ + { + "ids": [0], + "identifier": "roll", + "deadzone": true, + "rest": 0.0, + "axis_names": [ + ["right", "left"] + ] + }, + { + "ids": [1], + "identifier": "pitch", + "deadzone": true, + "rest": 0.0, + "axis_names": [ + ["down", "up"] + ] + }, + { + "ids": [2], + "identifier": "yaw", + "deadzone": true, + "rest": 0.0, + "axis_names": [ + ["right", "left"] + ] + }, + { + "ids": [3], + "identifier": "throttle", + "rest": 0.0, + "deadzone": false, + "range": [0.0, 1.0], + "axis_names": [ + ["down", "up"] + ] + } + ], + "buttons": [ + { + "button": 0, + "name": "trigger" + }, + { + "button": 1, + "name": "a" + }, + { + "button": 2, + "name": "x" + }, + { + "button": 3, + "name": "b" + }, + { + "button": 4, + "name": "left_1" + }, + { + "button": 5, + "name": "left_2" + }, + { + "button": 6, + "name": "left_3" + }, + { + "button": 7, + "name": "left_4" + }, + { + "button": 8, + "name": "left_5" + }, + { + "button": 9, + "name": "left_6" + }, + { + "button": 10, + "name": "right_1" + }, + { + "button": 11, + "name": "right_2" + }, + { + "button": 12, + "name": "right_3" + }, + { + "button": 13, + "name": "right_4" + }, + { + "button": 14, + "name": "right_5" + }, + { + "button": 15, + "name": "right_6" + } + ], + "hats": [ + { + "name": "hat", + "hat": 0 + } + ] +} diff --git a/src/main/resources/resourcepacks/extra_mappings/pack.mcmeta b/src/main/resources/resourcepacks/extra_mappings/pack.mcmeta new file mode 100644 index 0000000..add5d73 --- /dev/null +++ b/src/main/resources/resourcepacks/extra_mappings/pack.mcmeta @@ -0,0 +1,6 @@ +{ + "pack": { + "pack_format": 13, + "description": "Adds extra Controlify joystick mappings. §bMust restart." + } +} diff --git a/src/main/resources/resourcepacks/extra_mappings/pack.png b/src/main/resources/resourcepacks/extra_mappings/pack.png new file mode 100644 index 0000000000000000000000000000000000000000..da98edcd4a31f5c7f019132a3dbebffa59ad60b2 GIT binary patch literal 32357 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