diff --git a/build.gradle b/build.gradle index 1127153..3d49655 100644 --- a/build.gradle +++ b/build.gradle @@ -1,110 +1,35 @@ plugins { - id 'fabric-loom' version '0.2.6-SNAPSHOT' + id 'java-library' id 'maven-publish' } -sourceCompatibility = JavaVersion.VERSION_1_8 -targetCompatibility = JavaVersion.VERSION_1_8 +allprojects { + group = project.maven_group + version = project.mod_version -archivesBaseName = project.archives_base_name -version = project.mod_version -group = project.maven_group - -minecraft { -} - -repositories { - mavenLocal() - mavenCentral() - maven { url = 'https://aperlambda.github.io/maven' } - maven { - name = 'CottonMC' - url = 'http://server.bbkr.space:8081/artifactory/libs-snapshot' - } repositories { - maven { url = "https://jitpack.io" } + mavenLocal() + mavenCentral() + maven { url = 'https://aperlambda.github.io/maven' } } - // SpruceUI - ivy { - url 'https://github.com/LambdAurora/SpruceUI/releases/download/' - patternLayout { - artifact '[revision]/[module]-[version].[ext]' - } - metadataSources() { - artifact() - } + + dependencies { } - // OkZoomer - ivy { - url 'https://github.com/joaoh1/OkZoomer/releases/download/' - patternLayout { - artifact '[revision]/[module]-[version].[ext]' - } - metadataSources() { - artifact() - } + + tasks.withType(JavaCompile) { + options.encoding = "UTF-8" + } + + // Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task + // if it is present. + // If you remove this task, sources will not be generated. + task sourcesJar(type: Jar, dependsOn: classes) { + classifier = "sources" + from sourceSets.main.allSource } } -dependencies { - //to change the versions see the gradle.properties file - minecraft "com.mojang:minecraft:${project.minecraft_version}" - mappings "net.fabricmc:yarn:${project.yarn_mappings}" - modCompile "net.fabricmc:fabric-loader:${project.loader_version}" - - // Fabric API. This is technically optional, but you probably want it anyway. - modApi "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" - - modCompile "io.github.prospector:modmenu:1.8.0+build.16" - modCompile "me.lambdaurora:spruceui:${project.spruceui_version}" - include "me.lambdaurora:spruceui:${project.spruceui_version}" - //modCompile "io.github.cottonmc:cotton-client-commands:0.4.2+1.14.3-SNAPSHOT" - - // Compatibility mods - modCompile "io.github.joaoh1:okzoomer:1.0.3" - - implementation "org.jetbrains:annotations:17.0.0" - implementation "org.aperlambda:lambdajcommon:1.7.2" - implementation "com.electronwill.night-config:core:3.5.3" - implementation "com.electronwill.night-config:toml:3.5.3" - include "org.jetbrains:annotations:17.0.0" - include "org.aperlambda:lambdajcommon:1.7.2" - include "com.electronwill.night-config:core:3.5.3" - include "com.electronwill.night-config:toml:3.5.3" -} - -processResources { - inputs.property "version", project.version - - from(sourceSets.main.resources.srcDirs) { - include "fabric.mod.json" - expand "version": project.version - } - - from(sourceSets.main.resources.srcDirs) { - exclude "fabric.mod.json" - } -} - -// ensure that the encoding is set to UTF-8, no matter what the system default is -// this fixes some edge cases with special characters not displaying correctly -// see http://yodaconditions.net/blog/fix-for-java-file-encoding-problems-with-gradle.html -tasks.withType(JavaCompile) { - options.encoding = "UTF-8" -} - -// Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task -// if it is present. -// If you remove this task, sources will not be generated. -task sourcesJar(type: Jar, dependsOn: classes) { - classifier = "sources" - from sourceSets.main.allSource -} - -jar { - from "LICENSE" -} - +/* // configure the maven publication publishing { publications { @@ -123,4 +48,4 @@ publishing { repositories { mavenLocal() } -} +}*/ diff --git a/common/build.gradle b/common/build.gradle new file mode 100644 index 0000000..72c7400 --- /dev/null +++ b/common/build.gradle @@ -0,0 +1,15 @@ +plugins { + id 'java-library' +} + +dependencies { + api "org.jetbrains:annotations:17.0.0" + api "org.aperlambda:lambdajcommon:1.7.2" + api "com.electronwill.night-config:core:3.5.3" + api "com.electronwill.night-config:toml:3.5.3" +} + +java { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 +} diff --git a/src/main/java/me/lambdaurora/lambdacontrols/ControlsMode.java b/common/src/main/java/me/lambdaurora/lambdacontrols/ControlsMode.java similarity index 81% rename from src/main/java/me/lambdaurora/lambdacontrols/ControlsMode.java rename to common/src/main/java/me/lambdaurora/lambdacontrols/ControlsMode.java index 1a867c0..113a9d7 100644 --- a/src/main/java/me/lambdaurora/lambdacontrols/ControlsMode.java +++ b/common/src/main/java/me/lambdaurora/lambdacontrols/ControlsMode.java @@ -9,7 +9,6 @@ package me.lambdaurora.lambdacontrols; -import net.minecraft.client.resource.language.I18n; import org.aperlambda.lambdacommon.utils.Nameable; import org.jetbrains.annotations.NotNull; @@ -20,7 +19,7 @@ import java.util.Optional; * Represents the controls mode. * * @author LambdAurora - * @version 1.0.0 + * @version 1.1.0 * @since 1.0.0 */ public enum ControlsMode implements Nameable @@ -43,13 +42,14 @@ public enum ControlsMode implements Nameable } /** - * Gets the translated name of this controls mode. + * Gets the translation key of this controls mode. * - * @return The translated name of this controls mode. + * @return The translated key of this controls mode. + * @since 1.1.0 */ - public String get_translated_name() + public String get_translation_key() { - return I18n.translate("lambdacontrols.controls_mode." + this.get_name()); + return "lambdacontrols.controls_mode." + this.get_name(); } @Override diff --git a/common/src/main/java/me/lambdaurora/lambdacontrols/LambdaControlsConstants.java b/common/src/main/java/me/lambdaurora/lambdacontrols/LambdaControlsConstants.java new file mode 100644 index 0000000..e0c0c22 --- /dev/null +++ b/common/src/main/java/me/lambdaurora/lambdacontrols/LambdaControlsConstants.java @@ -0,0 +1,22 @@ +/* + * Copyright © 2020 LambdAurora + * + * This file is part of LambdaControls. + * + * Licensed under the MIT license. For more information, + * see the LICENSE file. + */ + +package me.lambdaurora.lambdacontrols; + +/** + * Represents the constants used by LambdaControls. + * + * @author LambdAurora + * @version 1.1.0 + * @since 1.1.0 + */ +public class LambdaControlsConstants +{ + public static final String NAMESPACE = "lambdacontrols"; +} diff --git a/elytra/build.gradle b/elytra/build.gradle new file mode 100644 index 0000000..9e84cb7 --- /dev/null +++ b/elytra/build.gradle @@ -0,0 +1,21 @@ +plugins { + id 'java-library' +} + +archivesBaseName = project.archives_base_name + "-elytra" + +repositories { + maven { url = 'https://hub.spigotmc.org/nexus/content/groups/public/' } + maven { url = 'https://mcelytra.github.io/maven/' } + maven { url = 'https://libraries.minecraft.net/' } +} + +dependencies { + api project(":common") + implementation "org.mcelytra:elytra-core:1.0.0-SNAPSHOT" +} + +java { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 +} \ No newline at end of file diff --git a/elytra/src/main/java/me/lambdaurora/lambdacontrols/event/PlayerControlsModeEvent.java b/elytra/src/main/java/me/lambdaurora/lambdacontrols/event/PlayerControlsModeEvent.java new file mode 100644 index 0000000..31dbd7d --- /dev/null +++ b/elytra/src/main/java/me/lambdaurora/lambdacontrols/event/PlayerControlsModeEvent.java @@ -0,0 +1,53 @@ +/* + * Copyright © 2020 LambdAurora + * + * This file is part of LambdaControls. + * + * Licensed under the MIT license. For more information, + * see the LICENSE file. + */ + +package me.lambdaurora.lambdacontrols.event; + +import me.lambdaurora.lambdacontrols.ControlsMode; +import me.lambdaurora.lambdacontrols.LambdaControlsConstants; +import org.aperlambda.lambdacommon.Identifier; +import org.jetbrains.annotations.NotNull; +import org.mcelytra.core.entity.EntityPlayer; +import org.mcelytra.core.event.HandlerList; +import org.mcelytra.core.event.player.PlayerEvent; + +/** + * Represents an event which is fired when a player change their controls mode. + * + * @author LambdAurora + * @version 1.1.0 + * @since 1.1.0 + */ +public class PlayerControlsModeEvent extends PlayerEvent +{ + private static final HandlerList HANDLERS = new HandlerList(); + private final ControlsMode controls_mode; + + public PlayerControlsModeEvent(@NotNull EntityPlayer player, @NotNull ControlsMode controls_mode) + { + super(new Identifier(LambdaControlsConstants.NAMESPACE, "player_controls_mode"), player, true); + this.controls_mode = controls_mode; + } + + /** + * Returns the controls mode of the player. + * + * @return The player's controls mode. + */ + public ControlsMode get_controls_mode() + { + return this.controls_mode; + } + + @Override + public @NotNull HandlerList get_handlers() + { + return HANDLERS; + } +} diff --git a/fabric/build.gradle b/fabric/build.gradle new file mode 100644 index 0000000..fea5727 --- /dev/null +++ b/fabric/build.gradle @@ -0,0 +1,87 @@ +plugins { + id 'fabric-loom' version '0.2.6-SNAPSHOT' + id 'java-library' + id 'maven-publish' +} + +archivesBaseName = project.archives_base_name + "-fabric" + +minecraft { +} + +repositories { + maven { + name = 'CottonMC' + url = 'http://server.bbkr.space:8081/artifactory/libs-snapshot' + } + repositories { + maven { url = "https://jitpack.io" } + } + // SpruceUI + ivy { + url 'https://github.com/LambdAurora/SpruceUI/releases/download/' + patternLayout { + artifact '[revision]/[module]-[version].[ext]' + } + metadataSources() { + artifact() + } + } + // OkZoomer + ivy { + url 'https://github.com/joaoh1/OkZoomer/releases/download/' + patternLayout { + artifact '[revision]/[module]-[version].[ext]' + } + metadataSources() { + artifact() + } + } +} + +dependencies { + //to change the versions see the gradle.properties file + minecraft "com.mojang:minecraft:${project.minecraft_version}" + mappings "net.fabricmc:yarn:${project.yarn_mappings}" + modCompile "net.fabricmc:fabric-loader:${project.loader_version}" + + // Fabric API. This is technically optional, but you probably want it anyway. + modApi "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" + + modCompile "io.github.prospector:modmenu:1.8.0+build.16" + modCompile "me.lambdaurora:spruceui:${project.spruceui_version}" + include "me.lambdaurora:spruceui:${project.spruceui_version}" + //modCompile "io.github.cottonmc:cotton-client-commands:0.4.2+1.14.3-SNAPSHOT" + + // Compatibility mods + modCompile "io.github.joaoh1:okzoomer:1.0.3" + + api project(":common") + include project(":common") + include "org.jetbrains:annotations:17.0.0" + include "org.aperlambda:lambdajcommon:1.7.2" + include "com.electronwill.night-config:core:3.5.3" + include "com.electronwill.night-config:toml:3.5.3" +} + +processResources { + inputs.property "version", project.version + + from(sourceSets.main.resources.srcDirs) { + include "fabric.mod.json" + expand "version": project.version + } + + from(sourceSets.main.resources.srcDirs) { + exclude "fabric.mod.json" + } +} + +java { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 +} + +jar { + from "../LICENSE" +} diff --git a/fabric/src/main/java/me/lambdaurora/lambdacontrols/LambdaControls.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/LambdaControls.java new file mode 100644 index 0000000..dfb2cc3 --- /dev/null +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/LambdaControls.java @@ -0,0 +1,74 @@ +/* + * Copyright © 2020 LambdAurora + * + * This file is part of LambdaControls. + * + * Licensed under the MIT license. For more information, + * see the LICENSE file. + */ + +package me.lambdaurora.lambdacontrols; + +import me.lambdaurora.lambdacontrols.event.PlayerChangeControlsModeCallback; +import net.fabricmc.api.ModInitializer; +import net.fabricmc.fabric.api.network.ServerSidePacketRegistry; +import net.minecraft.util.Identifier; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +/** + * Represents the LambdaControls mod. + * + * @author LambdAurora + * @version 1.1.0 + * @since 1.0.0 + */ +public class LambdaControls implements ModInitializer +{ + private static LambdaControls INSTANCE; + public static final Identifier CONTROLS_MODE_CHANNEL = new Identifier(LambdaControlsConstants.NAMESPACE, "controls_mode"); + + public final Logger logger = LogManager.getLogger("LambdaControls"); + + @Override + public void onInitialize() + { + INSTANCE = this; + this.log("Initializing LambdaControls..."); + + ServerSidePacketRegistry.INSTANCE.register(CONTROLS_MODE_CHANNEL, + (context, attached_data) -> ControlsMode.by_id(attached_data.readString(32)) + .ifPresent(controls_mode -> context.getTaskQueue() + .execute(() -> PlayerChangeControlsModeCallback.EVENT.invoker().apply(context.getPlayer(), controls_mode)))); + } + + /** + * Prints a message to the terminal. + * + * @param info The message to print. + */ + public void log(String info) + { + this.logger.info("[LambdaControls] " + info); + } + + /** + * Prints a warning to the terminal. + * + * @param warning The warning to print. + */ + public void warn(String warning) + { + this.logger.info("[LambdaControls] " + warning); + } + + /** + * Gets the LambdaControls instance. + * + * @return The LambdaControls instance. + */ + public static LambdaControls get() + { + return INSTANCE; + } +} diff --git a/src/main/java/me/lambdaurora/lambdacontrols/ButtonState.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/ButtonState.java similarity index 95% rename from src/main/java/me/lambdaurora/lambdacontrols/ButtonState.java rename to fabric/src/main/java/me/lambdaurora/lambdacontrols/client/ButtonState.java index 6002805..37b291c 100644 --- a/src/main/java/me/lambdaurora/lambdacontrols/ButtonState.java +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/ButtonState.java @@ -7,7 +7,7 @@ * see the LICENSE file. */ -package me.lambdaurora.lambdacontrols; +package me.lambdaurora.lambdacontrols.client; /** * Represents a button state. diff --git a/src/main/java/me/lambdaurora/lambdacontrols/ControllerType.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/ControllerType.java similarity index 97% rename from src/main/java/me/lambdaurora/lambdacontrols/ControllerType.java rename to fabric/src/main/java/me/lambdaurora/lambdacontrols/client/ControllerType.java index a51245e..be2a21b 100644 --- a/src/main/java/me/lambdaurora/lambdacontrols/ControllerType.java +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/ControllerType.java @@ -7,7 +7,7 @@ * see the LICENSE file. */ -package me.lambdaurora.lambdacontrols; +package me.lambdaurora.lambdacontrols.client; import net.minecraft.client.resource.language.I18n; import org.aperlambda.lambdacommon.utils.Nameable; diff --git a/src/main/java/me/lambdaurora/lambdacontrols/HudSide.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/HudSide.java similarity index 97% rename from src/main/java/me/lambdaurora/lambdacontrols/HudSide.java rename to fabric/src/main/java/me/lambdaurora/lambdacontrols/client/HudSide.java index be3328b..2d939cb 100644 --- a/src/main/java/me/lambdaurora/lambdacontrols/HudSide.java +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/HudSide.java @@ -7,7 +7,7 @@ * see the LICENSE file. */ -package me.lambdaurora.lambdacontrols; +package me.lambdaurora.lambdacontrols.client; import net.minecraft.client.resource.language.I18n; import org.aperlambda.lambdacommon.utils.Nameable; diff --git a/src/main/java/me/lambdaurora/lambdacontrols/LambdaControls.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/LambdaControlsClient.java similarity index 84% rename from src/main/java/me/lambdaurora/lambdacontrols/LambdaControls.java rename to fabric/src/main/java/me/lambdaurora/lambdacontrols/client/LambdaControlsClient.java index 9ccb482..47840ea 100644 --- a/src/main/java/me/lambdaurora/lambdacontrols/LambdaControls.java +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/LambdaControlsClient.java @@ -7,13 +7,16 @@ * see the LICENSE file. */ -package me.lambdaurora.lambdacontrols; +package me.lambdaurora.lambdacontrols.client; import com.mojang.blaze3d.platform.GlStateManager; -import me.lambdaurora.lambdacontrols.compat.LambdaControlsCompat; -import me.lambdaurora.lambdacontrols.controller.ButtonBinding; -import me.lambdaurora.lambdacontrols.controller.Controller; -import me.lambdaurora.lambdacontrols.gui.LambdaControlsHud; +import me.lambdaurora.lambdacontrols.ControlsMode; +import me.lambdaurora.lambdacontrols.LambdaControls; +import me.lambdaurora.lambdacontrols.LambdaControlsConstants; +import me.lambdaurora.lambdacontrols.client.compat.LambdaControlsCompat; +import me.lambdaurora.lambdacontrols.client.controller.ButtonBinding; +import me.lambdaurora.lambdacontrols.client.controller.Controller; +import me.lambdaurora.lambdacontrols.client.gui.LambdaControlsHud; import net.fabricmc.api.ClientModInitializer; import net.fabricmc.fabric.api.client.keybinding.FabricKeyBinding; import net.fabricmc.fabric.api.client.keybinding.KeyBindingRegistry; @@ -27,34 +30,30 @@ import net.minecraft.client.util.InputUtil; import net.minecraft.text.LiteralText; import net.minecraft.text.TranslatableText; import net.minecraft.util.Identifier; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; import org.aperlambda.lambdacommon.utils.Pair; import org.jetbrains.annotations.NotNull; import org.lwjgl.glfw.GLFW; /** - * Represents the LambdaControls mod. + * Represents the LambdaControls client mod. * * @author LambdAurora * @version 1.1.0 - * @since 1.0.0 + * @since 1.1.0 */ -public class LambdaControls implements ClientModInitializer +public class LambdaControlsClient extends LambdaControls implements ClientModInitializer { - private static LambdaControls INSTANCE; - public static final String MODID = "lambdacontrols"; - public static final FabricKeyBinding BINDING_LOOK_UP = FabricKeyBinding.Builder.create(new Identifier(MODID, "look_up"), + private static LambdaControlsClient INSTANCE; + public static final FabricKeyBinding BINDING_LOOK_UP = FabricKeyBinding.Builder.create(new Identifier(LambdaControlsConstants.NAMESPACE, "look_up"), InputUtil.Type.KEYSYM, GLFW.GLFW_KEY_KP_8, "key.categories.movement").build(); - public static final FabricKeyBinding BINDING_LOOK_RIGHT = FabricKeyBinding.Builder.create(new Identifier(MODID, "look_right"), + public static final FabricKeyBinding BINDING_LOOK_RIGHT = FabricKeyBinding.Builder.create(new Identifier(LambdaControlsConstants.NAMESPACE, "look_right"), InputUtil.Type.KEYSYM, GLFW.GLFW_KEY_KP_6, "key.categories.movement").build(); - public static final FabricKeyBinding BINDING_LOOK_DOWN = FabricKeyBinding.Builder.create(new Identifier(MODID, "look_down"), + public static final FabricKeyBinding BINDING_LOOK_DOWN = FabricKeyBinding.Builder.create(new Identifier(LambdaControlsConstants.NAMESPACE, "look_down"), InputUtil.Type.KEYSYM, GLFW.GLFW_KEY_KP_2, "key.categories.movement").build(); - public static final FabricKeyBinding BINDING_LOOK_LEFT = FabricKeyBinding.Builder.create(new Identifier(MODID, "look_left"), + public static final FabricKeyBinding BINDING_LOOK_LEFT = FabricKeyBinding.Builder.create(new Identifier(LambdaControlsConstants.NAMESPACE, "look_left"), InputUtil.Type.KEYSYM, GLFW.GLFW_KEY_KP_4, "key.categories.movement").build(); - public static final Identifier CONTROLLER_BUTTONS = new Identifier(MODID, "textures/gui/controller_buttons.png"); - public static final Identifier CONTROLLER_AXIS = new Identifier(MODID, "textures/gui/controller_axis.png"); - public final Logger logger = LogManager.getLogger("LambdaControls"); + public static final Identifier CONTROLLER_BUTTONS = new Identifier(LambdaControlsConstants.NAMESPACE, "textures/gui/controller_buttons.png"); + public static final Identifier CONTROLLER_AXIS = new Identifier(LambdaControlsConstants.NAMESPACE, "textures/gui/controller_axis.png"); public final LambdaControlsConfig config = new LambdaControlsConfig(this); public final LambdaInput input = new LambdaInput(this); private LambdaControlsHud hud; @@ -64,8 +63,6 @@ public class LambdaControls implements ClientModInitializer public void onInitializeClient() { INSTANCE = this; - this.log("Initializing LambdaControls..."); - KeyBindingRegistry.INSTANCE.register(BINDING_LOOK_UP); KeyBindingRegistry.INSTANCE.register(BINDING_LOOK_RIGHT); KeyBindingRegistry.INSTANCE.register(BINDING_LOOK_DOWN); @@ -137,31 +134,11 @@ public class LambdaControls implements ClientModInitializer } /** - * Prints a message to the terminal. + * Gets the LambdaControls client instance. * - * @param info The message to print. + * @return The LambdaControls client instance. */ - public void log(String info) - { - this.logger.info("[LambdaControls] " + info); - } - - /** - * Prints a warning to the terminal. - * - * @param warning The warning to print. - */ - public void warn(String warning) - { - this.logger.info("[LambdaControls] " + warning); - } - - /** - * Gets the LambdaControls instance. - * - * @return The LambdaControls instance. - */ - public static LambdaControls get() + public static LambdaControlsClient get() { return INSTANCE; } @@ -267,7 +244,7 @@ public class LambdaControls implements ClientModInitializer break; } - client.getTextureManager().bindTexture(axis ? LambdaControls.CONTROLLER_AXIS : LambdaControls.CONTROLLER_BUTTONS); + client.getTextureManager().bindTexture(axis ? LambdaControlsClient.CONTROLLER_AXIS : LambdaControlsClient.CONTROLLER_BUTTONS); GlStateManager.disableDepthTest(); GlStateManager.color4f(1.0F, second ? 0.0F : 1.0F, 1.0F, 1.0F); diff --git a/src/main/java/me/lambdaurora/lambdacontrols/LambdaControlsConfig.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/LambdaControlsConfig.java similarity index 91% rename from src/main/java/me/lambdaurora/lambdacontrols/LambdaControlsConfig.java rename to fabric/src/main/java/me/lambdaurora/lambdacontrols/client/LambdaControlsConfig.java index d29d88f..6941f89 100644 --- a/src/main/java/me/lambdaurora/lambdacontrols/LambdaControlsConfig.java +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/LambdaControlsConfig.java @@ -7,12 +7,13 @@ * see the LICENSE file. */ -package me.lambdaurora.lambdacontrols; +package me.lambdaurora.lambdacontrols.client; import com.electronwill.nightconfig.core.file.FileConfig; -import me.lambdaurora.lambdacontrols.controller.ButtonBinding; -import me.lambdaurora.lambdacontrols.controller.Controller; -import me.lambdaurora.lambdacontrols.controller.InputManager; +import me.lambdaurora.lambdacontrols.ControlsMode; +import me.lambdaurora.lambdacontrols.client.controller.ButtonBinding; +import me.lambdaurora.lambdacontrols.client.controller.Controller; +import me.lambdaurora.lambdacontrols.client.controller.InputManager; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.lwjgl.glfw.GLFW; @@ -21,6 +22,7 @@ import java.util.Arrays; import java.util.Optional; import java.util.regex.Matcher; import java.util.regex.Pattern; +import java.util.stream.Collectors; import static org.lwjgl.glfw.GLFW.GLFW_GAMEPAD_AXIS_LEFT_X; import static org.lwjgl.glfw.GLFW.GLFW_GAMEPAD_AXIS_LEFT_Y; @@ -30,8 +32,8 @@ import static org.lwjgl.glfw.GLFW.GLFW_GAMEPAD_AXIS_LEFT_Y; */ public class LambdaControlsConfig { - private static final ControlsMode DEFAULT_CONTROLS_MODE = ControlsMode.DEFAULT; - private static final boolean DEFAULT_AUTO_SWITCH_MODE = false; + private static final ControlsMode DEFAULT_CONTROLS_MODE = ControlsMode.DEFAULT; + private static final boolean DEFAULT_AUTO_SWITCH_MODE = false; private static final boolean DEFAULT_HUD_ENABLE = true; private static final HudSide DEFAULT_HUD_SIDE = HudSide.LEFT; private static final ControllerType DEFAULT_CONTROLLER_TYPE = ControllerType.DEFAULT; @@ -41,19 +43,19 @@ public class LambdaControlsConfig private static final Pattern BUTTON_BINDING_PATTERN = Pattern.compile("(-?\\d+)\\+?"); - private final FileConfig config = FileConfig.builder("config/lambdacontrols.toml").concurrent().defaultResource("/config.toml").build(); - private final LambdaControls mod; - private ControlsMode controls_mode; - private ControllerType controller_type; + protected final FileConfig config = FileConfig.builder("config/lambdacontrols.toml").concurrent().defaultResource("/config.toml").build(); + private final LambdaControlsClient mod; + private ControlsMode controls_mode; + private ControllerType controller_type; // HUD settings. - private boolean hud_enable; - private HudSide hud_side; + private boolean hud_enable; + private HudSide hud_side; // Controller settings - private double dead_zone; - private double rotation_speed; - private double mouse_speed; + private double dead_zone; + private double rotation_speed; + private double mouse_speed; - public LambdaControlsConfig(@NotNull LambdaControls mod) + public LambdaControlsConfig(@NotNull LambdaControlsClient mod) { this.mod = mod; } @@ -117,7 +119,8 @@ public class LambdaControlsConfig this.set_rotation_speed(DEFAULT_ROTATION_SPEED); this.set_mouse_speed(DEFAULT_MOUSE_SPEED); - InputManager.stream_bindings().forEach(binding -> this.set_button_binding(binding, binding.get_default_button())); + // Collect prevents concurrent modification. + InputManager.stream_bindings().collect(Collectors.toList()).forEach(binding -> this.set_button_binding(binding, binding.get_default_button())); } /** diff --git a/src/main/java/me/lambdaurora/lambdacontrols/LambdaControlsModMenu.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/LambdaControlsModMenu.java similarity index 78% rename from src/main/java/me/lambdaurora/lambdacontrols/LambdaControlsModMenu.java rename to fabric/src/main/java/me/lambdaurora/lambdacontrols/client/LambdaControlsModMenu.java index 97dbae4..5ff0a76 100644 --- a/src/main/java/me/lambdaurora/lambdacontrols/LambdaControlsModMenu.java +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/LambdaControlsModMenu.java @@ -7,10 +7,11 @@ * see the LICENSE file. */ -package me.lambdaurora.lambdacontrols; +package me.lambdaurora.lambdacontrols.client; import io.github.prospector.modmenu.api.ModMenuApi; -import me.lambdaurora.lambdacontrols.gui.LambdaControlsSettingsScreen; +import me.lambdaurora.lambdacontrols.LambdaControlsConstants; +import me.lambdaurora.lambdacontrols.client.gui.LambdaControlsSettingsScreen; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.screen.Screen; @@ -28,7 +29,7 @@ public class LambdaControlsModMenu implements ModMenuApi @Override public String getModId() { - return LambdaControls.MODID; + return LambdaControlsConstants.NAMESPACE; } @Override diff --git a/src/main/java/me/lambdaurora/lambdacontrols/LambdaInput.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/LambdaInput.java similarity index 96% rename from src/main/java/me/lambdaurora/lambdacontrols/LambdaInput.java rename to fabric/src/main/java/me/lambdaurora/lambdacontrols/client/LambdaInput.java index 1c52de0..aa559dc 100644 --- a/src/main/java/me/lambdaurora/lambdacontrols/LambdaInput.java +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/LambdaInput.java @@ -7,16 +7,16 @@ * see the LICENSE file. */ -package me.lambdaurora.lambdacontrols; +package me.lambdaurora.lambdacontrols.client; -import me.lambdaurora.lambdacontrols.controller.ButtonBinding; -import me.lambdaurora.lambdacontrols.controller.Controller; -import me.lambdaurora.lambdacontrols.controller.InputManager; -import me.lambdaurora.lambdacontrols.gui.LambdaControlsControlsScreen; -import me.lambdaurora.lambdacontrols.gui.TouchscreenOverlay; -import me.lambdaurora.lambdacontrols.mixin.EntryListWidgetAccessor; -import me.lambdaurora.lambdacontrols.util.AbstractContainerScreenAccessor; -import me.lambdaurora.lambdacontrols.util.MouseAccessor; +import me.lambdaurora.lambdacontrols.client.controller.ButtonBinding; +import me.lambdaurora.lambdacontrols.client.controller.Controller; +import me.lambdaurora.lambdacontrols.client.controller.InputManager; +import me.lambdaurora.lambdacontrols.client.gui.LambdaControlsControlsScreen; +import me.lambdaurora.lambdacontrols.client.gui.TouchscreenOverlay; +import me.lambdaurora.lambdacontrols.client.mixin.EntryListWidgetAccessor; +import me.lambdaurora.lambdacontrols.client.util.AbstractContainerScreenAccessor; +import me.lambdaurora.lambdacontrols.client.util.MouseAccessor; import me.lambdaurora.spruceui.SpruceLabelWidget; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.Element; @@ -46,7 +46,7 @@ import java.util.HashMap; import java.util.Map; import java.util.Optional; -import static me.lambdaurora.lambdacontrols.controller.ButtonBinding.axis_as_button; +import static me.lambdaurora.lambdacontrols.client.controller.ButtonBinding.axis_as_button; import static org.lwjgl.glfw.GLFW.*; /** @@ -77,7 +77,7 @@ public class LambdaInput private float mouse_speed_x = 0.F; private float mouse_speed_y = 0.F; - public LambdaInput(@NotNull LambdaControls mod) + public LambdaInput(@NotNull LambdaControlsClient mod) { this.config = mod.config; } @@ -93,14 +93,14 @@ public class LambdaInput this.prev_target_pitch = this.target_pitch; // Handles the key bindings. - if (LambdaControls.BINDING_LOOK_UP.isPressed()) { + if (LambdaControlsClient.BINDING_LOOK_UP.isPressed()) { this.handle_look(client, GLFW_GAMEPAD_AXIS_RIGHT_Y, 0.8F, 2); - } else if (LambdaControls.BINDING_LOOK_DOWN.isPressed()) { + } else if (LambdaControlsClient.BINDING_LOOK_DOWN.isPressed()) { this.handle_look(client, GLFW_GAMEPAD_AXIS_RIGHT_Y, 0.8F, 1); } - if (LambdaControls.BINDING_LOOK_LEFT.isPressed()) { + if (LambdaControlsClient.BINDING_LOOK_LEFT.isPressed()) { this.handle_look(client, GLFW_GAMEPAD_AXIS_RIGHT_X, 0.8F, 2); - } else if (LambdaControls.BINDING_LOOK_RIGHT.isPressed()) { + } else if (LambdaControlsClient.BINDING_LOOK_RIGHT.isPressed()) { this.handle_look(client, GLFW_GAMEPAD_AXIS_RIGHT_X, 0.8F, 1); } } diff --git a/src/main/java/me/lambdaurora/lambdacontrols/compat/CompatHandler.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/compat/CompatHandler.java similarity index 74% rename from src/main/java/me/lambdaurora/lambdacontrols/compat/CompatHandler.java rename to fabric/src/main/java/me/lambdaurora/lambdacontrols/client/compat/CompatHandler.java index 6a4f41d..7bc6a7f 100644 --- a/src/main/java/me/lambdaurora/lambdacontrols/compat/CompatHandler.java +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/compat/CompatHandler.java @@ -7,9 +7,9 @@ * see the LICENSE file. */ -package me.lambdaurora.lambdacontrols.compat; +package me.lambdaurora.lambdacontrols.client.compat; -import me.lambdaurora.lambdacontrols.LambdaControls; +import me.lambdaurora.lambdacontrols.client.LambdaControlsClient; import org.jetbrains.annotations.NotNull; /** @@ -26,5 +26,5 @@ public interface CompatHandler * * @param mod This mod instance. */ - void handle(@NotNull LambdaControls mod); + void handle(@NotNull LambdaControlsClient mod); } diff --git a/src/main/java/me/lambdaurora/lambdacontrols/compat/LambdaControlsCompat.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/compat/LambdaControlsCompat.java similarity index 78% rename from src/main/java/me/lambdaurora/lambdacontrols/compat/LambdaControlsCompat.java rename to fabric/src/main/java/me/lambdaurora/lambdacontrols/client/compat/LambdaControlsCompat.java index de25272..ced6326 100644 --- a/src/main/java/me/lambdaurora/lambdacontrols/compat/LambdaControlsCompat.java +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/compat/LambdaControlsCompat.java @@ -7,10 +7,10 @@ * see the LICENSE file. */ -package me.lambdaurora.lambdacontrols.compat; +package me.lambdaurora.lambdacontrols.client.compat; -import me.lambdaurora.lambdacontrols.LambdaControls; -import me.lambdaurora.lambdacontrols.controller.InputManager; +import me.lambdaurora.lambdacontrols.client.LambdaControlsClient; +import me.lambdaurora.lambdacontrols.client.controller.InputManager; import net.fabricmc.loader.api.FabricLoader; import org.aperlambda.lambdacommon.utils.LambdaReflection; import org.jetbrains.annotations.NotNull; @@ -29,7 +29,7 @@ public class LambdaControlsCompat * * @param mod The mod instance. */ - public static void init(@NotNull LambdaControls mod) + public static void init(@NotNull LambdaControlsClient mod) { if (FabricLoader.getInstance().isModLoaded("okzoomer") && LambdaReflection.does_class_exist(OkZoomerCompat.OKZOOMER_CLASS_PATH)) { mod.log("Adding okzoomer compatibility..."); diff --git a/src/main/java/me/lambdaurora/lambdacontrols/compat/OkZoomerCompat.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/compat/OkZoomerCompat.java similarity index 80% rename from src/main/java/me/lambdaurora/lambdacontrols/compat/OkZoomerCompat.java rename to fabric/src/main/java/me/lambdaurora/lambdacontrols/client/compat/OkZoomerCompat.java index ecfa571..2548563 100644 --- a/src/main/java/me/lambdaurora/lambdacontrols/compat/OkZoomerCompat.java +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/compat/OkZoomerCompat.java @@ -7,11 +7,11 @@ * see the LICENSE file. */ -package me.lambdaurora.lambdacontrols.compat; +package me.lambdaurora.lambdacontrols.client.compat; -import me.lambdaurora.lambdacontrols.LambdaControls; -import me.lambdaurora.lambdacontrols.controller.ButtonBinding; -import me.lambdaurora.lambdacontrols.controller.InputManager; +import me.lambdaurora.lambdacontrols.client.LambdaControlsClient; +import me.lambdaurora.lambdacontrols.client.controller.ButtonBinding; +import me.lambdaurora.lambdacontrols.client.controller.InputManager; import net.fabricmc.fabric.api.client.keybinding.FabricKeyBinding; import org.aperlambda.lambdacommon.utils.LambdaReflection; import org.jetbrains.annotations.NotNull; @@ -29,7 +29,7 @@ public class OkZoomerCompat implements CompatHandler public static final String OKZOOMER_CLASS_PATH = "io.github.joaoh1.okzoomer.OkZoomer"; @Override - public void handle(@NotNull LambdaControls mod) + public void handle(@NotNull LambdaControlsClient mod) { LambdaReflection.get_first_field_of_type(io.github.joaoh1.okzoomer.OkZoomer.class, FabricKeyBinding.class) .map(field -> (FabricKeyBinding) LambdaReflection.get_field_value(null, field)) diff --git a/src/main/java/me/lambdaurora/lambdacontrols/controller/ButtonBinding.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/controller/ButtonBinding.java similarity index 98% rename from src/main/java/me/lambdaurora/lambdacontrols/controller/ButtonBinding.java rename to fabric/src/main/java/me/lambdaurora/lambdacontrols/client/controller/ButtonBinding.java index 52d04af..b73668a 100644 --- a/src/main/java/me/lambdaurora/lambdacontrols/controller/ButtonBinding.java +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/controller/ButtonBinding.java @@ -7,9 +7,9 @@ * see the LICENSE file. */ -package me.lambdaurora.lambdacontrols.controller; +package me.lambdaurora.lambdacontrols.client.controller; -import me.lambdaurora.lambdacontrols.ButtonState; +import me.lambdaurora.lambdacontrols.client.ButtonState; import net.minecraft.client.MinecraftClient; import net.minecraft.client.options.GameOptions; import net.minecraft.client.options.KeyBinding; @@ -22,8 +22,8 @@ import org.lwjgl.glfw.GLFW; import java.util.*; import java.util.stream.Collectors; -import static me.lambdaurora.lambdacontrols.controller.InputManager.register_binding; -import static me.lambdaurora.lambdacontrols.controller.InputManager.register_default_category; +import static me.lambdaurora.lambdacontrols.client.controller.InputManager.register_binding; +import static me.lambdaurora.lambdacontrols.client.controller.InputManager.register_default_category; /** * Represents a button binding. diff --git a/src/main/java/me/lambdaurora/lambdacontrols/controller/ButtonCategory.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/controller/ButtonCategory.java similarity index 97% rename from src/main/java/me/lambdaurora/lambdacontrols/controller/ButtonCategory.java rename to fabric/src/main/java/me/lambdaurora/lambdacontrols/client/controller/ButtonCategory.java index 6d686eb..8782e1d 100644 --- a/src/main/java/me/lambdaurora/lambdacontrols/controller/ButtonCategory.java +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/controller/ButtonCategory.java @@ -7,7 +7,7 @@ * see the LICENSE file. */ -package me.lambdaurora.lambdacontrols.controller; +package me.lambdaurora.lambdacontrols.client.controller; import net.minecraft.client.resource.language.I18n; import org.aperlambda.lambdacommon.Identifier; diff --git a/src/main/java/me/lambdaurora/lambdacontrols/controller/Controller.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/controller/Controller.java similarity index 94% rename from src/main/java/me/lambdaurora/lambdacontrols/controller/Controller.java rename to fabric/src/main/java/me/lambdaurora/lambdacontrols/client/controller/Controller.java index 5c0ee8d..ef86650 100644 --- a/src/main/java/me/lambdaurora/lambdacontrols/controller/Controller.java +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/controller/Controller.java @@ -7,9 +7,9 @@ * see the LICENSE file. */ -package me.lambdaurora.lambdacontrols.controller; +package me.lambdaurora.lambdacontrols.client.controller; -import me.lambdaurora.lambdacontrols.LambdaControls; +import me.lambdaurora.lambdacontrols.client.LambdaControlsClient; import org.aperlambda.lambdacommon.utils.Nameable; import org.jetbrains.annotations.NotNull; import org.lwjgl.glfw.GLFW; @@ -116,7 +116,7 @@ public class Controller implements Nameable public static @NotNull Controller by_id(int id) { if (id > GLFW.GLFW_JOYSTICK_LAST) { - LambdaControls.get().log("Controller '" + id + "' doesn't exist."); + LambdaControlsClient.get().log("Controller '" + id + "' doesn't exist."); id = GLFW.GLFW_JOYSTICK_LAST; } Controller controller; @@ -170,7 +170,7 @@ public class Controller implements Nameable File mappings_file = new File("config/gamecontrollerdb.txt"); if (!mappings_file.exists()) return; - LambdaControls.get().log("Updating controller mappings..."); + LambdaControlsClient.get().log("Updating controller mappings..."); ByteBuffer buffer = io_resource_to_buffer(mappings_file.getPath(), 1024); GLFW.glfwUpdateGamepadMappings(buffer); } catch (IOException e) { diff --git a/src/main/java/me/lambdaurora/lambdacontrols/controller/InputHandlers.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/controller/InputHandlers.java similarity index 93% rename from src/main/java/me/lambdaurora/lambdacontrols/controller/InputHandlers.java rename to fabric/src/main/java/me/lambdaurora/lambdacontrols/client/controller/InputHandlers.java index 1961c9c..f4f1a82 100644 --- a/src/main/java/me/lambdaurora/lambdacontrols/controller/InputHandlers.java +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/controller/InputHandlers.java @@ -7,11 +7,11 @@ * see the LICENSE file. */ -package me.lambdaurora.lambdacontrols.controller; +package me.lambdaurora.lambdacontrols.client.controller; -import me.lambdaurora.lambdacontrols.ButtonState; -import me.lambdaurora.lambdacontrols.util.CreativeInventoryScreenAccessor; -import me.lambdaurora.lambdacontrols.util.KeyBindingAccessor; +import me.lambdaurora.lambdacontrols.client.ButtonState; +import me.lambdaurora.lambdacontrols.client.util.CreativeInventoryScreenAccessor; +import me.lambdaurora.lambdacontrols.client.util.KeyBindingAccessor; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.screen.ingame.AbstractContainerScreen; import net.minecraft.client.gui.screen.ingame.CreativeInventoryScreen; diff --git a/src/main/java/me/lambdaurora/lambdacontrols/controller/InputManager.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/controller/InputManager.java similarity index 98% rename from src/main/java/me/lambdaurora/lambdacontrols/controller/InputManager.java rename to fabric/src/main/java/me/lambdaurora/lambdacontrols/client/controller/InputManager.java index b008138..87709d5 100644 --- a/src/main/java/me/lambdaurora/lambdacontrols/controller/InputManager.java +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/controller/InputManager.java @@ -7,10 +7,10 @@ * see the LICENSE file. */ -package me.lambdaurora.lambdacontrols.controller; +package me.lambdaurora.lambdacontrols.client.controller; -import me.lambdaurora.lambdacontrols.ButtonState; -import me.lambdaurora.lambdacontrols.LambdaControlsConfig; +import me.lambdaurora.lambdacontrols.client.ButtonState; +import me.lambdaurora.lambdacontrols.client.LambdaControlsConfig; import net.minecraft.client.MinecraftClient; import org.aperlambda.lambdacommon.Identifier; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/me/lambdaurora/lambdacontrols/controller/PressAction.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/controller/PressAction.java similarity index 84% rename from src/main/java/me/lambdaurora/lambdacontrols/controller/PressAction.java rename to fabric/src/main/java/me/lambdaurora/lambdacontrols/client/controller/PressAction.java index c0c8041..50fd10c 100644 --- a/src/main/java/me/lambdaurora/lambdacontrols/controller/PressAction.java +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/controller/PressAction.java @@ -7,10 +7,10 @@ * see the LICENSE file. */ -package me.lambdaurora.lambdacontrols.controller; +package me.lambdaurora.lambdacontrols.client.controller; -import me.lambdaurora.lambdacontrols.ButtonState; -import me.lambdaurora.lambdacontrols.util.KeyBindingAccessor; +import me.lambdaurora.lambdacontrols.client.ButtonState; +import me.lambdaurora.lambdacontrols.client.util.KeyBindingAccessor; import net.minecraft.client.MinecraftClient; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/me/lambdaurora/lambdacontrols/gui/ControllerButtonWidget.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/gui/ControllerButtonWidget.java similarity index 84% rename from src/main/java/me/lambdaurora/lambdacontrols/gui/ControllerButtonWidget.java rename to fabric/src/main/java/me/lambdaurora/lambdacontrols/client/gui/ControllerButtonWidget.java index 422c401..ac91152 100644 --- a/src/main/java/me/lambdaurora/lambdacontrols/gui/ControllerButtonWidget.java +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/gui/ControllerButtonWidget.java @@ -7,10 +7,10 @@ * see the LICENSE file. */ -package me.lambdaurora.lambdacontrols.gui; +package me.lambdaurora.lambdacontrols.client.gui; -import me.lambdaurora.lambdacontrols.LambdaControls; -import me.lambdaurora.lambdacontrols.controller.ButtonBinding; +import me.lambdaurora.lambdacontrols.client.LambdaControlsClient; +import me.lambdaurora.lambdacontrols.client.controller.ButtonBinding; import me.lambdaurora.spruceui.AbstractIconButtonWidget; import net.minecraft.client.MinecraftClient; import net.minecraft.client.resource.language.I18n; @@ -52,7 +52,7 @@ public class ControllerButtonWidget extends AbstractIconButtonWidget if (this.binding.get_button().length > 1) { x += (this.width / 2 - this.icon_width / 2) - 4; } - Pair size = LambdaControls.draw_button(x, y, this.binding, MinecraftClient.getInstance()); + Pair size = LambdaControlsClient.draw_button(x, y, this.binding, MinecraftClient.getInstance()); this.icon_width = size.get_key(); return size.get_value(); } diff --git a/src/main/java/me/lambdaurora/lambdacontrols/gui/ControlsListWidget.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/gui/ControlsListWidget.java similarity index 96% rename from src/main/java/me/lambdaurora/lambdacontrols/gui/ControlsListWidget.java rename to fabric/src/main/java/me/lambdaurora/lambdacontrols/client/gui/ControlsListWidget.java index 94d0946..a11f7e0 100644 --- a/src/main/java/me/lambdaurora/lambdacontrols/gui/ControlsListWidget.java +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/gui/ControlsListWidget.java @@ -7,11 +7,11 @@ * see the LICENSE file. */ -package me.lambdaurora.lambdacontrols.gui; +package me.lambdaurora.lambdacontrols.client.gui; -import me.lambdaurora.lambdacontrols.controller.ButtonBinding; -import me.lambdaurora.lambdacontrols.controller.ButtonCategory; -import me.lambdaurora.lambdacontrols.controller.InputManager; +import me.lambdaurora.lambdacontrols.client.controller.ButtonBinding; +import me.lambdaurora.lambdacontrols.client.controller.ButtonCategory; +import me.lambdaurora.lambdacontrols.client.controller.InputManager; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.MinecraftClient; diff --git a/src/main/java/me/lambdaurora/lambdacontrols/gui/LambdaControlsControlsScreen.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/gui/LambdaControlsControlsScreen.java similarity index 88% rename from src/main/java/me/lambdaurora/lambdacontrols/gui/LambdaControlsControlsScreen.java rename to fabric/src/main/java/me/lambdaurora/lambdacontrols/client/gui/LambdaControlsControlsScreen.java index ed82aa8..3b0354f 100644 --- a/src/main/java/me/lambdaurora/lambdacontrols/gui/LambdaControlsControlsScreen.java +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/gui/LambdaControlsControlsScreen.java @@ -7,11 +7,11 @@ * see the LICENSE file. */ -package me.lambdaurora.lambdacontrols.gui; +package me.lambdaurora.lambdacontrols.client.gui; -import me.lambdaurora.lambdacontrols.LambdaControls; -import me.lambdaurora.lambdacontrols.controller.ButtonBinding; -import me.lambdaurora.lambdacontrols.controller.InputManager; +import me.lambdaurora.lambdacontrols.client.LambdaControlsClient; +import me.lambdaurora.lambdacontrols.client.controller.ButtonBinding; +import me.lambdaurora.lambdacontrols.client.controller.InputManager; import me.lambdaurora.spruceui.SpruceButtonWidget; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.options.ControlsOptionsScreen; @@ -30,9 +30,9 @@ import java.util.function.Predicate; */ public class LambdaControlsControlsScreen extends Screen { - private final Screen parent; - final LambdaControls mod; - private final boolean hide_settings; + private final Screen parent; + final LambdaControlsClient mod; + private final boolean hide_settings; private ControlsListWidget bindings_list_widget; private ButtonWidget reset_button; public ButtonBinding focused_binding; @@ -43,7 +43,7 @@ public class LambdaControlsControlsScreen extends Screen { super(new TranslatableText("lambdacontrols.menu.title.controller_controls")); this.parent = parent; - this.mod = LambdaControls.get(); + this.mod = LambdaControlsClient.get(); this.hide_settings = hide_settings; } diff --git a/src/main/java/me/lambdaurora/lambdacontrols/gui/LambdaControlsHud.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/gui/LambdaControlsHud.java similarity index 79% rename from src/main/java/me/lambdaurora/lambdacontrols/gui/LambdaControlsHud.java rename to fabric/src/main/java/me/lambdaurora/lambdacontrols/client/gui/LambdaControlsHud.java index c5e4c41..e8b47be 100644 --- a/src/main/java/me/lambdaurora/lambdacontrols/gui/LambdaControlsHud.java +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/gui/LambdaControlsHud.java @@ -7,12 +7,12 @@ * see the LICENSE file. */ -package me.lambdaurora.lambdacontrols.gui; +package me.lambdaurora.lambdacontrols.client.gui; import me.lambdaurora.lambdacontrols.ControlsMode; -import me.lambdaurora.lambdacontrols.HudSide; -import me.lambdaurora.lambdacontrols.LambdaControls; -import me.lambdaurora.lambdacontrols.controller.ButtonBinding; +import me.lambdaurora.lambdacontrols.client.HudSide; +import me.lambdaurora.lambdacontrols.client.LambdaControlsClient; +import me.lambdaurora.lambdacontrols.client.controller.ButtonBinding; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.DrawableHelper; import net.minecraft.util.hit.HitResult; @@ -27,12 +27,12 @@ import org.jetbrains.annotations.NotNull; */ public class LambdaControlsHud extends DrawableHelper { - private final MinecraftClient client; - private final LambdaControls mod; - private int width_bottom = 0; + private final MinecraftClient client; + private final LambdaControlsClient mod; + private int width_bottom = 0; private int width_top = 0; - public LambdaControlsHud(@NotNull MinecraftClient client, @NotNull LambdaControls mod) + public LambdaControlsHud(@NotNull MinecraftClient client, @NotNull LambdaControlsClient mod) { this.client = client; this.mod = mod; @@ -62,11 +62,11 @@ public class LambdaControlsHud extends DrawableHelper private int draw_button_tip(int x, int y, @NotNull ButtonBinding button, boolean display) { - return LambdaControls.draw_button_tip(x, y, button, display, this.client); + return LambdaControlsClient.draw_button_tip(x, y, button, display, this.client); } private int draw_button_tip(int x, int y, int[] button, @NotNull String action, boolean display) { - return LambdaControls.draw_button_tip(x, y, button, action, display, this.client); + return LambdaControlsClient.draw_button_tip(x, y, button, action, display, this.client); } } diff --git a/src/main/java/me/lambdaurora/lambdacontrols/gui/LambdaControlsSettingsScreen.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/gui/LambdaControlsSettingsScreen.java similarity index 95% rename from src/main/java/me/lambdaurora/lambdacontrols/gui/LambdaControlsSettingsScreen.java rename to fabric/src/main/java/me/lambdaurora/lambdacontrols/client/gui/LambdaControlsSettingsScreen.java index e99be6a..4e259c9 100644 --- a/src/main/java/me/lambdaurora/lambdacontrols/gui/LambdaControlsSettingsScreen.java +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/gui/LambdaControlsSettingsScreen.java @@ -7,11 +7,11 @@ * see the LICENSE file. */ -package me.lambdaurora.lambdacontrols.gui; +package me.lambdaurora.lambdacontrols.client.gui; import me.lambdaurora.lambdacontrols.ControlsMode; -import me.lambdaurora.lambdacontrols.LambdaControls; -import me.lambdaurora.lambdacontrols.controller.Controller; +import me.lambdaurora.lambdacontrols.client.LambdaControlsClient; +import me.lambdaurora.lambdacontrols.client.controller.Controller; import me.lambdaurora.spruceui.SpruceButtonWidget; import me.lambdaurora.spruceui.SpruceLabelWidget; import me.lambdaurora.spruceui.Tooltip; @@ -36,9 +36,9 @@ import org.lwjgl.glfw.GLFW; */ public class LambdaControlsSettingsScreen extends Screen { - public static final String GAMEPAD_TOOL_URL = "http://generalarcade.com/gamepadtool/"; - final LambdaControls mod; - private final Screen parent; + public static final String GAMEPAD_TOOL_URL = "http://generalarcade.com/gamepadtool/"; + final LambdaControlsClient mod; + private final Screen parent; private final boolean hide_controls; // General options private final Option auto_switch_mode_option; @@ -62,7 +62,7 @@ public class LambdaControlsSettingsScreen extends Screen public LambdaControlsSettingsScreen(Screen parent, @NotNull GameOptions options, boolean hide_controls) { super(new TranslatableText("lambdacontrols.title.settings")); - this.mod = LambdaControls.get(); + this.mod = LambdaControlsClient.get(); this.parent = parent; this.hide_controls = hide_controls; // General options @@ -179,10 +179,10 @@ public class LambdaControlsSettingsScreen extends Screen super.init(); int button_height = 20; SpruceButtonWidget controls_mode_btn = new SpruceButtonWidget(this.width / 2 - 155, 18, this.hide_controls ? 310 : 150, button_height, - I18n.translate("lambdacontrols.menu.controls_mode") + ": " + this.mod.config.get_controls_mode().get_translated_name(), + I18n.translate("lambdacontrols.menu.controls_mode") + ": " + I18n.translate(this.mod.config.get_controls_mode().get_translation_key()), btn -> { ControlsMode next = this.mod.config.get_controls_mode().next(); - btn.setMessage(I18n.translate("lambdacontrols.menu.controls_mode") + ": " + next.get_translated_name()); + btn.setMessage(I18n.translate("lambdacontrols.menu.controls_mode") + ": " + I18n.translate(next.get_translation_key())); this.mod.config.set_controls_mode(next); this.mod.config.save(); }); diff --git a/src/main/java/me/lambdaurora/lambdacontrols/gui/ReloadControllerMappingsOption.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/gui/ReloadControllerMappingsOption.java similarity index 94% rename from src/main/java/me/lambdaurora/lambdacontrols/gui/ReloadControllerMappingsOption.java rename to fabric/src/main/java/me/lambdaurora/lambdacontrols/client/gui/ReloadControllerMappingsOption.java index 6f29eef..125ec50 100644 --- a/src/main/java/me/lambdaurora/lambdacontrols/gui/ReloadControllerMappingsOption.java +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/gui/ReloadControllerMappingsOption.java @@ -7,9 +7,9 @@ * see the LICENSE file. */ -package me.lambdaurora.lambdacontrols.gui; +package me.lambdaurora.lambdacontrols.client.gui; -import me.lambdaurora.lambdacontrols.controller.Controller; +import me.lambdaurora.lambdacontrols.client.controller.Controller; import me.lambdaurora.spruceui.SpruceButtonWidget; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.widget.AbstractButtonWidget; diff --git a/src/main/java/me/lambdaurora/lambdacontrols/gui/TouchscreenOverlay.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/gui/TouchscreenOverlay.java similarity index 97% rename from src/main/java/me/lambdaurora/lambdacontrols/gui/TouchscreenOverlay.java rename to fabric/src/main/java/me/lambdaurora/lambdacontrols/client/gui/TouchscreenOverlay.java index dc86a56..fbffd6d 100644 --- a/src/main/java/me/lambdaurora/lambdacontrols/gui/TouchscreenOverlay.java +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/gui/TouchscreenOverlay.java @@ -7,11 +7,11 @@ * see the LICENSE file. */ -package me.lambdaurora.lambdacontrols.gui; +package me.lambdaurora.lambdacontrols.client.gui; -import me.lambdaurora.lambdacontrols.HudSide; -import me.lambdaurora.lambdacontrols.LambdaControls; -import me.lambdaurora.lambdacontrols.util.KeyBindingAccessor; +import me.lambdaurora.lambdacontrols.client.HudSide; +import me.lambdaurora.lambdacontrols.client.LambdaControlsClient; +import me.lambdaurora.lambdacontrols.client.util.KeyBindingAccessor; import me.lambdaurora.spruceui.SpruceTexturedButtonWidget; import net.minecraft.client.gui.screen.ChatScreen; import net.minecraft.client.gui.screen.GameMenuScreen; @@ -37,7 +37,7 @@ import static org.lwjgl.glfw.GLFW.GLFW_GAMEPAD_AXIS_RIGHT_Y; public class TouchscreenOverlay extends Screen { public static final Identifier WIDGETS_LOCATION = new Identifier("lambdacontrols", "textures/gui/widgets.png"); - private LambdaControls mod; + private LambdaControlsClient mod; private SpruceTexturedButtonWidget jump_button; private SpruceTexturedButtonWidget fly_button; private SpruceTexturedButtonWidget fly_up_button; @@ -49,7 +49,7 @@ public class TouchscreenOverlay extends Screen private SpruceTexturedButtonWidget start_sneak_button; private SpruceTexturedButtonWidget end_sneak_button; - public TouchscreenOverlay(@NotNull LambdaControls mod) + public TouchscreenOverlay(@NotNull LambdaControlsClient mod) { super(new LiteralText("Touchscreen overlay")); this.mod = mod; diff --git a/src/main/java/me/lambdaurora/lambdacontrols/mixin/AbstractButtonWidgetAccessor.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/AbstractButtonWidgetAccessor.java similarity index 90% rename from src/main/java/me/lambdaurora/lambdacontrols/mixin/AbstractButtonWidgetAccessor.java rename to fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/AbstractButtonWidgetAccessor.java index 761a9e5..beebfbc 100644 --- a/src/main/java/me/lambdaurora/lambdacontrols/mixin/AbstractButtonWidgetAccessor.java +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/AbstractButtonWidgetAccessor.java @@ -7,7 +7,7 @@ * see the LICENSE file. */ -package me.lambdaurora.lambdacontrols.mixin; +package me.lambdaurora.lambdacontrols.client.mixin; import net.minecraft.client.gui.widget.AbstractButtonWidget; import org.spongepowered.asm.mixin.Mixin; diff --git a/src/main/java/me/lambdaurora/lambdacontrols/mixin/AbstractContainerScreenMixin.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/AbstractContainerScreenMixin.java similarity index 64% rename from src/main/java/me/lambdaurora/lambdacontrols/mixin/AbstractContainerScreenMixin.java rename to fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/AbstractContainerScreenMixin.java index 2fb4be0..51b01c1 100644 --- a/src/main/java/me/lambdaurora/lambdacontrols/mixin/AbstractContainerScreenMixin.java +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/AbstractContainerScreenMixin.java @@ -7,11 +7,11 @@ * see the LICENSE file. */ -package me.lambdaurora.lambdacontrols.mixin; +package me.lambdaurora.lambdacontrols.client.mixin; import me.lambdaurora.lambdacontrols.ControlsMode; -import me.lambdaurora.lambdacontrols.LambdaControls; -import me.lambdaurora.lambdacontrols.util.AbstractContainerScreenAccessor; +import me.lambdaurora.lambdacontrols.client.LambdaControlsClient; +import me.lambdaurora.lambdacontrols.client.util.AbstractContainerScreenAccessor; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.screen.ingame.AbstractContainerScreen; import net.minecraft.container.Slot; @@ -56,14 +56,14 @@ public abstract class AbstractContainerScreenMixin implements AbstractContainerS @Inject(method = "render", at = @At("RETURN")) public void render(int mouseX, int mouseY, float delta, CallbackInfo ci) { - if (LambdaControls.get().config.get_controls_mode() == ControlsMode.CONTROLLER) { + if (LambdaControlsClient.get().config.get_controls_mode() == ControlsMode.CONTROLLER) { MinecraftClient client = MinecraftClient.getInstance(); int x = 10, y = client.getWindow().getScaledHeight() - 10 - 15; - x += LambdaControls.draw_button_tip(x, y, new int[]{GLFW.GLFW_GAMEPAD_BUTTON_A}, "lambdacontrols.action.pickup_all", true, client) + 10; - x += LambdaControls.draw_button_tip(x, y, new int[]{GLFW.GLFW_GAMEPAD_BUTTON_B}, "lambdacontrols.action.exit", true, client) + 10; - x += LambdaControls.draw_button_tip(x, y, new int[]{GLFW.GLFW_GAMEPAD_BUTTON_X}, "lambdacontrols.action.pickup", true, client) + 10; - LambdaControls.draw_button_tip(x, y, new int[]{GLFW.GLFW_GAMEPAD_BUTTON_Y}, "lambdacontrols.action.quick_move", true, client); + x += LambdaControlsClient.draw_button_tip(x, y, new int[]{GLFW.GLFW_GAMEPAD_BUTTON_A}, "lambdacontrols.action.pickup_all", true, client) + 10; + x += LambdaControlsClient.draw_button_tip(x, y, new int[]{GLFW.GLFW_GAMEPAD_BUTTON_B}, "lambdacontrols.action.exit", true, client) + 10; + x += LambdaControlsClient.draw_button_tip(x, y, new int[]{GLFW.GLFW_GAMEPAD_BUTTON_X}, "lambdacontrols.action.pickup", true, client) + 10; + LambdaControlsClient.draw_button_tip(x, y, new int[]{GLFW.GLFW_GAMEPAD_BUTTON_Y}, "lambdacontrols.action.quick_move", true, client); } } } diff --git a/src/main/java/me/lambdaurora/lambdacontrols/mixin/ControlsOptionsScreenMixin.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/ControlsOptionsScreenMixin.java similarity index 89% rename from src/main/java/me/lambdaurora/lambdacontrols/mixin/ControlsOptionsScreenMixin.java rename to fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/ControlsOptionsScreenMixin.java index 0e3a7ab..ecf90b5 100644 --- a/src/main/java/me/lambdaurora/lambdacontrols/mixin/ControlsOptionsScreenMixin.java +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/ControlsOptionsScreenMixin.java @@ -7,10 +7,10 @@ * see the LICENSE file. */ -package me.lambdaurora.lambdacontrols.mixin; +package me.lambdaurora.lambdacontrols.client.mixin; -import me.lambdaurora.lambdacontrols.gui.LambdaControlsControlsScreen; -import me.lambdaurora.lambdacontrols.gui.LambdaControlsSettingsScreen; +import me.lambdaurora.lambdacontrols.client.gui.LambdaControlsControlsScreen; +import me.lambdaurora.lambdacontrols.client.gui.LambdaControlsSettingsScreen; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.options.ControlsOptionsScreen; import net.minecraft.client.gui.screen.options.GameOptionsScreen; diff --git a/src/main/java/me/lambdaurora/lambdacontrols/mixin/CreativeInventoryScreenMixin.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/CreativeInventoryScreenMixin.java similarity index 86% rename from src/main/java/me/lambdaurora/lambdacontrols/mixin/CreativeInventoryScreenMixin.java rename to fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/CreativeInventoryScreenMixin.java index b0ff538..044759e 100644 --- a/src/main/java/me/lambdaurora/lambdacontrols/mixin/CreativeInventoryScreenMixin.java +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/CreativeInventoryScreenMixin.java @@ -7,9 +7,9 @@ * see the LICENSE file. */ -package me.lambdaurora.lambdacontrols.mixin; +package me.lambdaurora.lambdacontrols.client.mixin; -import me.lambdaurora.lambdacontrols.util.CreativeInventoryScreenAccessor; +import me.lambdaurora.lambdacontrols.client.util.CreativeInventoryScreenAccessor; import net.minecraft.client.gui.screen.ingame.CreativeInventoryScreen; import net.minecraft.item.ItemGroup; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/me/lambdaurora/lambdacontrols/mixin/EntryListWidgetAccessor.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/EntryListWidgetAccessor.java similarity index 90% rename from src/main/java/me/lambdaurora/lambdacontrols/mixin/EntryListWidgetAccessor.java rename to fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/EntryListWidgetAccessor.java index 5be0b6c..be528cd 100644 --- a/src/main/java/me/lambdaurora/lambdacontrols/mixin/EntryListWidgetAccessor.java +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/EntryListWidgetAccessor.java @@ -7,7 +7,7 @@ * see the LICENSE file. */ -package me.lambdaurora.lambdacontrols.mixin; +package me.lambdaurora.lambdacontrols.client.mixin; import net.minecraft.client.gui.widget.EntryListWidget; import org.spongepowered.asm.mixin.Mixin; diff --git a/src/main/java/me/lambdaurora/lambdacontrols/mixin/GameRendererMixin.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/GameRendererMixin.java similarity index 73% rename from src/main/java/me/lambdaurora/lambdacontrols/mixin/GameRendererMixin.java rename to fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/GameRendererMixin.java index c071458..2e3f224 100644 --- a/src/main/java/me/lambdaurora/lambdacontrols/mixin/GameRendererMixin.java +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/GameRendererMixin.java @@ -7,10 +7,10 @@ * see the LICENSE file. */ -package me.lambdaurora.lambdacontrols.mixin; +package me.lambdaurora.lambdacontrols.client.mixin; import me.lambdaurora.lambdacontrols.ControlsMode; -import me.lambdaurora.lambdacontrols.LambdaControls; +import me.lambdaurora.lambdacontrols.client.LambdaControlsClient; import net.minecraft.client.MinecraftClient; import net.minecraft.client.render.GameRenderer; import org.spongepowered.asm.mixin.Final; @@ -30,7 +30,7 @@ public class GameRendererMixin @Inject(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Mouse;getX()D")) private void on_render(float tick_delta, long start_time, boolean full_render, CallbackInfo ci) { - if (this.client.currentScreen != null && LambdaControls.get().config.get_controls_mode() == ControlsMode.CONTROLLER) - LambdaControls.get().input.on_pre_render_screen(this.client, this.client.currentScreen); + if (this.client.currentScreen != null && LambdaControlsClient.get().config.get_controls_mode() == ControlsMode.CONTROLLER) + LambdaControlsClient.get().input.on_pre_render_screen(this.client, this.client.currentScreen); } } diff --git a/src/main/java/me/lambdaurora/lambdacontrols/mixin/KeyBindingMixin.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/KeyBindingMixin.java similarity index 90% rename from src/main/java/me/lambdaurora/lambdacontrols/mixin/KeyBindingMixin.java rename to fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/KeyBindingMixin.java index 6969121..72af876 100644 --- a/src/main/java/me/lambdaurora/lambdacontrols/mixin/KeyBindingMixin.java +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/KeyBindingMixin.java @@ -7,9 +7,9 @@ * see the LICENSE file. */ -package me.lambdaurora.lambdacontrols.mixin; +package me.lambdaurora.lambdacontrols.client.mixin; -import me.lambdaurora.lambdacontrols.util.KeyBindingAccessor; +import me.lambdaurora.lambdacontrols.client.util.KeyBindingAccessor; import net.minecraft.client.options.KeyBinding; import net.minecraft.client.util.InputUtil; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/me/lambdaurora/lambdacontrols/mixin/MinecraftClientMixin.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/MinecraftClientMixin.java similarity index 80% rename from src/main/java/me/lambdaurora/lambdacontrols/mixin/MinecraftClientMixin.java rename to fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/MinecraftClientMixin.java index c4f6764..6e895e4 100644 --- a/src/main/java/me/lambdaurora/lambdacontrols/mixin/MinecraftClientMixin.java +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/MinecraftClientMixin.java @@ -7,11 +7,11 @@ * see the LICENSE file. */ -package me.lambdaurora.lambdacontrols.mixin; +package me.lambdaurora.lambdacontrols.client.mixin; import me.lambdaurora.lambdacontrols.ControlsMode; -import me.lambdaurora.lambdacontrols.LambdaControls; -import me.lambdaurora.lambdacontrols.gui.TouchscreenOverlay; +import me.lambdaurora.lambdacontrols.client.LambdaControlsClient; +import me.lambdaurora.lambdacontrols.client.gui.TouchscreenOverlay; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.util.Window; @@ -39,25 +39,25 @@ public abstract class MinecraftClientMixin @Inject(method = "", at = @At("RETURN")) private void on_init(CallbackInfo ci) { - LambdaControls.get().on_mc_init((MinecraftClient) (Object) this); + LambdaControlsClient.get().on_mc_init((MinecraftClient) (Object) this); } @Inject(method = "render", at = @At("HEAD")) private void on_render(boolean full_render, CallbackInfo ci) { - LambdaControls.get().on_render((MinecraftClient) (Object) (this)); + LambdaControlsClient.get().on_render((MinecraftClient) (Object) (this)); } @Inject(method = "tick", at = @At("HEAD")) private void on_handle_input_events(CallbackInfo ci) { - LambdaControls.get().on_tick((MinecraftClient) (Object) this); + LambdaControlsClient.get().on_tick((MinecraftClient) (Object) this); } @Inject(method = "openScreen", at = @At("RETURN")) private void on_open_screen(@Nullable Screen screen, CallbackInfo ci) { - LambdaControls mod = LambdaControls.get(); + LambdaControlsClient mod = LambdaControlsClient.get(); if (screen == null && mod.config.get_controls_mode() == ControlsMode.TOUCHSCREEN) { screen = new TouchscreenOverlay(mod); screen.init(((MinecraftClient) (Object) this), this.window.getScaledWidth(), this.window.getScaledHeight()); diff --git a/src/main/java/me/lambdaurora/lambdacontrols/mixin/MouseMixin.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/MouseMixin.java similarity index 82% rename from src/main/java/me/lambdaurora/lambdacontrols/mixin/MouseMixin.java rename to fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/MouseMixin.java index 9a19355..a7445df 100644 --- a/src/main/java/me/lambdaurora/lambdacontrols/mixin/MouseMixin.java +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/MouseMixin.java @@ -7,11 +7,11 @@ * see the LICENSE file. */ -package me.lambdaurora.lambdacontrols.mixin; +package me.lambdaurora.lambdacontrols.client.mixin; import me.lambdaurora.lambdacontrols.ControlsMode; -import me.lambdaurora.lambdacontrols.LambdaControls; -import me.lambdaurora.lambdacontrols.util.MouseAccessor; +import me.lambdaurora.lambdacontrols.client.LambdaControlsClient; +import me.lambdaurora.lambdacontrols.client.util.MouseAccessor; import net.minecraft.client.Mouse; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -34,7 +34,7 @@ public abstract class MouseMixin implements MouseAccessor @Inject(method = "lockCursor", at = @At("HEAD"), cancellable = true) private void on_mouse_locked(CallbackInfo ci) { - if (LambdaControls.get().config.get_controls_mode() == ControlsMode.TOUCHSCREEN) + if (LambdaControlsClient.get().config.get_controls_mode() == ControlsMode.TOUCHSCREEN) ci.cancel(); } diff --git a/src/main/java/me/lambdaurora/lambdacontrols/mixin/SettingsScreenMixin.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/SettingsScreenMixin.java similarity index 83% rename from src/main/java/me/lambdaurora/lambdacontrols/mixin/SettingsScreenMixin.java rename to fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/SettingsScreenMixin.java index 02d713e..3496ef9 100644 --- a/src/main/java/me/lambdaurora/lambdacontrols/mixin/SettingsScreenMixin.java +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/SettingsScreenMixin.java @@ -7,11 +7,11 @@ * see the LICENSE file. */ -package me.lambdaurora.lambdacontrols.mixin; +package me.lambdaurora.lambdacontrols.client.mixin; import me.lambdaurora.lambdacontrols.ControlsMode; -import me.lambdaurora.lambdacontrols.LambdaControls; -import me.lambdaurora.lambdacontrols.gui.LambdaControlsControlsScreen; +import me.lambdaurora.lambdacontrols.client.LambdaControlsClient; +import me.lambdaurora.lambdacontrols.client.gui.LambdaControlsControlsScreen; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.SettingsScreen; import net.minecraft.client.gui.widget.AbstractButtonWidget; @@ -35,7 +35,7 @@ public class SettingsScreenMixin extends Screen @Redirect(method = "init", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screen/SettingsScreen;addButton(Lnet/minecraft/client/gui/widget/AbstractButtonWidget;)Lnet/minecraft/client/gui/widget/AbstractButtonWidget;", ordinal = 7)) private AbstractButtonWidget on_init(SettingsScreen screen, AbstractButtonWidget btn) { - if (LambdaControls.get().config.get_controls_mode() == ControlsMode.CONTROLLER) { + if (LambdaControlsClient.get().config.get_controls_mode() == ControlsMode.CONTROLLER) { return this.addButton(new ButtonWidget(btn.x, btn.y, btn.getWidth(), ((AbstractButtonWidgetAccessor) btn).get_height(), btn.getMessage(), b -> this.minecraft.openScreen(new LambdaControlsControlsScreen(this, false)))); } else { diff --git a/src/main/java/me/lambdaurora/lambdacontrols/util/AbstractContainerScreenAccessor.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/util/AbstractContainerScreenAccessor.java similarity index 94% rename from src/main/java/me/lambdaurora/lambdacontrols/util/AbstractContainerScreenAccessor.java rename to fabric/src/main/java/me/lambdaurora/lambdacontrols/client/util/AbstractContainerScreenAccessor.java index c751cb5..cca2d12 100644 --- a/src/main/java/me/lambdaurora/lambdacontrols/util/AbstractContainerScreenAccessor.java +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/util/AbstractContainerScreenAccessor.java @@ -7,7 +7,7 @@ * see the LICENSE file. */ -package me.lambdaurora.lambdacontrols.util; +package me.lambdaurora.lambdacontrols.client.util; import net.minecraft.container.Slot; diff --git a/src/main/java/me/lambdaurora/lambdacontrols/util/CreativeInventoryScreenAccessor.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/util/CreativeInventoryScreenAccessor.java similarity index 92% rename from src/main/java/me/lambdaurora/lambdacontrols/util/CreativeInventoryScreenAccessor.java rename to fabric/src/main/java/me/lambdaurora/lambdacontrols/client/util/CreativeInventoryScreenAccessor.java index 48c43df..1cafdc9 100644 --- a/src/main/java/me/lambdaurora/lambdacontrols/util/CreativeInventoryScreenAccessor.java +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/util/CreativeInventoryScreenAccessor.java @@ -7,7 +7,7 @@ * see the LICENSE file. */ -package me.lambdaurora.lambdacontrols.util; +package me.lambdaurora.lambdacontrols.client.util; import net.minecraft.item.ItemGroup; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/me/lambdaurora/lambdacontrols/util/KeyBindingAccessor.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/util/KeyBindingAccessor.java similarity index 93% rename from src/main/java/me/lambdaurora/lambdacontrols/util/KeyBindingAccessor.java rename to fabric/src/main/java/me/lambdaurora/lambdacontrols/client/util/KeyBindingAccessor.java index 206c31c..25ebf41 100644 --- a/src/main/java/me/lambdaurora/lambdacontrols/util/KeyBindingAccessor.java +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/util/KeyBindingAccessor.java @@ -7,7 +7,7 @@ * see the LICENSE file. */ -package me.lambdaurora.lambdacontrols.util; +package me.lambdaurora.lambdacontrols.client.util; import net.minecraft.client.util.InputUtil; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/me/lambdaurora/lambdacontrols/util/MouseAccessor.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/util/MouseAccessor.java similarity index 88% rename from src/main/java/me/lambdaurora/lambdacontrols/util/MouseAccessor.java rename to fabric/src/main/java/me/lambdaurora/lambdacontrols/client/util/MouseAccessor.java index c25b730..6fad317 100644 --- a/src/main/java/me/lambdaurora/lambdacontrols/util/MouseAccessor.java +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/util/MouseAccessor.java @@ -7,7 +7,7 @@ * see the LICENSE file. */ -package me.lambdaurora.lambdacontrols.util; +package me.lambdaurora.lambdacontrols.client.util; /** * Represents mouse's extra access. diff --git a/fabric/src/main/java/me/lambdaurora/lambdacontrols/event/PlayerChangeControlsModeCallback.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/event/PlayerChangeControlsModeCallback.java new file mode 100644 index 0000000..31e4306 --- /dev/null +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/event/PlayerChangeControlsModeCallback.java @@ -0,0 +1,35 @@ +/* + * Copyright © 2020 LambdAurora + * + * This file is part of LambdaControls. + * + * Licensed under the MIT license. For more information, + * see the LICENSE file. + */ + +package me.lambdaurora.lambdacontrols.event; + +import me.lambdaurora.lambdacontrols.ControlsMode; +import net.fabricmc.fabric.api.event.Event; +import net.fabricmc.fabric.api.event.EventFactory; +import net.minecraft.entity.player.PlayerEntity; +import org.jetbrains.annotations.NotNull; + +/** + * Represents an event callback which is fired when a player changes the controls mode. + * + * @author LambdAurora + * @version 1.1.0 + * @since 1.1.0 + */ +@FunctionalInterface +public interface PlayerChangeControlsModeCallback +{ + Event EVENT = EventFactory.createArrayBacked(PlayerChangeControlsModeCallback.class, listeners -> (player, controls_mode) -> { + for (PlayerChangeControlsModeCallback event : listeners) { + event.apply(player, controls_mode); + } + }); + + void apply(@NotNull PlayerEntity player, @NotNull ControlsMode controls_mode); +} diff --git a/src/main/resources/assets/lambdacontrols/icon.png b/fabric/src/main/resources/assets/lambdacontrols/icon.png similarity index 100% rename from src/main/resources/assets/lambdacontrols/icon.png rename to fabric/src/main/resources/assets/lambdacontrols/icon.png diff --git a/src/main/resources/assets/lambdacontrols/icon_x400.png b/fabric/src/main/resources/assets/lambdacontrols/icon_x400.png similarity index 100% rename from src/main/resources/assets/lambdacontrols/icon_x400.png rename to fabric/src/main/resources/assets/lambdacontrols/icon_x400.png diff --git a/src/main/resources/assets/lambdacontrols/lang/en_us.json b/fabric/src/main/resources/assets/lambdacontrols/lang/en_us.json similarity index 69% rename from src/main/resources/assets/lambdacontrols/lang/en_us.json rename to fabric/src/main/resources/assets/lambdacontrols/lang/en_us.json index fd624db..065f0d5 100644 --- a/src/main/resources/assets/lambdacontrols/lang/en_us.json +++ b/fabric/src/main/resources/assets/lambdacontrols/lang/en_us.json @@ -73,36 +73,39 @@ "lambdacontrols.controls_mode.touchscreen": "Touchscreen", "lambdacontrols.hud_side.left": "left", "lambdacontrols.hud_side.right": "right", - "lambdacontrols.menu.auto_switch_mode": "Auto switch mode", + "lambdacontrols.menu.auto_switch_mode": "Auto Switch Mode", "lambdacontrols.menu.controller": "Controller", - "lambdacontrols.menu.controller2": "Second controller", - "lambdacontrols.menu.controller_type": "Controller type", + "lambdacontrols.menu.controller2": "Second Controller", + "lambdacontrols.menu.controller_type": "Controller Type", "lambdacontrols.menu.controls_mode": "Mode", - "lambdacontrols.menu.dead_zone": "Dead zone", + "lambdacontrols.menu.dead_zone": "Dead Zone", + "lambdacontrols.menu.front_block_placing": "Front Block Placing", "lambdacontrols.menu.hud_enable": "Enable HUD", - "lambdacontrols.menu.hud_side": "HUD side", - "lambdacontrols.menu.invert_right_x_axis": "Invert right X", - "lambdacontrols.menu.invert_right_y_axis": "Invert right Y", - "lambdacontrols.menu.keyboard_controls": "Keyboard controls...", - "lambdacontrols.menu.mouse_speed": "Mouse speed", - "lambdacontrols.menu.reload_controller_mappings": "Reload controller mappings", - "lambdacontrols.menu.rotation_speed": "Rotation speed", + "lambdacontrols.menu.hud_side": "HUD Side", + "lambdacontrols.menu.invert_right_x_axis": "Invert Right X", + "lambdacontrols.menu.invert_right_y_axis": "Invert Right Y", + "lambdacontrols.menu.keyboard_controls": "Keyboard Controls...", + "lambdacontrols.menu.mouse_speed": "Mouse Speed", + "lambdacontrols.menu.reload_controller_mappings": "Reload Controller Mappings", + "lambdacontrols.menu.rotation_speed": "Rotation Speed", "lambdacontrols.menu.title": "LambdaControls - Settings", - "lambdacontrols.menu.title.controller": "Controller options", - "lambdacontrols.menu.title.controller_controls": "Controller controls", - "lambdacontrols.menu.title.general": "General options", - "lambdacontrols.menu.title.hud": "HUD options", + "lambdacontrols.menu.title.controller": "Controller Options", + "lambdacontrols.menu.title.controller_controls": "Controller Controls", + "lambdacontrols.menu.title.gameplay": "Gameplay Options", + "lambdacontrols.menu.title.general": "General Options", + "lambdacontrols.menu.title.hud": "HUD Options", "lambdacontrols.menu.unbound": "Unbound", "lambdacontrols.narrator.unbound": "Unbound %s", "lambdacontrols.not_bound": "Not bound", - "lambdacontrols.tooltip.auto_switch_mode": "Sets whether the controls mode should be switched automatically to Controller if a controller is connected.", - "lambdacontrols.tooltip.controller2": "Defines a second controller to use, which allow Joy-Cons support for example.", - "lambdacontrols.tooltip.controller_type": "Changes the controller type to displays the correct buttons.", - "lambdacontrols.tooltip.controls_mode": "Changes the controls mode.", - "lambdacontrols.tooltip.dead_zone": "Sets the dead zone of the controller's axises.", + "lambdacontrols.tooltip.auto_switch_mode": "If the controls mode should be switched to Controller automatically if one is connected.", + "lambdacontrols.tooltip.controller2": "Second controller to use, which allows Joy-Cons support for example.", + "lambdacontrols.tooltip.controller_type": "The controller type to display the correct buttons.", + "lambdacontrols.tooltip.controls_mode": "The controls mode.", + "lambdacontrols.tooltip.dead_zone": "The dead zone for the controller's analogue sticks.", + "lambdacontrols.tooltip.front_block_placing": "Enable front block placing, §cmight be considered cheating on some servers§r.", "lambdacontrols.tooltip.hud_enable": "Toggles the on-screen controller button indicator.", - "lambdacontrols.tooltip.hud_side": "Changes the position of the HUD.", - "lambdacontrols.tooltip.mouse_speed": "Changes the emulated mouse speed with a controller.", - "lambdacontrols.tooltip.rotation_speed": "Changes the camera rotation speed in controller mode.", + "lambdacontrols.tooltip.hud_side": "The position of the HUD.", + "lambdacontrols.tooltip.mouse_speed": "The controller's emulated mouse speed.", + "lambdacontrols.tooltip.rotation_speed": "The camera rotation speed in controller mode.", "lambdacontrols.tooltip.reload_controller_mappings": "Reloads the controller mappings file." } \ No newline at end of file diff --git a/src/main/resources/assets/lambdacontrols/lang/fr_ca.json b/fabric/src/main/resources/assets/lambdacontrols/lang/fr_ca.json similarity index 100% rename from src/main/resources/assets/lambdacontrols/lang/fr_ca.json rename to fabric/src/main/resources/assets/lambdacontrols/lang/fr_ca.json diff --git a/src/main/resources/assets/lambdacontrols/lang/fr_fr.json b/fabric/src/main/resources/assets/lambdacontrols/lang/fr_fr.json similarity index 98% rename from src/main/resources/assets/lambdacontrols/lang/fr_fr.json rename to fabric/src/main/resources/assets/lambdacontrols/lang/fr_fr.json index f759a2b..79ef5e6 100644 --- a/src/main/resources/assets/lambdacontrols/lang/fr_fr.json +++ b/fabric/src/main/resources/assets/lambdacontrols/lang/fr_fr.json @@ -99,7 +99,7 @@ "lambdacontrols.tooltip.controller2": "Défini une deuxième manette, utile dans le cas d'utilisation de Joy-Cons.", "lambdacontrols.tooltip.controller_type": "Le type de contrôle n'influe que sur les boutons affichés.", "lambdacontrols.tooltip.controls_mode": "Change le mode de contrôle.", - "lambdacontrols.tooltip.dead_zone": "Détermine la zone morte des axes de la manette.", + "lambdacontrols.tooltip.dead_zone": "Zone morte des axes de la manette.", "lambdacontrols.tooltip.hud_enable": "Détermine si l'indicateur des buttons de la manette doit être affiché ou non.", "lambdacontrols.tooltip.hud_side": "Change la position du HUD.", "lambdacontrols.tooltip.mouse_speed": "Change la vitesse de la souris émulée par la manette.", diff --git a/src/main/resources/assets/lambdacontrols/textures/gui/controller_axis.png b/fabric/src/main/resources/assets/lambdacontrols/textures/gui/controller_axis.png similarity index 100% rename from src/main/resources/assets/lambdacontrols/textures/gui/controller_axis.png rename to fabric/src/main/resources/assets/lambdacontrols/textures/gui/controller_axis.png diff --git a/src/main/resources/assets/lambdacontrols/textures/gui/controller_buttons.png b/fabric/src/main/resources/assets/lambdacontrols/textures/gui/controller_buttons.png similarity index 100% rename from src/main/resources/assets/lambdacontrols/textures/gui/controller_buttons.png rename to fabric/src/main/resources/assets/lambdacontrols/textures/gui/controller_buttons.png diff --git a/src/main/resources/assets/lambdacontrols/textures/gui/widgets.png b/fabric/src/main/resources/assets/lambdacontrols/textures/gui/widgets.png similarity index 100% rename from src/main/resources/assets/lambdacontrols/textures/gui/widgets.png rename to fabric/src/main/resources/assets/lambdacontrols/textures/gui/widgets.png diff --git a/src/main/resources/config.toml b/fabric/src/main/resources/config.toml similarity index 96% rename from src/main/resources/config.toml rename to fabric/src/main/resources/config.toml index a462ebc..36a7f19 100644 --- a/src/main/resources/config.toml +++ b/fabric/src/main/resources/config.toml @@ -11,6 +11,10 @@ auto_switch_mode = false # Dertermines where the movements buttons are. side = "left" +# Gameplay settings +[gameplay] + front_block_placing = false + # Controller settings [controller] # Controller to use. diff --git a/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json similarity index 86% rename from src/main/resources/fabric.mod.json rename to fabric/src/main/resources/fabric.mod.json index 3a90b6e..9ba0c51 100644 --- a/src/main/resources/fabric.mod.json +++ b/fabric/src/main/resources/fabric.mod.json @@ -16,11 +16,14 @@ "icon": "assets/lambdacontrols/icon.png", "environment": "client", "entrypoints": { - "client": [ + "main": [ "me.lambdaurora.lambdacontrols.LambdaControls" ], + "client": [ + "me.lambdaurora.lambdacontrols.client.LambdaControlsClient" + ], "modmenu": [ - "me.lambdaurora.lambdacontrols.LambdaControlsModMenu" + "me.lambdaurora.lambdacontrols.client.LambdaControlsModMenu" ] }, "mixins": [ diff --git a/src/main/resources/lambdacontrols.mixins.json b/fabric/src/main/resources/lambdacontrols.mixins.json similarity index 87% rename from src/main/resources/lambdacontrols.mixins.json rename to fabric/src/main/resources/lambdacontrols.mixins.json index f5e09ed..b348592 100644 --- a/src/main/resources/lambdacontrols.mixins.json +++ b/fabric/src/main/resources/lambdacontrols.mixins.json @@ -1,6 +1,6 @@ { "required": true, - "package": "me.lambdaurora.lambdacontrols.mixin", + "package": "me.lambdaurora.lambdacontrols.client.mixin", "compatibilityLevel": "JAVA_8", "client": [ "AbstractButtonWidgetAccessor", diff --git a/gradle.properties b/gradle.properties index 703649d..e761cb1 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ org.gradle.jvmargs=-Xmx1G loader_version=0.7.2+build.174 # Mod Properties - mod_version = 1.1.0-test2 + mod_version = 1.1.0-test4 maven_group = me.lambdaurora archives_base_name = lambdacontrols diff --git a/settings.gradle b/settings.gradle index 5b60df3..4cdc817 100644 --- a/settings.gradle +++ b/settings.gradle @@ -8,3 +8,6 @@ pluginManagement { gradlePluginPortal() } } + +rootProject.name = 'lambdacontrols' +include 'common', 'fabric', 'elytra'