Skip to content

Commit add5dbe

Browse files
committed
supports yaml section when load action
with breaking changes
1 parent b3cf728 commit add5dbe

9 files changed

Lines changed: 165 additions & 47 deletions

File tree

modules/actions/src/main/java/top/mrxiaom/pluginbase/actions/ActionActionBar.java

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package top.mrxiaom.pluginbase.actions;
22

3+
import org.bukkit.configuration.ConfigurationSection;
34
import org.bukkit.entity.Player;
45
import org.jetbrains.annotations.Nullable;
56
import top.mrxiaom.pluginbase.api.IAction;
@@ -11,12 +12,28 @@
1112
import java.util.List;
1213

1314
public class ActionActionBar implements IAction {
14-
public static final IActionProvider PROVIDER = s -> {
15-
if (s.startsWith("[actionbar]")) {
16-
return new ActionActionBar(s.substring(11));
17-
}
18-
if (s.startsWith("actionbar:")) {
19-
return new ActionActionBar(s.substring(10));
15+
public static final IActionProvider PROVIDER = input -> {
16+
if (input instanceof ConfigurationSection) {
17+
ConfigurationSection section = (ConfigurationSection) input;
18+
if (!section.contains("type") && section.contains("actionbar")) {
19+
String message = section.getString("actionbar");
20+
if (message != null) {
21+
return new ActionActionBar(message);
22+
}
23+
} else if ("actionbar".equals(section.getString("type"))) {
24+
String message = section.getString("message");
25+
if (message != null) {
26+
return new ActionActionBar(message);
27+
}
28+
}
29+
} else {
30+
String s = String.valueOf(input);
31+
if (s.startsWith("[actionbar]")) {
32+
return new ActionActionBar(s.substring(11));
33+
}
34+
if (s.startsWith("actionbar:")) {
35+
return new ActionActionBar(s.substring(10));
36+
}
2037
}
2138
return null;
2239
};

modules/actions/src/main/java/top/mrxiaom/pluginbase/actions/ActionClose.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package top.mrxiaom.pluginbase.actions;
22

3+
import org.bukkit.configuration.ConfigurationSection;
34
import org.bukkit.entity.Player;
45
import org.jetbrains.annotations.Nullable;
56
import top.mrxiaom.pluginbase.api.IAction;
@@ -13,7 +14,20 @@ public class ActionClose implements IAction {
1314
public static final ActionClose INSTANCE;
1415
static {
1516
INSTANCE = new ActionClose();
16-
PROVIDER = s -> s.equals("[close]") || s.equals("close") ? INSTANCE : null;
17+
PROVIDER = input -> {
18+
if (input instanceof ConfigurationSection) {
19+
ConfigurationSection section = (ConfigurationSection) input;
20+
if ("close".equals(section.getString("type"))) {
21+
return INSTANCE;
22+
}
23+
} else {
24+
String s = String.valueOf(input);
25+
if (s.equals("[close]") || s.equals("close")) {
26+
return INSTANCE;
27+
}
28+
}
29+
return null;
30+
};
1731
}
1832
private ActionClose() {
1933
}

modules/actions/src/main/java/top/mrxiaom/pluginbase/actions/ActionConsole.java

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package top.mrxiaom.pluginbase.actions;
22

33
import org.bukkit.Bukkit;
4+
import org.bukkit.configuration.ConfigurationSection;
45
import org.bukkit.entity.Player;
56
import org.jetbrains.annotations.Nullable;
67
import top.mrxiaom.pluginbase.BukkitPlugin;
@@ -13,12 +14,28 @@
1314
import java.util.List;
1415

1516
public class ActionConsole implements IAction {
16-
public static final IActionProvider PROVIDER = s -> {
17-
if (s.startsWith("[console]")) {
18-
return new ActionConsole(s.substring(9));
19-
}
20-
if (s.startsWith("console:")) {
21-
return new ActionConsole(s.substring(8));
17+
public static final IActionProvider PROVIDER = input -> {
18+
if (input instanceof ConfigurationSection) {
19+
ConfigurationSection section = (ConfigurationSection) input;
20+
if (!section.contains("type") && section.contains("console")) {
21+
String command = section.getString("console");
22+
if (command != null) {
23+
return new ActionConsole(command);
24+
}
25+
} else if ("console".equals(section.getString("type"))) {
26+
String command = section.getString("command");
27+
if (command != null) {
28+
return new ActionConsole(command);
29+
}
30+
}
31+
} else {
32+
String s = String.valueOf(input);
33+
if (s.startsWith("[console]")) {
34+
return new ActionConsole(s.substring(9));
35+
}
36+
if (s.startsWith("console:")) {
37+
return new ActionConsole(s.substring(8));
38+
}
2239
}
2340
return null;
2441
};

modules/actions/src/main/java/top/mrxiaom/pluginbase/actions/ActionDelay.java

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package top.mrxiaom.pluginbase.actions;
22

3+
import org.bukkit.configuration.ConfigurationSection;
34
import org.bukkit.entity.Player;
45
import org.jetbrains.annotations.Nullable;
56
import top.mrxiaom.pluginbase.api.IAction;
@@ -10,12 +11,28 @@
1011
import java.util.List;
1112

1213
public class ActionDelay implements IAction {
13-
public static final IActionProvider PROVIDER = s -> {
14-
if (s.startsWith("[delay]")) {
15-
return Util.parseInt(s.substring(7)).map(ActionDelay::new).orElse(null);
16-
}
17-
if (s.startsWith("delay:")) {
18-
return Util.parseInt(s.substring(6)).map(ActionDelay::new).orElse(null);
14+
public static final IActionProvider PROVIDER = input -> {
15+
if (input instanceof ConfigurationSection) {
16+
ConfigurationSection section = (ConfigurationSection) input;
17+
if (!section.contains("type") && section.contains("delay")) {
18+
int delay = section.getInt("delay");
19+
if (delay > 0) {
20+
return new ActionDelay(delay);
21+
}
22+
} else if ("delay".equals(section.getString("type"))) {
23+
int delay = section.getInt("delay");
24+
if (delay > 0) {
25+
return new ActionDelay(delay);
26+
}
27+
}
28+
} else {
29+
String s = String.valueOf(input);
30+
if (s.startsWith("[delay]")) {
31+
return Util.parseInt(s.substring(7)).map(ActionDelay::new).orElse(null);
32+
}
33+
if (s.startsWith("delay:")) {
34+
return Util.parseInt(s.substring(6)).map(ActionDelay::new).orElse(null);
35+
}
1936
}
2037
return null;
2138
};

modules/actions/src/main/java/top/mrxiaom/pluginbase/actions/ActionMessage.java

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package top.mrxiaom.pluginbase.actions;
22

33
import org.bukkit.Bukkit;
4+
import org.bukkit.configuration.ConfigurationSection;
45
import org.bukkit.entity.Player;
56
import org.jetbrains.annotations.Nullable;
67
import top.mrxiaom.pluginbase.api.IAction;
@@ -13,12 +14,28 @@
1314
import static top.mrxiaom.pluginbase.func.AbstractPluginHolder.t;
1415

1516
public class ActionMessage implements IAction {
16-
public static final IActionProvider PROVIDER = s -> {
17-
if (s.startsWith("[message]")) {
18-
return new ActionMessage(s.substring(9));
19-
}
20-
if (s.startsWith("message:")) {
21-
return new ActionMessage(s.substring(8));
17+
public static final IActionProvider PROVIDER = input -> {
18+
if (input instanceof ConfigurationSection) {
19+
ConfigurationSection section = (ConfigurationSection) input;
20+
if (!section.contains("type") && section.contains("message")) {
21+
String content = section.getString("message");
22+
if (content != null) {
23+
return new ActionMessage(content);
24+
}
25+
} else if ("message".equals(section.getString("type"))) {
26+
String content = section.getString("content");
27+
if (content != null) {
28+
return new ActionMessage(content);
29+
}
30+
}
31+
} else {
32+
String s = String.valueOf(input);
33+
if (s.startsWith("[message]")) {
34+
return new ActionMessage(s.substring(9));
35+
}
36+
if (s.startsWith("message:")) {
37+
return new ActionMessage(s.substring(8));
38+
}
2239
}
2340
return null;
2441
};

modules/actions/src/main/java/top/mrxiaom/pluginbase/actions/ActionMessageAdventure.java

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package top.mrxiaom.pluginbase.actions;
22

33
import org.bukkit.Bukkit;
4+
import org.bukkit.configuration.ConfigurationSection;
45
import org.bukkit.entity.Player;
56
import org.jetbrains.annotations.Nullable;
67
import top.mrxiaom.pluginbase.api.IAction;
@@ -12,12 +13,28 @@
1213
import java.util.List;
1314

1415
public class ActionMessageAdventure implements IAction {
15-
public static final IActionProvider PROVIDER = s -> {
16-
if (s.startsWith("[message]")) {
17-
return new ActionMessageAdventure(s.substring(9));
18-
}
19-
if (s.startsWith("message:")) {
20-
return new ActionMessageAdventure(s.substring(8));
16+
public static final IActionProvider PROVIDER = input -> {
17+
if (input instanceof ConfigurationSection) {
18+
ConfigurationSection section = (ConfigurationSection) input;
19+
if (!section.contains("type") && section.contains("message")) {
20+
String content = section.getString("message");
21+
if (content != null) {
22+
return new ActionMessageAdventure(content);
23+
}
24+
} else if ("message".equals(section.getString("type"))) {
25+
String content = section.getString("content");
26+
if (content != null) {
27+
return new ActionMessageAdventure(content);
28+
}
29+
}
30+
} else {
31+
String s = String.valueOf(input);
32+
if (s.startsWith("[message]")) {
33+
return new ActionMessageAdventure(s.substring(9));
34+
}
35+
if (s.startsWith("message:")) {
36+
return new ActionMessageAdventure(s.substring(8));
37+
}
2138
}
2239
return null;
2340
};

modules/actions/src/main/java/top/mrxiaom/pluginbase/actions/ActionPlayer.java

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package top.mrxiaom.pluginbase.actions;
22

3+
import org.bukkit.configuration.ConfigurationSection;
34
import org.bukkit.entity.Player;
45
import org.jetbrains.annotations.Nullable;
56
import top.mrxiaom.pluginbase.BukkitPlugin;
@@ -12,12 +13,28 @@
1213
import java.util.List;
1314

1415
public class ActionPlayer implements IAction {
15-
public static final IActionProvider PROVIDER = s -> {
16-
if (s.startsWith("[player]")) {
17-
return new ActionPlayer(s.substring(8));
18-
}
19-
if (s.startsWith("player:")) {
20-
return new ActionPlayer(s.substring(7));
16+
public static final IActionProvider PROVIDER = input -> {
17+
if (input instanceof ConfigurationSection) {
18+
ConfigurationSection section = (ConfigurationSection) input;
19+
if (!section.contains("type") && section.contains("player")) {
20+
String command = section.getString("player");
21+
if (command != null) {
22+
return new ActionPlayer(command);
23+
}
24+
} else if ("player".equals(section.getString("type"))) {
25+
String command = section.getString("command");
26+
if (command != null) {
27+
return new ActionPlayer(command);
28+
}
29+
}
30+
} else {
31+
String s = String.valueOf(input);
32+
if (s.startsWith("[player]")) {
33+
return new ActionPlayer(s.substring(8));
34+
}
35+
if (s.startsWith("player:")) {
36+
return new ActionPlayer(s.substring(7));
37+
}
2138
}
2239
return null;
2340
};

modules/actions/src/main/java/top/mrxiaom/pluginbase/actions/ActionProviders.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import top.mrxiaom.pluginbase.BukkitPlugin;
88
import top.mrxiaom.pluginbase.api.IAction;
99
import top.mrxiaom.pluginbase.api.IActionProvider;
10+
import top.mrxiaom.pluginbase.utils.ConfigUtils;
1011
import top.mrxiaom.pluginbase.utils.Pair;
1112

1213
import java.util.*;
@@ -34,23 +35,23 @@ public static void registerBuiltInActions(BukkitPlugin plugin) {
3435

3536
@NotNull
3637
public static List<IAction> loadActions(@NotNull ConfigurationSection section, @NotNull String key) {
37-
return loadActions(section.getStringList(key));
38+
return loadActions(ConfigUtils.getList(section, key));
3839
}
3940

4041
@NotNull
4142
public static List<IAction> loadActions(@NotNull ConfigurationSection section, @NotNull String... keys) {
42-
List<String> list = new ArrayList<>();
43+
List<Object> list = new ArrayList<>();
4344
for (String key : keys) {
44-
list.addAll(section.getStringList(key));
45+
list.addAll(ConfigUtils.getList(section, key));
4546
}
4647
if (list.isEmpty()) return new ArrayList<>();
4748
return loadActions(list);
4849
}
4950

5051
@NotNull
51-
public static List<IAction> loadActions(@NotNull List<String> list) {
52+
public static List<IAction> loadActions(@NotNull List<Object> list) {
5253
List<IAction> actions = new ArrayList<>();
53-
for (String s : list) {
54+
for (Object s : list) {
5455
IAction action = loadAction(s);
5556
if (action != null) {
5657
actions.add(action);
@@ -60,7 +61,7 @@ public static List<IAction> loadActions(@NotNull List<String> list) {
6061
}
6162

6263
@Nullable
63-
public static IAction loadAction(@Nullable String s) {
64+
public static IAction loadAction(@Nullable Object s) {
6465
if (s == null) return null;
6566
for (IActionProvider provider : actionProviders) {
6667
IAction action = provider.provide(s);

modules/actions/src/main/java/top/mrxiaom/pluginbase/api/IActionProvider.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,10 @@
99
public interface IActionProvider {
1010
/**
1111
* IAction 提供器,返回 null 代表字符串不匹配当前 Action
12+
* @param input 输入值,可能是字符串,也可能是 {@link org.bukkit.configuration.ConfigurationSection}
1213
*/
1314
@Nullable
14-
IAction provide(@NotNull String s);
15+
IAction provide(@NotNull Object input);
1516

1617
/**
1718
* 处理优先级,数字越小越先处理
@@ -21,11 +22,11 @@ default int priority() {
2122
}
2223

2324
@NotNull
24-
static IActionProvider newProvider(int priority, @NotNull Function<String, IAction> function) {
25+
static IActionProvider newProvider(int priority, @NotNull Function<Object, IAction> function) {
2526
return new IActionProvider() {
2627
@Override
27-
public @Nullable IAction provide(@NotNull String s) {
28-
return function.apply(s);
28+
public @Nullable IAction provide(@NotNull Object input) {
29+
return function.apply(input);
2930
}
3031

3132
@Override

0 commit comments

Comments
 (0)