mirror of
https://github.com/TeamMidnightDust/MidnightControls.git
synced 2025-12-13 07:15:10 +01:00
Get Fabric working again, various improvements
This commit is contained in:
@@ -4,6 +4,23 @@ architectury {
|
||||
loom {
|
||||
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 {
|
||||
// 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:obsidianui:${project.obsidianui_version}-fabric"
|
||||
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 {
|
||||
|
||||
@@ -10,7 +10,6 @@
|
||||
package eu.midnightdust.midnightcontrols.client.compat;
|
||||
|
||||
import me.juancarloscp52.bedrockify.client.BedrockifyClient;
|
||||
import me.juancarloscp52.bedrockify.client.BedrockifyClientSettings;
|
||||
|
||||
/**
|
||||
* Represents HQM compatibility handler.
|
||||
|
||||
@@ -19,14 +19,15 @@ public class EmotecraftCompat {
|
||||
if (client.currentScreen instanceof FastChosseScreen) {
|
||||
int x = client.getWindow().getWidth() / 2;
|
||||
int y = client.getWindow().getHeight() / 2;
|
||||
if (index == 0) InputManager.queueMousePosition(x-200, y-200);
|
||||
if (index == 1) InputManager.queueMousePosition(x, y-200);
|
||||
if (index == 2) InputManager.queueMousePosition(x+200, y-200);
|
||||
if (index == 3) InputManager.queueMousePosition(x-200, y);
|
||||
if (index == 4) InputManager.queueMousePosition(x+200, y);
|
||||
if (index == 5) InputManager.queueMousePosition(x-200, y+200);
|
||||
if (index == 6) InputManager.queueMousePosition(x, y+200);
|
||||
if (index == 7) InputManager.queueMousePosition(x+200, y+200);
|
||||
switch (index) {
|
||||
case 0, 3, 5 -> x -= 200;
|
||||
case 2, 4, 7 -> x += 200;
|
||||
}
|
||||
switch (index) {
|
||||
case 0, 1, 2 -> y -= 200;
|
||||
case 5, 6, 7 -> y += 200;
|
||||
}
|
||||
InputManager.queueMousePosition(x, y);
|
||||
|
||||
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.option.ControlsOptionsScreen;
|
||||
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.option.GameOptions;
|
||||
import net.minecraft.text.Text;
|
||||
import net.minecraft.util.Identifier;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
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.
|
||||
*/
|
||||
@Mixin(ControlsOptionsScreen.class)
|
||||
public abstract class ControlsOptionsScreenMixin extends GameOptionsScreen {
|
||||
|
||||
public ControlsOptionsScreenMixin(Screen parent, GameOptions gameOptions, Text title) {
|
||||
super(parent, gameOptions, title);
|
||||
}
|
||||
@Mixin(GameOptionsScreen.class)
|
||||
public abstract class GameOptionsScreenMixin extends Screen {
|
||||
@Shadow @Nullable protected OptionListWidget body;
|
||||
@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();
|
||||
|
||||
@Override
|
||||
public void init() {
|
||||
super.init();
|
||||
this.midnightcontrols$setupButton();
|
||||
this.addDrawableChild(midnightcontrols$button);
|
||||
protected GameOptionsScreenMixin(Text title) {
|
||||
super(title);
|
||||
}
|
||||
|
||||
@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
|
||||
@@ -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
|
||||
|
||||
#accessible class net/minecraft/client/gui/widget/EntryListWidget$MoveDirection
|
||||
accessible method net/minecraft/util/Identifier <init> (Ljava/lang/String;Ljava/lang/String;)V
|
||||
#accessible class net/minecraft/client/gui/widget/EntryListWidget$MoveDirection
|
||||
@@ -6,7 +6,7 @@
|
||||
"ClickableWidgetAccessor",
|
||||
"AdvancementsScreenAccessor",
|
||||
"ClientPlayerEntityMixin",
|
||||
"ControlsOptionsScreenMixin",
|
||||
"GameOptionsScreenMixin",
|
||||
"CreativeInventoryScreenAccessor",
|
||||
"GameRendererMixin",
|
||||
"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.widget.PressableWidget;
|
||||
import net.minecraft.item.ItemGroup;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Implementation of fabric methods for
|
||||
* @see eu.midnightdust.midnightcontrols.client.util.platform.ItemGroupUtil
|
||||
*/
|
||||
public class ItemGroupUtilImpl {
|
||||
public static List<ItemGroup> getVisibleGroupss(CreativeInventoryScreen screen) {
|
||||
public static List<ItemGroup> getVisibleGroups(CreativeInventoryScreen screen) {
|
||||
return (screen.getItemGroupsOnPage(screen.getCurrentPage()));
|
||||
}
|
||||
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.network.packet.CustomPayload;
|
||||
@@ -7,6 +7,10 @@ import net.minecraft.network.packet.c2s.common.CustomPayloadC2SPacket;
|
||||
|
||||
import static eu.midnightdust.midnightcontrols.client.MidnightControlsClient.client;
|
||||
|
||||
/**
|
||||
* Implementation of fabric methods for
|
||||
* @see eu.midnightdust.midnightcontrols.client.util.platform.NetworkUtil
|
||||
*/
|
||||
public class NetworkUtilImpl {
|
||||
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.MidnightControls;
|
||||
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.FeaturePayload;
|
||||
import eu.midnightdust.midnightcontrols.packet.HelloPayload;
|
||||
@@ -21,12 +21,11 @@ public class MidnightControlsFabric implements ModInitializer {
|
||||
PayloadTypeRegistry.playS2C().register(FeaturePayload.PACKET_ID, FeaturePayload.codec);
|
||||
|
||||
ServerPlayNetworking.registerGlobalReceiver(HelloPayload.PACKET_ID, (payload, context) -> {
|
||||
ControlsMode.byId(payload.controlsMode())
|
||||
.ifPresent(controlsMode -> PlayerChangeControlsModeCallback.EVENT.invoker().apply(context.player(), controlsMode));
|
||||
ControlsMode.byId(payload.controlsMode()).ifPresent(controlsMode -> PlayerChangeControlsModeCallback.EVENT.invoker().apply(context.player(), controlsMode));
|
||||
context.responseSender().sendPacket(new FeaturePayload(MidnightControlsFeature.HORIZONTAL_REACHAROUND));
|
||||
});
|
||||
ServerPlayNetworking.registerGlobalReceiver(ControlsModePayload.PACKET_ID,
|
||||
(payload, context) -> ControlsMode.byId(payload.controlsMode())
|
||||
.ifPresent(controlsMode -> PlayerChangeControlsModeCallback.EVENT.invoker().apply(context.player(), controlsMode)));
|
||||
ServerPlayNetworking.registerGlobalReceiver(ControlsModePayload.PACKET_ID, (payload, context) -> {
|
||||
ControlsMode.byId(payload.controlsMode()).ifPresent(controlsMode -> PlayerChangeControlsModeCallback.EVENT.invoker().apply(context.player(), controlsMode));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
* see the LICENSE file.
|
||||
*/
|
||||
|
||||
package eu.midnightdust.midnightcontrols.event;
|
||||
package eu.midnightdust.midnightcontrols.fabric.event;
|
||||
|
||||
import eu.midnightdust.midnightcontrols.ControlsMode;
|
||||
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.
|
||||
*
|
||||
* @author LambdAurora
|
||||
* @version 1.1.0
|
||||
* @version 1.10.0
|
||||
* @since 1.1.0
|
||||
*/
|
||||
@FunctionalInterface
|
||||
@@ -45,7 +45,6 @@
|
||||
"eu.midnightdust.midnightcontrols.client.MidnightControlsModMenu"
|
||||
]
|
||||
},
|
||||
"accessWidener": "midnightcontrols.accesswidener",
|
||||
"mixins": [
|
||||
"midnightcontrols.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_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
|
||||
modmenu_version=10.0.0-beta.1
|
||||
emotecraft_version=2.1.3-SNAPSHOT-build.29-MC1.19-fabric
|
||||
|
||||
Reference in New Issue
Block a user