Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -111,8 +111,7 @@ public final MethodResult sendFormattedMessage(@NotNull IArguments arguments) th
return withChatOperation(ignored -> {
String message = arguments.getString(0);
int maxRange = APConfig.PERIPHERALS_CONFIG.chatBoxMaxRange.get();
int range = arguments.optInt(4, maxRange);
range = maxRange == -1 ? range : Math.min(range, APConfig.PERIPHERALS_CONFIG.chatBoxMaxRange.get());
int range = arguments.optInt(4, -1);
ResourceKey<Level> dimension = getLevel().dimension();
MutableComponent component = Component.Serializer.fromJson(message);
if (component == null)
Expand All @@ -129,7 +128,7 @@ public final MethodResult sendFormattedMessage(@NotNull IArguments arguments) th
for (ServerPlayer player : ServerLifecycleHooks.getCurrentServer().getPlayerList().getPlayers()) {
if (!APConfig.PERIPHERALS_CONFIG.chatBoxMultiDimensional.get() && player.getLevel().dimension() != dimension)
continue;
if (range == -1 || CoordUtil.isInRange(getPos(), getLevel(), player, range, maxRange))
if (CoordUtil.isInRange(getPos(), getLevel(), player, range, maxRange))
player.sendSystemMessage(preparedMessage);
}
return MethodResult.of(true);
Expand All @@ -141,8 +140,7 @@ public final MethodResult sendMessage(@NotNull IArguments arguments) throws LuaE
return withChatOperation(ignored -> {
String message = arguments.getString(0);
int maxRange = APConfig.PERIPHERALS_CONFIG.chatBoxMaxRange.get();
int range = arguments.optInt(4, maxRange);
range = maxRange == -1 ? range : Math.min(range, APConfig.PERIPHERALS_CONFIG.chatBoxMaxRange.get());
int range = arguments.optInt(4, -1);
ResourceKey<Level> dimension = getLevel().dimension();
if (checkBrackets(arguments.optString(2)))
return MethodResult.of(null, "incorrect bracket string (e.g. [], {}, <>, ...)");
Expand All @@ -155,7 +153,7 @@ public final MethodResult sendMessage(@NotNull IArguments arguments) throws LuaE
for (ServerPlayer player : ServerLifecycleHooks.getCurrentServer().getPlayerList().getPlayers()) {
if (!APConfig.PERIPHERALS_CONFIG.chatBoxMultiDimensional.get() && player.getLevel().dimension() != dimension)
continue;
if (range == -1 || CoordUtil.isInRange(getPos(), getLevel(), player, range, maxRange))
if (CoordUtil.isInRange(getPos(), getLevel(), player, range, maxRange))
player.sendSystemMessage(preparedMessage);
}
return MethodResult.of(true);
Expand All @@ -168,8 +166,7 @@ public final MethodResult sendFormattedMessageToPlayer(@NotNull IArguments argum
String message = arguments.getString(0);
String playerName = arguments.getString(1);
int maxRange = APConfig.PERIPHERALS_CONFIG.chatBoxMaxRange.get();
int range = arguments.optInt(5, maxRange);
range = maxRange == -1 ? range : Math.min(range, APConfig.PERIPHERALS_CONFIG.chatBoxMaxRange.get());
int range = Math.min(arguments.optInt(5, -1), maxRange);
ResourceKey<Level> dimension = getLevel().dimension();
ServerPlayer player = getPlayer(playerName);
if (player == null)
Expand All @@ -190,7 +187,7 @@ public final MethodResult sendFormattedMessageToPlayer(@NotNull IArguments argum
if (!APConfig.PERIPHERALS_CONFIG.chatBoxMultiDimensional.get() && player.getLevel().dimension() != dimension)
return MethodResult.of(false, "NOT_SAME_DIMENSION");

if (range == -1 || CoordUtil.isInRange(getPos(), getLevel(), player, range, maxRange))
if (CoordUtil.isInRange(getPos(), getLevel(), player, range, maxRange))
player.sendSystemMessage(preparedMessage);
return MethodResult.of(true);
});
Expand All @@ -204,8 +201,7 @@ public final MethodResult sendFormattedToastToPlayer(@NotNull IArguments argumen
String title = arguments.getString(1);
String playerName = arguments.getString(2);
int maxRange = APConfig.PERIPHERALS_CONFIG.chatBoxMaxRange.get();
int range = arguments.optInt(6, maxRange);
range = maxRange == -1 ? range : Math.min(range, APConfig.PERIPHERALS_CONFIG.chatBoxMaxRange.get());
int range = arguments.optInt(6, -1);
ResourceKey<Level> dimension = getLevel().dimension();
ServerPlayer player = getPlayer(playerName);
if (player == null)
Expand All @@ -231,7 +227,7 @@ public final MethodResult sendFormattedToastToPlayer(@NotNull IArguments argumen
if (!APConfig.PERIPHERALS_CONFIG.chatBoxMultiDimensional.get() && player.getLevel().dimension() != dimension)
return MethodResult.of(false, "NOT_SAME_DIMENSION");

if (range == -1 || CoordUtil.isInRange(getPos(), getLevel(), player, range, maxRange)) {
if (CoordUtil.isInRange(getPos(), getLevel(), player, range, maxRange)) {
ToastToClientPacket packet = new ToastToClientPacket(titleComponent, preparedMessage);
APNetworking.sendTo(packet, player);
}
Expand All @@ -246,8 +242,7 @@ public final MethodResult sendMessageToPlayer(@NotNull IArguments arguments) thr
String message = arguments.getString(0);
String playerName = arguments.getString(1);
int maxRange = APConfig.PERIPHERALS_CONFIG.chatBoxMaxRange.get();
int range = arguments.optInt(5, maxRange);
range = maxRange == -1 ? range : Math.min(range, APConfig.PERIPHERALS_CONFIG.chatBoxMaxRange.get());
int range = arguments.optInt(5, -1);
ResourceKey<Level> dimension = getLevel().dimension();
ServerPlayer player = getPlayer(playerName);
if (player == null)
Expand All @@ -264,7 +259,7 @@ public final MethodResult sendMessageToPlayer(@NotNull IArguments arguments) thr
if (!APConfig.PERIPHERALS_CONFIG.chatBoxMultiDimensional.get() && player.getLevel().dimension() != dimension)
return MethodResult.of(false, "NOT_SAME_DIMENSION");

if (range == -1 || CoordUtil.isInRange(getPos(), getLevel(), player, range, maxRange))
if (CoordUtil.isInRange(getPos(), getLevel(), player, range, maxRange))
player.sendSystemMessage(preparedMessage, false);
return MethodResult.of(true);
});
Expand All @@ -277,8 +272,7 @@ public final MethodResult sendToastToPlayer(@NotNull IArguments arguments) throw
String title = arguments.getString(1);
String playerName = arguments.getString(2);
int maxRange = APConfig.PERIPHERALS_CONFIG.chatBoxMaxRange.get();
int range = arguments.optInt(6, maxRange);
range = maxRange == -1 ? range : Math.min(range, APConfig.PERIPHERALS_CONFIG.chatBoxMaxRange.get());
int range = arguments.optInt(6, -1);
ResourceKey<Level> dimension = getLevel().dimension();
ServerPlayer player = getPlayer(playerName);
if (player == null)
Expand All @@ -296,7 +290,7 @@ public final MethodResult sendToastToPlayer(@NotNull IArguments arguments) throw
if (!APConfig.PERIPHERALS_CONFIG.chatBoxMultiDimensional.get() && player.getLevel().dimension() != dimension)
return MethodResult.of(false, "NOT_SAME_DIMENSION");

if (range == -1 || CoordUtil.isInRange(getPos(), getLevel(), player, range, maxRange)) {
if (CoordUtil.isInRange(getPos(), getLevel(), player, range, maxRange)) {
ToastToClientPacket packet = new ToastToClientPacket(Component.literal(title), preparedMessage);
APNetworking.sendTo(packet, player);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ public final List<String> getPlayersInRange(int range) {
for (ServerPlayer player : getPlayers()) {
if (!isAllowedMultiDimensional() && player.getLevel().dimension() != dimension)
continue;
if (range == -1 || CoordUtil.isInRange(getPos(), getLevel(), player, range, MAX_RANGE))
if (CoordUtil.isInRange(getPos(), getLevel(), player, range, MAX_RANGE))
playersName.add(player.getName().getString());
}
return playersName;
Expand Down Expand Up @@ -142,7 +142,7 @@ public final boolean isPlayersInRange(int range) {
for (ServerPlayer player : getPlayers()) {
if (!isAllowedMultiDimensional() && player.getLevel().dimension() != dimension)
continue;
if (range == -1 || CoordUtil.isInRange(getPos(), getLevel(), player, range, MAX_RANGE)) return true;
if (CoordUtil.isInRange(getPos(), getLevel(), player, range, MAX_RANGE)) return true;
}
return false;
}
Expand Down Expand Up @@ -185,7 +185,7 @@ public final boolean isPlayerInRange(int range, String username) {
for (Player player : getPlayers()) {
if (!isAllowedMultiDimensional() && player.getLevel().dimension() != dimension)
continue;
if (range == -1 || CoordUtil.isInRange(getPos(), getLevel(), player, range, MAX_RANGE)) {
if (CoordUtil.isInRange(getPos(), getLevel(), player, range, MAX_RANGE)) {
if(player.getName().getString().equals(username))
return true;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,35 @@

public class CoordUtil {

/**
* isInRange checks if the player is in the range
*
* @param pos the position to start check
* @param world the world to start check
* @param player the player going to be check
* @param range the range that user want to reach, must be -1, 0, or a positive number
* @param maxRange the maximum range the user can reach, must be -1, 0, or a positive number
*
* @return If the player is in the {@code range} as well as in the {@code maxRange}, or {@code range} and {@code maxRange} are -1
*/
public static boolean isInRange(@Nullable BlockPos pos, @Nullable Level world, @Nullable Player player, int range, int maxRange) {
// There are rare cases where these are null. For example if a player detector pocket computer runs while not in a player inventory
// Fixes https://github.com/SirEndii/AdvancedPeripherals/issues/356
if (pos == null || world == null || player == null)
if (pos == null || world == null || player == null) {
return false;
}

range = maxRange == -1 ? range : Math.min(Math.abs(range), maxRange);
if (range == 0 || maxRange == 0) {
return false;
}
if (range < 0) {
if (maxRange < 0) {
return true;
}
range = maxRange;
} else if (maxRange > 0 && range > maxRange) {
range = maxRange;
}
return isPlayerInBlockRange(pos, world, player, (double) range);
}

Expand Down