diff --git a/README.md b/README.md index babc1da..0891092 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,7 @@ A [Create](https://github.com/Creators-of-Create/Create) mod addon that let you CurseForge link [here](https://www.curseforge.com/minecraft/mc-mods/create-tweaked-controllers) Modrinth link [here](https://modrinth.com/mod/create-tweaked-controllers) +Discord link [here](https://discord.gg/3AvrppcgG3) (search for the Tweaked Controllers channel) ## Building @@ -40,13 +41,13 @@ Here is a list of supported devices: - Mouse cursor movements - Official gamepads such as Xbox controllers or Playstation DualShock are supported - Knockoff/alternate gamepads (like a Logitech controller) should work -- Joysticks/hotas/racing wheels and other devices are supported, unless they requires some funky drivers in which case I can't do anything for you +- Joysticks/hotas/racing wheels and other devices should be supported, but I have been proven wrong multiple times already, so if it does not you can still try a gamepad/xbox controller emulator. - WiiMotes are (sadly) not supported ## Remarks -Due to a Create limitation, if a network is updated too many times it will break. This can happen if you connect an axis output to an Adjustable Chain Gearshift, for example. I might do something for this in the future. +Due to a Create limitation, if a network is updated too many times it will break. This can happen if you connect an axis output to an Adjustable Chain Gearshift, for example. This behavior has been disabled since version 1.2.3 of the mod. The joystick axis are directly read from GLFW. With most if not all gamepads, the +X axis points to the right, and the +Y axis points down. -IF YOU USE A NINTENDO CONTROLLER, YOU MIGHT WANNA TAKE A LOOK [AT THIS](https://github.com/getItemFromBlock/Create-Tweaked-Controllers/issues/1). +IF YOU USE A NINTENDO CONTROLLER, YOU MIGHT WANT TO TAKE A LOOK AT THIS: [https://github.com/getItemFromBlock/Create-Tweaked-Controllers/issues/1](https://github.com/getItemFromBlock/Create-Tweaked-Controllers/issues/1). diff --git a/build.gradle b/build.gradle index fe091bc..9f3a0c2 100644 --- a/build.gradle +++ b/build.gradle @@ -1,292 +1,88 @@ buildscript { + ext.kotlin_version = '2.1.0' repositories { - // These repositories are only for Gradle plugins, put any other repositories in the repository block further below - maven { url = 'https://maven.minecraftforge.net' } mavenCentral() } dependencies { - classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '5.1.+', changing: true + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } -// Only edit below this line, the above code adds and enables the necessary things for Forge to be setup. plugins { - id 'eclipse' - id 'maven-publish' + id 'java' + id 'architectury-plugin' version '3.+' + id 'dev.architectury.loom' version '1.5.+' apply false } -apply plugin: 'net.minecraftforge.gradle' +apply plugin: 'kotlin' +// Configure architecture plugin +architectury { + minecraft = rootProject.minecraft_version +} -version = '1.18.2-1.2.2' -group = 'com.getItemFromBlock.create_tweaked_controllers' // http://maven.apache.org/guides/mini/guide-naming-conventions.html -archivesBaseName = 'create_tweaked_controllers' - -// Mojang ships Java 17 to end users in 1.18+, so your mod should target Java 17. -java.toolchain.languageVersion = JavaLanguageVersion.of(17) - -println "Java: ${System.getProperty 'java.version'}, JVM: ${System.getProperty 'java.vm.version'} (${System.getProperty 'java.vendor'}), Arch: ${System.getProperty 'os.arch'}" -minecraft { - // The mappings can be changed at any time and must be in the following format. - // Channel: Version: - // official {minecraft_version} Official field/method names from Mojang mapping files - // parchment YYYY.MM.DD-{minecraft_version} Open community-sourced parameter names and javadocs layered on top of official - // - // You must be aware of the Mojang license when using the 'official' or 'parchment' mappings. - // See more information here: https://github.com/MinecraftForge/MCPConfig/blob/master/Mojang.md - // - // Parchment is an unofficial project maintained by ParchmentMC, separate from MinecraftForge - // Additional setup is needed to use their mappings: https://github.com/ParchmentMC/Parchment/wiki/Getting-Started - // - // Use non-default mappings at your own risk. They may not always work. - // Simply re-run your setup task after changing the mappings to update your workspace. - mappings channel: 'official', version: '1.18.2' - - // accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg') // Currently, this location cannot be changed from the default. - - // Default run configurations. - // These can be tweaked, removed, or duplicated as needed. - runs { - client { - workingDirectory project.file('run') - - // Recommended logging data for a userdev environment - // The markers can be added/remove as needed separated by commas. - // "SCAN": For mods scan. - // "REGISTRIES": For firing of registry events. - // "REGISTRYDUMP": For getting the contents of all registries. - property 'forge.logging.markers', 'REGISTRIES' - - // Recommended logging level for the console - // You can set various levels here. - // Please read: https://stackoverflow.com/questions/2031163/when-to-use-the-different-log-levels - property 'forge.logging.console.level', 'debug' - - // Comma-separated list of namespaces to load gametests from. Empty = all namespaces. - property 'forge.enabledGameTestNamespaces', 'create_tweaked_controllers' - - mods { - create_tweaked_controllers { - source sourceSets.main - } - } - } - - server { - workingDirectory project.file('run') - - property 'forge.logging.markers', 'REGISTRIES' - - property 'forge.logging.console.level', 'debug' - - // Comma-separated list of namespaces to load gametests from. Empty = all namespaces. - property 'forge.enabledGameTestNamespaces', 'create_tweaked_controllers' - - mods { - create_tweaked_controllers { - source sourceSets.main - } - } - } - - // This run config launches GameTestServer and runs all registered gametests, then exits. - // By default, the server will crash when no gametests are provided. - // The gametest system is also enabled by default for other run configs under the /test command. - gameTestServer { - workingDirectory project.file('run') - - // Recommended logging data for a userdev environment - // The markers can be added/remove as needed separated by commas. - // "SCAN": For mods scan. - // "REGISTRIES": For firing of registry events. - // "REGISTRYDUMP": For getting the contents of all registries. - property 'forge.logging.markers', 'REGISTRIES' - - // Recommended logging level for the console - // You can set various levels here. - // Please read: https://stackoverflow.com/questions/2031163/when-to-use-the-different-log-levels - property 'forge.logging.console.level', 'debug' - - // Comma-separated list of namespaces to load gametests from. Empty = all namespaces. - property 'forge.enabledGameTestNamespaces', 'create_tweaked_controllers' - - mods { - create_tweaked_controllers { - source sourceSets.main - } - } - } - - data { - workingDirectory project.file('run') - - property 'forge.logging.markers', 'REGISTRIES' - - property 'forge.logging.console.level', 'debug' - - // Specify the modid for data generation, where to output the resulting resource, and where to look for existing resources. - args '--mod', 'create_tweaked_controllers', '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources/') +subprojects { + apply plugin: 'dev.architectury.loom' - mods { - create_tweaked_controllers { - source sourceSets.main - } + repositories { + mavenCentral() + maven { url "https://api.modrinth.com/maven" } // CC Restitched, CC Tweaked + maven { url "https://maven.shedaniel.me/" } // Cloth Config + maven { url "https://dvs1.progwml6.com/files/maven/" } // JEI + maven { url "https://maven.parchmentmc.org" } // Parchment Mapping + maven { url "https://cursemaven.com" } // Controllable + maven { // Flywheel + url "https://maven.tterrag.com/" + content { + // need to be specific here due to version overlaps + includeGroup "com.jozufozu.flywheel" } } } -} -// Include resources generated by data generators. -sourceSets.main.resources { srcDir 'src/generated/resources' } - -repositories { - // Put repositories for dependencies here - // ForgeGradle automatically adds the Forge maven and Maven Central for you - - // If you have mod jar dependencies in ./libs, you can declare them as a repository like so: - // flatDir { - // dir 'libs' - // } - - maven { - //CURSE - name "Cursemaven" - url "https://cursemaven.com" - content { - includeGroup "curse.maven" - } + loom { + silentMojangMappingsLicense() } - maven { - //CREATE - name = 'tterrag maven' - url = 'https://maven.tterrag.com/' - } + dependencies { + "minecraft"("com.mojang:minecraft:${rootProject.minecraft_version}") - maven { - // JEI - name 'Progwm16 maven' - url 'https://dvs1.progwml6.com/files/maven' + "mappings"(loom.officialMojangMappings()) + // Yarn mappings commented out + // "mappings"("net.fabricmc:yarn:1.19.2+build.3:v2") } } -dependencies { - // Specify the version of Minecraft to use. If this is any group other than 'net.minecraft', it is assumed - // that the dep is a ForgeGradle 'patcher' dependency, and its patches will be applied. - // The userdev artifact is a special name and will get all sorts of transformations applied to it. - minecraft "net.minecraftforge:forge:${minecraft_version}-${forge_version}" - - //CREATE - implementation fg.deobf("com.simibubi.create:create-${create_minecraft_version}:${create_version}:slim") { transitive = false } - implementation fg.deobf("com.jozufozu.flywheel:flywheel-forge-${flywheel_minecraft_version}:${flywheel_version}") - implementation fg.deobf("com.tterrag.registrate:Registrate:${registrate_version}") - - //CONTROLLABLE COMPAT - compileOnly fg.deobf("curse.maven:controllable-${controllable_version}") - - //JEI - compileOnly fg.deobf("mezz.jei:jei-${minecraft_version}:${jei_version}:api") - runtimeOnly fg.deobf("mezz.jei:jei-${minecraft_version}:${jei_version}") +allprojects { + apply plugin: 'java' + apply plugin: 'architectury-plugin' + apply plugin: 'maven-publish' - // CC TWEAKED COMPAT - compileOnly fg.deobf("curse.maven:cc-tweaked-${cc_tweaked_version}") - - //MIXINS - if (System.getProperty('idea.sync.active') != 'true') { - annotationProcessor "org.spongepowered:mixin:${mixin_version}:processor" - } - - // Real mod deobf dependency examples - these get remapped to your current mappings - // compileOnly fg.deobf("mezz.jei:jei-${mc_version}:${jei_version}:api") // Adds JEI API as a compile dependency - // runtimeOnly fg.deobf("mezz.jei:jei-${mc_version}:${jei_version}") // Adds the full JEI mod as a runtime dependency - // implementation fg.deobf("com.tterrag.registrate:Registrate:MC${mc_version}-${registrate_version}") // Adds registrate as a dependency + archivesBaseName = "${rootProject.archives_base_name}-${minecraft_version}" + version = rootProject.version + group = rootProject.maven_group - // Examples using mod jars from ./libs - // implementation fg.deobf("blank:coolmod-${mc_version}:${coolmod_version}") - - // For more info... - // http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html - // http://www.gradle.org/docs/current/userguide/dependency_management.html -} + // Format mod version + // def buildNumber = System.getenv('GITHUB_RUN_NUMBER') + // version = "${rootProject.version}+${rootProject.name}-${rootProject.minecraft_version}" + (buildNumber != null ? "-${buildNumber}" : "") -// process mods.toml to inject variables -def modsTomlSpec = copySpec{ - from(sourceSets.main.resources) { - include 'META-INF/mods.toml' - expand 'version': modversion, - 'loader_range': loader_range, - 'minecraft_range': minecraft_range, - 'forge_range': forge_range, - 'create_range': create_range, - 'github_project': github_project + repositories { + // Add repositories here (optional) } -} -// need to copy into each build directory, unfortunately does not seem easy to do this automatically -def buildPaths = [ - "$rootDir/out/production/resources", // IDEA - "$rootDir/bin", // Eclipse -] - -// task to add mods.toml to all relevant folders -task replaceResources { - // ensure directory exists, first build likes to fail - new File("${processResources.destinationDir}/META-INF").mkdirs() - // copy for gradle - copy { - outputs.upToDateWhen { false } - with modsTomlSpec - into processResources.destinationDir + tasks.withType(JavaCompile) { + options.encoding = 'UTF-8' + options.release = 17 } - // copy for IDEs - buildPaths.each { path -> - if (new File(path).exists()) { - copy { - outputs.upToDateWhen { false } - with modsTomlSpec - into path - } - } - } -} - -processResources { - exclude 'META-INF/mods.toml' - finalizedBy replaceResources -} -// Example for how to get properties into the manifest for reading at runtime. -jar { - manifest { - attributes([ - "Specification-Title" : "create_tweaked_controllers", - "Specification-Vendor" : "create_tweaked_controllers_sareus", - "Specification-Version" : "1", // We are version 1 of ourselves - "Implementation-Title" : project.name, - "Implementation-Version" : project.jar.archiveVersion, - "Implementation-Vendor" : "create_tweaked_controllers", - "Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ") - ]) + java { + withSourcesJar() } } - -// Example configuration to allow publishing using the maven-publish plugin -// This is the preferred method to reobfuscate your jar file -jar.finalizedBy('reobfJar') -// However if you are in a multi-project build, dev time needs unobfed jar files, so you can delay the obfuscation until publishing by doing -// publish.dependsOn('reobfJar') - -publishing { - publications { - mavenJava(MavenPublication) { - artifact jar - } - } - repositories { - maven { - url "file://${project.projectDir}/mcmodsrepo" - } - } +repositories { + mavenCentral() } - -tasks.withType(JavaCompile).configureEach { - options.encoding = 'UTF-8' // Use the UTF-8 charset for Java compilation +dependencies { + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" } +kotlin { + jvmToolchain(17) +} \ No newline at end of file diff --git a/common/.gitignore b/common/.gitignore new file mode 100644 index 0000000..b63da45 --- /dev/null +++ b/common/.gitignore @@ -0,0 +1,42 @@ +.gradle +build/ +!gradle/wrapper/gradle-wrapper.jar +!**/src/main/**/build/ +!**/src/test/**/build/ + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr +out/ +!**/src/main/**/out/ +!**/src/test/**/out/ + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache +bin/ +!**/src/main/**/bin/ +!**/src/test/**/bin/ + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/common/build.gradle b/common/build.gradle new file mode 100644 index 0000000..fff199f --- /dev/null +++ b/common/build.gradle @@ -0,0 +1,41 @@ +architectury { + common(rootProject.enabled_platforms.split(",")) +} + +repositories { + mavenCentral() + // mavens for Create Fabric and dependencies + maven { url "https://mvn.devos.one/snapshots/" } // Create Fabric, Porting Lib, Forge Tags, Milk Lib, Registrate Fabric + maven { url "https://maven.cafeteria.dev/releases" } // Fake Player API + maven { url "https://raw.githubusercontent.com/Fuzss/modresources/main/maven/" } // Forge Config API Port + maven { url "https://maven.jamieswhiteshirt.com/libs-release" } // Reach Entity Attributes + maven { url "https://jitpack.io/" } // Mixin Extras, Fabric ASM +} + +dependencies { + // We depend on fabric loader here to use the fabric @Environment annotations and get the mixin dependencies + // Do NOT use other classes from fabric loader + modImplementation("net.fabricmc:fabric-loader:${rootProject.fabric_loader_version}") + // Remove the next line if you don't want to depend on the API + modApi("dev.architectury:architectury:${rootProject.architectury_version}") + + + modCompileOnly("com.simibubi.create:create-fabric-${rootProject.minecraft_version}:${rootProject.create_fabric_version}+mc${rootProject.minecraft_version}") + + // CC Restitched + modCompileOnly("maven.modrinth:cc-restitched:${rootProject.cc_restitched_version}+${rootProject.minecraft_version}") +} + +publishing { + publications { + mavenCommon(MavenPublication) { + artifactId = rootProject.archives_base_name + from components.java + } + } + + // See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing. + repositories { + // Add repositories to publish to here. + } +} diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/CreateTweakedControllers.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/CreateTweakedControllers.java similarity index 97% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/CreateTweakedControllers.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/CreateTweakedControllers.java index 41733dc..1b23fdb 100644 --- a/src/main/java/com/getitemfromblock/create_tweaked_controllers/CreateTweakedControllers.java +++ b/common/src/main/com/getitemfromblock/create_tweaked_controllers/CreateTweakedControllers.java @@ -90,4 +90,9 @@ public static void log(String message) { Create.LOGGER.info(message); } + + public static void error(String message) + { + Create.LOGGER.error(message); + } } diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/ModClientStuff.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/CreateTweakedControllersClient.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/ModClientStuff.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/CreateTweakedControllersClient.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/ModBlockEntityTypes.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/ModBlockEntityTypes.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/ModBlockEntityTypes.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/ModBlockEntityTypes.java diff --git a/common/src/main/com/getitemfromblock/create_tweaked_controllers/ModClientEvents.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/ModClientEvents.java new file mode 100644 index 0000000..36a9d7a --- /dev/null +++ b/common/src/main/com/getitemfromblock/create_tweaked_controllers/ModClientEvents.java @@ -0,0 +1,64 @@ +package com.getitemfromblock.create_tweaked_controllers; + +import com.getitemfromblock.create_tweaked_controllers.gui.ModConfigScreen; +import com.getitemfromblock.create_tweaked_controllers.input.MouseCursorHandler; +import com.getitemfromblock.create_tweaked_controllers.controller.TweakedLinkedControllerClientHandler; + +import net.minecraft.client.Minecraft; +import net.minecraftforge.event.TickEvent.ClientTickEvent; +import net.minecraftforge.event.TickEvent.Phase; +import net.minecraftforge.event.TickEvent.RenderTickEvent; +import net.minecraftforge.eventbus.api.EventPriority; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.ModContainer; +import net.minecraftforge.fml.ModList; +import net.minecraftforge.fml.common.Mod.EventBusSubscriber; +import net.minecraftforge.fml.event.lifecycle.FMLLoadCompleteEvent; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.client.ConfigGuiHandler; + +@EventBusSubscriber(Dist.CLIENT) +public class ModClientEvents +{ + @SubscribeEvent(priority = EventPriority.HIGHEST) // We need to catch the inputs as early as possible to cancel them + public static void onTick(ClientTickEvent event) + { + if (!isGameActive()) + return; + + //Level world = Minecraft.getInstance().level; + if (event.phase == Phase.START || Minecraft.getInstance().screen != null) + { + TweakedLinkedControllerClientHandler.tick(); + return; + } + } + + @SubscribeEvent(priority = EventPriority.NORMAL) + public static void renderTick(RenderTickEvent event) // Cancel player/camera rotation just before rendering + { + if (!isGameActive()) + return; + MouseCursorHandler.CancelPlayerTurn(); + } + + protected static boolean isGameActive() + { + return !(Minecraft.getInstance().level == null || Minecraft.getInstance().player == null); + } + + @EventBusSubscriber(value = Dist.CLIENT, bus = EventBusSubscriber.Bus.MOD) + public static class ModBusEvents + { + @SubscribeEvent + public static void onLoadComplete(FMLLoadCompleteEvent event) + { + ModContainer container = ModList.get() + .getModContainerById(CreateTweakedControllers.ID) + .orElseThrow(() -> new IllegalStateException("CreateTweakedControllers mod container missing on LoadComplete")); + container.registerExtensionPoint(ConfigGuiHandler.ConfigGuiFactory.class, + () -> new ConfigGuiHandler.ConfigGuiFactory( + (mc, previousScreen) -> new ModConfigScreen(previousScreen))); + } + } +} diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/ModCommonEvents.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/ModCommonEvents.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/ModCommonEvents.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/ModCommonEvents.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/ModTab.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/ModTab.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/ModTab.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/ModTab.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/block/ModBlocks.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/block/ModBlocks.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/block/ModBlocks.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/block/ModBlocks.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/block/TweakedLecternControllerBlock.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/block/TweakedLecternControllerBlock.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/block/TweakedLecternControllerBlock.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/block/TweakedLecternControllerBlock.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/block/TweakedLecternControllerBlockEntity.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/block/TweakedLecternControllerBlockEntity.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/block/TweakedLecternControllerBlockEntity.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/block/TweakedLecternControllerBlockEntity.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/compat/ComputerCraft/ModComputerBehavior.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/compat/ComputerCraft/ModComputerBehavior.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/compat/ComputerCraft/ModComputerBehavior.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/compat/ComputerCraft/ModComputerBehavior.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/compat/ComputerCraft/ModComputerCraftProxy.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/compat/ComputerCraft/ModComputerCraftProxy.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/compat/ComputerCraft/ModComputerCraftProxy.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/compat/ComputerCraft/ModComputerCraftProxy.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/compat/ComputerCraft/ModSyncedPeripheral.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/compat/ComputerCraft/ModSyncedPeripheral.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/compat/ComputerCraft/ModSyncedPeripheral.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/compat/ComputerCraft/ModSyncedPeripheral.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/compat/ComputerCraft/TweakedLecternPeripheral.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/compat/ComputerCraft/TweakedLecternPeripheral.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/compat/ComputerCraft/TweakedLecternPeripheral.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/compat/ComputerCraft/TweakedLecternPeripheral.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/config/ModClientConfig.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/config/ModClientConfig.java similarity index 90% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/config/ModClientConfig.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/config/ModClientConfig.java index 4015ce0..df7b8e9 100644 --- a/src/main/java/com/getitemfromblock/create_tweaked_controllers/config/ModClientConfig.java +++ b/common/src/main/com/getitemfromblock/create_tweaked_controllers/config/ModClientConfig.java @@ -10,6 +10,7 @@ public class ModClientConfig public static final ForgeConfigSpec.ConfigValue USE_CUSTOM_MAPPINGS; public static final ForgeConfigSpec.ConfigValue TOGGLE_MOUSE_FOCUS; public static final ForgeConfigSpec.ConfigValue AUTO_RESET_MOUSE_FOCUS; + //public static final ForgeConfigSpec.ConfigValue AUTO_DETECT_INPUT_TYPE; public static final ForgeConfigSpec.ConfigValue CONFIG_BUTTON_MAIN_MENU_ROW; public static final ForgeConfigSpec.ConfigValue CONFIG_BUTTON_MAIN_MENU_OFFSET; public static final ForgeConfigSpec.ConfigValue CONFIG_BUTTON_INGAME_MENU_ROW; @@ -25,6 +26,8 @@ public class ModClientConfig .define("toggle_mouse_focus", false); AUTO_RESET_MOUSE_FOCUS = BUILDER.comment("Does the mouse cursor inputs are automatically reset when the controller item is put down, default is true") .define("auto_reset_mouse_focus", true); + //AUTO_DETECT_INPUT_TYPE = BUILDER.comment("Does the mod will automatically change the controller profile dependind on what is available on your computer, default is true") + // .define("auto_detect_input_type", true); CONFIG_BUTTON_MAIN_MENU_ROW = BUILDER.comment("Row of the Controller Settings button in the main menu, default is 2") .defineInRange("config_button_main_menu_row", 2 , 0, 4); CONFIG_BUTTON_MAIN_MENU_OFFSET = BUILDER.comment("X Offset of the Controller Settings button in the main menu, default is 4") diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/config/ModConfigs.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/config/ModConfigs.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/config/ModConfigs.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/config/ModConfigs.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/config/ModKeyMappings.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/config/ModKeyMappings.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/config/ModKeyMappings.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/config/ModKeyMappings.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/controller/ControlProfile.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/controller/ControlProfile.java similarity index 57% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/controller/ControlProfile.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/controller/ControlProfile.java index 5619359..fe7b7f8 100644 --- a/src/main/java/com/getitemfromblock/create_tweaked_controllers/controller/ControlProfile.java +++ b/common/src/main/com/getitemfromblock/create_tweaked_controllers/controller/ControlProfile.java @@ -28,18 +28,40 @@ public class ControlProfile public GenericInput[] layout = new GenericInput[25]; public boolean hasJoystickInput = false; public ArrayList duplicatedKeys = new ArrayList(); + + public static final byte CURRENT_VERSION_MAJOR = (byte) 0x01; + public static final byte CURRENT_VERSION_MINOR = (byte) 0x00; public ControlProfile() { + //this(ControlType.KEYBOARD_MOUSE); this(0); } + public ControlProfile(ControlType type) + { + CheckProfileUpgrade(); + Load(type); + Save(type); + } + public ControlProfile(int id) { Load(0); Save(0); } + public void Load(ControlType type) + { + Load("config/gamepad_profiles/gamepad_profile_" + type.toString(), type); + UpdateProfileData(); + } + + public void Save(ControlType type) + { + Save("config/gamepad_profiles/gamepad_profile_" + type.toString()); + } + public void Load(int id) { Load("config/gamepad_profiles/gamepad_profile_" + id); @@ -51,6 +73,31 @@ public void Save(int id) Save("config/gamepad_profiles/gamepad_profile_" + id); } + private void CheckProfileUpgrade() + { + File f = new File("config/gamepad_profiles/gamepad_profile_0"); + if(!f.exists() || f.isDirectory()) + { + return; + } + Load("config/gamepad_profiles/gamepad_profile_0", ControlType.CUSTOM_0, false); + Save(ControlType.CUSTOM_0); + try + { + f.delete(); + } + catch (Exception e) + { + CreateTweakedControllers.error("Error upgrading old controller profile: could not delete old file \"config/gamepad_profiles/gamepad_profile_0\"!"); + CreateTweakedControllers.error(e.getMessage()); + for (StackTraceElement line : e.getStackTrace()) + { + CreateTweakedControllers.error(line.toString()); + } + return; + } + } + static final int[] keys = { GLFW.GLFW_KEY_SEMICOLON, @@ -63,20 +110,32 @@ public void Save(int id) GLFW.GLFW_KEY_Y, GLFW.GLFW_KEY_T, GLFW.GLFW_KEY_H, - GLFW.GLFW_KEY_J, + GLFW.GLFW_KEY_ENTER, GLFW.GLFW_KEY_UP, GLFW.GLFW_KEY_RIGHT, GLFW.GLFW_KEY_DOWN, GLFW.GLFW_KEY_LEFT }; - public void InitDefaultLayout() + public void InitDefaultLayout(ControlType fallbackType) + { + if (fallbackType == ControlType.JOYSTICK) + { + InitDefaultGamepadLayout(); + } + else + { + InitDefaultKeyboardLayout(); + } + } + + public void InitDefaultKeyboardLayout() { for (int i = 0; i < 15; i++) { - if (i == 9 || i == 10) + if (i == 9) { - layout[i] = new MouseButtonInput(i - 9); + layout[i] = new MouseButtonInput(0); } else { @@ -114,12 +173,121 @@ else if (i > 22) } } - public void Load(String path) + public void InitDefaultGamepadLayout() + { + for (int i = 0; i < 15; i++) + { + layout[i] = new JoystickButtonInput(i); + } + for (int i = 15; i < 25; i++) + { + if (i == 16 || i == 18 || i == 20 || i == 22) + { + layout[i] = new JoystickAxisInput(i - 15, 0.05f, -1.0f); + } + else if (i > 22) + { + layout[i] = new JoystickAxisInput(i - 15, -1.0f, 1.0f); + } + else + { + layout[i] = new JoystickAxisInput(i - 15, 0.05f, 1.0f); + } + } + } + + private void Load(String path, ControlType fallbackType) + { + Load(path, fallbackType, true); + } + + static final byte[] headerNameData = + { + 'C', + 'T', + 'C', + 'P', + 'R', + 'F', + }; + + private void Load(String path, ControlType fallbackType, boolean hasHeader) + { + File f = new File(path); + if(!f.exists() || f.isDirectory()) + { + InitDefaultLayout(fallbackType); + return; + } + else try + { + FileInputStream file = new FileInputStream(f); + DataInputStream buf = new DataInputStream(file); + int version = 0; + if (hasHeader) + { + byte[] header = buf.readNBytes(8); + boolean valid = header.length == 8; + for (int i = 0; i < 6 && valid; i++) + { + if (header[i] != headerNameData[i]) + { + valid = false; + } + } + if (!valid) + { + file.close(); + throw new IOException("Corrupted Profile Data!"); + } + version = 256 * header[6] + header[7]; + } + for (int i = 0; i < layout.length; i++) + { + switch (InputType.GetType(buf.readByte())) + { + case NONE: + layout[i] = null; + break; + case JOYSTICK_BUTTON: + layout[i] = new JoystickButtonInput(); + break; + case JOYSTICK_AXIS: + layout[i] = new JoystickAxisInput(); + break; + case MOUSE_BUTTON: + layout[i] = new MouseButtonInput(); + break; + case MOUSE_AXIS: + layout[i] = new MouseAxisInput(); + break; + case KEYBOARD_KEY: + layout[i] = new KeyboardInput(); + break; + default: + throw new IOException("Corrupted Profile Data!"); + } + if (layout[i] != null) layout[i].Deserialize(buf); + } + file.close(); + } + catch (IOException e) + { + CreateTweakedControllers.error("Error loading controller profile \""+path+"\"!"); + for (StackTraceElement line : e.getStackTrace()) + { + CreateTweakedControllers.error(line.toString()); + } + return; + } + } + + private void Load(String path) { File f = new File(path); if(!f.exists() || f.isDirectory()) { - InitDefaultLayout(); + InitDefaultLayout(ControlType.KEYBOARD_MOUSE); return; } else try @@ -157,10 +325,10 @@ public void Load(String path) } catch (IOException e) { - CreateTweakedControllers.log("Error loading controller profile \""+path+"\"!"); + CreateTweakedControllers.error("Error loading controller profile \""+path+"\"!"); for (StackTraceElement line : e.getStackTrace()) { - CreateTweakedControllers.log(line.toString()); + CreateTweakedControllers.error(line.toString()); } return; } @@ -179,6 +347,14 @@ public void Save(String path) f.createNewFile(); FileOutputStream file = new FileOutputStream(f); DataOutputStream buf = new DataOutputStream(file); + /* + for (int i = 0; i < headerNameData.length; i++) + { + buf.writeByte(headerNameData[i]); + } + buf.writeByte(CURRENT_VERSION_MAJOR); + buf.writeByte(CURRENT_VERSION_MINOR); + */ for (int i = 0; i < layout.length; i++) { if (layout[i] != null) @@ -195,10 +371,10 @@ public void Save(String path) } catch (IOException e) { - CreateTweakedControllers.log("Error loading controller profile \""+path+"\"!"); + CreateTweakedControllers.error("Error loading controller profile \""+path+"\"!"); for (StackTraceElement line : e.getStackTrace()) { - CreateTweakedControllers.log(line.toString()); + CreateTweakedControllers.error(line.toString()); } return; } diff --git a/common/src/main/com/getitemfromblock/create_tweaked_controllers/controller/ControlType.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/controller/ControlType.java new file mode 100644 index 0000000..1ac7a00 --- /dev/null +++ b/common/src/main/com/getitemfromblock/create_tweaked_controllers/controller/ControlType.java @@ -0,0 +1,24 @@ +package com.getitemfromblock.create_tweaked_controllers.controller; + +import com.getitemfromblock.create_tweaked_controllers.input.JoystickInputs; + +public enum ControlType +{ + KEYBOARD_MOUSE, + JOYSTICK, + CUSTOM_0, + CUSTOM_1; + + public boolean IsAdapted() + { + switch (this) + { + case KEYBOARD_MOUSE: + return !JoystickInputs.HasJoystick(); + case JOYSTICK: + return JoystickInputs.HasJoystick(); + default: + return true; + } + } +} diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/controller/ControllerRedstoneOutput.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/controller/ControllerRedstoneOutput.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/controller/ControllerRedstoneOutput.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/controller/ControllerRedstoneOutput.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/controller/TweakedControlsUtil.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/controller/TweakedControlsUtil.java similarity index 87% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/controller/TweakedControlsUtil.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/controller/TweakedControlsUtil.java index 4022ca0..38c02ce 100644 --- a/src/main/java/com/getitemfromblock/create_tweaked_controllers/controller/TweakedControlsUtil.java +++ b/common/src/main/com/getitemfromblock/create_tweaked_controllers/controller/TweakedControlsUtil.java @@ -14,6 +14,12 @@ public class TweakedControlsUtil private static boolean lastFocusKeyState = false; private static boolean isFocusActive = false; private static boolean wasFocusActive = false; + private static ControlType controlType = ControlType.KEYBOARD_MOUSE; + + public static ControlType GetActiveProfileType() + { + return controlType; + } public static void FreeFocus() { @@ -22,6 +28,26 @@ public static void FreeFocus() wasFocusActive = false; } + public static void SelectProfileType(ControlType type) + { + profile.Load(type); + controlType = type; + } + + private static void BackgroundUpdate() + { + //if (!ModClientConfig.AUTO_DETECT_INPUT_TYPE.get() || controlType.IsAdapted()) return; + if (JoystickInputs.HasJoystick()) + { + controlType = ControlType.JOYSTICK; + } + else + { + controlType = ControlType.KEYBOARD_MOUSE; + } + profile.Load(controlType); + } + public static void GuiUpdate() { MouseCursorHandler.Update(); @@ -96,6 +122,7 @@ public static void Update(boolean useFullPrec) { if (ModClientConfig.USE_CUSTOM_MAPPINGS.get()) { + //BackgroundUpdate(); HandleMouseKeyBinds(); if (profile.hasJoystickInput) { diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/controller/TweakedLecternControllerRenderer.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/controller/TweakedLecternControllerRenderer.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/controller/TweakedLecternControllerRenderer.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/controller/TweakedLecternControllerRenderer.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/controller/TweakedLinkedControllerClientHandler.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/controller/TweakedLinkedControllerClientHandler.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/controller/TweakedLinkedControllerClientHandler.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/controller/TweakedLinkedControllerClientHandler.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/controller/TweakedLinkedControllerMenu.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/controller/TweakedLinkedControllerMenu.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/controller/TweakedLinkedControllerMenu.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/controller/TweakedLinkedControllerMenu.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/controller/TweakedLinkedControllerServerHandler.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/controller/TweakedLinkedControllerServerHandler.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/controller/TweakedLinkedControllerServerHandler.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/controller/TweakedLinkedControllerServerHandler.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/gui/ControllerButton.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/gui/ControllerButton.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/gui/ControllerButton.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/gui/ControllerButton.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/gui/ControllerButtonRenderer.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/gui/ControllerButtonRenderer.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/gui/ControllerButtonRenderer.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/gui/ControllerButtonRenderer.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/gui/ControllerItemSlot.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/gui/ControllerItemSlot.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/gui/ControllerItemSlot.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/gui/ControllerItemSlot.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/gui/DigitIcon.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/gui/DigitIcon.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/gui/DigitIcon.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/gui/DigitIcon.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/gui/DigitIconRenderer.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/gui/DigitIconRenderer.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/gui/DigitIconRenderer.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/gui/DigitIconRenderer.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/gui/InputConfig/ColoredButton.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/gui/InputConfig/ColoredButton.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/gui/InputConfig/ColoredButton.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/gui/InputConfig/ColoredButton.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/gui/InputConfig/GenericInputScreen.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/gui/InputConfig/GenericInputScreen.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/gui/InputConfig/GenericInputScreen.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/gui/InputConfig/GenericInputScreen.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/gui/InputConfig/InputList.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/gui/InputConfig/InputList.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/gui/InputConfig/InputList.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/gui/InputConfig/InputList.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/gui/InputConfig/JoystickAxisScreen.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/gui/InputConfig/JoystickAxisScreen.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/gui/InputConfig/JoystickAxisScreen.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/gui/InputConfig/JoystickAxisScreen.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/gui/InputConfig/JoystickButtonScreen.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/gui/InputConfig/JoystickButtonScreen.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/gui/InputConfig/JoystickButtonScreen.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/gui/InputConfig/JoystickButtonScreen.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/gui/InputConfig/KeyboardInputScreen.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/gui/InputConfig/KeyboardInputScreen.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/gui/InputConfig/KeyboardInputScreen.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/gui/InputConfig/KeyboardInputScreen.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/gui/InputConfig/MouseAxisScreen.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/gui/InputConfig/MouseAxisScreen.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/gui/InputConfig/MouseAxisScreen.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/gui/InputConfig/MouseAxisScreen.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/gui/InputConfig/MouseButtonScreen.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/gui/InputConfig/MouseButtonScreen.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/gui/InputConfig/MouseButtonScreen.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/gui/InputConfig/MouseButtonScreen.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/gui/JoystickIcon.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/gui/JoystickIcon.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/gui/JoystickIcon.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/gui/JoystickIcon.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/gui/ModConfigScreen.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/gui/ModConfigScreen.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/gui/ModConfigScreen.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/gui/ModConfigScreen.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/gui/ModControllerConfigScreen.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/gui/ModControllerConfigScreen.java similarity index 79% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/gui/ModControllerConfigScreen.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/gui/ModControllerConfigScreen.java index 8fa9b57..1fb28ed 100644 --- a/src/main/java/com/getitemfromblock/create_tweaked_controllers/gui/ModControllerConfigScreen.java +++ b/common/src/main/com/getitemfromblock/create_tweaked_controllers/gui/ModControllerConfigScreen.java @@ -1,7 +1,10 @@ package com.getitemfromblock.create_tweaked_controllers.gui; +import java.util.function.Consumer; + import com.getitemfromblock.create_tweaked_controllers.CreateTweakedControllers; import com.getitemfromblock.create_tweaked_controllers.config.ModClientConfig; +import com.getitemfromblock.create_tweaked_controllers.controller.ControlType; import com.getitemfromblock.create_tweaked_controllers.controller.TweakedControlsUtil; import com.getitemfromblock.create_tweaked_controllers.gui.InputConfig.ColoredButton; import com.getitemfromblock.create_tweaked_controllers.gui.InputConfig.InputList; @@ -17,11 +20,14 @@ import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.math.Vector3f; import com.simibubi.create.foundation.gui.AbstractSimiScreen; +import com.simibubi.create.foundation.gui.ConfirmationScreen; import com.simibubi.create.foundation.gui.ScreenOpener; +import com.simibubi.create.foundation.gui.ConfirmationScreen.Response; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.screens.Screen; import net.minecraft.network.chat.CommonComponents; +import net.minecraft.network.chat.FormattedText; import net.minecraft.util.Mth; import net.minecraft.world.phys.Vec2; @@ -36,6 +42,8 @@ public class ModControllerConfigScreen extends AbstractSimiScreen private int selectedInput = -1; private InputList inputBindsList; + //private ControlType selectedProfile = ControlType.KEYBOARD_MOUSE; + private boolean saved = true; public ModControllerConfigScreen(Screen p) { @@ -47,6 +55,8 @@ public ModControllerConfigScreen(Screen p) protected void init() { super.init(); + //selectedProfile = TweakedControlsUtil.GetActiveProfileType(); + //saved = true; Populate(); } @@ -55,6 +65,32 @@ public void tick() { } + private void attemptBackstep() + { + if (saved) + { + ScreenOpener.open(parent); + return; + } + + showLeavingPrompt(success -> { + if (success == Response.Cancel) + return; + if (success == Response.Confirm) + //saveChanges(); + ScreenOpener.open(parent); + }); + } + + protected void showLeavingPrompt(Consumer action) + { + ConfirmationScreen screen = new ConfirmationScreen() + .centered() + .withThreeActions(action) + .addText(FormattedText.of("Leaving with unsaved change(s) for this config")); + screen.open(this); + } + @Override public boolean mouseClicked(double x, double y, int button) { @@ -94,17 +130,71 @@ public boolean keyPressed(int key, int scan, int modif) } } + protected void renderSelectedInput() + { + if (selectedInput == -1) return; + float val = (Mth.sin((float)Blaze3D.getTime() * Mth.PI * 4) + 1) / 2; + if (selectedInput < 15) + { + controllerButtons[selectedInput].SetColorFactor(Mth.lerp(val, 50/255.0f, 1.0f)); + } + else if (selectedInput < 23) + { + int vx = 0; + int vy = 0; + switch (selectedInput) + { + case 15: + vx = (int)(val * 10); + break; + case 16: + vx = (int)(-val * 10); + break; + case 17: + vy = (int)(val * 10); + break; + case 18: + vy = (int)(-val * 10); + break; + case 19: + vx = (int)(val * 10); + break; + case 20: + vx = (int)(-val * 10); + break; + case 21: + vy = (int)(val * 10); + break; + default: + vy = (int)(-val * 10); + break; + } + if (selectedInput < 19) + { + lStick.move(vx, vy); + controllerButtons[9].move(vx, vy); + } + else + { + rStick.move(vx, vy); + controllerButtons[10].move(vx, vy); + } + } + else + { + triggerAxis[selectedInput-23].SetValue(val); + } + } + @Override protected void renderWindow(PoseStack ms, int mouseX, int mouseY, float partialTicks) { TweakedControlsUtil.GuiUpdate(); - if (selectedInput != -1) + if (selectedInput != -1 && (HandleMouseMovement() || HandleJoystickButtons() || HandleJoystickAxis())) { - if (selectedInput != -1 && (HandleMouseMovement() || HandleJoystickButtons() || HandleJoystickAxis())) - { - selectedInput = -1; - TweakedControlsUtil.profile.UpdateProfileData(); - } + selectedInput = -1; + saved = false; + TweakedControlsUtil.profile.UpdateProfileData(); } inputBindsList.render(ms, mouseX, mouseY, partialTicks); @@ -133,60 +223,7 @@ protected void renderWindow(PoseStack ms, int mouseX, int mouseY, float partialT { controllerButtons[i].SetColorFactor(GamepadInputs.buttons[i] ? 1.0f : 50/255.0f); } - if (selectedInput != -1) - { - float val = (Mth.sin((float)Blaze3D.getTime() * Mth.PI * 4) + 1) / 2; - if (selectedInput < 15) - { - controllerButtons[selectedInput].SetColorFactor(Mth.lerp(val, 50/255.0f, 1.0f)); - } - else if (selectedInput < 23) - { - vx = 0; - vy = 0; - switch (selectedInput) - { - case 15: - vx = (int)(val * 10); - break; - case 16: - vx = (int)(-val * 10); - break; - case 17: - vy = (int)(val * 10); - break; - case 18: - vy = (int)(-val * 10); - break; - case 19: - vx = (int)(val * 10); - break; - case 20: - vx = (int)(-val * 10); - break; - case 21: - vy = (int)(val * 10); - break; - default: - vy = (int)(-val * 10); - break; - } - if (selectedInput < 19) - { - lStick.move(vx, vy); - controllerButtons[9].move(vx, vy); - } - else - { - rStick.move(vx, vy); - controllerButtons[10].move(vx, vy); - } - } - else - { - triggerAxis[selectedInput-23].SetValue(val); - } - } + renderSelectedInput(); } public void SetActiveInput(int index) @@ -254,14 +291,16 @@ private void Populate() inputBindsList = new InputList(this, minecraft); addWidget(inputBindsList); addRenderableWidget(new Button(this.width / 2 - 155, this.height - 29, 90, 20, CommonComponents.GUI_DONE, (p_193996_) -> { + //attemptBackstep(); ScreenOpener.open(parent); })); addRenderableWidget(new ColoredButton(this.width / 2 - 155 + 100, this.height - 29, 90, 20, CreateTweakedControllers.translateDirect("gui_config_reset_all"), (p_193999_) -> { - TweakedControlsUtil.profile.InitDefaultLayout(); + TweakedControlsUtil.profile.InitDefaultLayout(ControlType.KEYBOARD_MOUSE); TweakedControlsUtil.profile.UpdateProfileData(); }, new Vector3f(1.0f, 0.3f, 0.3f))); addRenderableWidget(new ColoredButton(this.width / 2 - 155 + 200, this.height - 29, 40, 20, CreateTweakedControllers.translateDirect("gui_config_save"), (p_193996_) -> { TweakedControlsUtil.profile.Save(0); + saved = true; }, new Vector3f(0.5f, 0.5f, 1.0f))); addRenderableWidget(new ColoredButton(this.width / 2 - 155 + 250, this.height - 29, 40, 20, CreateTweakedControllers.translateDirect("gui_config_load"), (p_193996_) -> { TweakedControlsUtil.profile.Load(0); diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/gui/ModGuiTextures.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/gui/ModGuiTextures.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/gui/ModGuiTextures.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/gui/ModGuiTextures.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/gui/ModIcons.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/gui/ModIcons.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/gui/ModIcons.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/gui/ModIcons.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/gui/ModMainConfigButton.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/gui/ModMainConfigButton.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/gui/ModMainConfigButton.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/gui/ModMainConfigButton.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/gui/ModMenuTypes.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/gui/ModMenuTypes.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/gui/ModMenuTypes.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/gui/ModMenuTypes.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/gui/PlainRect.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/gui/PlainRect.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/gui/PlainRect.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/gui/PlainRect.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/gui/PlainRectRenderer.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/gui/PlainRectRenderer.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/gui/PlainRectRenderer.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/gui/PlainRectRenderer.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/gui/TooltipButton.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/gui/TooltipButton.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/gui/TooltipButton.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/gui/TooltipButton.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/gui/TweakedLinkedControllerScreen.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/gui/TweakedLinkedControllerScreen.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/gui/TweakedLinkedControllerScreen.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/gui/TweakedLinkedControllerScreen.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/input/GamepadInputs.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/input/GamepadInputs.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/input/GamepadInputs.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/input/GamepadInputs.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/input/GenericInput.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/input/GenericInput.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/input/GenericInput.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/input/GenericInput.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/input/JoystickAxisInput.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/input/JoystickAxisInput.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/input/JoystickAxisInput.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/input/JoystickAxisInput.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/input/JoystickButtonInput.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/input/JoystickButtonInput.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/input/JoystickButtonInput.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/input/JoystickButtonInput.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/input/JoystickInputs.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/input/JoystickInputs.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/input/JoystickInputs.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/input/JoystickInputs.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/input/KeyboardInput.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/input/KeyboardInput.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/input/KeyboardInput.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/input/KeyboardInput.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/input/ModInputEvents.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/input/ModInputEvents.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/input/ModInputEvents.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/input/ModInputEvents.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/input/MouseAxisInput.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/input/MouseAxisInput.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/input/MouseAxisInput.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/input/MouseAxisInput.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/input/MouseButtonInput.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/input/MouseButtonInput.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/input/MouseButtonInput.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/input/MouseButtonInput.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/input/MouseCursorHandler.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/input/MouseCursorHandler.java similarity index 68% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/input/MouseCursorHandler.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/input/MouseCursorHandler.java index 8617de1..89d5c95 100644 --- a/src/main/java/com/getitemfromblock/create_tweaked_controllers/input/MouseCursorHandler.java +++ b/common/src/main/com/getitemfromblock/create_tweaked_controllers/input/MouseCursorHandler.java @@ -3,10 +3,11 @@ import org.lwjgl.glfw.GLFW; import com.mojang.blaze3d.Blaze3D; +import com.mojang.math.Vector3f; import net.minecraft.client.Minecraft; import net.minecraft.client.MouseHandler; -import net.minecraft.client.Options; +import net.minecraft.client.player.LocalPlayer; import net.minecraft.world.phys.Vec2; public class MouseCursorHandler @@ -15,10 +16,10 @@ public class MouseCursorHandler public static Vec2 lastPos = null; public static Vec2 vel = null; private static MouseHandler m = null; - private static Options o = null; private static double lastMouseEventTime; + private static boolean mouseLockActive = false; private static float deltaT = 0; - private static double sensitivity = 0.5; + private static Vector3f savedRot = new Vector3f(); public static Vec2 GetMousePos() { @@ -47,8 +48,8 @@ public static void InitValues() { delta = new Vec2(0, 0); vel = new Vec2(0, 0); - m = Minecraft.getInstance().mouseHandler; - o = Minecraft.getInstance().options; + Minecraft mc = Minecraft.getInstance(); + m = mc.mouseHandler; lastPos = GetMousePos(); lastMouseEventTime = Blaze3D.getTime(); } @@ -89,19 +90,32 @@ public static float GetY(boolean useVelocity) } } + // The trick of setting the mouse sensitivity to -1/3 does not work anymore... public static void ActivateMouseLock() { - if (o.sensitivity != -1/3.0) - { - sensitivity = o.sensitivity; - } - o.sensitivity = -1/3.0; + LocalPlayer player = Minecraft.getInstance().player; + savedRot.setX(player.getXRot()); + savedRot.setY(player.getYRot()); + savedRot.setZ(0); + mouseLockActive = true; lastPos = GetMousePos(); lastMouseEventTime = Blaze3D.getTime(); } public static void DeactivateMouseLock() { - o.sensitivity = sensitivity; + mouseLockActive = false; + } + + public static void CancelPlayerTurn() + { + if (!mouseLockActive) return; + LocalPlayer player = Minecraft.getInstance().player; + if (player == null) return; + player.turn((savedRot.y() - player.getYRot()) / 0.15f, (savedRot.x() - player.getXRot()) / 0.15f); + player.xBob = savedRot.x(); + player.yBob = savedRot.y(); + player.xBobO = savedRot.x(); + player.yBobO = savedRot.y(); } } diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/item/ModItems.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/item/ModItems.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/item/ModItems.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/item/ModItems.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/item/TweakedLinkedControllerItem.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/item/TweakedLinkedControllerItem.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/item/TweakedLinkedControllerItem.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/item/TweakedLinkedControllerItem.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/item/TweakedLinkedControllerItemRenderer.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/item/TweakedLinkedControllerItemRenderer.java similarity index 98% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/item/TweakedLinkedControllerItemRenderer.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/item/TweakedLinkedControllerItemRenderer.java index e2a8440..9076a50 100644 --- a/src/main/java/com/getitemfromblock/create_tweaked_controllers/item/TweakedLinkedControllerItemRenderer.java +++ b/common/src/main/com/getitemfromblock/create_tweaked_controllers/item/TweakedLinkedControllerItemRenderer.java @@ -333,11 +333,16 @@ protected static void renderJoystick(PartialItemModelRenderer renderer, PoseStac x = axis.get(0).getValue(pt); y = axis.get(1).getValue(pt); } - Vector3f axis = new Vector3f(-x, 0, -y); + Vector3f ax = new Vector3f(-x, 0, -y); double angle = x * x + y * y; angle = Math.min(Math.sqrt(angle), 1.0) * 0.6f; - axis.normalize(); - ms.mulPose(new Quaternion(axis, (float)angle, false)); + if (ax.dot(ax) < 0.001f) + { + ax = new Vector3f(-1,0,-1); + angle = 0; + } + ax.normalize(); + ms.mulPose(new Quaternion(ax, (float)angle, false)); if (renderDepression) { float depression = b * buttons.get(isRight ? 10 : 9).getValue(pt); diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/packet/ModPackets.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/packet/ModPackets.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/packet/ModPackets.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/packet/ModPackets.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/packet/TweakedLinkedControllerAxisPacket.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/packet/TweakedLinkedControllerAxisPacket.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/packet/TweakedLinkedControllerAxisPacket.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/packet/TweakedLinkedControllerAxisPacket.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/packet/TweakedLinkedControllerBindPacket.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/packet/TweakedLinkedControllerBindPacket.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/packet/TweakedLinkedControllerBindPacket.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/packet/TweakedLinkedControllerBindPacket.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/packet/TweakedLinkedControllerButtonPacket.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/packet/TweakedLinkedControllerButtonPacket.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/packet/TweakedLinkedControllerButtonPacket.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/packet/TweakedLinkedControllerButtonPacket.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/packet/TweakedLinkedControllerPacketBase.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/packet/TweakedLinkedControllerPacketBase.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/packet/TweakedLinkedControllerPacketBase.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/packet/TweakedLinkedControllerPacketBase.java diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/packet/TweakedLinkedControllerStopLecternPacket.java b/common/src/main/com/getitemfromblock/create_tweaked_controllers/packet/TweakedLinkedControllerStopLecternPacket.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/packet/TweakedLinkedControllerStopLecternPacket.java rename to common/src/main/com/getitemfromblock/create_tweaked_controllers/packet/TweakedLinkedControllerStopLecternPacket.java diff --git a/src/main/resources/assets/create_tweaked_controllers/blockstates/tweaked_lectern_controller.json b/common/src/main/resources/assets/create_tweaked_controllers/blockstates/tweaked_lectern_controller.json similarity index 100% rename from src/main/resources/assets/create_tweaked_controllers/blockstates/tweaked_lectern_controller.json rename to common/src/main/resources/assets/create_tweaked_controllers/blockstates/tweaked_lectern_controller.json diff --git a/src/main/resources/assets/create_tweaked_controllers/lang/en_us.json b/common/src/main/resources/assets/create_tweaked_controllers/lang/en_us.json similarity index 100% rename from src/main/resources/assets/create_tweaked_controllers/lang/en_us.json rename to common/src/main/resources/assets/create_tweaked_controllers/lang/en_us.json diff --git a/src/main/resources/assets/create_tweaked_controllers/lang/fr_fr.json b/common/src/main/resources/assets/create_tweaked_controllers/lang/fr_fr.json similarity index 100% rename from src/main/resources/assets/create_tweaked_controllers/lang/fr_fr.json rename to common/src/main/resources/assets/create_tweaked_controllers/lang/fr_fr.json diff --git a/src/main/resources/assets/create_tweaked_controllers/lang/ko_kr.json b/common/src/main/resources/assets/create_tweaked_controllers/lang/ko_kr.json similarity index 100% rename from src/main/resources/assets/create_tweaked_controllers/lang/ko_kr.json rename to common/src/main/resources/assets/create_tweaked_controllers/lang/ko_kr.json diff --git a/common/src/main/resources/assets/create_tweaked_controllers/lang/zh_cn.json b/common/src/main/resources/assets/create_tweaked_controllers/lang/zh_cn.json new file mode 100644 index 0000000..9772f4f --- /dev/null +++ b/common/src/main/resources/assets/create_tweaked_controllers/lang/zh_cn.json @@ -0,0 +1,101 @@ +{ + "block.create_tweaked_controllers.tweaked_lectern_controller": "Tweaked Lectern Controller", + + "item.create_tweaked_controllers.tweaked_linked_controller": "Tweaked Linked Controller", + + "item.create_tweaked_controllers.tweaked_linked_controller.tooltip": "TWEAKED LINKED CONTROLLER", + "item.create_tweaked_controllers.tweaked_linked_controller.tooltip.summary": "可_遥控_分配给游戏控制器的_无线红石信号终端_。", + "item.create_tweaked_controllers.tweaked_linked_controller.tooltip.condition1": "右击", + "item.create_tweaked_controllers.tweaked_linked_controller.tooltip.behaviour1": "_切换_控制器。当控制器处于激活状态时,来自你的_游戏控制器_的_输入_将被接管。", + "item.create_tweaked_controllers.tweaked_linked_controller.tooltip.condition2": "潜行时右击", + "item.create_tweaked_controllers.tweaked_linked_controller.tooltip.behaviour2": "打开手动_配置界面_.", + "item.create_tweaked_controllers.tweaked_linked_controller.tooltip.condition3": "右击接收模式无限红石信号终端", + "item.create_tweaked_controllers.tweaked_linked_controller.tooltip.behaviour3": "启用_绑定模式_,按下_六个按键_中的一个,即可将此按键与_无线红石信号终端的频率_绑定", + "item.create_tweaked_controllers.tweaked_linked_controller.tooltip.condition4": "右键讲台", + "item.create_tweaked_controllers.tweaked_linked_controller.tooltip.behaviour4": "将遥控器放在讲台上以便使用(潜行右击来取回遥控器)", + + "create_tweaked_controllers.tweaked_linked_controller.bind_mode": "绑定模式激活", + "create_tweaked_controllers.tweaked_linked_controller.press_keybind": "按下游戏手柄的按键或移动摇杆以绑定它", + "create_tweaked_controllers.tweaked_linked_controller.key_bound": "该频率已绑定到%1$s", + "create_tweaked_controllers.tweaked_linked_controller.frequency_slot_1": "按键绑定:%1$s, 频率 #1", + "create_tweaked_controllers.tweaked_linked_controller.frequency_slot_2": "按键绑定:%1$s, 频率 #2", + + "create_tweaked_controllers.gui_tab_button": "按键设置", + "create_tweaked_controllers.gui_tab_axis": "摇杆设置", + "create_tweaked_controllers.gui_button_refresh": "重新寻找游戏手柄", + "create_tweaked_controllers.gui_gamepad_unavailable": "未找到游戏手柄", + "create_tweaked_controllers.gui_gamepad_selected": "选择游戏手柄:%1$s", + "create_tweaked_controllers.gui_gamepad_custom": "使用虚拟游戏手柄", + + "create_tweaked_controllers.gui_gamepad_buttons": "虚拟游戏手柄按键", + "create_tweaked_controllers.gui_gamepad_axis": "虚拟游戏手柄摇杆", + + "create_tweaked_controllers.gui_gamepad_button_0": "A 键", + "create_tweaked_controllers.gui_gamepad_button_1": "B 键", + "create_tweaked_controllers.gui_gamepad_button_2": "X 键", + "create_tweaked_controllers.gui_gamepad_button_3": "Y 键", + "create_tweaked_controllers.gui_gamepad_button_4": "左缓冲键", + "create_tweaked_controllers.gui_gamepad_button_5": "左缓冲键", + "create_tweaked_controllers.gui_gamepad_button_6": "返回键", + "create_tweaked_controllers.gui_gamepad_button_7": "开始键", + "create_tweaked_controllers.gui_gamepad_button_8": "菜单键", + "create_tweaked_controllers.gui_gamepad_button_9": "按下左摇杆", + "create_tweaked_controllers.gui_gamepad_button_10": "按下右摇杆", + "create_tweaked_controllers.gui_gamepad_button_11": "上方向键", + "create_tweaked_controllers.gui_gamepad_button_12": "右方向键", + "create_tweaked_controllers.gui_gamepad_button_13": "下方向键", + "create_tweaked_controllers.gui_gamepad_button_14": "左方向键", + "create_tweaked_controllers.gui_gamepad_button_playstation_0": "叉号 × 键", + "create_tweaked_controllers.gui_gamepad_button_playstation_1": "圆形 ○ 键", + "create_tweaked_controllers.gui_gamepad_button_playstation_2": "方块 □ 键", + "create_tweaked_controllers.gui_gamepad_button_playstation_3": "三角 △ 键", + + "create_tweaked_controllers.gui_gamepad_axis_0": "左摇杆向右", + "create_tweaked_controllers.gui_gamepad_axis_1": "左摇杆向左", + "create_tweaked_controllers.gui_gamepad_axis_2": "左摇杆向下", + "create_tweaked_controllers.gui_gamepad_axis_3": "左摇杆向上", + "create_tweaked_controllers.gui_gamepad_axis_4": "右摇杆向右", + "create_tweaked_controllers.gui_gamepad_axis_5": "右摇杆向左", + "create_tweaked_controllers.gui_gamepad_axis_6": "右摇杆向下", + "create_tweaked_controllers.gui_gamepad_axis_7": "右摇杆向上", + "create_tweaked_controllers.gui_gamepad_axis_8": "左扳机键", + "create_tweaked_controllers.gui_gamepad_axis_9": "右扳机键", + + "create_tweaked_controllers.gui_input_joystick_axis": "移动摇杆 %1$s", + "create_tweaked_controllers.gui_input_joystick_button": "按下摇杆 %1$s", + "create_tweaked_controllers.gui_input_keyboard": "%1$s 按键", + "create_tweaked_controllers.gui_input_cursor_vel": "指针 %1$s 速度", + "create_tweaked_controllers.gui_input_cursor_pos": "指针 %1$s 位置", + "create_tweaked_controllers.gui_input_mouse": "鼠标按键 %1$s", + + "create_tweaked_controllers.gui_config_reset": "重置", + "create_tweaked_controllers.gui_config_config": "设置", + "create_tweaked_controllers.gui_config_reset_all": "全部重置", + "create_tweaked_controllers.gui_config_load": "加载", + "create_tweaked_controllers.gui_config_save": "保存", + "create_tweaked_controllers.gui_config_none": "未绑定", + "create_tweaked_controllers.gui_config_invert": "反转按键输出值", + "create_tweaked_controllers.gui_config_lower": "下摇杆输入绑定", + "create_tweaked_controllers.gui_config_upper": "上摇杆输入绑定", + "create_tweaked_controllers.gui_config_isyaxis": "使用Y代替X输入?", + "create_tweaked_controllers.gui_config_usevelocity": "使用速度代替位置?", + + "create_tweaked_controllers.gui_output_button": "输出值作为按键:", + "create_tweaked_controllers.gui_output_axis": "输出值作为摇杆:", + "create_tweaked_controllers.gui_input_axis": "原始摇杆输入值:", + + "create_tweaked_controllers.keybind.mouse_focus" : "捕获鼠标移动", + "create_tweaked_controllers.keybind.mouse_reset" : "中置鼠标指针", + "create_tweaked_controllers.keybind.controller_exit" : "退出控制器", + + "itemGroup.create_tweaked_controllers.base": "Create: Tweaked Controllers", + + "create_tweaked_controllers.menu.return": "返回菜单", + "create_tweaked_controllers.menu.issues": "汇报问题", + "create_tweaked_controllers.menu.wiki": "在线 Wiki", + "create_tweaked_controllers.menu.config_general": "常规设置", + "create_tweaked_controllers.menu.config_controller": "控制器设置", + "create_tweaked_controllers.menu.config_disabled": "请在常规设置中启用自定义映射", + + "_": "EOF" +} diff --git a/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller.json b/common/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller.json similarity index 100% rename from src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller.json rename to common/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller.json diff --git a/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/button.json b/common/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/button.json similarity index 100% rename from src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/button.json rename to common/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/button.json diff --git a/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/button_n_a.json b/common/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/button_n_a.json similarity index 100% rename from src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/button_n_a.json rename to common/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/button_n_a.json diff --git a/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/button_n_b.json b/common/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/button_n_b.json similarity index 100% rename from src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/button_n_b.json rename to common/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/button_n_b.json diff --git a/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/button_n_x.json b/common/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/button_n_x.json similarity index 100% rename from src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/button_n_x.json rename to common/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/button_n_x.json diff --git a/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/button_n_y.json b/common/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/button_n_y.json similarity index 100% rename from src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/button_n_y.json rename to common/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/button_n_y.json diff --git a/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/button_p_c.json b/common/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/button_p_c.json similarity index 100% rename from src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/button_p_c.json rename to common/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/button_p_c.json diff --git a/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/button_p_s.json b/common/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/button_p_s.json similarity index 100% rename from src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/button_p_s.json rename to common/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/button_p_s.json diff --git a/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/button_p_t.json b/common/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/button_p_t.json similarity index 100% rename from src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/button_p_t.json rename to common/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/button_p_t.json diff --git a/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/button_p_x.json b/common/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/button_p_x.json similarity index 100% rename from src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/button_p_x.json rename to common/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/button_p_x.json diff --git a/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/button_x_a.json b/common/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/button_x_a.json similarity index 100% rename from src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/button_x_a.json rename to common/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/button_x_a.json diff --git a/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/button_x_b.json b/common/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/button_x_b.json similarity index 100% rename from src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/button_x_b.json rename to common/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/button_x_b.json diff --git a/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/button_x_x.json b/common/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/button_x_x.json similarity index 100% rename from src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/button_x_x.json rename to common/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/button_x_x.json diff --git a/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/button_x_y.json b/common/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/button_x_y.json similarity index 100% rename from src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/button_x_y.json rename to common/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/button_x_y.json diff --git a/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/controller_n.json b/common/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/controller_n.json similarity index 100% rename from src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/controller_n.json rename to common/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/controller_n.json diff --git a/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/controller_p.json b/common/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/controller_p.json similarity index 100% rename from src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/controller_p.json rename to common/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/controller_p.json diff --git a/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/controller_x.json b/common/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/controller_x.json similarity index 100% rename from src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/controller_x.json rename to common/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/controller_x.json diff --git a/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/item.json b/common/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/item.json similarity index 100% rename from src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/item.json rename to common/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/item.json diff --git a/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/joystick.json b/common/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/joystick.json similarity index 100% rename from src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/joystick.json rename to common/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/joystick.json diff --git a/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/powered.json b/common/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/powered.json similarity index 100% rename from src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/powered.json rename to common/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/powered.json diff --git a/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/trigger.json b/common/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/trigger.json similarity index 100% rename from src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/trigger.json rename to common/src/main/resources/assets/create_tweaked_controllers/models/item/tweaked_linked_controller/trigger.json diff --git a/src/main/resources/assets/create_tweaked_controllers/textures/gui/controller_background.png b/common/src/main/resources/assets/create_tweaked_controllers/textures/gui/controller_background.png similarity index 100% rename from src/main/resources/assets/create_tweaked_controllers/textures/gui/controller_background.png rename to common/src/main/resources/assets/create_tweaked_controllers/textures/gui/controller_background.png diff --git a/src/main/resources/assets/create_tweaked_controllers/textures/gui/controller_background_oof.png b/common/src/main/resources/assets/create_tweaked_controllers/textures/gui/controller_background_oof.png similarity index 100% rename from src/main/resources/assets/create_tweaked_controllers/textures/gui/controller_background_oof.png rename to common/src/main/resources/assets/create_tweaked_controllers/textures/gui/controller_background_oof.png diff --git a/src/main/resources/assets/create_tweaked_controllers/textures/gui/controller_buttons.png b/common/src/main/resources/assets/create_tweaked_controllers/textures/gui/controller_buttons.png similarity index 100% rename from src/main/resources/assets/create_tweaked_controllers/textures/gui/controller_buttons.png rename to common/src/main/resources/assets/create_tweaked_controllers/textures/gui/controller_buttons.png diff --git a/src/main/resources/assets/create_tweaked_controllers/textures/gui/digits.png b/common/src/main/resources/assets/create_tweaked_controllers/textures/gui/digits.png similarity index 100% rename from src/main/resources/assets/create_tweaked_controllers/textures/gui/digits.png rename to common/src/main/resources/assets/create_tweaked_controllers/textures/gui/digits.png diff --git a/src/main/resources/assets/create_tweaked_controllers/textures/gui/icons.png b/common/src/main/resources/assets/create_tweaked_controllers/textures/gui/icons.png similarity index 100% rename from src/main/resources/assets/create_tweaked_controllers/textures/gui/icons.png rename to common/src/main/resources/assets/create_tweaked_controllers/textures/gui/icons.png diff --git a/src/main/resources/assets/create_tweaked_controllers/textures/gui/tweaked_linked_controller_0.png b/common/src/main/resources/assets/create_tweaked_controllers/textures/gui/tweaked_linked_controller_0.png similarity index 100% rename from src/main/resources/assets/create_tweaked_controllers/textures/gui/tweaked_linked_controller_0.png rename to common/src/main/resources/assets/create_tweaked_controllers/textures/gui/tweaked_linked_controller_0.png diff --git a/src/main/resources/assets/create_tweaked_controllers/textures/gui/tweaked_linked_controller_1.png b/common/src/main/resources/assets/create_tweaked_controllers/textures/gui/tweaked_linked_controller_1.png similarity index 100% rename from src/main/resources/assets/create_tweaked_controllers/textures/gui/tweaked_linked_controller_1.png rename to common/src/main/resources/assets/create_tweaked_controllers/textures/gui/tweaked_linked_controller_1.png diff --git a/src/main/resources/assets/create_tweaked_controllers/textures/item/tweaked_linked_controller.png b/common/src/main/resources/assets/create_tweaked_controllers/textures/item/tweaked_linked_controller.png similarity index 100% rename from src/main/resources/assets/create_tweaked_controllers/textures/item/tweaked_linked_controller.png rename to common/src/main/resources/assets/create_tweaked_controllers/textures/item/tweaked_linked_controller.png diff --git a/src/main/resources/assets/create_tweaked_controllers/textures/item/tweaked_linked_controller_back.png b/common/src/main/resources/assets/create_tweaked_controllers/textures/item/tweaked_linked_controller_back.png similarity index 100% rename from src/main/resources/assets/create_tweaked_controllers/textures/item/tweaked_linked_controller_back.png rename to common/src/main/resources/assets/create_tweaked_controllers/textures/item/tweaked_linked_controller_back.png diff --git a/src/main/resources/assets/create_tweaked_controllers/textures/item/tweaked_linked_controller_powered.png b/common/src/main/resources/assets/create_tweaked_controllers/textures/item/tweaked_linked_controller_powered.png similarity index 100% rename from src/main/resources/assets/create_tweaked_controllers/textures/item/tweaked_linked_controller_powered.png rename to common/src/main/resources/assets/create_tweaked_controllers/textures/item/tweaked_linked_controller_powered.png diff --git a/src/main/resources/data/create_tweaked_controllers/recipes/crafting/tweaked_linked_controller.json b/common/src/main/resources/data/create_tweaked_controllers/recipes/crafting/tweaked_linked_controller.json similarity index 100% rename from src/main/resources/data/create_tweaked_controllers/recipes/crafting/tweaked_linked_controller.json rename to common/src/main/resources/data/create_tweaked_controllers/recipes/crafting/tweaked_linked_controller.json diff --git a/src/main/resources/data/create_tweaked_controllers/vs_mass/masses.json b/common/src/main/resources/data/create_tweaked_controllers/vs_mass/masses.json similarity index 100% rename from src/main/resources/data/create_tweaked_controllers/vs_mass/masses.json rename to common/src/main/resources/data/create_tweaked_controllers/vs_mass/masses.json diff --git a/fabric/.gitignore b/fabric/.gitignore new file mode 100644 index 0000000..b63da45 --- /dev/null +++ b/fabric/.gitignore @@ -0,0 +1,42 @@ +.gradle +build/ +!gradle/wrapper/gradle-wrapper.jar +!**/src/main/**/build/ +!**/src/test/**/build/ + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr +out/ +!**/src/main/**/out/ +!**/src/test/**/out/ + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache +bin/ +!**/src/main/**/bin/ +!**/src/test/**/bin/ + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/fabric/build.gradle b/fabric/build.gradle new file mode 100644 index 0000000..b362ac4 --- /dev/null +++ b/fabric/build.gradle @@ -0,0 +1,112 @@ +plugins { + id "com.github.johnrengelman.shadow" version "${shadow_plugin_version}" +} + +architectury { + platformSetupLoomIde() + fabric() +} + + +configurations { + common + shadowCommon // Don't use shadow from the shadow plugin since it *excludes* files. + compileClasspath.extendsFrom common + runtimeClasspath.extendsFrom common + developmentFabric.extendsFrom common +} + +repositories { + mavenCentral() + // mavens for Create Fabric and dependencies + maven { url "https://maven.terraformersmc.com/" } + maven { url "https://mvn.devos.one/snapshots/" } // Create Fabric, Porting Lib, Forge Tags, Milk Lib, Registrate Fabric + maven { url "https://maven.cafeteria.dev/releases" } // Fake Player API + maven { url "https://raw.githubusercontent.com/Fuzss/modresources/main/maven/" } // Forge Config API Port + maven { url "https://maven.jamieswhiteshirt.com/libs-release" } // Reach Entity Attributes + maven { url "https://jitpack.io/" } // Mixin Extras, Fabric ASM +} + +dependencies { + modImplementation("net.fabricmc:fabric-loader:${rootProject.fabric_loader_version}") + modApi("net.fabricmc.fabric-api:fabric-api:${rootProject.fabric_api_version}") + // Remove the next line if you don't want to depend on the API + modApi("dev.architectury:architectury-fabric:${rootProject.architectury_version}") + + + common(project(path: ":common", configuration: "namedElements")) { transitive false } + shadowCommon(project(path: ":common", configuration: "transformProductionFabric")) { transitive false } + + modImplementation("com.simibubi.create:create-fabric-${rootProject.minecraft_version}:${rootProject.create_fabric_version}+mc${rootProject.minecraft_version}") + + // CC Restitched + modRuntimeOnly("maven.modrinth:cc-restitched:${rootProject.cc_restitched_version}+${rootProject.minecraft_version}") + + // Recipe Viewer + modLocalRuntime("dev.emi:emi:${rootProject.emi_version}+${rootProject.minecraft_version}") +} + +processResources { + inputs.property "mod_id", "${mod_id}" + inputs.property "version", "${version}" + inputs.property "name", "${name}" + inputs.property "description", "${description}" + inputs.property "authors", "${authors}" + inputs.property "github_project", "${github_project}" + inputs.property "fabric_loader_version", "${fabric_loader_version}" + inputs.property "minecraft_version", "${minecraft_version}" + inputs.property "architectury_version", "${architectury_version}" + + filesMatching("fabric.mod.json") { + expand( "mod_id": "${mod_id}", + "version": "${version}", + "name": "${name}", + "description": "${description}", + "authors": "${authors}", + "github_project": project.github_project, + "fabric_loader_version": "${fabric_loader_version}", + "minecraft_version": "${minecraft_version}", + "architectury_version": "${architectury_version}" + ) + } +} + +shadowJar { + exclude "architectury.common.json" + + configurations = [project.configurations.shadowCommon] + archiveClassifier = "dev-shadow" +} + +remapJar { + injectAccessWidener = true + input.set shadowJar.archiveFile + dependsOn shadowJar +} + +sourcesJar { + def commonSources = project(":common").sourcesJar + dependsOn commonSources + from commonSources.archiveFile.map { zipTree(it) } +} + +components.java { + withVariantsFromConfiguration(project.configurations.shadowRuntimeElements) { + skip() + } +} + +publishing { + publications { + mavenFabric(MavenPublication) { + artifactId = rootProject.archives_base_name + "-" + project.name + from components.java + } + } + + // See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing. + repositories { + // Add repositories to publish to here. + } +} + diff --git a/fabric/src/main/com/getitemfromblock/create_tweaked_controllers/CreateTweakedControllerFabric.java b/fabric/src/main/com/getitemfromblock/create_tweaked_controllers/CreateTweakedControllerFabric.java new file mode 100644 index 0000000..e69de29 diff --git a/src/main/resources/logo.png b/fabric/src/main/resources/assets/create_tweaked_controllers/logo.png similarity index 100% rename from src/main/resources/logo.png rename to fabric/src/main/resources/assets/create_tweaked_controllers/logo.png diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json new file mode 100644 index 0000000..2d138f3 --- /dev/null +++ b/fabric/src/main/resources/fabric.mod.json @@ -0,0 +1,31 @@ +{ + "schemaVersion": 1, + "id": "${mod_id}", + "version": "${version}", + "name": "${name}", + "description": "${description}", + "authors": [ + "${authors}" + ], + "contact": { + "sources": "https://github.com/${github_project}/" + }, + "license": "MIT", + "icon": "assets/create_tweaked_controllers/icon.png", + "environment": "*", + "entrypoints": { + "main": [ + "com.getitemfromblock.create_tweaked_controllers.fabric.TextBlockFabric" + ], + "client": [ + "io.github.slimeymc.text_block.fabric.TextBlockClientFabric" + ] + }, + "mixins": [ + "create_tweaked_controllers.mixins.json" + ], + "depends": { + "minecraft": "${minecraft_version}", + "fabricloader": ">=${fabric_loader_version}" + } +} \ No newline at end of file diff --git a/forge/.gitignore b/forge/.gitignore new file mode 100644 index 0000000..b63da45 --- /dev/null +++ b/forge/.gitignore @@ -0,0 +1,42 @@ +.gradle +build/ +!gradle/wrapper/gradle-wrapper.jar +!**/src/main/**/build/ +!**/src/test/**/build/ + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr +out/ +!**/src/main/**/out/ +!**/src/test/**/out/ + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache +bin/ +!**/src/main/**/bin/ +!**/src/test/**/bin/ + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/forge/build.gradle b/forge/build.gradle new file mode 100644 index 0000000..09591d5 --- /dev/null +++ b/forge/build.gradle @@ -0,0 +1,120 @@ +plugins { + id "com.github.johnrengelman.shadow" version "${shadow_plugin_version}" +} + +architectury { + platformSetupLoomIde() + forge() +} + +configurations { + common + shadowCommon // Don't use shadow from the shadow plugin since it *excludes* files. + compileClasspath.extendsFrom common + runtimeClasspath.extendsFrom common + developmentForge.extendsFrom common +} + +repositories { + // mavens for Forge-exclusives + maven { url = "https://maven.theillusivec4.top/" } // Curios + maven { // Create Forge and Registrate Forge + url = "https://maven.tterrag.com/" + content { + includeGroup("com.tterrag.registrate") + includeGroup("com.simibubi.create") + } + maven { url = uri("https://thedarkcolour.github.io/KotlinForForge/") } + } + maven { + // JEI + name 'Progwm16 maven' + url 'https://dvs1.progwml6.com/files/maven' + } +} + +dependencies { + forge("net.minecraftforge:forge:${rootProject.minecraft_version}-${rootProject.forge_version}") + // Remove the next line if you don't want to depend on the API + modApi("dev.architectury:architectury-forge:${rootProject.architectury_version}") + + common(project(path: ":common", configuration: "namedElements")) { transitive false } + shadowCommon(project(path: ":common", configuration: "transformProductionForge")) { transitive = false } + + // Create + modImplementation("com.simibubi.create:create-${rootProject.minecraft_version}:${rootProject.create_forge_version}:slim") { transitive = false } + modImplementation("com.jozufozu.flywheel:flywheel-forge-${rootProject.minecraft_version}:${rootProject.flywheel_version_forge}") + + // CC Tweaked + modRuntimeOnly("maven.modrinth:cc-tweaked:${rootProject.minecraft_version}-${rootProject.cc_tweaked_version}") + + // Controllable + modRuntimeOnly("curse.maven:controllable-317269:${rootProject.controllable_version}") + + // Recipe viewer + modLocalRuntime("mezz.jei:jei-${rootProject.minecraft_version}-forge:${rootProject.jei_version}") +} + +processResources { + inputs.property "mod_id", "${mod_id}" + inputs.property "version", "${version}" + inputs.property "name", "${name}" + inputs.property "description", "${description}" + inputs.property "authors", "${authors}" + inputs.property "github_project", "${github_project}" + inputs.property "forge_range", "${forge_range}" + inputs.property "create_range", "${create_range}" + inputs.property "minecraft_range", "${minecraft_range}" + + filesMatching("META-INF/mods.toml") { + expand( "mod_id": "${mod_id}", + "version": "${version}", + "name": "${name}", + "description": "${description}", + "authors": "${authors}", + "github_project": project.github_project, + "forge_range": "${forge_range}", + "create_range": "${create_range}", + "minecraft_range": "${minecraft_range}" + ) + } +} + +shadowJar { + exclude "fabric.mod.json" + exclude "architectury.common.json" + + configurations = [project.configurations.shadowCommon] + archiveClassifier = "dev-shadow" +} + +remapJar { + input.set shadowJar.archiveFile + dependsOn shadowJar +} + +sourcesJar { + def commonSources = project(":common").sourcesJar + dependsOn commonSources + from commonSources.archiveFile.map { zipTree(it) } +} + +components.java { + withVariantsFromConfiguration(project.configurations.shadowRuntimeElements) { + skip() + } +} + +publishing { + publications { + mavenForge(MavenPublication) { + artifactId = rootProject.archives_base_name + "-" + project.name + from components.java + } + } + + // See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing. + repositories { + // Add repositories to publish to here. + } +} diff --git a/forge/gradle.properties b/forge/gradle.properties new file mode 100644 index 0000000..20e9de3 --- /dev/null +++ b/forge/gradle.properties @@ -0,0 +1,3 @@ +loom.platform=forge +loader_platform=Forge +kotlin.stdlib.default.dependency=false diff --git a/forge/src/main/com/getitemfromblock/create_tweaked_controllers/CreateTweakedControllersForge.java b/forge/src/main/com/getitemfromblock/create_tweaked_controllers/CreateTweakedControllersForge.java new file mode 100644 index 0000000..1b23fdb --- /dev/null +++ b/forge/src/main/com/getitemfromblock/create_tweaked_controllers/CreateTweakedControllersForge.java @@ -0,0 +1,98 @@ +package com.getitemfromblock.create_tweaked_controllers; + +import com.getitemfromblock.create_tweaked_controllers.block.ModBlocks; +import com.getitemfromblock.create_tweaked_controllers.compat.ComputerCraft.ModComputerCraftProxy; +import com.getitemfromblock.create_tweaked_controllers.config.ModConfigs; +import com.getitemfromblock.create_tweaked_controllers.gui.ModMenuTypes; +import com.getitemfromblock.create_tweaked_controllers.item.ModItems; +import com.getitemfromblock.create_tweaked_controllers.packet.ModPackets; +import com.simibubi.create.Create; +import com.simibubi.create.foundation.data.CreateRegistrate; +import com.simibubi.create.foundation.utility.Components; +import com.simibubi.create.foundation.utility.Lang; +import com.simibubi.create.foundation.utility.LangBuilder; + +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.fml.DistExecutor; +import net.minecraftforge.fml.ModLoadingContext; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; +import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; + +// The value here should match an entry in the META-INF/mods.toml file +@Mod(CreateTweakedControllers.ID) +@Mod.EventBusSubscriber +public class CreateTweakedControllers +{ + public static final String ID = "create_tweaked_controllers"; + public static final String NAME = "Create: Tweaked Controllers"; + + private static final CreateRegistrate REGISTRATE = CreateRegistrate.create(ID); + + public CreateTweakedControllers() + { + ModLoadingContext modLoadingContext = ModLoadingContext.get(); + IEventBus eventBus = FMLJavaModLoadingContext.get().getModEventBus(); + IEventBus forgeEventBus = MinecraftForge.EVENT_BUS; + forgeEventBus.register(this); + eventBus.addListener(CreateTweakedControllers::init); + REGISTRATE.registerEventListeners(eventBus); + ModTab.register(); + ModItems.register(); + ModBlocks.register(); + ModBlockEntityTypes.register(); + ModMenuTypes.register(); + ModConfigs.register(modLoadingContext); + DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> ModClientStuff.onConstructor(eventBus, forgeEventBus)); + ModComputerCraftProxy.register(); + } + + public static void init(final FMLCommonSetupEvent event) + { + ModPackets.registerPackets(); + } + + public static CreateRegistrate registrate() + { + return REGISTRATE; + } + + public static ResourceLocation asResource(String path) + { + return new ResourceLocation(ID, path); + } + + public static MutableComponent translateDirect(String key, Object... args) + { + return Components.translatable(CreateTweakedControllers.ID + "." + key, Lang.resolveBuilders(args)); + } + + public static MutableComponent translateDirectRaw(String key, Object... args) + { + return Components.translatable(key, Lang.resolveBuilders(args)); + } + + public static LangBuilder builder() + { + return new LangBuilder(CreateTweakedControllers.ID); + } + + public static LangBuilder translate(String langKey, Object... args) + { + return builder().translate(langKey, args); + } + + public static void log(String message) + { + Create.LOGGER.info(message); + } + + public static void error(String message) + { + Create.LOGGER.error(message); + } +} diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/compat/Controllable/ControllerHandler.java b/forge/src/main/com/getitemfromblock/create_tweaked_controllers/compat/Controllable/ControllerHandler.java similarity index 100% rename from src/main/java/com/getitemfromblock/create_tweaked_controllers/compat/Controllable/ControllerHandler.java rename to forge/src/main/com/getitemfromblock/create_tweaked_controllers/compat/Controllable/ControllerHandler.java diff --git a/forge/src/main/com/getitemfromblock/create_tweaked_controllers/mixin/create/KineticBlockEntityMixin.java b/forge/src/main/com/getitemfromblock/create_tweaked_controllers/mixin/create/KineticBlockEntityMixin.java new file mode 100644 index 0000000..7e3a8d0 --- /dev/null +++ b/forge/src/main/com/getitemfromblock/create_tweaked_controllers/mixin/create/KineticBlockEntityMixin.java @@ -0,0 +1,18 @@ +package com.getitemfromblock.create_tweaked_controllers.mixin.create; + +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.CallbackInfoReturnable; + +import com.simibubi.create.content.kinetics.base.KineticBlockEntity; + +@Mixin(KineticBlockEntity.class) +public class KineticBlockEntityMixin +{ + @Inject(method = "getFlickerScore", at = @At("HEAD"), cancellable = true, remap = false) + private void getFlickerScoreMixin(CallbackInfoReturnable callback) + { + callback.setReturnValue(0); + } +} \ No newline at end of file diff --git a/src/main/resources/META-INF/mods.toml b/forge/src/main/resources/META-INF/mods.toml similarity index 69% rename from src/main/resources/META-INF/mods.toml rename to forge/src/main/resources/META-INF/mods.toml index a1060e7..6d33bf2 100644 --- a/src/main/resources/META-INF/mods.toml +++ b/forge/src/main/resources/META-INF/mods.toml @@ -1,19 +1,16 @@ modLoader = "javafml" -loaderVersion = "${loader_range}" +loaderVersion = "${forge_range}" license = "MIT" issueTrackerURL = "https://github.com/${github_project}/issues" [[mods]] -modId = "create_tweaked_controllers" +modId = "${mod_id}" version = "${version}" -displayName = "Create: Tweaked Controllers" +displayName = "${name}" displayURL="https://github.com/${github_project}" logoFile = "logo.png" -authors = "getItemFromBlock" -description = ''' -A Create Addon that adds a way of controlling contraptions using an advanced controller. -Compatible with Create 0.5.1+ -''' +authors = "${authors}" +description = "${description}" [[dependencies.create_tweaked_controllers]] modId = "forge" diff --git a/forge/src/main/resources/create_tweaked_controllers.mixins.json b/forge/src/main/resources/create_tweaked_controllers.mixins.json new file mode 100644 index 0000000..b18aeb1 --- /dev/null +++ b/forge/src/main/resources/create_tweaked_controllers.mixins.json @@ -0,0 +1,15 @@ +{ + "required": true, + "package": "com.getitemfromblock.create_tweaked_controllers.mixin", + "compatibilityLevel": "JAVA_17", + "mixins": [ + "create.KineticBlockEntityMixin" + ], + "client": [ + ], + "injectors": + { + "defaultRequire": 1 + }, + "minVersion": "0.8" +} \ No newline at end of file diff --git a/forge/src/main/resources/logo.png b/forge/src/main/resources/logo.png new file mode 100644 index 0000000..b72c00e Binary files /dev/null and b/forge/src/main/resources/logo.png differ diff --git a/forge/src/main/resources/pack.mcmeta b/forge/src/main/resources/pack.mcmeta new file mode 100644 index 0000000..b6bc3ed --- /dev/null +++ b/forge/src/main/resources/pack.mcmeta @@ -0,0 +1,6 @@ +{ + "pack": { + "description": "Create Tweaked Controllers resources", + "pack_format": 9 + } +} diff --git a/gradle.properties b/gradle.properties index 9767775..6e63206 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,33 +1,52 @@ # Sets default memory used for gradle commands. Can be overridden by user or command line properties. # This is required to provide enough memory for the Minecraft decompilation process. -org.gradle.jvmargs=-Xmx3G -org.gradle.daemon=false +org.gradle.jvmargs = -Xmx3G +org.gradle.daemon = false -modid = create_tweaked_controllers -modversion = 1.18.2-1.2.2 +maven_group = com.getItemFromBlock.create_tweaked_controllers +name = Create: Tweaked Controllers +archives_base_name = create_tweaked_controllers +mod_id = create_tweaked_controllers +version = 1.2.4 +authors = getItemFromBlock + +description = A Create Addon that adds a way of controlling contraptions using an advanced controller minecraft_version = 1.18.2 minecraft_range = [1.18.2,1.19) -forge_version = 40.1.60 -loader_range = [40,) -forge_range = [40.1.21,) -mixingradle_version = 0.7-SNAPSHOT -mixin_version = 0.8.5 +architectury_version = 4.11.93 +enabled_platforms = fabric,forge + +shadow_plugin_version = 7.1.2 + +# Fabric +fabric_loader_version = 0.15.7 +fabric_api_version = 0.77.0+1.18.2 -jei_version = 9.7.0.209 +# Forge +forge_version = 40.2.17 +forge_range = [40,) -controllable_version = 317269:4376751 +create_fabric_version = 0.5.1-f-build.1415 +create_forge_version = 0.5.1.f-332 -create_minecraft_version = 1.18.2 -flywheel_minecraft_version = 1.18.2 -create_version = 0.5.1.c-297 -flywheel_version = 0.6.9-101 +flywheel_version_forge = 0.6.10-105 +flywheel_version_fabric = 0.6.10-39 registrate_version = MC1.18.2-1.1.3 create_range = [0.5.1.a,) -cc_tweaked_version = 282001:4630521 +jei_version = 10.2.1.283 +emi_version = 0.7.3 + +cc_restitched_version = 1.100.8 +cc_tweaked_version = 1.101.3 + +controllable_version = 4376751 + +mixingradle_version = 0.7-SNAPSHOT +mixin_version = 0.8.5 # GitHub information github_project = getItemFromBlock/Create-Tweaked-Controllers \ No newline at end of file diff --git a/gradle/libs.version.toml b/gradle/libs.version.toml new file mode 100644 index 0000000..0b5cd88 --- /dev/null +++ b/gradle/libs.version.toml @@ -0,0 +1,47 @@ +[versions] +kotlin = "1.8.21" +minecraft = "1.18.2" +architectury = "4.11.93" # Might check each subproject + +forge = "1.18.2-40.2.4" + +fabric_loader = "0.15.7" +fabric_api = "0.77.0+1.18.2" + +create_fabric = "0.5.1-f-build.1415" +create_forge = "0.5.1.f-332" + +cc_restitched = "1.100.8+1.18.2" +cc_tweaked = "1.18.2-1.101.3" + +jei = "9.7.0.209" +emi = "0.7.3+1.18.2" + +[libraries] +minecraft = { module = "com.mojang:minecraft", version.ref = "minecraft" } +common_architectury = { module = "dev.architectury:architectury", version.ref = "architectury" } + +# Forge +forge_architectury = { module = "dev.architectury:architectury-forge", version.ref = "architectury" } +forge = { module = "net.minecraftforge:forge", version.ref = "forge" } + +# Fabric +fabric_architectury = { module = "dev.architectury:architectury-fabric", version.ref = "architectury" } +fabric_loader = { module = "net.fabricmc:fabric-loader", version.ref = "fabric_loader" } +fabric_api = { module = "net.fabricmc.fabric-api:fabric-api", version.ref = "fabric_api" } + +# Create +fabric_create = { module = "com.simibubi.create:create-fabric-1.18.2", version.ref = "create_fabric" } +forge_create = { module = "com.simibubi.create:create-1.18.2", version.ref = "create_forge" } + +# ComputerCraft +fabric_computercraft = { module = "maven.modrinth:cc-restitched", version.ref = "cc_restitched" } +forge_computercraft = { module = "maven.modrinth:cc-tweaked", version.ref = "cc_tweaked" } + +# Controllable +# forge_controllable = { module = "com.mrcrayfish:controllable-forge"} +forge_controllable = { module = "curse.maven:controllable-317269", version = "4376751" } + +# Recipe Viewer +fabric_emi = { module = "dev.emi:emi", version.ref = "emi" } +forge_jei = { module = "mezz.jei:jei-1.18.2", version.ref = "jei"} \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index ae04661..db9a6b8 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/settings.gradle.kts b/settings.gradle.kts new file mode 100644 index 0000000..9fde613 --- /dev/null +++ b/settings.gradle.kts @@ -0,0 +1,27 @@ +pluginManagement { + repositories { + maven { + name = "fabricmc" + url = uri("https://maven.fabricmc.net/") + } + maven { + name = "architectury" + url = uri("https://maven.architectury.dev/") + } + maven { + name = "forge" + url = uri("https://maven.minecraftforge.net/") + } + gradlePluginPortal() + } + plugins { + kotlin("jvm") version "2.1.0" + } +} + +include("common") +include("fabric") +include("forge") + +rootProject.name = "create_tweaked_controllers" + diff --git a/src/main/java/com/getitemfromblock/create_tweaked_controllers/ModClientEvents.java b/src/main/java/com/getitemfromblock/create_tweaked_controllers/ModClientEvents.java deleted file mode 100644 index d9ea428..0000000 --- a/src/main/java/com/getitemfromblock/create_tweaked_controllers/ModClientEvents.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.getitemfromblock.create_tweaked_controllers; - -import com.getitemfromblock.create_tweaked_controllers.gui.ModConfigScreen; -import com.getitemfromblock.create_tweaked_controllers.controller.TweakedLinkedControllerClientHandler; - -import net.minecraft.client.Minecraft; -import net.minecraftforge.event.TickEvent.ClientTickEvent; -import net.minecraftforge.event.TickEvent.Phase; -import net.minecraftforge.eventbus.api.EventPriority; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.ModContainer; -import net.minecraftforge.fml.ModList; -import net.minecraftforge.fml.common.Mod.EventBusSubscriber; -import net.minecraftforge.fml.event.lifecycle.FMLLoadCompleteEvent; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.client.ConfigGuiHandler; - -@EventBusSubscriber(Dist.CLIENT) -public class ModClientEvents -{ - @SubscribeEvent(priority = EventPriority.HIGHEST) // We need to catch the inputs as early as possible to cancel them - public static void onTick(ClientTickEvent event) - { - if (!isGameActive()) - return; - - //Level world = Minecraft.getInstance().level; - if (event.phase == Phase.START || Minecraft.getInstance().screen != null) - { - TweakedLinkedControllerClientHandler.tick(); - return; - } - } - - protected static boolean isGameActive() - { - return !(Minecraft.getInstance().level == null || Minecraft.getInstance().player == null); - } - - @EventBusSubscriber(value = Dist.CLIENT, bus = EventBusSubscriber.Bus.MOD) - public static class ModBusEvents - { - @SubscribeEvent - public static void onLoadComplete(FMLLoadCompleteEvent event) - { - ModContainer container = ModList.get() - .getModContainerById(CreateTweakedControllers.ID) - .orElseThrow(() -> new IllegalStateException("CreateTweakedControllers mod container missing on LoadComplete")); - container.registerExtensionPoint(ConfigGuiHandler.ConfigGuiFactory.class, - () -> new ConfigGuiHandler.ConfigGuiFactory( - (mc, previousScreen) -> new ModConfigScreen(previousScreen))); - } - } -} diff --git a/src/main/resources/pack.mcmeta b/src/main/resources/pack.mcmeta deleted file mode 100644 index 86d9caf..0000000 --- a/src/main/resources/pack.mcmeta +++ /dev/null @@ -1,8 +0,0 @@ -{ - "pack": { - "description": "Create Tweaked Controllers resources", - "pack_format": 9, - "forge:resource_pack_format": 8, - "forge:data_pack_format": 9 - } -}