Skip to content

Commit

Permalink
use mixins instead of mutating the setting field
Browse files Browse the repository at this point in the history
  • Loading branch information
rfresh2 committed Mar 4, 2024
1 parent 4b1bb8c commit 8f131e0
Show file tree
Hide file tree
Showing 5 changed files with 57 additions and 25 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package xaeroplus.mixin.client;

import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import xaero.common.AXaeroMinimap;
import xaero.common.misc.Internet;
import xaeroplus.settings.XaeroPlusSettingRegistry;

@Mixin(value = Internet.class, remap = false)
public class MixinCommonInternet {

@Inject(method = "checkModVersion", at = @At("HEAD"), cancellable = true, remap = false)
private static void disableInternetAccessCheck(final AXaeroMinimap modMain, final CallbackInfo ci) {
if (XaeroPlusSettingRegistry.disableXaeroInternetAccess.getValue()) ci.cancel();
}
}
17 changes: 17 additions & 0 deletions common/src/main/java/xaeroplus/mixin/client/MixinPatreon.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package xaeroplus.mixin.client;

import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import xaero.common.patreon.Patreon;
import xaeroplus.settings.XaeroPlusSettingRegistry;

@Mixin(value = Patreon.class, remap = false)
public class MixinPatreon {

@Inject(method = "checkPatreon(Lxaero/common/AXaeroMinimap;)V", at = @At("HEAD"), cancellable = true)
private static void disableInternetAccessCheck(final CallbackInfo ci) {
if (XaeroPlusSettingRegistry.disableXaeroInternetAccess.getValue()) ci.cancel();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package xaeroplus.mixin.client;

import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import xaero.map.misc.Internet;
import xaeroplus.settings.XaeroPlusSettingRegistry;

@Mixin(value = Internet.class, remap = false)
public class MixinWorldMapInternet {

@Inject(method = "checkModVersion", at = @At("HEAD"), cancellable = true)
private static void disableInternetAccessCheck(final CallbackInfo ci) {
if (XaeroPlusSettingRegistry.disableXaeroInternetAccess.getValue()) ci.cancel();
}
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
package xaeroplus.settings;

import xaero.map.WorldMap;
import xaero.minimap.XaeroMinimap;
import xaeroplus.Globals;
import xaeroplus.XaeroPlus;
import xaeroplus.feature.render.ColorHelper;
import xaeroplus.feature.render.ColorHelper.WaystoneColor;
import xaeroplus.module.ModuleManager;
Expand Down Expand Up @@ -495,27 +492,7 @@ public String getTranslationKey() {
public static final XaeroPlusBooleanSetting disableXaeroInternetAccess = XaeroPlusBooleanSetting.create(
"Disable Xaero Internet Access",
"Disable Xaero Internet Access",
"Does not affect XaeroPlus. Disables Xaero mods from using the internet to query for updates and patreon subscriptions. Xaero mods do not expose this setting in the GUI normally.",
(b) -> {
if (XaeroPlus.initialized.get()) {
try {
var wmSettings = WorldMap.settings;
if (wmSettings != null) {
wmSettings.allowInternetAccess = !b;
wmSettings.saveSettings();
}
if (Class.forName("xaero.minimap.XaeroMinimap") == null) return;
var mmSettings = XaeroMinimap.INSTANCE // $REMAP
.getSettings();
if (mmSettings != null) {
mmSettings.allowInternetAccess = !b;
mmSettings.saveSettings();
}
} catch (final Exception e) {
XaeroPlus.LOGGER.warn("Failed saving Xaero settings");
}
}
},
true,
"Does not affect XaeroPlus. Disables WorldMap and Minimap mods from using the internet to query for updates and patreon subscriptions. Xaero mods do not expose this setting in the GUI normally.",
false,
SettingLocation.WORLD_MAP_MAIN);
}
3 changes: 3 additions & 0 deletions common/src/main/resources/xaeroplus.mixins.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
"AccessorGuiCaveModeOptions",
"AccessorRightClickOption",
"MixinCommonGuiSettings",
"MixinCommonInternet",
"MixinControlsHandler",
"MixinCrashHandler",
"MixinForgeEventHandler",
Expand Down Expand Up @@ -46,6 +47,7 @@
"MixinMinimapModSettings",
"MixinMinimapRenderer",
"MixinMisc",
"MixinPatreon",
"MixinRadarRenderContext",
"MixinRadarRenderProvider",
"MixinSupportXaeroMinimap",
Expand All @@ -59,6 +61,7 @@
"MixinWidgetScreenHandlerAccessor",
"MixinWorldDataReader",
"MixinWorldMapGuiSettings",
"MixinWorldMapInternet",
"MixinWorldMapModOptionsAccessor",
"MixinWorldMapModSettings",
"MixinWorldMapOption",
Expand Down

0 comments on commit 8f131e0

Please sign in to comment.