Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
0401164
Adds ExprPlayerListOrder
AnOwlBe Apr 28, 2026
ac008c8
Stuff
AnOwlBe Apr 28, 2026
715c9c5
Changes `order` to `priority`
AnOwlBe Apr 28, 2026
69fb531
Added more detail to the description
AnOwlBe Apr 28, 2026
3c1da9e
Update src/main/java/org/skriptlang/skript/bukkit/entity/player/eleme…
AnOwlBe Apr 28, 2026
23584db
Update src/main/java/org/skriptlang/skript/bukkit/entity/player/eleme…
AnOwlBe Apr 28, 2026
e7b247d
Adds `remove` & small change for `set`
AnOwlBe Apr 29, 2026
937b42b
Adds `remove` & small change for `set`
AnOwlBe Apr 29, 2026
527b60c
Adds `remove` & small change for `set`
AnOwlBe Apr 29, 2026
1b4e06c
Merge remote-tracking branch 'origin/ExprPlayerListOrder' into ExprPl…
AnOwlBe Apr 29, 2026
dbfbdad
Update src/main/java/org/skriptlang/skript/bukkit/entity/player/eleme…
AnOwlBe Apr 29, 2026
716bb28
Small changes
AnOwlBe Apr 29, 2026
468a838
Merge remote-tracking branch 'origin/ExprPlayerListOrder' into ExprPl…
AnOwlBe Apr 29, 2026
1ce3b5b
Small changes
AnOwlBe Apr 29, 2026
1d1b471
Merge branch 'dev/feature' into ExprPlayerListOrder
AnOwlBe May 4, 2026
67fddcc
Adds clamping for ADD to prevent integer overflow
AnOwlBe May 5, 2026
b90d06d
Update src/main/java/org/skriptlang/skript/bukkit/entity/player/eleme…
AnOwlBe May 5, 2026
0e2b360
Merge branch 'dev/feature' into ExprPlayerListOrder
AnOwlBe May 5, 2026
11ccbaa
Stuff
AnOwlBe May 7, 2026
5e4c762
Merge remote-tracking branch 'origin/ExprPlayerListOrder' into ExprPl…
AnOwlBe May 7, 2026
7aa459b
Merge branch 'dev/feature' into ExprPlayerListOrder
AnOwlBe May 8, 2026
4c8cb89
Update src/main/java/org/skriptlang/skript/bukkit/entity/player/eleme…
AnOwlBe May 13, 2026
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 @@ -28,6 +28,7 @@ protected void loadSelf(SkriptAddon addon) {
ExprOnScreenKickMessage::register,
ExprPlayerListHeaderFooter::register,
ExprPlayerListName::register,
ExprPlayerListPriority::register,
ExprQuitMessage::register
);
if (Skript.classExists("io.papermc.paper.event.player.PlayerPickBlockEvent")) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
package org.skriptlang.skript.bukkit.entity.player.elements.expressions;

import ch.njol.skript.classes.Changer.ChangeMode;
import ch.njol.skript.doc.Description;
import ch.njol.skript.doc.Example;
import ch.njol.skript.doc.Keywords;
import ch.njol.skript.doc.Name;
import ch.njol.skript.doc.Since;
import ch.njol.skript.expressions.base.SimplePropertyExpression;
import ch.njol.util.Math2;
import ch.njol.util.coll.CollectionUtils;
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.jetbrains.annotations.Nullable;
import org.skriptlang.skript.registration.SyntaxRegistry;

@Name("Player List Priority")
@Description("""
The priority of the player in the player list in the tab menu.
Used to sort players on the tab list. Lowest priority is at the bottom of tab and highest priority is at the top.
If 2 players have same priority then they will be sorted A-Z (but still be above those with lower priority).
""")
@Example("""
on join:
player has permission "group.mod"
set the player's tab list priority to 5
""")
@Since("INSERT VERSION")
@Keywords({"tablist", "tab list"})
public class ExprPlayerListPriority extends SimplePropertyExpression<Player, Integer> {

public static void register(SyntaxRegistry syntaxRegistry) {
syntaxRegistry.register(SyntaxRegistry.EXPRESSION, infoBuilder(ExprPlayerListPriority.class, Integer.class,
"(player|tab)[ ]list priority", "players", false)
Comment thread
Absolutionism marked this conversation as resolved.
.supplier(ExprPlayerListPriority::new)
.build());
}

@Override
public Integer convert(Player player) {
return player.getPlayerListOrder();
}

@Override
public Class<?> @Nullable [] acceptChange(ChangeMode mode) {
return switch (mode) {
case ADD, REMOVE, SET, RESET -> CollectionUtils.array(Integer.class);
default -> null;
};
}

@Override
public void change(Event event, Object @Nullable [] delta, ChangeMode mode) {
if (delta == null && mode != ChangeMode.RESET) return;
Integer amount = mode == ChangeMode.RESET ? 0 : (Integer) delta[0];
switch (mode) {
case ADD -> {
for (Player player : getExpr().getArray(event)) {
player.setPlayerListOrder((int) Math.max(0, Math2.addClamped(player.getPlayerListOrder(), amount)));
}
}
case REMOVE -> {
for (Player player : getExpr().getArray(event)) {
player.setPlayerListOrder(Math.max(0, Math2.addClamped(player.getPlayerListOrder(), -amount)));
}
}
case SET -> {
amount = Math.max(0, amount);
for (Player player : getExpr().getArray(event)) {
player.setPlayerListOrder(amount);
}
}
case RESET -> {
for (Player player : getExpr().getArray(event)) {
player.setPlayerListOrder(0);
}
}
}
}

@Override
public Class<Integer> getReturnType() {
return Integer.class;
}

@Override
protected String getPropertyName() {
return "player list priority";
}

}
Comment thread
AnOwlBe marked this conversation as resolved.