Skip to content

Commit

Permalink
Disable Waypoint Sharing setting
Browse files Browse the repository at this point in the history
  • Loading branch information
rfresh2 committed Sep 29, 2023
1 parent 86efa03 commit 20aa781
Show file tree
Hide file tree
Showing 13 changed files with 80 additions and 7 deletions.
12 changes: 12 additions & 0 deletions src/main/java/xaeroplus/mixin/client/AccessorRightClickOption.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package xaeroplus.mixin.client;

import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Accessor;
import xaero.map.gui.dropdown.rightclick.RightClickOption;

@Mixin(value = RightClickOption.class, remap = false)
public interface AccessorRightClickOption {

@Accessor
String getName();
}
4 changes: 4 additions & 0 deletions src/main/java/xaeroplus/mixin/client/MixinGuiMap.java
Original file line number Diff line number Diff line change
Expand Up @@ -2016,6 +2016,10 @@ public void onAction(Screen screen) {
));
}
}

if (XaeroPlusSettingRegistry.disableWaypointSharing.getValue()) {
cir.getReturnValue().removeIf(option -> ((AccessorRightClickOption) option).getName().equals("gui.xaero_right_click_map_share_location"));
}
}

@Unique
Expand Down
24 changes: 17 additions & 7 deletions src/main/java/xaeroplus/mixin/client/MixinGuiWaypoints.java
Original file line number Diff line number Diff line change
@@ -1,20 +1,19 @@
package xaeroplus.mixin.client;

import com.google.common.base.Objects;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.widget.ButtonWidget;
import net.minecraft.client.gui.widget.TextFieldWidget;
import net.minecraft.client.render.Camera;
import net.minecraft.client.resource.language.I18n;
import net.minecraft.entity.Entity;
import net.minecraft.text.Text;
import net.minecraft.util.math.Vec3d;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Overwrite;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.Redirect;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
import xaero.common.AXaeroMinimap;
Expand All @@ -26,17 +25,16 @@
import xaero.common.minimap.waypoints.WaypointsManager;
import xaero.common.minimap.waypoints.WaypointsSort;
import xaero.common.misc.KeySortableByOther;
import xaeroplus.settings.XaeroPlusSettingRegistry;
import xaeroplus.util.Shared;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;

import static java.util.Objects.isNull;

@Mixin(value = GuiWaypoints.class, remap = false)
public class MixinGuiWaypoints extends ScreenBase {
public abstract class MixinGuiWaypoints extends ScreenBase {

private final int TOGGLE_ALL_ID = 69;
private final int SEARCH_ID = 70;
Expand All @@ -46,6 +44,8 @@ public class MixinGuiWaypoints extends ScreenBase {
private ArrayList<Waypoint> waypointsSorted;
@Shadow
private WaypointsManager waypointsManager;
@Shadow
private ButtonWidget shareButton;
private TextFieldWidget searchField;
private MySmallButton toggleAllButton;

Expand Down Expand Up @@ -93,7 +93,6 @@ public void mouseClickedInject(final double x, final double y, final int button,
this.searchField.setFocused(true);
this.searchField.setCursorToEnd();
this.searchField.setEditable(true);
// this.searchField.setSelectionEnd(0);
} else {
this.searchField.setFocused(false);
}
Expand Down Expand Up @@ -127,6 +126,17 @@ public void drawScreenInject(final DrawContext guiGraphics, final int mouseX, fi
}
}

@Shadow
abstract boolean isOneSelected();

@Redirect(method = "updateButtons", at = @At(value = "INVOKE", target = "Lxaero/common/gui/GuiWaypoints;isOneSelected()Z"))
public boolean shareButtonRedirect(final GuiWaypoints instance) {
if (XaeroPlusSettingRegistry.disableWaypointSharing.getValue()) {
return false;
}
return isOneSelected();
}

private void updateSearch() {
if (this.searchField.isFocused()) {
String newValue = this.searchField.getText();
Expand Down
5 changes: 5 additions & 0 deletions src/main/java/xaeroplus/mixin/client/MixinWaypointReader.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import xaero.map.gui.dropdown.rightclick.RightClickOption;
import xaero.map.mods.gui.Waypoint;
import xaero.map.mods.gui.WaypointReader;
import xaeroplus.settings.XaeroPlusSettingRegistry;
import xaeroplus.util.BaritoneHelper;
import xaeroplus.util.ChunkUtils;
import xaeroplus.util.IWaypointDimension;
Expand Down Expand Up @@ -72,5 +73,9 @@ public void onAction(Screen screen) {
));
}
}

if (XaeroPlusSettingRegistry.disableWaypointSharing.getValue()) {
cir.getReturnValue().removeIf(option -> ((AccessorRightClickOption) option).getName().equals("gui.xaero_right_click_waypoint_share"));
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package xaeroplus.mixin.client;

import net.minecraft.client.gui.screen.Screen;
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.minimap.waypoints.Waypoint;
import xaero.common.minimap.waypoints.WaypointSharingHandler;
import xaero.common.minimap.waypoints.WaypointWorld;
import xaeroplus.settings.XaeroPlusSettingRegistry;

@Mixin(value = WaypointSharingHandler.class, remap = false)
public class MixinWaypointSharingHandler {

@Inject(method = "shareWaypoint", at = @At("HEAD"), cancellable = true)
public void shareWaypoint(final Screen parent, final Waypoint w, final WaypointWorld wWorld, final CallbackInfo ci) {
if (XaeroPlusSettingRegistry.disableWaypointSharing.getValue()) {
ci.cancel();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,12 @@ public final class XaeroPlusSettingRegistry {
},
true,
SettingLocation.WORLD_MAP_MAIN);
public static final XaeroPlusBooleanSetting disableWaypointSharing = XaeroPlusBooleanSetting.create(
"Disable Waypoint Sharing",
"setting.world_map.disable_waypoint_sharing",
"setting.world_map.disable_waypoint_sharing.tooltip",
false,
SettingLocation.WORLD_MAP_MAIN);
public static final XaeroPlusBooleanSetting waystonesWaypointSyncSetting = XaeroPlusBooleanSetting.create(
"Waystones Sync",
"setting.world_map.waystones_sync",
Expand Down
2 changes: 2 additions & 0 deletions src/main/resources/assets/xaeroplus/lang/en_us.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
"setting.world_map.fast_mapping_rate_limit.tooltip": "Fast Mapping must be enabled. \n Limits how many chunks can be written in a single cycle. Lower values improve FPS at high render distances.",
"setting.world_map.baritone_waypoint": "Baritone Goal Waypoint",
"setting.world_map.baritone_waypoint.tooltip": "Syncs Baritone goals as temporary waypoints.",
"setting.world_map.disable_waypoint_sharing": "Disable Waypoint Sharing",
"setting.world_map.disable_waypoint_sharing.tooltip": "Disables waypoint sharing with other players.",
"setting.world_map.persist_dimension_switch": "Persist WM Dimension Switch",
"setting.world_map.persist_dimension_switch.tooltip": "If enabled, the dimension will not be switched back to current when the WorldMap GUI is closed.",
"setting.world_map.transparent_obsidian_roof": "Transparent Obsidian Roof",
Expand Down
2 changes: 2 additions & 0 deletions src/main/resources/assets/xaeroplus/lang/fr_ca.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
"setting.world_map.fast_mapping_rate_limit.tooltip": "L'option Cartographie Rapide doit être activée. \n Limite le nombre de chunks pouvant être écrits à chaque tick.",
"setting.world_map.baritone_waypoint": "Baryton Objectif Waypoint",
"setting.world_map.baritone_waypoint.tooltip": "Synchronise les objectifs de Baritone en tant que waypoints temporaires.",
"setting.world_map.disable_waypoint_sharing": "Désactiver le partage de points de cheminement",
"setting.world_map.disable_waypoint_sharing.tooltip": "Désactive le partage de waypoints avec d'autres joueurs.",
"setting.world_map.persist_dimension_switch": "Persister WM Dimension Switch",
"setting.world_map.persist_dimension_switch.tooltip": "Si cette option est activée, la dimension ne sera pas rétablie lorsque l'interface graphique de la carte du monde sera fermée.",
"setting.world_map.transparent_obsidian_roof": "Toit transparent en Obsidienne",
Expand Down
2 changes: 2 additions & 0 deletions src/main/resources/assets/xaeroplus/lang/fr_fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
"setting.world_map.fast_mapping_rate_limit.tooltip": "L'option Cartographie Rapide doit être activée. \n Limite le nombre de chunks pouvant être écrits à chaque tick.",
"setting.world_map.baritone_waypoint": "Baryton Objectif Waypoint",
"setting.world_map.baritone_waypoint.tooltip": "Synchronise les objectifs de Baritone en tant que waypoints temporaires.",
"setting.world_map.disable_waypoint_sharing": "Désactiver le partage de points de cheminement",
"setting.world_map.disable_waypoint_sharing.tooltip": "Désactive le partage de waypoints avec d'autres joueurs.",
"setting.world_map.persist_dimension_switch": "Persister WM Dimension Switch",
"setting.world_map.persist_dimension_switch.tooltip": "Si cette option est activée, la dimension ne sera pas rétablie lorsque l'interface graphique de la carte du monde sera fermée.",
"setting.world_map.transparent_obsidian_roof": "Toit transparent en Obsidienne",
Expand Down
2 changes: 2 additions & 0 deletions src/main/resources/assets/xaeroplus/lang/pl_pl.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
"setting.world_map.fast_mapping_rate_limit.tooltip": "Szybkie Mapowanie musi być włączone. \n Ogranicza liczbę chunktów, które mogą być zapisane co jeden Tick.",
"setting.world_map.baritone_waypoint": "Punkt nawigacyjny Celu Baritone",
"setting.world_map.baritone_waypoint.tooltip": "Synchronizuje cele Baritone jako tymczasowe punkty orientacyjne.",
"setting.world_map.disable_waypoint_sharing": "Wyłącz udostępnianie punktów trasy",
"setting.world_map.disable_waypoint_sharing.tooltip": "Wyłącza udostępnianie punktów trasy innym graczom.",
"setting.world_map.persist_dimension_switch": "Trwała Zmiana Wymiarów Mapy Świata",
"setting.world_map.persist_dimension_switch.tooltip": "Jeśli aktywne, wymiar nie zostanie przywrócony do aktualnego jeśli GUI Mapy Świata jest zamknięte.",
"setting.world_map.transparent_obsidian_roof": "Przezroczysty Obsydianowy Dach",
Expand Down
2 changes: 2 additions & 0 deletions src/main/resources/assets/xaeroplus/lang/ru_ru.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
"setting.world_map.fast_mapping_rate_limit.tooltip": "Быстрое картографирование должно быть включено. \n Ограничивает количество фрагментов, которые могут быть записаны за один цикл. Более низкие значения улучшают FPS на больших расстояниях рендеринга.",
"setting.world_map.baritone_waypoint": "Точка Цели Baritone",
"setting.world_map.baritone_waypoint.tooltip": "Синхронизирует цели Baritone в качестве временных путевых точек.",
"setting.world_map.disable_waypoint_sharing": "Отключить обмен маршрутными точками",
"setting.world_map.disable_waypoint_sharing.tooltip": "Отключает обмен маршрутными точками с другими игроками.",
"setting.world_map.persist_dimension_switch": "Принудительное переключение измерений Большой карты",
"setting.world_map.persist_dimension_switch.tooltip": "Если включено, измерение не будет переключено обратно на текущее при закрытии графического интерфейса карты мира.",
"setting.world_map.transparent_obsidian_roof": "Прозрачная обсидиановая крыша",
Expand Down
2 changes: 2 additions & 0 deletions src/main/resources/assets/xaeroplus/lang/zh_cn.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
"setting.world_map.fast_mapping_rate_limit.tooltip": "必须启用快速绘制。\n 限制每刻内可写入的区块数量。",
"setting.world_map.baritone_waypoint": "Baritone 目标路径点",
"setting.world_map.baritone_waypoint.tooltip": "将 Baritone 的目标点同步为临时路径点。",
"setting.world_map.disable_waypoint_sharing": "禁用航点共享",
"setting.world_map.disable_waypoint_sharing.tooltip": "禁用与其他玩家共享航点。",
"setting.world_map.persist_dimension_switch": "持久世界地图维度切换",
"setting.world_map.persist_dimension_switch.tooltip": "如果启用,当世界地图 GUI 关闭时,维度将不会切换回当前维度。",
"setting.world_map.transparent_obsidian_roof": "透明黑曜石平台",
Expand Down
2 changes: 2 additions & 0 deletions src/main/resources/xaeroplus.mixins.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
},
"client": [
"AccessorGuiCaveModeOptions",
"AccessorRightClickOption",
"MixinBetterPVP",
"MixinBranchLeveledRegion",
"MixinCommonGuiSettings",
Expand Down Expand Up @@ -52,6 +53,7 @@
"MixinSupportXaeroWorldmap",
"MixinWaypoint",
"MixinWaypointReader",
"MixinWaypointSharingHandler",
"MixinWaypointsIngameRenderer",
"MixinWaypointsManager",
"MixinWidgetLoadingHandler",
Expand Down

0 comments on commit 20aa781

Please sign in to comment.