aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorAaron <51387595+AzureAaron@users.noreply.github.com>2024-04-09 15:59:01 -0400
committerGitHub <noreply@github.com>2024-04-09 15:59:01 -0400
commitfa978596931a020cca07ac5d19ed39807d0704e4 (patch)
treef0794f140cd47cd9d5756f0e97830ac7d29e6670 /src/main/java
parentb5775f7f9a8cc9c12cc5fa3ce136cdf37361a567 (diff)
parentb945f1580a0c3b141f53153d04a52a788580289c (diff)
downloadSkyblocker-fa978596931a020cca07ac5d19ed39807d0704e4.tar.gz
Skyblocker-fa978596931a020cca07ac5d19ed39807d0704e4.tar.bz2
Skyblocker-fa978596931a020cca07ac5d19ed39807d0704e4.zip
Merge pull request #642 from olim88/share-waypoints
add ability to share crystal waypoint locations
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/dwarven/CrystalsLocationsManager.java46
1 files changed, 35 insertions, 11 deletions
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/dwarven/CrystalsLocationsManager.java b/src/main/java/de/hysky/skyblocker/skyblock/dwarven/CrystalsLocationsManager.java
index f43574ab..9c37de51 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/dwarven/CrystalsLocationsManager.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/dwarven/CrystalsLocationsManager.java
@@ -4,11 +4,11 @@ import com.mojang.brigadier.Command;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.arguments.StringArgumentType;
import com.mojang.logging.LogUtils;
-
import de.hysky.skyblocker.SkyblockerMod;
import de.hysky.skyblocker.config.SkyblockerConfigManager;
import de.hysky.skyblocker.utils.Constants;
import de.hysky.skyblocker.utils.Utils;
+import de.hysky.skyblocker.utils.scheduler.MessageScheduler;
import de.hysky.skyblocker.utils.scheduler.Scheduler;
import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback;
import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource;
@@ -24,7 +24,9 @@ import net.minecraft.server.command.ServerCommandSource;
import net.minecraft.text.ClickEvent;
import net.minecraft.text.MutableText;
import net.minecraft.text.Text;
+import net.minecraft.util.Formatting;
import net.minecraft.util.math.BlockPos;
+import org.slf4j.Logger;
import java.awt.*;
import java.util.Arrays;
@@ -35,11 +37,10 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
-import org.slf4j.Logger;
-
import static com.mojang.brigadier.arguments.StringArgumentType.getString;
import static net.fabricmc.fabric.api.client.command.v2.ClientCommandManager.argument;
import static net.fabricmc.fabric.api.client.command.v2.ClientCommandManager.literal;
+import static net.minecraft.command.CommandSource.suggestMatching;
public class CrystalsLocationsManager {
private static final Logger LOGGER = LogUtils.getLogger();
@@ -101,26 +102,34 @@ public class CrystalsLocationsManager {
LOGGER.error("[Skyblocker Crystals Locations Manager] Encountered an exception while extracing a location from a chat message!", e);
}
}
- protected static Boolean checkInCrystals(BlockPos pos){
+
+ protected static Boolean checkInCrystals(BlockPos pos) {
//checks if a location is inside crystal hollows bounds
return pos.getX() >= 202 && pos.getX() <= 823
&& pos.getZ() >= 202 && pos.getZ() <= 823
- && pos.getY() >= 31 && pos.getY() <= 188;
+ && pos.getY() >= 31 && pos.getY() <= 188;
}
private static void registerWaypointLocationCommands(CommandDispatcher<FabricClientCommandSource> dispatcher, CommandRegistryAccess registryAccess) {
dispatcher.register(literal(SkyblockerMod.NAMESPACE)
- .then(literal("crystalWaypoints")
- .then(argument("pos", BlockPosArgumentType.blockPos())
- .then(argument("place", StringArgumentType.greedyString())
- .executes(context -> addWaypointFromCommand(context.getSource(), getString(context, "place"), context.getArgument("pos", PosArgument.class)))
+ .then(literal("crystalWaypoints")
+ .then(argument("pos", BlockPosArgumentType.blockPos())
+ .then(argument("place", StringArgumentType.greedyString())
+ .suggests((context, builder) -> suggestMatching(WAYPOINT_LOCATIONS.keySet(), builder))
+ .executes(context -> addWaypointFromCommand(context.getSource(), getString(context, "place"), context.getArgument("pos", PosArgument.class)))
+ )
+ )
+ .then(literal("share")
+ .then(argument("place", StringArgumentType.greedyString())
+ .suggests((context, builder) -> suggestMatching(WAYPOINT_LOCATIONS.keySet(), builder))
+ .executes(context -> shareWaypoint(getString(context, "place")))
+ )
)
)
- )
);
}
- protected static Text getSetLocationMessage(String location,BlockPos blockPos) {
+ protected static Text getSetLocationMessage(String location, BlockPos blockPos) {
MutableText text = Constants.PREFIX.get();
text.append(Text.literal("Added waypoint for "));
Color locationColor = WAYPOINT_LOCATIONS.get(location).color;
@@ -159,6 +168,21 @@ public class CrystalsLocationsManager {
return Command.SINGLE_SUCCESS;
}
+ public static int shareWaypoint(String place) {
+ if (activeWaypoints.containsKey(place)) {
+ BlockPos pos = activeWaypoints.get(place).pos;
+ MessageScheduler.INSTANCE.sendMessageAfterCooldown(Constants.PREFIX.get().getString() + " " + place + ": " + pos.getX() + ", " + pos.getY() + ", " + pos.getZ());
+ } else {
+ //send fail message
+ if (CLIENT.player == null || CLIENT.getNetworkHandler() == null) {
+ return 0;
+ }
+ CLIENT.player.sendMessage(Constants.PREFIX.get().append(Text.translatable("text.autoconfig.skyblocker.option.locations.dwarvenMines.crystalsWaypoints.shareFail").formatted(Formatting.RED)), false);
+ }
+
+ return Command.SINGLE_SUCCESS;
+ }
+
private static void addCustomWaypoint(String waypointName, BlockPos pos) {
CrystalsWaypoint.Category category = WAYPOINT_LOCATIONS.get(waypointName);