Skip to content

Commit 86d1294

Browse files
Start implementing modern addon registration
1 parent a973460 commit 86d1294

5 files changed

Lines changed: 100 additions & 110 deletions

File tree

src/main/java/io/github/apickledwalrus/skriptgui/SkriptClasses.java

Lines changed: 0 additions & 74 deletions
This file was deleted.

src/main/java/io/github/apickledwalrus/skriptgui/SkriptConverters.java

Lines changed: 0 additions & 15 deletions
This file was deleted.
Lines changed: 41 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,46 @@
11
package io.github.apickledwalrus.skriptgui;
22

3-
import java.io.IOException;
4-
3+
import ch.njol.skript.registrations.Classes;
54
import ch.njol.skript.util.Version;
5+
import io.github.apickledwalrus.skriptgui.gui.GUI;
66
import io.github.apickledwalrus.skriptgui.gui.events.GUIEvents;
77
import io.github.apickledwalrus.skriptgui.gui.events.RecipeEvent;
8+
import io.github.apickledwalrus.skriptgui.types.GUIClassInfo;
9+
import io.github.apickledwalrus.skriptgui.types.SlotTypeClassInfo;
10+
import org.bukkit.inventory.Inventory;
811
import org.bukkit.plugin.Plugin;
912
import org.bukkit.plugin.java.JavaPlugin;
1013

1114
import ch.njol.skript.Skript;
12-
import ch.njol.skript.SkriptAddon;
1315
import io.github.apickledwalrus.skriptgui.gui.GUIManager;
16+
import org.skriptlang.skript.addon.AddonModule;
17+
import org.skriptlang.skript.addon.SkriptAddon;
18+
import org.skriptlang.skript.lang.converter.Converters;
19+
import org.skriptlang.skript.util.ClassLoader;
1420

15-
public class SkriptGUI extends JavaPlugin {
21+
public class SkriptGUI extends JavaPlugin implements AddonModule {
1622

1723
private static SkriptGUI instance;
1824
private static GUIManager manager;
1925

26+
public static SkriptGUI getInstance() {
27+
if (instance == null) {
28+
throw new IllegalStateException("skript-gui has not yet enabled!");
29+
}
30+
return instance;
31+
}
32+
33+
public static GUIManager getGUIManager() {
34+
if (manager == null) {
35+
throw new IllegalStateException("skript-gui has not yet enabled!");
36+
}
37+
return manager;
38+
}
39+
2040
@Override
2141
public void onEnable() {
2242
Plugin skript = getServer().getPluginManager().getPlugin("Skript");
23-
Version minimumSupportedVersion = new Version(2, 10, 2);
43+
Version minimumSupportedVersion = new Version(2, 15, 2);
2444
if (skript == null) {
2545
// Skript doesn't exist within the server plugins folder
2646
getLogger().severe("Could not find Skript! Make sure you have it installed. Disabling...");
@@ -42,18 +62,9 @@ public void onEnable() {
4262

4363
instance = this;
4464

45-
SkriptAddon addon = Skript.registerAddon(this);
46-
try {
47-
addon.loadClasses("io.github.apickledwalrus.skriptgui.elements");
48-
addon.setLanguageFileDirectory("lang");
49-
new SkriptClasses(); // Register ClassInfos
50-
new SkriptConverters(); // Register Converters
51-
} catch (IOException e) {
52-
getLogger().severe("An error occurred while trying to load the addon's elements. The addon will be disabled.");
53-
getLogger().severe("Printing StackTrace:");
54-
e.printStackTrace();
55-
getServer().getPluginManager().disablePlugin(this);
56-
}
65+
SkriptAddon addon = Skript.instance().registerAddon(SkriptGUI.class, "skript-gui");
66+
addon.localizer().setSourceDirectories("lang", null);
67+
addon.loadModules(this);
5768

5869
// Register manager and events
5970
manager = new GUIManager();
@@ -65,12 +76,21 @@ public void onEnable() {
6576

6677
}
6778

68-
public static SkriptGUI getInstance() {
69-
return instance;
79+
@Override
80+
public void init(SkriptAddon addon) {
81+
Classes.registerClass(new GUIClassInfo());
82+
Converters.registerConverter(GUI.class, Inventory.class, GUI::getInventory);
83+
Classes.registerClass(new SlotTypeClassInfo());
7084
}
7185

72-
public static GUIManager getGUIManager() {
73-
return manager;
86+
@Override
87+
public void load(SkriptAddon addon) {
88+
ClassLoader.loadClasses(SkriptGUI.class, getFile(), "io.github.apickledwalrus.skriptgui.elements");
89+
}
90+
91+
@Override
92+
public String name() {
93+
return "skript-gui";
7494
}
7595

7696
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package io.github.apickledwalrus.skriptgui.types;
2+
3+
import ch.njol.skript.classes.ClassInfo;
4+
import ch.njol.skript.classes.Parser;
5+
import ch.njol.skript.lang.ParseContext;
6+
import ch.njol.skript.registrations.Classes;
7+
import io.github.apickledwalrus.skriptgui.gui.GUI;
8+
9+
public class GUIClassInfo extends ClassInfo<GUI> {
10+
11+
public GUIClassInfo() {
12+
super(GUI.class, "guiinventory");
13+
this.user("gui inventor(y|ies)?")
14+
.name("GUI")
15+
.description("Represents a skript-gui GUI")
16+
.examples("See the GUI creation section.")
17+
.since("1.0")
18+
.parser(new GUIParser());
19+
}
20+
21+
private static final class GUIParser extends Parser<GUI> {
22+
23+
@Override
24+
public boolean canParse(ParseContext context) {
25+
return false;
26+
}
27+
28+
@Override
29+
public String toString(GUI gui, int flags) {
30+
return Classes.toString(gui.getInventory().getType()) +
31+
" gui named " + gui.getName() +
32+
" with " + gui.getInventory().getSize() / 9 + " rows" +
33+
" and shape \"" + gui.getRawShape() + "\"";
34+
}
35+
36+
@Override
37+
public String toVariableNameString(GUI gui) {
38+
return toString(gui, 0);
39+
}
40+
41+
}
42+
43+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package io.github.apickledwalrus.skriptgui.types;
2+
3+
import ch.njol.skript.classes.EnumClassInfo;
4+
import org.bukkit.event.inventory.InventoryType.SlotType;
5+
6+
public class SlotTypeClassInfo extends EnumClassInfo<SlotType> {
7+
8+
public SlotTypeClassInfo() {
9+
super(SlotType.class, "slottype", "slot types");
10+
this.user("slot types?")
11+
.name("Slot Types")
12+
.description("Represents the slot type in an Inventory Click Event.")
13+
.since("1.0.0");
14+
}
15+
16+
}

0 commit comments

Comments
 (0)