Skip to content

Commit 27bb3a4

Browse files
committed
config screens
1 parent a8ad64e commit 27bb3a4

File tree

20 files changed

+91
-35
lines changed

20 files changed

+91
-35
lines changed

build.gradle.kts

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,19 @@ architectury.common(stonecutter.tree.branches.mapNotNull {
2222
})
2323
repositories{
2424
maven("https://maven.neoforged.net/releases/")
25+
26+
//modmenu
27+
maven("https://maven.terraformersmc.com/")
28+
//placeholder api (modmenu depencency)
29+
maven("https://maven.nucleoid.xyz/")
2530
}
2631
dependencies {
2732
minecraft("com.mojang:minecraft:$minecraft")
2833

2934
if (loader == "fabric") {
30-
modImplementation("net.fabricmc:fabric-loader:${property("deps.fabric_loader")}")
35+
modImplementation("net.fabricmc:fabric-loader:${mod.dep("fabric_loader")}")
3136
mappings("net.fabricmc:yarn:$minecraft+build.${mod.dep("yarn_build")}:v2")
37+
modImplementation("com.terraformersmc:modmenu:${mod.dep("modmenu_version")}")
3238

3339
//some features (like automatic resource loading from non vanilla namespaces) work only with fabric API installed
3440
//for example translations from assets/modid/lang/en_us.json won't be working, same stuff with textures
@@ -37,11 +43,11 @@ dependencies {
3743

3844
}
3945
if (loader == "forge") {
40-
"forge"("net.minecraftforge:forge:${minecraft}-${property("deps.forge_loader")}")
46+
"forge"("net.minecraftforge:forge:${minecraft}-${mod.dep("forge_loader")}")
4147
mappings("net.fabricmc:yarn:$minecraft+build.${mod.dep("yarn_build")}:v2")
4248
}
4349
if (loader == "neoforge") {
44-
"neoForge"("net.neoforged:neoforge:${property("deps.neoforge_loader")}")
50+
"neoForge"("net.neoforged:neoforge:${mod.dep("neoforge_loader")}")
4551
mappings(loom.layered {
4652
mappings("net.fabricmc:yarn:$minecraft+build.${mod.dep("yarn_build")}:v2")
4753
mod.dep("neoforge_patch").takeUnless { it.startsWith('[') }?.let {
@@ -59,6 +65,12 @@ loom {
5965
options.put("mark-corresponding-synthetics", "1")
6066
}
6167
}
68+
if(loader == "forge") {
69+
forge.mixinConfigs(
70+
"customcursor-common.mixins.json",
71+
"customcursor-forge.mixins.json",
72+
)
73+
}
6274
}
6375

6476

@@ -114,14 +126,6 @@ java {
114126
sourceCompatibility = java
115127
}
116128

117-
java {
118-
withSourcesJar()
119-
val java = if (stonecutter.eval(minecraft, ">=1.20.5"))
120-
JavaVersion.VERSION_21 else JavaVersion.VERSION_17
121-
targetCompatibility = java
122-
sourceCompatibility = java
123-
}
124-
125129
val shadowBundle: Configuration by configurations.creating {
126130
isCanBeConsumed = false
127131
isCanBeResolved = true

gradle.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ deps.neoforge_patch=[VERSIONED]
3131

3232
# Mod dependencies
3333
deps.yarn_build=[VERSIONED]
34+
deps.modmenu_version=[VERSIONED]
3435

3536
# Publishing
3637
publish.modrinth=y8fEl7OK

src/main/java/io/github/jumperonjava/customcursor/CursorEditScreen.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,4 +169,11 @@ private void renderCheckerboard(DrawContext context, float delta, int color1, in
169169
context.getMatrices().pop();
170170
context.disableScissor();
171171
}
172+
public static CursorEditScreen createCursorEditScreen(Screen parent) {
173+
return new CursorEditScreen(parent, CustomCursorInit.getConfig().pointer, c -> {
174+
var cfg = new CursorConfigStorage();
175+
cfg.pointer = c;
176+
CustomCursorInit.setConfig(cfg);
177+
});
178+
}
172179
}

src/main/java/io/github/jumperonjava/customcursor/fabric/CustomCursorFabric.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
//? if fabric {
2-
package io.github.jumperonjava.customcursor.fabric;
2+
/*package io.github.jumperonjava.customcursor.fabric;
33
44
import net.fabricmc.api.ModInitializer;
55
import io.github.jumperonjava.customcursor.CustomCursorInit;
@@ -11,4 +11,4 @@ public void onInitialize() {
1111
CustomCursorInit.entrypoint((s)-> FabricLoader.getInstance().isModLoaded(s));
1212
}
1313
}
14-
//?}
14+
*///?}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
//? if fabric {
2+
/*package io.github.jumperonjava.customcursor.fabric;
3+
4+
import com.terraformersmc.modmenu.api.ConfigScreenFactory;
5+
import com.terraformersmc.modmenu.api.ModMenuApi;
6+
import io.github.jumperonjava.customcursor.CursorEditScreen;
7+
8+
public class ModMenuIntegration implements ModMenuApi {
9+
public ConfigScreenFactory<?> getModConfigScreenFactory() {
10+
return CursorEditScreen::createCursorEditScreen;
11+
}
12+
}
13+
*///?}
Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
11
//? if forge {
2-
/*package io.github.jumperonjava.customcursor.forge;
2+
package io.github.jumperonjava.customcursor.forge;
33

4+
import io.github.jumperonjava.customcursor.CursorEditScreen;
45
import io.github.jumperonjava.customcursor.CustomCursorInit;
6+
import net.minecraftforge.common.MinecraftForge;
57
import net.minecraftforge.fml.ModList;
68
import net.minecraftforge.fml.common.Mod;
79

810
@Mod("customcursor")
911
public class CustomCursorForge {
1012
public CustomCursorForge() {
1113
CustomCursorInit.entrypoint((s)-> ModList.get().isLoaded(s));
14+
MinecraftForge.registerConfigScreen(CursorEditScreen::createCursorEditScreen);
1215
}
1316
}
14-
*///?}
17+
//?}

src/main/java/io/github/jumperonjava/customcursor/mixin/MouseOptionsScreenMixin.java

Lines changed: 7 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,7 @@ protected MouseOptionsScreenMixin() {
3131
void inject(CallbackInfo ci){
3232
int k = this.height / 6 - 12 + 24 * 3;
3333
var cursorEditScreenButton = new ButtonWidget.Builder(Text.translatable("customcursor.openbutton"),(buttonWidget)->{
34-
MinecraftClient.getInstance().setScreen(new CursorEditScreen(this, CustomCursorInit.getConfig().pointer, c -> {
35-
var cfg = new CursorConfigStorage();
36-
cfg.pointer = c;
37-
CustomCursorInit.setConfig(cfg);
38-
}));
34+
MinecraftClient.getInstance().setScreen(CursorEditScreen.createCursorEditScreen(this));
3935
}).dimensions(width / 2 - 155, k, 310, 20).build();
4036
addDrawableChild(cursorEditScreenButton);
4137

@@ -60,19 +56,12 @@ int injected(int k){
6056
/*@Inject(method = "addOptions", at = @At("TAIL"))
6157
public void addOptions(CallbackInfo ci) {
6258
this.body.addWidgetEntry
63-
(ButtonWidget.builder
64-
(Text.translatable("customcursor.openbutton"),
65-
(buttonWidget) -> client.setScreen(new CursorEditScreen(this, CustomCursorInit.getConfig().pointer, c -> {
66-
var cfg = new CursorConfigStorage();
67-
cfg.pointer = c;
68-
CustomCursorInit.setConfig(cfg);
69-
}))).build(),(ButtonWidget.builder
70-
(Text.translatable("customcursor.openbutton"),
71-
(buttonWidget) -> client.setScreen(new CursorEditScreen(this, CustomCursorInit.getConfig().pointer, c -> {
72-
var cfg = new CursorConfigStorage();
73-
cfg.pointer = c;
74-
CustomCursorInit.setConfig(cfg);
75-
}))).dimensions(0,0,0,0).build()));
59+
(
60+
ButtonWidget.builder(Text.translatable("customcursor.openbutton"),
61+
(buttonWidget) -> client.setScreen(CursorEditScreen.createCursorEditScreen(this))).build(),
62+
ButtonWidget.builder(Text.translatable("customcursor.openbutton"),
63+
(buttonWidget) -> client.setScreen(CursorEditScreen.createCursorEditScreen(this))).dimensions(0,0,0,0).build()
64+
);
7665
}
7766
*///?}
7867
}
Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,32 @@
11
//? if neoforge {
22
/*package io.github.jumperonjava.customcursor.neoforge;
33
4+
import io.github.jumperonjava.customcursor.CursorEditScreen;
45
import io.github.jumperonjava.customcursor.CustomCursorInit;
6+
import net.minecraft.client.gui.screen.Screen;
57
import net.neoforged.fml.ModList;
8+
import net.neoforged.fml.ModLoadingContext;
69
import net.neoforged.fml.common.Mod;
7-
10+
//? if <1.21 {
11+
import net.neoforged.neoforge.client.ConfigScreenHandler;
12+
//?} else {
13+
/^import net.neoforged.neoforge.client.gui.IConfigScreenFactory;
14+
^///?}
815
@Mod("customcursor")
916
public class CustomCursorNeoForge {
1017
public CustomCursorNeoForge() {
1118
CustomCursorInit.entrypoint((s)-> ModList.get().isLoaded(s));
19+
ModLoadingContext.get().registerExtensionPoint(
20+
//? if <1.21 {
21+
ConfigScreenHandler.ConfigScreenFactory.class,
22+
() -> new ConfigScreenHandler.ConfigScreenFactory(
23+
((client, parent) -> CursorEditScreen.createCursorEditScreen(parent))
24+
)
25+
//?} else {
26+
/^IConfigScreenFactory.class,
27+
() -> (client, parent) -> CursorEditScreen.createCursorEditScreen(parent)
28+
^///?}
29+
);
1230
}
1331
}
1432
*///?}

src/main/resources/fabric.mod.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@
1515
"entrypoints": {
1616
"main": [
1717
"io.github.jumperonjava.customcursor.fabric.CustomCursorFabric"
18+
],
19+
"modmenu": [
20+
"io.github.jumperonjava.customcursor.fabric.ModMenuIntegration"
1821
]
1922
},
2023
"mixins": [

stonecutter.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ plugins {
55
id("com.github.johnrengelman.shadow") version "8.1.1" apply false
66
id("me.modmuss50.mod-publish-plugin") version "0.8.4" apply false
77
}
8-
stonecutter active "1.20.1-fabric" /* [SC] DO NOT EDIT */
8+
stonecutter active "1.20.1-forge" /* [SC] DO NOT EDIT */
99
stonecutter.automaticPlatformConstants = true
1010

1111
// Builds every version into `build/libs/{mod.version}/{loader}`

0 commit comments

Comments
 (0)