Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
69 commits
Select commit Hold shift + click to select a range
628e488
gradle-wrapper.properties - update gradle version
ShaneBeee Jan 23, 2026
8c82c05
build.gradle - update for maven-publish
ShaneBeee Jan 23, 2026
7a54eaa
Expression - ignore "Objects" at parse time as that is what Variables…
ShaneBeee Jan 23, 2026
8f9bd0c
build.gradle - fix missing jar and add sources
ShaneBeee Jan 23, 2026
f81821c
jitpack.yml - add jitpack file to configure java version
ShaneBeee Jan 23, 2026
a6d6e4e
Add documentation (#1)
ShaneBeee Jan 23, 2026
a17adc4
Variables - add methods to copy/clear local variables
ShaneBeee Jan 24, 2026
f3f2c0f
VariableString - temp remove "<>" tags
ShaneBeee Jan 25, 2026
76969b8
Some reworking:
ShaneBeee Jan 26, 2026
324a555
temp disable some stuff and fix some errors
ShaneBeee Jan 26, 2026
81ae9b0
DurationUtils - add year and week, also add stringusage for Types
ShaneBeee Jan 26, 2026
7ba0b46
PropertyExpression - refactor
ShaneBeee Jan 26, 2026
24c599e
Some pulls from ScrollLang/Scroll
ShaneBeee Jan 26, 2026
16c6ced
DefaultFunctions - fix mod func to take in number not int
ShaneBeee Jan 26, 2026
4736a89
Events - handle event triggers internally rather than forcing this up…
ShaneBeee Jan 26, 2026
d16c785
SkriptAddon - add method to define finish loading for a single script…
ShaneBeee Jan 26, 2026
85eef2d
fix more trigger issues
ShaneBeee Jan 26, 2026
90bff90
Skript - fix empty list
ShaneBeee Jan 27, 2026
129d047
tests got missed, sorry guys
ShaneBeee Jan 27, 2026
f026452
EffChange - fix null error
ShaneBeee Jan 27, 2026
a94b94c
DefaultRegistration - fix missing function param type
ShaneBeee Jan 27, 2026
bf1cfe1
Function fixes
ShaneBeee Jan 27, 2026
5deb3f6
StructFunction - add docs
ShaneBeee Jan 27, 2026
145bad4
Variable - change some storage stuff
ShaneBeee Jan 27, 2026
1acf142
SkriptLoggerTest - broken -- fix later
ShaneBeee Jan 27, 2026
aebdbeb
Variables - change how they're serialized
ShaneBeee Jan 27, 2026
28e843a
Secloop - fix number stuff
ShaneBeee Jan 27, 2026
44ac5e9
EffWait - disable (handle in HySkript)
ShaneBeee Jan 27, 2026
4377cad
DurationUtils - some changes:
ShaneBeee Jan 27, 2026
99bf96f
Expressions - remove more BigInt
ShaneBeee Jan 27, 2026
2ed884a
Effects - remove more BigInt
ShaneBeee Jan 27, 2026
2251d20
Variables - small fixes/updates
ShaneBeee Jan 28, 2026
4b16cb0
Config - create a config
ShaneBeee Jan 28, 2026
0bd9afd
SkriptLogger - allow changing debug
ShaneBeee Jan 28, 2026
8deed8d
Functions - make accessible
ShaneBeee Jan 29, 2026
9efabef
JavaFunction - add docs
ShaneBeee Jan 29, 2026
82545a1
Functions - fix not getting global functions
ShaneBeee Jan 29, 2026
50e7d4f
Documentation - add option to not print docs
ShaneBeee Jan 29, 2026
10f3176
ExprArithmeticOperators - remove more BIG
ShaneBeee Jan 29, 2026
b1ecbcb
more cleanup
ShaneBeee Jan 29, 2026
8ac1007
some updates to java 21 and gradle 9.2.0
ShaneBeee Jan 29, 2026
338dfe5
FileParser - redo comment removal
ShaneBeee Jan 29, 2026
6d5297f
SyntaxParser - fix issue with context values pattern matching
ShaneBeee Jan 30, 2026
d693e57
FileParserTest - I broke this with the # changes
ShaneBeee Jan 30, 2026
dfc8637
Event re-write - Part 1
ShaneBeee Jan 30, 2026
1f02244
Documentation - add experimental option (part 1)
ShaneBeee Jan 30, 2026
5adc0d0
Change all "INSERT VERSION" to "1.0.0" in prep for a beta release
ShaneBeee Jan 30, 2026
5e7ff27
SyntaxParser - fix issue with context values matching too many patterns
ShaneBeee Jan 30, 2026
7ea42d1
Documentation - add empty array list for description and examples
ShaneBeee Jan 30, 2026
cbc57b5
SkriptAddon - add a name
ShaneBeee Jan 30, 2026
719c66b
Fix some things in tests i broke
ShaneBeee Jan 31, 2026
a0abad2
SkriptAddon - add method to get registration
ShaneBeee Jan 31, 2026
adbdaa9
TriggerMap - fix error with empty map and empty script
ShaneBeee Jan 31, 2026
514aa18
Variables - fix errors when trying to save non serializable objects
ShaneBeee Jan 31, 2026
5ae7d72
Skript - fix never actually registering function's triggers
ShaneBeee Jan 31, 2026
3d82a69
ExprArithmeticOperators - fix casting issue
ShaneBeee Jan 31, 2026
a31d241
DefaultRegistration - fix number comparisons
ShaneBeee Jan 31, 2026
c0e4f51
TypeManager - fix toString when objects is null
ShaneBeee Jan 31, 2026
7c28b8c
VariableStorage - send error when pattern missing
ShaneBeee Jan 31, 2026
2daa6e0
FileSection - fix line split
ShaneBeee Jan 31, 2026
7ebf3f0
SimpleLiteral - remove isSingle check
ShaneBeee Jan 31, 2026
e7b6e92
FileSection - more bugs
ShaneBeee Feb 1, 2026
589d37f
Merge pull request #2 from SkriptDev/dev/patch
ShaneBeee Feb 1, 2026
840160e
Prepare for release of 1.0.1
ShaneBeee Feb 1, 2026
444b3cd
PropertyExpression - fix casting issue of arrays from getProperty
ShaneBeee Feb 1, 2026
78803dc
Fix loading priority issues
ShaneBeee Feb 1, 2026
b4e7efb
Functions - fix global functions
ShaneBeee Feb 1, 2026
19d0974
DefaultRegistration - better number toString
ShaneBeee Feb 2, 2026
14ed99b
Converters - fix null error
ShaneBeee Feb 2, 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
33 changes: 0 additions & 33 deletions build.gradle

This file was deleted.

64 changes: 64 additions & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
plugins {
id("java")
id("maven-publish")
}
group = "com.github.SkriptDev"
version = "1.0.1"

repositories {
mavenCentral()
}

dependencies {
implementation("org.jetbrains:annotations:15.0")
implementation("com.google.code.findbugs:jsr305:3.0.2")
testRuntimeOnly("org.junit.vintage:junit-vintage-engine:5.4.1")
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.4.1")
implementation ("com.google.code.gson:gson:2.13.2")
testImplementation("junit:junit:4.12")
testImplementation("org.junit.jupiter:junit-jupiter-api:5.4.1")
}

tasks {
compileJava {
options.release = 25
options.compilerArgs.add("-Xlint:unchecked")
options.compilerArgs.add("-Xlint:deprecation")
}
register("sourcesJar", Jar::class) {
archiveClassifier.set("sources")
from(sourceSets.main.get().allSource)
}
javadoc {
title = "Skript-Parser API - " + project.version
options.overview = "src/main/javadoc/overview.html"
options.encoding = Charsets.UTF_8.name()
exclude(
"com/github/skriptdev/skript/plugin/elements",
"com/github/skriptdev/skript/plugin/command"
)
(options as StandardJavadocDocletOptions).links(
"https://javadoc.io/doc/org.jetbrains/annotations/latest/",
"https://skriptdev.github.io/docs/skript-parser/latest/"
)
(options as StandardJavadocDocletOptions).tags = listOf(
"attr", // Example: replace "attr" with your unknown tag name
"todo:X" // Example of explicitly excluding the @todo tag
)
(options as StandardJavadocDocletOptions).addBooleanOption("Xdoclint:none", true)
}
java {
withSourcesJar()
}
publishing {
publications {
create<MavenPublication>("maven") {
from(components["java"])
group = "com.github.SkriptDev"
version = project.version as String
artifactId = "skript-parser"
}
}
}
}

2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.0-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Expand Down
5 changes: 5 additions & 0 deletions jitpack.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
before_install:
- source "$HOME/.sdkman/bin/sdkman-init.sh"
- sdk update
- sdk install java 25-open
- sdk use java 25-open
2 changes: 1 addition & 1 deletion src/main/java/io/github/syst3ms/skriptparser/Parser.java
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ public static void init(String[] mainPackages, String[] subPackages, String[] pr
mainPackages[mainPackages.length - 1] = "io.github.syst3ms.skriptparser";
List<String> sub = new ArrayList<>();
sub.addAll(Arrays.asList(subPackages));
sub.addAll(Arrays.asList("expressions", "effects", "event", "lang", "sections", "tags"));
sub.addAll(Arrays.asList("expressions", "effects", "event", "lang", "sections", "structures", "tags"));
subPackages = sub.toArray(new String[0]);
try {
for (String mainPackage : mainPackages) {
Expand Down
78 changes: 23 additions & 55 deletions src/main/java/io/github/syst3ms/skriptparser/Skript.java
Original file line number Diff line number Diff line change
@@ -1,23 +1,14 @@
package io.github.syst3ms.skriptparser;

import io.github.syst3ms.skriptparser.event.AtTimeContext;
import io.github.syst3ms.skriptparser.event.EvtAtTime;
import io.github.syst3ms.skriptparser.event.EvtPeriodical;
import io.github.syst3ms.skriptparser.event.EvtScriptLoad;
import io.github.syst3ms.skriptparser.event.EvtWhen;
import io.github.syst3ms.skriptparser.event.PeriodicalContext;
import io.github.syst3ms.skriptparser.event.ScriptLoadContext;
import io.github.syst3ms.skriptparser.event.WhenContext;
import io.github.syst3ms.skriptparser.lang.SkriptEvent;
import io.github.syst3ms.skriptparser.lang.Statement;
import io.github.syst3ms.skriptparser.lang.Trigger;
import io.github.syst3ms.skriptparser.lang.TriggerMap;
import io.github.syst3ms.skriptparser.lang.event.StartOnLoadEvent;
import io.github.syst3ms.skriptparser.registration.SkriptAddon;
import io.github.syst3ms.skriptparser.util.DurationUtils;
import io.github.syst3ms.skriptparser.util.ThreadUtils;
import io.github.syst3ms.skriptparser.util.Time;
import io.github.syst3ms.skriptparser.registration.SkriptRegistration;
import io.github.syst3ms.skriptparser.structures.functions.StructFunction;
import org.jetbrains.annotations.Nullable;

import java.time.Duration;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;

/**
Expand All @@ -27,54 +18,31 @@ public class Skript extends SkriptAddon {

private final String[] mainArgs;

private final List<Trigger> mainTriggers = new ArrayList<>();
private final List<Trigger> periodicalTriggers = new ArrayList<>();
private final List<Trigger> whenTriggers = new ArrayList<>();
private final List<Trigger> atTimeTriggers = new ArrayList<>();

public Skript(String[] mainArgs) {
super("Skript-Parser");
this.mainArgs = mainArgs;
}

@Override
public void handleTrigger(Trigger trigger) {
SkriptEvent event = trigger.getEvent();

if (!canHandleEvent(event))
return;

if (event instanceof EvtScriptLoad) {
mainTriggers.add(trigger);
} else if (event instanceof EvtPeriodical) {
periodicalTriggers.add(trigger);
} else if (event instanceof EvtWhen) {
whenTriggers.add(trigger);
} else if (event instanceof EvtAtTime) {
atTimeTriggers.add(trigger);
public void finishedLoading(@Nullable String scriptName) {
List<Trigger> triggers;
if (scriptName == null) {
triggers = TriggerMap.getAllTriggers();
} else {
triggers = TriggerMap.getTriggersByScript(scriptName).values().stream().flatMap(List::stream).toList();
}
triggers.stream().sorted(Comparator.comparing(trigger -> trigger.getEvent().getLoadingPriority())).forEach(trigger -> {
if (trigger.getEvent() instanceof StartOnLoadEvent event) {
event.onInitialLoad(trigger);
} else if (trigger.getEvent() instanceof StructFunction func) {
func.register(trigger);
}
});
}

@Override
public void finishedLoading() {
for (Trigger trigger : mainTriggers) {
Statement.runAll(trigger, new ScriptLoadContext(mainArgs));
}
for (Trigger trigger : periodicalTriggers) {
var ctx = new PeriodicalContext();
var dur = ((EvtPeriodical) trigger.getEvent()).getDuration().getSingle().orElseThrow(AssertionError::new);
ThreadUtils.runPeriodically(() -> Statement.runAll(trigger, ctx), dur);
}
for (Trigger trigger : whenTriggers) {
var ctx = new WhenContext();
ThreadUtils.runPeriodically(() -> Statement.runAll(trigger, ctx), Duration.ofMillis(DurationUtils.TICK));
}
for (Trigger trigger : atTimeTriggers) {
var ctx = new AtTimeContext();
var time = ((EvtAtTime) trigger.getEvent()).getTime().getSingle().orElseThrow(AssertionError::new);
var initialDelay = (Time.now().getTime().isAfter(time.getTime())
? Time.now().difference(Time.LATEST).plus(time.difference(Time.MIDNIGHT))
: Time.now().difference(time));
ThreadUtils.runPeriodically(() -> Statement.runAll(trigger, ctx), initialDelay, Duration.ofDays(1));
}
public SkriptRegistration getSkriptRegistration() {
return Parser.getMainRegistration();
}

}
Loading