mirror of
https://github.com/TeamMidnightDust/MidnightControls.git
synced 2025-12-13 23:25:10 +01:00
Get Fabric working again, various improvements
This commit is contained in:
@@ -4,6 +4,23 @@ architectury {
|
|||||||
loom {
|
loom {
|
||||||
accessWidenerPath = file("src/main/resources/midnightcontrols.accesswidener")
|
accessWidenerPath = file("src/main/resources/midnightcontrols.accesswidener")
|
||||||
}
|
}
|
||||||
|
repositories {
|
||||||
|
maven {
|
||||||
|
name 'Gegy'
|
||||||
|
url 'https://maven.gegy.dev'
|
||||||
|
}
|
||||||
|
maven {
|
||||||
|
name = "CottonMC"
|
||||||
|
url = "https://server.bbkr.space/artifactory/libs-release"
|
||||||
|
}
|
||||||
|
maven { url "https://maven.terraformersmc.com/releases/" }
|
||||||
|
maven { url 'https://maven.kosmx.dev' }
|
||||||
|
maven { url 'https://maven.isxander.dev/releases' }
|
||||||
|
maven { url 'https://maven.shedaniel.me/' }
|
||||||
|
maven { url 'https://jitpack.io' }
|
||||||
|
maven { url "https://api.modrinth.com/maven" }
|
||||||
|
maven { url 'https://maven.quiltmc.org/repository/release'}
|
||||||
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
// We depend on fabric loader here to use the fabric @Environment annotations and get the mixin dependencies
|
// We depend on fabric loader here to use the fabric @Environment annotations and get the mixin dependencies
|
||||||
@@ -14,6 +31,24 @@ dependencies {
|
|||||||
modCompileOnlyApi "maven.modrinth:midnightlib:${rootProject.midnightlib_version}-fabric"
|
modCompileOnlyApi "maven.modrinth:midnightlib:${rootProject.midnightlib_version}-fabric"
|
||||||
modCompileOnlyApi "maven.modrinth:obsidianui:${project.obsidianui_version}-fabric"
|
modCompileOnlyApi "maven.modrinth:obsidianui:${project.obsidianui_version}-fabric"
|
||||||
include 'org.aperlambda:lambdajcommon:1.8.1'
|
include 'org.aperlambda:lambdajcommon:1.8.1'
|
||||||
|
modCompileOnlyApi ("com.terraformersmc:modmenu:${project.modmenu_version}") {
|
||||||
|
exclude(group: "net.fabricmc.fabric-api")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Compatibility mods
|
||||||
|
modCompileOnlyApi "io.github.cottonmc:LibGui:${project.libgui_version}"
|
||||||
|
modCompileOnlyApi "org.quiltmc:quilt-json5:1.0.0"
|
||||||
|
modCompileOnly "maven.modrinth:sodium:${project.sodium_version}"
|
||||||
|
modCompileOnlyApi "maven.modrinth:emi:${project.emi_version}"
|
||||||
|
modCompileOnlyApi "maven.modrinth:emotecraft:${project.emotecraft_version}"
|
||||||
|
modCompileOnlyApi "io.github.kosmx:bendy-lib:${project.bendylib_version}"
|
||||||
|
modCompileOnlyApi "dev.isxander:yet-another-config-lib:${project.yacl_version}"
|
||||||
|
modCompileOnlyApi "maven.modrinth:inventory-tabs-updated:${project.inventorytabs_version}"
|
||||||
|
modCompileOnlyApi "maven.modrinth:bedrockify:${project.bedrockify_version}"
|
||||||
|
// Required for Inventory Tabs
|
||||||
|
modCompileOnlyApi("me.shedaniel.cloth:cloth-config-fabric:${project.clothconfig_version}") {
|
||||||
|
exclude(group: "net.fabricmc.fabric-api")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
publishing {
|
publishing {
|
||||||
|
|||||||
@@ -10,7 +10,6 @@
|
|||||||
package eu.midnightdust.midnightcontrols.client.compat;
|
package eu.midnightdust.midnightcontrols.client.compat;
|
||||||
|
|
||||||
import me.juancarloscp52.bedrockify.client.BedrockifyClient;
|
import me.juancarloscp52.bedrockify.client.BedrockifyClient;
|
||||||
import me.juancarloscp52.bedrockify.client.BedrockifyClientSettings;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents HQM compatibility handler.
|
* Represents HQM compatibility handler.
|
||||||
|
|||||||
@@ -19,14 +19,15 @@ public class EmotecraftCompat {
|
|||||||
if (client.currentScreen instanceof FastChosseScreen) {
|
if (client.currentScreen instanceof FastChosseScreen) {
|
||||||
int x = client.getWindow().getWidth() / 2;
|
int x = client.getWindow().getWidth() / 2;
|
||||||
int y = client.getWindow().getHeight() / 2;
|
int y = client.getWindow().getHeight() / 2;
|
||||||
if (index == 0) InputManager.queueMousePosition(x-200, y-200);
|
switch (index) {
|
||||||
if (index == 1) InputManager.queueMousePosition(x, y-200);
|
case 0, 3, 5 -> x -= 200;
|
||||||
if (index == 2) InputManager.queueMousePosition(x+200, y-200);
|
case 2, 4, 7 -> x += 200;
|
||||||
if (index == 3) InputManager.queueMousePosition(x-200, y);
|
}
|
||||||
if (index == 4) InputManager.queueMousePosition(x+200, y);
|
switch (index) {
|
||||||
if (index == 5) InputManager.queueMousePosition(x-200, y+200);
|
case 0, 1, 2 -> y -= 200;
|
||||||
if (index == 6) InputManager.queueMousePosition(x, y+200);
|
case 5, 6, 7 -> y += 200;
|
||||||
if (index == 7) InputManager.queueMousePosition(x+200, y+200);
|
}
|
||||||
|
InputManager.queueMousePosition(x, y);
|
||||||
|
|
||||||
InputManager.INPUT_MANAGER.updateMousePosition(client);
|
InputManager.INPUT_MANAGER.updateMousePosition(client);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,30 +14,37 @@ import net.minecraft.client.MinecraftClient;
|
|||||||
import net.minecraft.client.gui.screen.Screen;
|
import net.minecraft.client.gui.screen.Screen;
|
||||||
import net.minecraft.client.gui.screen.option.ControlsOptionsScreen;
|
import net.minecraft.client.gui.screen.option.ControlsOptionsScreen;
|
||||||
import net.minecraft.client.gui.screen.option.GameOptionsScreen;
|
import net.minecraft.client.gui.screen.option.GameOptionsScreen;
|
||||||
|
import net.minecraft.client.gui.widget.OptionListWidget;
|
||||||
import net.minecraft.client.gui.widget.TextIconButtonWidget;
|
import net.minecraft.client.gui.widget.TextIconButtonWidget;
|
||||||
import net.minecraft.client.option.GameOptions;
|
|
||||||
import net.minecraft.text.Text;
|
import net.minecraft.text.Text;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
import org.spongepowered.asm.mixin.Unique;
|
import org.spongepowered.asm.mixin.Unique;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Injects the new controls settings button.
|
* Injects the new controls settings button.
|
||||||
*/
|
*/
|
||||||
@Mixin(ControlsOptionsScreen.class)
|
@Mixin(GameOptionsScreen.class)
|
||||||
public abstract class ControlsOptionsScreenMixin extends GameOptionsScreen {
|
public abstract class GameOptionsScreenMixin extends Screen {
|
||||||
|
@Shadow @Nullable protected OptionListWidget body;
|
||||||
public ControlsOptionsScreenMixin(Screen parent, GameOptions gameOptions, Text title) {
|
|
||||||
super(parent, gameOptions, title);
|
|
||||||
}
|
|
||||||
@Unique TextIconButtonWidget midnightcontrols$button = TextIconButtonWidget.builder(Text.translatable("midnightcontrols.menu.title.controller"), (button -> this.client.setScreen(new MidnightControlsSettingsScreen(this, false))), true)
|
@Unique TextIconButtonWidget midnightcontrols$button = TextIconButtonWidget.builder(Text.translatable("midnightcontrols.menu.title.controller"), (button -> this.client.setScreen(new MidnightControlsSettingsScreen(this, false))), true)
|
||||||
.dimension(20,20).texture(Identifier.of("midnightcontrols", "icon/controller"), 20, 20).build();
|
.dimension(20,20).texture(Identifier.of("midnightcontrols", "icon/controller"), 20, 20).build();
|
||||||
|
|
||||||
@Override
|
protected GameOptionsScreenMixin(Text title) {
|
||||||
public void init() {
|
super(title);
|
||||||
super.init();
|
}
|
||||||
this.midnightcontrols$setupButton();
|
|
||||||
this.addDrawableChild(midnightcontrols$button);
|
@Inject(method = "initTabNavigation", at = @At("HEAD"))
|
||||||
|
public void addMidnightButton(CallbackInfo ci) {
|
||||||
|
if (this.getClass().toString().equals(ControlsOptionsScreen.class.toString())) {
|
||||||
|
this.midnightcontrols$setupButton();
|
||||||
|
this.addDrawableChild(midnightcontrols$button);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"accessWidener": "midnightcontrols.accesswidener"
|
||||||
|
}
|
||||||
@@ -1,67 +0,0 @@
|
|||||||
{
|
|
||||||
"schemaVersion": 1,
|
|
||||||
"id": "midnightcontrols",
|
|
||||||
"name": "MidnightControls",
|
|
||||||
"version": "${version}",
|
|
||||||
"description": "Adds controller support and enhanced controls overall.",
|
|
||||||
"authors": [
|
|
||||||
"LambdAurora",
|
|
||||||
"Motschen"
|
|
||||||
],
|
|
||||||
"contributors": [
|
|
||||||
"akemin-dayo",
|
|
||||||
"DioEgizio",
|
|
||||||
"dogtopus",
|
|
||||||
"egeesin",
|
|
||||||
"EnnuiL",
|
|
||||||
"FlashyReese",
|
|
||||||
"gyular",
|
|
||||||
"Hambaka",
|
|
||||||
"Ivanoks",
|
|
||||||
"joaoh1",
|
|
||||||
"KiskaUWU",
|
|
||||||
"Madis0",
|
|
||||||
"RaptaG",
|
|
||||||
"ronniedude",
|
|
||||||
"spudpiggy",
|
|
||||||
"TrueHorse"
|
|
||||||
],
|
|
||||||
"contact": {
|
|
||||||
"homepage": "https://modrinth.com/mod/midnightcontrols",
|
|
||||||
"sources": "https://github.com/TeamMidnightDust/MidnightControls",
|
|
||||||
"issues": "https://github.com/TeamMidnightDust/MidnightControls/issues"
|
|
||||||
},
|
|
||||||
"license": "MIT",
|
|
||||||
"icon": "assets/midnightcontrols/icon.png",
|
|
||||||
"environment": "client",
|
|
||||||
"entrypoints": {
|
|
||||||
"main": [
|
|
||||||
"eu.midnightdust.midnightcontrols.MidnightControls"
|
|
||||||
],
|
|
||||||
"client": [
|
|
||||||
"eu.midnightdust.midnightcontrols.client.MidnightControlsClient"
|
|
||||||
],
|
|
||||||
"modmenu": [
|
|
||||||
"eu.midnightdust.midnightcontrols.client.MidnightControlsModMenu"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"accessWidener": "midnightcontrols.accesswidener",
|
|
||||||
"mixins": [
|
|
||||||
"midnightcontrols.mixins.json",
|
|
||||||
"midnightcontrols_compat.mixins.json"
|
|
||||||
],
|
|
||||||
"depends": {
|
|
||||||
"fabricloader": ">=0.11.3",
|
|
||||||
"fabric": ">=0.71.0",
|
|
||||||
"minecraft": ">=1.20.5",
|
|
||||||
"obsidianui": ">=0.2.5",
|
|
||||||
"java": ">=17"
|
|
||||||
},
|
|
||||||
"suggests": {
|
|
||||||
"kontrolo": "*"
|
|
||||||
},
|
|
||||||
"breaks": {
|
|
||||||
"lambdacontrols": "*",
|
|
||||||
"modmenu": "<1.12.2"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
accessWidener v1 named
|
accessWidener v1 named
|
||||||
|
|
||||||
#accessible class net/minecraft/client/gui/widget/EntryListWidget$MoveDirection
|
#accessible class net/minecraft/client/gui/widget/EntryListWidget$MoveDirection
|
||||||
accessible method net/minecraft/util/Identifier <init> (Ljava/lang/String;Ljava/lang/String;)V
|
|
||||||
@@ -6,7 +6,7 @@
|
|||||||
"ClickableWidgetAccessor",
|
"ClickableWidgetAccessor",
|
||||||
"AdvancementsScreenAccessor",
|
"AdvancementsScreenAccessor",
|
||||||
"ClientPlayerEntityMixin",
|
"ClientPlayerEntityMixin",
|
||||||
"ControlsOptionsScreenMixin",
|
"GameOptionsScreenMixin",
|
||||||
"CreativeInventoryScreenAccessor",
|
"CreativeInventoryScreenAccessor",
|
||||||
"GameRendererMixin",
|
"GameRendererMixin",
|
||||||
"HandledScreenMixin",
|
"HandledScreenMixin",
|
||||||
|
|||||||
@@ -1,14 +1,17 @@
|
|||||||
package eu.midnightdust.midnightcontrols.util.platform.fabric;
|
package eu.midnightdust.midnightcontrols.client.util.platform.fabric;
|
||||||
|
|
||||||
import net.minecraft.client.gui.screen.Screen;
|
|
||||||
import net.minecraft.client.gui.screen.ingame.CreativeInventoryScreen;
|
import net.minecraft.client.gui.screen.ingame.CreativeInventoryScreen;
|
||||||
import net.minecraft.client.gui.widget.PressableWidget;
|
import net.minecraft.client.gui.widget.PressableWidget;
|
||||||
import net.minecraft.item.ItemGroup;
|
import net.minecraft.item.ItemGroup;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Implementation of fabric methods for
|
||||||
|
* @see eu.midnightdust.midnightcontrols.client.util.platform.ItemGroupUtil
|
||||||
|
*/
|
||||||
public class ItemGroupUtilImpl {
|
public class ItemGroupUtilImpl {
|
||||||
public static List<ItemGroup> getVisibleGroupss(CreativeInventoryScreen screen) {
|
public static List<ItemGroup> getVisibleGroups(CreativeInventoryScreen screen) {
|
||||||
return (screen.getItemGroupsOnPage(screen.getCurrentPage()));
|
return (screen.getItemGroupsOnPage(screen.getCurrentPage()));
|
||||||
}
|
}
|
||||||
public static boolean cyclePage(boolean next, CreativeInventoryScreen screen) {
|
public static boolean cyclePage(boolean next, CreativeInventoryScreen screen) {
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package eu.midnightdust.midnightcontrols.util.platform.fabric;
|
package eu.midnightdust.midnightcontrols.client.util.platform.fabric;
|
||||||
|
|
||||||
import net.minecraft.client.network.ClientPlayNetworkHandler;
|
import net.minecraft.client.network.ClientPlayNetworkHandler;
|
||||||
import net.minecraft.network.packet.CustomPayload;
|
import net.minecraft.network.packet.CustomPayload;
|
||||||
@@ -7,6 +7,10 @@ import net.minecraft.network.packet.c2s.common.CustomPayloadC2SPacket;
|
|||||||
|
|
||||||
import static eu.midnightdust.midnightcontrols.client.MidnightControlsClient.client;
|
import static eu.midnightdust.midnightcontrols.client.MidnightControlsClient.client;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Implementation of fabric methods for
|
||||||
|
* @see eu.midnightdust.midnightcontrols.client.util.platform.NetworkUtil
|
||||||
|
*/
|
||||||
public class NetworkUtilImpl {
|
public class NetworkUtilImpl {
|
||||||
private static final ClientPlayNetworkHandler handler = client.getNetworkHandler();
|
private static final ClientPlayNetworkHandler handler = client.getNetworkHandler();
|
||||||
|
|
||||||
@@ -3,7 +3,7 @@ package eu.midnightdust.midnightcontrols.fabric;
|
|||||||
import eu.midnightdust.midnightcontrols.ControlsMode;
|
import eu.midnightdust.midnightcontrols.ControlsMode;
|
||||||
import eu.midnightdust.midnightcontrols.MidnightControls;
|
import eu.midnightdust.midnightcontrols.MidnightControls;
|
||||||
import eu.midnightdust.midnightcontrols.MidnightControlsFeature;
|
import eu.midnightdust.midnightcontrols.MidnightControlsFeature;
|
||||||
import eu.midnightdust.midnightcontrols.event.PlayerChangeControlsModeCallback;
|
import eu.midnightdust.midnightcontrols.fabric.event.PlayerChangeControlsModeCallback;
|
||||||
import eu.midnightdust.midnightcontrols.packet.ControlsModePayload;
|
import eu.midnightdust.midnightcontrols.packet.ControlsModePayload;
|
||||||
import eu.midnightdust.midnightcontrols.packet.FeaturePayload;
|
import eu.midnightdust.midnightcontrols.packet.FeaturePayload;
|
||||||
import eu.midnightdust.midnightcontrols.packet.HelloPayload;
|
import eu.midnightdust.midnightcontrols.packet.HelloPayload;
|
||||||
@@ -21,12 +21,11 @@ public class MidnightControlsFabric implements ModInitializer {
|
|||||||
PayloadTypeRegistry.playS2C().register(FeaturePayload.PACKET_ID, FeaturePayload.codec);
|
PayloadTypeRegistry.playS2C().register(FeaturePayload.PACKET_ID, FeaturePayload.codec);
|
||||||
|
|
||||||
ServerPlayNetworking.registerGlobalReceiver(HelloPayload.PACKET_ID, (payload, context) -> {
|
ServerPlayNetworking.registerGlobalReceiver(HelloPayload.PACKET_ID, (payload, context) -> {
|
||||||
ControlsMode.byId(payload.controlsMode())
|
ControlsMode.byId(payload.controlsMode()).ifPresent(controlsMode -> PlayerChangeControlsModeCallback.EVENT.invoker().apply(context.player(), controlsMode));
|
||||||
.ifPresent(controlsMode -> PlayerChangeControlsModeCallback.EVENT.invoker().apply(context.player(), controlsMode));
|
|
||||||
context.responseSender().sendPacket(new FeaturePayload(MidnightControlsFeature.HORIZONTAL_REACHAROUND));
|
context.responseSender().sendPacket(new FeaturePayload(MidnightControlsFeature.HORIZONTAL_REACHAROUND));
|
||||||
});
|
});
|
||||||
ServerPlayNetworking.registerGlobalReceiver(ControlsModePayload.PACKET_ID,
|
ServerPlayNetworking.registerGlobalReceiver(ControlsModePayload.PACKET_ID, (payload, context) -> {
|
||||||
(payload, context) -> ControlsMode.byId(payload.controlsMode())
|
ControlsMode.byId(payload.controlsMode()).ifPresent(controlsMode -> PlayerChangeControlsModeCallback.EVENT.invoker().apply(context.player(), controlsMode));
|
||||||
.ifPresent(controlsMode -> PlayerChangeControlsModeCallback.EVENT.invoker().apply(context.player(), controlsMode)));
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
* see the LICENSE file.
|
* see the LICENSE file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package eu.midnightdust.midnightcontrols.event;
|
package eu.midnightdust.midnightcontrols.fabric.event;
|
||||||
|
|
||||||
import eu.midnightdust.midnightcontrols.ControlsMode;
|
import eu.midnightdust.midnightcontrols.ControlsMode;
|
||||||
import net.fabricmc.fabric.api.event.Event;
|
import net.fabricmc.fabric.api.event.Event;
|
||||||
@@ -19,7 +19,7 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
* Represents an event callback which is fired when a player changes the controls mode.
|
* Represents an event callback which is fired when a player changes the controls mode.
|
||||||
*
|
*
|
||||||
* @author LambdAurora
|
* @author LambdAurora
|
||||||
* @version 1.1.0
|
* @version 1.10.0
|
||||||
* @since 1.1.0
|
* @since 1.1.0
|
||||||
*/
|
*/
|
||||||
@FunctionalInterface
|
@FunctionalInterface
|
||||||
@@ -45,7 +45,6 @@
|
|||||||
"eu.midnightdust.midnightcontrols.client.MidnightControlsModMenu"
|
"eu.midnightdust.midnightcontrols.client.MidnightControlsModMenu"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"accessWidener": "midnightcontrols.accesswidener",
|
|
||||||
"mixins": [
|
"mixins": [
|
||||||
"midnightcontrols.mixins.json",
|
"midnightcontrols.mixins.json",
|
||||||
"midnightcontrols_compat.mixins.json"
|
"midnightcontrols_compat.mixins.json"
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ yarn_mappings_patch_neoforge_version = 1.21+build.4
|
|||||||
quilt_loader_version=0.19.0-beta.18
|
quilt_loader_version=0.19.0-beta.18
|
||||||
quilt_fabric_api_version=7.0.1+0.83.0-1.20
|
quilt_fabric_api_version=7.0.1+0.83.0-1.20
|
||||||
|
|
||||||
sodium_version=mc1.19.2-0.4.4
|
sodium_version=mc1.21-0.5.11
|
||||||
obsidianui_version=0.2.6+mc1.21
|
obsidianui_version=0.2.6+mc1.21
|
||||||
modmenu_version=10.0.0-beta.1
|
modmenu_version=10.0.0-beta.1
|
||||||
emotecraft_version=2.1.3-SNAPSHOT-build.29-MC1.19-fabric
|
emotecraft_version=2.1.3-SNAPSHOT-build.29-MC1.19-fabric
|
||||||
|
|||||||
Reference in New Issue
Block a user