Skip to content

Commit

Permalink
Third cleanup pass
Browse files Browse the repository at this point in the history
  • Loading branch information
APickledWalrus committed Jan 23, 2025
1 parent 50438af commit 8e413b4
Show file tree
Hide file tree
Showing 13 changed files with 243 additions and 203 deletions.
13 changes: 7 additions & 6 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ compileJava.options.encoding = 'UTF-8'

java {
toolchain {
languageVersion.set(JavaLanguageVersion.of(17))
languageVersion.set(JavaLanguageVersion.of(8))
}
}

Expand All @@ -23,9 +23,10 @@ repositories {
}

dependencies {
implementation group: 'org.jetbrains', name: 'annotations', version: '26.0.1'
implementation group: 'com.google.code.findbugs', name: 'findbugs', version: '3.0.1'
implementation group: 'io.papermc.paper', name: 'paper-api', version: '1.19.4-R0.1-SNAPSHOT'
implementation (group: 'com.github.SkriptLang', name: 'Skript', version: '2.10.0') {
implementation group: 'com.destroystokyo.paper', name: 'paper-api', version: '1.16.4-R0.1-SNAPSHOT'
implementation (group: 'com.github.SkriptLang', name: 'Skript', version: '2.7.3') {
transitive = false
}
}
Expand All @@ -36,17 +37,17 @@ processResources {
]
}

task nightlyResources(type: ProcessResources) {
tasks.register('nightlyResources', ProcessResources) {
from 'src/main/resources', {
include '**'
filter ReplaceTokens, tokens: [
'version' : project.property('version') + '-nightly-' + 'git rev-parse --short HEAD'.execute().text.trim()
'version': project.property('version') + '-nightly-' + 'git rev-parse --short HEAD'.execute().text.trim()
]
}
into 'build/resources/main'
}

task nightlyBuild(type: Jar) {
tasks.register('nightlyBuild', Jar) {
dependsOn nightlyResources
from sourceSets.main.output
archiveFileName = 'skript-gui-nightly.jar'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public SkriptClasses() {
.description("Represents a skript-gui GUI")
.examples("See the GUI creation section.")
.since("1.0")
.parser(new Parser<>() {
.parser(new Parser<GUI>() {
@Override
public boolean canParse(ParseContext ctx) {
return false;
Expand Down Expand Up @@ -49,7 +49,7 @@ public String toVariableNameString(GUI gui) {
.description("Represents the slot type in an Inventory Click Event.")
.examples(slotTypes.getAllNames())
.since("1.0.0")
.parser(new Parser<>() {
.parser(new Parser<SlotType>() {
@Override
public @Nullable SlotType parse(String expr, ParseContext context) {
return slotTypes.parse(expr);
Expand Down
18 changes: 18 additions & 0 deletions src/main/java/io/github/apickledwalrus/skriptgui/SkriptUtils.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package io.github.apickledwalrus.skriptgui;

import ch.njol.skript.lang.Section;
import ch.njol.skript.lang.SectionSkriptEvent;
import ch.njol.skript.lang.parser.ParserInstance;
import org.skriptlang.skript.lang.structure.Structure;

public final class SkriptUtils {

@SafeVarargs
public static boolean isSection(Class<? extends Section>... sections) {
ParserInstance parser = ParserInstance.get();
Structure current = parser.getCurrentStructure();
return parser.isCurrentSection(sections)
|| (current instanceof SectionSkriptEvent && ((SectionSkriptEvent) current).isSection(sections));
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import ch.njol.skript.lang.parser.ParserInstance;
import ch.njol.util.Kleenean;
import io.github.apickledwalrus.skriptgui.SkriptGUI;
import io.github.apickledwalrus.skriptgui.SkriptUtils;
import io.github.apickledwalrus.skriptgui.elements.sections.SecGUIOpenClose;
import io.github.apickledwalrus.skriptgui.gui.GUI;
import org.bukkit.event.Event;
Expand Down Expand Up @@ -43,9 +44,7 @@ public class EffCancelGUIClose extends Effect {
@Override
public boolean init(Expression<?>[] exprs, int matchedPattern, Kleenean isDelayed, ParseResult parseResult) {
ParserInstance parser = getParser();
if (!parser.isCurrentEvent(InventoryCloseEvent.class)
|| !(parser.getCurrentStructure() instanceof SectionSkriptEvent sectionEvent)
|| !sectionEvent.isSection(SecGUIOpenClose.class)) {
if (!parser.isCurrentEvent(InventoryCloseEvent.class) && !SkriptUtils.isSection(SecGUIOpenClose.class)) {
Skript.error("Cancelling or uncancelling the closing of a GUI can only be done within a GUI close section.");
return false;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,15 +28,21 @@
public class ExprGUIProperties extends SimplePropertyExpression<GUI, Object> {

static {
register(ExprGUIProperties.class, Object.class, "(0¦[skript-gui] name[s]|1¦(size[s]|rows)|2¦shape[s]|3¦lock status[es])", "guiinventorys");
register(ExprGUIProperties.class, Object.class, "[[skript-]gui] (0:name[s]|1:(size[s]|rows)|2:shape[s]|3:lock status[es])", "guiinventorys");
}

private static final int NAME = 0, ROWS = 1, SHAPE = 2, LOCK_STATUS = 3;
private int property;
private enum Property {
NAME,
ROWS,
SHAPE,
LOCK_STATUS
}

private Property property;

@Override
public boolean init(Expression<?>[] exprs, int matchedPattern, Kleenean isDelayed, ParseResult parseResult) {
property = parseResult.mark;
property = Property.values()[parseResult.mark];
return super.init(exprs, matchedPattern, isDelayed, parseResult);
}

Expand All @@ -52,78 +58,79 @@ public Object convert(GUI gui) {
return gui.getRawShape();
case LOCK_STATUS:
return !gui.isRemovable(); // Not removable = locked
default:
return null;
}
return null;
}

@Override
@Nullable
public Class<?>[] acceptChange(ChangeMode mode) {
if (mode == ChangeMode.SET || mode == ChangeMode.RESET) {
switch (property) {
case NAME:
return CollectionUtils.array(String.class);
case ROWS:
return CollectionUtils.array(Number.class);
case SHAPE:
return CollectionUtils.array(String[].class);
case LOCK_STATUS:
return CollectionUtils.array(Boolean.class);
}
switch (mode) {
case SET:
case RESET:
switch (property) {
case NAME:
return CollectionUtils.array(String.class);
case ROWS:
return CollectionUtils.array(Number.class);
case SHAPE:
return CollectionUtils.array(String[].class);
case LOCK_STATUS:
return CollectionUtils.array(Boolean.class);
}
default:
return null;
}
return null;
}

@Override
public void change(Event e, Object @Nullable [] delta, ChangeMode mode) {
if (delta == null || (mode != ChangeMode.SET && mode != ChangeMode.RESET)) {
public void change(Event event, Object @Nullable [] delta, ChangeMode mode) {
GUI gui = SkriptGUI.getGUIManager().getGUI(event);
if (gui == null) {
return;
}
GUI gui = SkriptGUI.getGUIManager().getGUI(e);
if (gui != null) {
switch (mode) {
case SET:
switch (property) {
case NAME:
gui.setName((String) delta[0]);
break;
case ROWS:
gui.setSize(((Number) delta[0]).intValue() * 9);
break;
case SHAPE:
String[] newShape = new String[delta.length];
for (int i = 0; i < delta.length; i++) {
if (!(delta[i] instanceof String)) {
return;
}
newShape[i] = (String) delta[i];
}
gui.setShape(newShape);
break;
case LOCK_STATUS:
gui.setRemovable(!(boolean) delta[0]);
break;
}

switch (property) {
case NAME:
String name;
if (delta == null) {
name = gui.getInventory().getType().getDefaultTitle();
} else {
name = (String) delta[0];
}
gui.setName(name);
break;
case ROWS:
int size;
if (delta == null) {
size = gui.getInventory().getType().getDefaultSize();
} else {
size = ((Number) delta[0]).intValue() * 9;
}
gui.setSize(size);
break;
case SHAPE:
if (delta == null) {
gui.resetShape();
break;
case RESET:
switch (property) {
case NAME:
gui.setName(gui.getInventory().getType().getDefaultTitle());
break;
case ROWS:
gui.setSize(gui.getInventory().getType().getDefaultSize());
break;
case SHAPE:
gui.resetShape();
break;
case LOCK_STATUS:
gui.setRemovable(false);
break;
}
String[] newShape = new String[delta.length];
for (int i = 0; i < delta.length; i++) {
if (!(delta[i] instanceof String)) {
return;
}
break;
default:
assert false;
}
newShape[i] = (String) delta[i];
}
gui.setShape(newShape);
break;
case LOCK_STATUS:
boolean value = false;
if (delta != null) {
value = (boolean) delta[0];
}
gui.setRemovable(value);
break;
}
}

Expand All @@ -138,7 +145,7 @@ public Class<?> getReturnType() {
case LOCK_STATUS:
return Boolean.class;
default:
return Object.class;
throw new IllegalArgumentException("Unknown property: " + property);
}
}

Expand All @@ -154,7 +161,7 @@ protected String getPropertyName() {
case LOCK_STATUS:
return "lock status";
default:
return "property";
throw new IllegalArgumentException("Unknown property: " + property);
}
}

Expand Down
Loading

0 comments on commit 8e413b4

Please sign in to comment.