Skip to content

Commit defbe07

Browse files
committed
new ModuleAPI. With moduleAPI modules can register their own API so other modules can use it. For example: Test module now can create TextDisplay from TextAPI module. It even supports being executed without dependency in gradle via call(String, Map(String, Object)) method.
1 parent b6ef804 commit defbe07

4 files changed

Lines changed: 49 additions & 6 deletions

File tree

src/main/java/com/unfamoussoul/test/Test.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,12 @@ public void onEnable() {
3030
loadLocale(getDefaultLanguage(), "en_US", "ru_RU");
3131

3232
initPersistentFields();
33-
34-
addCommand(new TestCommand());
33+
addCommand(new TestCommand(this));
3534
addCommand(new RememberCommand(this));
3635
addCommand(new RemindCommand(this));
3736
addListener(new EventListener(this));
3837
addWebListener(new Web(this), config.webPort);
38+
getLogger().warning("test---");
3939
}
4040

4141
@Override

src/main/java/com/unfamoussoul/test/command/TestCommand.java

Lines changed: 43 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,61 @@
22

33
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
44
import com.unfamoussoul.sapi.api.command.DynamicCommand;
5+
import com.unfamoussoul.sapi.module.ModuleAPI;
6+
import com.unfamoussoul.sapi.module.SAPIModule;
7+
import com.unfamoussoul.test.Test;
58
import io.papermc.paper.command.brigadier.CommandSourceStack;
69
import io.papermc.paper.command.brigadier.Commands;
7-
import org.bukkit.command.CommandSender;
10+
import net.kyori.adventure.text.Component;
11+
import org.bukkit.entity.Player;
12+
13+
import java.util.Map;
814

915
public class TestCommand extends DynamicCommand {
1016

11-
public TestCommand() {
17+
private final Test module;
18+
19+
public TestCommand(Test module) {
1220
super("test");
21+
this.module = module;
1322
register(test());
1423
}
1524

1625
private LiteralArgumentBuilder<CommandSourceStack> test() {
1726
return Commands.literal("test")
1827
.executes(context -> {
19-
CommandSender sender = context.getSource().getSender();
20-
sender.sendRichMessage(sender.getName());
28+
if (!(context.getSource().getSender() instanceof Player player)) return 1;
29+
30+
SAPIModule textAPI = module.getModule("TextAPI");
31+
if (textAPI == null) {
32+
Component text = module.getLocale().message(
33+
player,
34+
"test.command.textapi_not_loaded"
35+
);
36+
player.sendMessage(text);
37+
return 1;
38+
}
39+
40+
ModuleAPI moduleAPI = textAPI.getAPI();
41+
42+
Object builder = moduleAPI.call(
43+
"createBuilder",
44+
Object.class,
45+
Map.of(
46+
"text", player.getName()
47+
));
48+
builder = moduleAPI.call(
49+
"type", Map.of(
50+
"builder", builder,
51+
"type", "text_display"
52+
));
53+
54+
moduleAPI.call(
55+
"playPlayer", Map.of(
56+
"builder", builder,
57+
"player", player
58+
));
59+
2160
return 1;
2261
});
2362
}

src/main/resources/locale/messages_en_US.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,6 @@
44
"test.remind.header": "I remembered you said this: <0>",
55
"test.remind.line": "\n - \"<0>\"",
66
"test.remember.success": "Remembered <0> symbols!"
7+
"test.remember.success": "Remembered <0> symbols!",
8+
"test.command.textapi_not_loaded": "TextAPI is not loaded!",
79
}

src/main/resources/locale/messages_ru_RU.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,6 @@
44
"test.remind.header": "Я помню, что вы сказали: <0>",
55
"test.remind.line": "\n - \"<0>\"",
66
"test.remember.success": "Запомнил <0> символов!"
7+
"test.remember.success": "Запомнил <0> символов!",
8+
"test.command.textapi_not_loaded": "TextAPI не загружен!",
79
}

0 commit comments

Comments
 (0)