Skip to content

Commit 2208fd2

Browse files
committed
Update to 26.1
1 parent 2f84792 commit 2208fd2

14 files changed

Lines changed: 197 additions & 75 deletions

File tree

.github/workflows/build.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ jobs:
1212
matrix:
1313
# Use these Java versions
1414
java: [
15-
21 # Minimum supported by Minecraft
15+
25 # Minimum supported by Minecraft
1616
]
1717
# and run on both Linux and Windows
1818
os: [ubuntu-latest]

.github/workflows/release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ jobs:
2424
- name: Set up JDK
2525
uses: actions/setup-java@v1
2626
with:
27-
java-version: 21
27+
java-version: 25
2828

2929
- name: Grant execute permission for gradlew
3030
run: chmod +x gradlew

build.gradle

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
plugins {
2-
id 'fabric-loom' version '1.13.+'
2+
id 'net.fabricmc.fabric-loom' version '1.15.+'
33
id 'maven-publish'
44
id "com.modrinth.minotaur" version "2.+"
55
}
66

7-
sourceCompatibility = JavaVersion.VERSION_21
8-
targetCompatibility = JavaVersion.VERSION_21
9-
10-
archivesBaseName = project.archives_base_name
7+
base {
8+
archivesName = project.archives_base_name
9+
}
1110
version = project.mod_version
1211
group = project.maven_group
1312

@@ -21,15 +20,14 @@ repositories{
2120
dependencies {
2221
//to change the versions see the gradle.properties file
2322
minecraft "com.mojang:minecraft:${project.minecraft_version}"
24-
mappings loom.officialMojangMappings()
25-
modImplementation "net.fabricmc:fabric-loader:${project.loader_version}"
23+
implementation "net.fabricmc:fabric-loader:${project.loader_version}"
2624

2725
// Fabric API. This is technically optional, but you probably want it anyway.
28-
modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"
26+
implementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_api_version}"
2927

30-
modImplementation include("eu.pb4:map-canvas-api:${project.mapcanvas_version}")
31-
modImplementation include("eu.pb4:sgui:${project.sgui_version}")
32-
modImplementation include("me.lucko:fabric-permissions-api:0.6.0-patbox")
28+
implementation include("eu.pb4:map-canvas-api:${project.mapcanvas_version}")
29+
implementation include("eu.pb4:sgui:${project.sgui_version}")
30+
implementation "me.lucko:fabric-permissions-api:0.7.0"
3331

3432
[
3533
"imageio:imageio-core",
@@ -63,7 +61,7 @@ tasks.withType(JavaCompile).configureEach {
6361
it.options.encoding = "UTF-8"
6462

6563
// Minecraft 1.18 (1.18-pre2) upwards uses Java 17.
66-
it.options.release = 21
64+
it.options.release = 25
6765
}
6866

6967
java {
@@ -75,7 +73,7 @@ java {
7573

7674
jar {
7775
from("LICENSE") {
78-
rename { "${it}_${project.archivesBaseName}"}
76+
rename { "${it}_${project.archives_base_name}"}
7977
}
8078
}
8179

@@ -84,11 +82,11 @@ publishing {
8482
publications {
8583
mavenJava(MavenPublication) {
8684
// add all the jars that should be included when publishing to maven
87-
artifact(remapJar) {
88-
builtBy remapJar
85+
artifact(jar) {
86+
builtBy jar
8987
}
9088
artifact(sourcesJar) {
91-
builtBy remapSourcesJar
89+
builtBy sourcesJar
9290
}
9391
}
9492
}
@@ -110,9 +108,9 @@ if (System.getenv("MODRINTH")) {
110108
versionType = "release"
111109
changelog = System.getenv("CHANGELOG")
112110
// On fabric, use 'remapJar' instead of 'jar'
113-
uploadFile = remapJar
111+
uploadFile = jar
114112
gameVersions = [((String) project.minecraft_version)]
115-
loaders = ["fabric", "quilt"]
113+
loaders = ["fabric"]
116114
}
117115

118116
remapJar {

gradle.properties

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,18 @@ org.gradle.jvmargs=-Xmx1G
33

44
# Fabric Properties
55
# check these on https://fabricmc.net/versions.html
6-
minecraft_version=1.21.11
7-
yarn_mappings=1.21.11+build.1
8-
loader_version=0.18.2
9-
loom_version=1.13-SNAPSHOT
6+
minecraft_version=26.1
7+
loader_version=0.18.4
8+
loom_version=1.15-SNAPSHOT
109

1110
# Fabric API
12-
fabric_version=0.139.4+1.21.11
11+
fabric_api_version=0.144.0+26.1
1312

1413
# Mod Properties
15-
mod_version = 0.12.1+1.21.11
14+
mod_version = 0.13.0+26.1
1615
maven_group = space.essem
1716
archives_base_name = image2map
1817

1918
# Dependencies
20-
mapcanvas_version=0.7.0+1.21.11
21-
sgui_version=1.11.0+1.21.9
19+
mapcanvas_version=0.8.0+26.1
20+
sgui_version=2.0.0-beta.2+26.1

gradle/wrapper/gradle-wrapper.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.1-bin.zip
44
networkTimeout=10000
55
validateDistributionUrl=true
66
zipStoreBase=GRADLE_USER_HOME
Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
package space.essem.image2map;
2+
3+
import me.lucko.fabric.api.permissions.v0.Permissions;
4+
import net.fabricmc.loader.api.FabricLoader;
5+
import net.minecraft.commands.CommandSourceStack;
6+
import net.minecraft.resources.Identifier;
7+
import net.minecraft.server.permissions.Permission;
8+
import net.minecraft.server.permissions.PermissionLevel;
9+
import net.minecraft.world.entity.player.Player;
10+
11+
import java.lang.invoke.MethodHandle;
12+
import java.lang.invoke.MethodHandles;
13+
import java.util.function.Predicate;
14+
15+
/**
16+
* Temporary wrapper for permission checks, targets yet to be merged fabric-permission-api-v1, making the mod support it before it's finalized.
17+
* Also contains a fallback when it's not present or it changes and fails to adapt.
18+
*/
19+
public class FabricPermissionBridge {
20+
public static final boolean IS_LOADED = FabricLoader.getInstance().isModLoaded("fabric-permission-api-v1");
21+
public static final boolean IS_LOADED_LEGACY = FabricLoader.getInstance().isModLoaded("fabric-permissions-api-v0");
22+
23+
private static MethodHandle permissionCheckCallPlayerLevel;
24+
private static MethodHandle permissionCheckCallCommandLevel;
25+
private static MethodHandle permissionCheckCallPlayerBool;
26+
private static MethodHandle permissionCheckCallCommandBool;
27+
private static final boolean enabledFabric;
28+
29+
public static boolean checkPermission(Player player, Identifier permission, PermissionLevel level) {
30+
if (enabledFabric) {
31+
try {
32+
return (boolean) permissionCheckCallPlayerLevel.bindTo(player).invokeExact(permission, level);
33+
} catch (Throwable e) {
34+
e.printStackTrace();
35+
// Should never happen!
36+
}
37+
}
38+
39+
if (IS_LOADED_LEGACY) {
40+
return Permissions.check(player, permission.toShortLanguageKey().replace('/', '.'), level);
41+
}
42+
43+
return player.permissions().hasPermission(new Permission.HasCommandLevel(level));
44+
}
45+
46+
public static boolean checkPermission(CommandSourceStack player, Identifier permission, PermissionLevel level) {
47+
if (enabledFabric) {
48+
try {
49+
return (boolean) permissionCheckCallCommandLevel.bindTo(player).invokeExact(permission, level);
50+
} catch (Throwable e) {
51+
e.printStackTrace();
52+
// Should never happen!
53+
}
54+
}
55+
56+
if (IS_LOADED_LEGACY) {
57+
return Permissions.check(player, permission.toShortLanguageKey().replace('/', '.'), level);
58+
}
59+
60+
return player.permissions().hasPermission(new Permission.HasCommandLevel(level));
61+
}
62+
63+
public static boolean checkPermission(Player player, Identifier permission, boolean defaultValue) {
64+
if (enabledFabric) {
65+
try {
66+
return (boolean) permissionCheckCallPlayerBool.bindTo(player).invokeExact(permission, defaultValue);
67+
} catch (Throwable e) {
68+
e.printStackTrace();
69+
// Should never happen!
70+
}
71+
}
72+
73+
if (IS_LOADED_LEGACY) {
74+
return Permissions.check(player, permission.toShortLanguageKey().replace('/', '.'), defaultValue);
75+
}
76+
77+
return defaultValue;
78+
}
79+
80+
public static boolean checkPermission(CommandSourceStack player, Identifier permission, boolean defaultValue) {
81+
if (enabledFabric) {
82+
try {
83+
return (boolean) permissionCheckCallCommandBool.bindTo(player).invokeExact(permission, defaultValue);
84+
} catch (Throwable e) {
85+
e.printStackTrace();
86+
// Should never happen!
87+
}
88+
}
89+
90+
if (IS_LOADED_LEGACY) {
91+
return Permissions.check(player, permission.toShortLanguageKey().replace('/', '.'), defaultValue);
92+
}
93+
94+
return defaultValue;
95+
}
96+
97+
public static Predicate<CommandSourceStack> require(Identifier permission, PermissionLevel level) {
98+
return ctx -> checkPermission(ctx, permission, level);
99+
}
100+
101+
public static Predicate<CommandSourceStack> require(Identifier permission, boolean def) {
102+
return ctx -> checkPermission(ctx, permission, def);
103+
}
104+
105+
private static MethodHandle findCheckPermission(Class<?> object, Class<?> fallback) throws Throwable {
106+
var lookup = MethodHandles.publicLookup();
107+
var meth = object.getMethod("checkPermission", Identifier.class, fallback);
108+
return permissionCheckCallCommandLevel = lookup.unreflect(meth);
109+
}
110+
111+
static {
112+
var e = false;
113+
if (IS_LOADED) {
114+
try {
115+
permissionCheckCallPlayerLevel = findCheckPermission(Player.class, PermissionLevel.class);
116+
permissionCheckCallCommandLevel = findCheckPermission(CommandSourceStack.class, PermissionLevel.class);
117+
permissionCheckCallPlayerBool = findCheckPermission(Player.class, boolean.class);
118+
permissionCheckCallCommandBool = findCheckPermission(CommandSourceStack.class, boolean.class);
119+
e = true;
120+
} catch (Throwable err) {
121+
err.printStackTrace();
122+
}
123+
}
124+
enabledFabric = e;
125+
}
126+
}

0 commit comments

Comments
 (0)