Skip to content
Open
Show file tree
Hide file tree
Changes from 5 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,85 @@
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.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)
Comment thread
AnOwlBe marked this conversation as resolved.
Outdated
""")
@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 SET, ADD, RESET -> CollectionUtils.array(Integer.class);
Comment thread
AnOwlBe marked this conversation as resolved.
Outdated
default -> null;
};
}

@Override
public void change(Event event, Object @Nullable [] delta, ChangeMode mode) {
Integer amount = mode == ChangeMode.RESET ? null : (Integer) delta[0];
Comment thread
AnOwlBe marked this conversation as resolved.
Outdated
switch (mode) {
case ADD -> {
assert delta != null;
Comment thread
AnOwlBe marked this conversation as resolved.
Outdated
for (Player player : getExpr().getArray(event)) {
player.setPlayerListOrder(Math.max(0, player.getPlayerListOrder() + amount));
Comment thread
AnOwlBe marked this conversation as resolved.
Outdated
}
}
case SET -> {
assert delta != null;
for (Player player : getExpr().getArray(event)) {
player.setPlayerListOrder(Math.max(0, amount));
Comment thread
AnOwlBe marked this conversation as resolved.
Outdated
}
}
case RESET -> {
for (Player player : getExpr().getArray(event)) {
player.setPlayerListOrder(0);
}
}
}
}

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

@Override
protected String getPropertyName() {
return "tablist priority";
Comment thread
AnOwlBe marked this conversation as resolved.
Outdated
}

}
Comment thread
AnOwlBe marked this conversation as resolved.