Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
cbbb71c
Modernize rgb() function with DefaultFunction usage, range checks (#8…
Dev-Xeiji May 5, 2026
54fb6c6
Clean up some docs mistakes in loot tables (#8596)
sovdeeth May 5, 2026
6dd84a3
Remove mentions of SQL variable storage from config.sk (#8598)
sovdeeth May 5, 2026
53e24a8
Fix command usage message ignoring color tags (#8623)
mvanhorn May 20, 2026
a0e644d
Fix Turkish language translations for commands and errors (#8650)
kayerajava May 20, 2026
cf70374
Improve event value cache (#8647)
UnderscoreTud May 20, 2026
8c76e98
Fix getting element from queue returning whole queue (#8562)
Efnilite May 20, 2026
1c240a7
Use MM formatting for ItemData stringification (#8653)
APickledWalrus May 27, 2026
9a51b63
LocationClassInfo - fix null world error (#8664)
ShaneBeee May 27, 2026
1911b42
Update API to 26.1.2 (#8631)
APickledWalrus May 27, 2026
187e578
Fix ExprHash internal error when MD5 is used (#8609)
Dev-Xeiji May 27, 2026
ae51368
Fix TestLogHandler Exception (#8662)
erenkarakal Jun 1, 2026
0738890
Fix EffKick, EffBan component support (#8628)
APickledWalrus Jun 1, 2026
db05a2c
Bump actions/upload-artifact from 6 to 7 (#8476)
dependabot[bot] Jun 1, 2026
e266c13
Bump org.bstats:bstats-bukkit from 3.1.0 to 3.2.1 (#8477)
dependabot[bot] Jun 1, 2026
03aa40c
Add missing 26.1.2 lang entries (#8671)
APickledWalrus Jun 1, 2026
4d5dbf9
Fix FunctionReference Invalidation Process (#8667)
APickledWalrus Jun 1, 2026
feeb814
Fix several additional formatting bugs (#8627)
APickledWalrus Jun 1, 2026
1aed991
Prepare For Release (2.15.3)
APickledWalrus Jun 1, 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
2 changes: 1 addition & 1 deletion .github/workflows/checkstyle.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ jobs:
- name: Run checkstyle
run: ./gradlew clean checkstyleMain
- name: Upload checkstyle report
uses: actions/upload-artifact@v6
uses: actions/upload-artifact@v7
if: success()
with:
name: checkstyle-report
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/java-21-builds.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ jobs:
- name: Build Skript and run test scripts
run: ./gradlew clean customTest -PtestEnvs="${{ matrix.envs }}" -PtestEnvJavaVersion=21
- name: Upload Nightly Build
uses: actions/upload-artifact@v6
uses: actions/upload-artifact@v7
if: success() && matrix.id == 1
with:
name: skript-nightly
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/java-25-builds.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
if: "! contains(toJSON(github.event.commits.*.message), '[ci skip]')"
uses: ./.github/workflows/parallelize-tests.yml
with:
environments: 26.1.1
environments: 26.1.2
java_version: 25
parallel_jobs: 3

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/junit-25-builds.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
if: "! contains(toJSON(github.event.commits.*.message), '[ci skip]')"
uses: ./.github/workflows/parallelize-tests.yml
with:
environments: 26.1.1
environments: 26.1.2
java_version: 25
parallel_jobs: 3

Expand Down
4 changes: 2 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,9 @@ allprojects {

dependencies {
shadow group: 'io.papermc', name: 'paperlib', version: '1.0.8'
shadow group: 'org.bstats', name: 'bstats-bukkit', version: '3.1.0'
shadow group: 'org.bstats', name: 'bstats-bukkit', version: '3.2.1'

implementation group: 'io.papermc.paper', name: 'paper-api', version: '26.1.1.build.+'
implementation group: 'io.papermc.paper', name: 'paper-api', version: '26.1.2.build.+'
implementation group: 'com.google.code.findbugs', name: 'findbugs', version: '3.0.1'

// bundled with Minecraft 1.19.4+ for display entity transforms
Expand Down
4 changes: 2 additions & 2 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ org.gradle.parallel=true

groupid=ch.njol
name=skript
version=2.15.2
version=2.15.3
jarName=Skript.jar
testEnv=java25/paper-26.1.1
testEnv=java25/paper-26.1.2
testEnvJavaVersion=25
7 changes: 5 additions & 2 deletions src/main/java/ch/njol/skript/aliases/ItemData.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import org.bukkit.inventory.meta.PotionMeta;
import org.bukkit.potion.PotionEffect;
import org.jetbrains.annotations.Nullable;
import org.skriptlang.skript.bukkit.text.TextComponentParser;

import java.io.IOException;
import java.io.NotSerializableException;
Expand Down Expand Up @@ -242,8 +243,10 @@ public String toString(final boolean debug, final boolean plural) {
StringBuilder builder = new StringBuilder(Aliases.getMaterialName(this, plural));
ItemMeta meta = stack != null ? stack.getItemMeta() : null;
if (meta != null && meta.hasDisplayName()) {
builder.append(" ").append(m_named).append(" ");
builder.append(meta.getDisplayName());
builder.append(" ")
.append(m_named)
.append(" ")
.append(TextComponentParser.instance().toString(meta.displayName()));
}
return builder.toString();
}
Expand Down
33 changes: 15 additions & 18 deletions src/main/java/ch/njol/skript/classes/data/DefaultFunctions.java
Original file line number Diff line number Diff line change
Expand Up @@ -602,28 +602,25 @@ public Long[] executeSimple(Object[][] params) {
}.description("Calculates the total amount of experience needed to achieve given level from scratch in Minecraft.")
.since("2.2-dev32"));

Functions.registerFunction(new SimpleJavaFunction<Color>("rgb", new Parameter[] {
new Parameter<>("red", DefaultClasses.LONG, true, null),
new Parameter<>("green", DefaultClasses.LONG, true, null),
new Parameter<>("blue", DefaultClasses.LONG, true, null),
new Parameter<>("alpha", DefaultClasses.LONG, true, new SimpleLiteral<>(255L,true))
}, DefaultClasses.COLOR, true) {
@Override
public ColorRGB[] executeSimple(Object[][] params) {
Long red = (Long) params[0][0];
Long green = (Long) params[1][0];
Long blue = (Long) params[2][0];
Long alpha = (Long) params[3][0];

return CollectionUtils.array(ColorRGB.fromRGBA(red.intValue(), green.intValue(), blue.intValue(), alpha.intValue()));
}
}).description("Returns a RGB color from the given red, green and blue parameters. Alpha values can be added optionally, " +
"but these only take affect in certain situations, like text display backgrounds.")
Functions.register(DefaultFunction.builder(skript, "rgb", Color.class)
.description("""
Returns a RGB color from the given red, green and blue parameters.
Alpha values can be added optionally but these only take affect in certain situations, like text display backgrounds.""")
.examples(
"dye player's leggings rgb(120, 30, 45)",
"set the colour of a text display to rgb(10, 50, 100, 50)"
)
.since("2.5, 2.10 (alpha)");
.since("2.5, 2.10 (alpha)")
.parameter("red", Long.class, Modifier.ranged(0, 255))
.parameter("green", Long.class, Modifier.ranged(0, 255))
.parameter("blue", Long.class, Modifier.ranged(0, 255))
.parameter("alpha", Long.class, Modifier.ranged(0, 255), Modifier.OPTIONAL)
.build(args -> ColorRGB.fromRGBA(
args.<Long>get("red").intValue(),
args.<Long>get("green").intValue(),
args.<Long>get("blue").intValue(),
args.getOrDefault("alpha", 255L).intValue()
)));

Functions.register(DefaultFunction.builder(skript, "player", Player.class)
.description(
Expand Down
13 changes: 13 additions & 0 deletions src/main/java/ch/njol/skript/command/CommandUsage.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@

import ch.njol.skript.lang.VariableString;
import ch.njol.skript.util.Utils;
import net.kyori.adventure.text.Component;
import org.bukkit.event.Event;
import org.jetbrains.annotations.Nullable;
import org.skriptlang.skript.bukkit.text.TextComponentParser;

/**
* Holds info about the usage of a command.
Expand Down Expand Up @@ -63,6 +65,17 @@ public String getUsage(@Nullable Event event) {
return defaultUsage;
}

/**
* @param event The event used to evaluate the usage message.
* @return The evaluated usage message as an Adventure {@link Component} with
* Skript color tags ({@code <red>}, {@code &c}, etc.) parsed into real
* chat formatting via {@link TextComponentParser#parse(Object)}. Command
* usage strings are server-controlled, so unsafe tags are appropriate.
*/
public Component getUsageComponent(@Nullable Event event) {
return TextComponentParser.instance().parse(getUsage(event));
}

@Override
public String toString() {
return getUsage();
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/ch/njol/skript/command/ScriptCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -337,7 +337,7 @@ boolean execute2(final ScriptCommandEvent event, final CommandSender sender, fin
final LogEntry e = log.getError();
if (e != null)
sender.sendMessage(ChatColor.DARK_RED + e.toString());
sender.sendMessage(usage.getUsage(event));
sender.sendMessage(usage.getUsageComponent(event));
log.clear();
return false;
}
Expand Down
141 changes: 0 additions & 141 deletions src/main/java/ch/njol/skript/effects/EffBan.java

This file was deleted.

70 changes: 0 additions & 70 deletions src/main/java/ch/njol/skript/effects/EffKick.java

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -74,19 +74,18 @@ public void change(Event event, Object @Nullable [] delta, ChangeMode mode) {
if (!(event instanceof AreaEffectCloudApplyEvent areaEvent))
return;

LivingEntity[] entities = (LivingEntity[]) delta;
switch (mode) {
case REMOVE:
for (LivingEntity entity : entities) {
areaEvent.getAffectedEntities().remove(entity);
for (Object entity : delta) {
areaEvent.getAffectedEntities().remove((LivingEntity) entity);
}
break;
case SET:
areaEvent.getAffectedEntities().clear();
// FALLTHROUGH
case ADD:
for (LivingEntity entity : entities) {
areaEvent.getAffectedEntities().add(entity);
for (Object entity : delta) {
areaEvent.getAffectedEntities().add((LivingEntity) entity);
}
break;
case RESET, DELETE:
Expand Down
Loading