Skip to content

Commit a1b70e0

Browse files
committed
Workaround old Fabric Perms API issues by explicitly checking version
1 parent 35e0af1 commit a1b70e0

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricWorldEdit.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,9 @@
5656
import net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents;
5757
import net.fabricmc.loader.api.FabricLoader;
5858
import net.fabricmc.loader.api.ModContainer;
59+
import net.fabricmc.loader.api.Version;
60+
import net.fabricmc.loader.api.metadata.ModMetadata;
61+
import net.fabricmc.loader.api.metadata.version.VersionPredicate;
5962
import net.minecraft.commands.CommandBuildContext;
6063
import net.minecraft.commands.CommandSourceStack;
6164
import net.minecraft.commands.Commands;
@@ -205,10 +208,22 @@ private void registerCommands(CommandDispatcher<CommandSourceStack> dispatcher,
205208
private FabricPermissionsProvider getInitialPermissionsProvider() {
206209
try {
207210
Class.forName("me.lucko.fabric.api.permissions.v0.Permissions", false, getClass().getClassLoader());
211+
Optional<Version> version = FabricLoader.getInstance().getModContainer("fabric-permissions-api-v0")
212+
.map(ModContainer::getMetadata)
213+
.map(ModMetadata::getVersion);
214+
215+
if (version.isPresent() && !VersionPredicate.parse(">=0.3.3").test(version.get())) {
216+
throw new RuntimeException("Fabric permissions version " + version.get() + " is not supported. Please update Fabric Permissions API");
217+
}
218+
208219
return new FabricPermissionsProvider.LuckoFabricPermissionsProvider(platform);
209220
} catch (ClassNotFoundException ignored) {
210221
// fallback to vanilla
222+
} catch (Throwable e) {
223+
// catch any exception to prevent crashing the server, but still print a warning
224+
LOGGER.warn("Failed to load Fabric permissions provider. Falling back to Minecraft", e);
211225
}
226+
212227
return new FabricPermissionsProvider.VanillaPermissionsProvider(platform);
213228
}
214229

0 commit comments

Comments
 (0)