Skip to content

Commit 0c3c92a

Browse files
committed
queues.ymlから変更できるように
1 parent 9c91e5f commit 0c3c92a

File tree

4 files changed

+76
-28
lines changed

4 files changed

+76
-28
lines changed

src/main/java/com/github/elic0de/thejpspit/spigot/TheJpsPit.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import com.github.elic0de.thejpspit.spigot.command.PitCommand;
66
import com.github.elic0de.thejpspit.spigot.command.SpawnCommand;
77
import com.github.elic0de.thejpspit.spigot.config.PitPreferences;
8+
import com.github.elic0de.thejpspit.spigot.config.Queues;
89
import com.github.elic0de.thejpspit.spigot.config.Settings;
910
import com.github.elic0de.thejpspit.spigot.database.Database;
1011
import com.github.elic0de.thejpspit.spigot.database.SqLiteDatabase;
@@ -45,6 +46,7 @@ public final class TheJpsPit extends JavaPlugin {
4546

4647
private static TheJpsPit instance;
4748
private Settings settings;
49+
private Queues queues;
4850
private Game game;
4951
private Database database;
5052
private KillRatingHelper ratingHelper;
@@ -67,8 +69,9 @@ public void onLoad() {
6769

6870
private void loadConfig() throws RuntimeException {
6971
try {
70-
this.settings = Annotaml.create(new File(getDataFolder(), "config.yml"), Settings.class)
71-
.get();
72+
this.settings = Annotaml.create(new File(getDataFolder(), "config.yml"), Settings.class).get();
73+
this.queues = Annotaml.create(new File(getDataFolder(), "queues.yml"), Queues.class).get();
74+
7275
} catch (IOException | InvocationTargetException | InstantiationException |
7376
IllegalAccessException e) {
7477
getLogger().log(Level.SEVERE, "Failed to load configuration files", e);
@@ -227,6 +230,10 @@ public Settings getSettings() {
227230
return settings;
228231
}
229232

233+
public Queues getQueues() {
234+
return queues;
235+
}
236+
230237
private List<Hook> getHooks() {
231238
return hooks;
232239
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package com.github.elic0de.thejpspit.spigot.config;
2+
3+
import java.util.LinkedHashMap;
4+
import java.util.List;
5+
import java.util.Map;
6+
import net.william278.annotaml.YamlFile;
7+
import net.william278.annotaml.YamlKey;
8+
9+
@YamlFile
10+
public class Queues {
11+
12+
private List<String> menuLayout = List.of(
13+
" ",
14+
" x y z ",
15+
" ",
16+
" c "
17+
);
18+
19+
@YamlKey("servers")
20+
private Map<String, List<String>> servers = new LinkedHashMap<>(Map.of(
21+
"x", List.of(
22+
"server",
23+
"name",
24+
"description",
25+
"stone",
26+
"execute_command"))
27+
);
28+
29+
public List<String> getMenuLayout() {
30+
return menuLayout;
31+
}
32+
33+
public Map<String, List<String>> getServers() {
34+
return servers;
35+
}
36+
}

src/main/java/com/github/elic0de/thejpspit/spigot/gui/ServerQueueMenu.java

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,33 +7,39 @@
77
import de.themoep.inventorygui.DynamicGuiElement;
88
import de.themoep.inventorygui.InventoryGui;
99
import de.themoep.inventorygui.StaticGuiElement;
10+
import java.util.List;
11+
import java.util.Locale;
12+
import java.util.Map;
1013
import org.bukkit.Material;
1114
import org.bukkit.entity.Player;
1215
import org.bukkit.inventory.ItemStack;
1316

1417
public class ServerQueueMenu {
1518

16-
private static final String[] MENU_LAYOUT = {
17-
" ",
18-
" x y z ",
19-
" ",
20-
" c ",
21-
};
22-
2319
private final InventoryGui menu;
2420

2521
private ServerQueueMenu(TheJpsPit plugin, String title) {
22+
final String[] MENU_LAYOUT = plugin.getQueues().getMenuLayout().toArray(new String[0]);
2623
this.menu = new InventoryGui(plugin, title, MENU_LAYOUT);
2724

2825
// Add filler items
2926
this.menu.setFiller(new ItemStack(Material.BLACK_STAINED_GLASS_PANE, 1));
3027
// Add pagination handling
31-
this.menu.addElement(
32-
queueButton('x', "lobby", new ItemStack(Material.PINK_WOOL),
33-
"CatchTheWool", "&7相手陣地にある羊毛を自分陣地へ持ち帰れ!"));
34-
this.menu.addElement(
35-
queueButton('y', "battle", new ItemStack(Material.COBBLESTONE),
36-
"BattleCastle", "&7自分のコアを守りつつ相手のコアを破壊せよ!!"));
28+
29+
final Map<String, List<String>> queues = plugin.getQueues().getServers();
30+
31+
queues.forEach((s, info) -> {
32+
if (info.size() != 5) return;
33+
final String serverName = info.get(0);
34+
final String name = info.get(1);
35+
final String description = info.get(2);
36+
final String icon = info.get(3).toUpperCase(Locale.ROOT);
37+
final String command = info.get(4);
38+
final Material material = Material.getMaterial(icon);
39+
this.menu.addElement(
40+
queueButton(String.valueOf(s).charAt(0), serverName, command, new ItemStack(material == null ? Material.BARRIER : material),
41+
name, description));
42+
});
3743
this.menu.addElement(statusButton());
3844
this.menu.addElement(closeButton());
3945
}
@@ -46,7 +52,7 @@ public void show(PitPlayer player) {
4652
menu.show(player.getPlayer());
4753
}
4854

49-
private DynamicGuiElement queueButton(char symbol, String serverName, ItemStack itemStack,
55+
private DynamicGuiElement queueButton(char symbol, String serverName, String command , ItemStack itemStack,
5056
String title, String desc) {
5157
return new DynamicGuiElement(symbol, (viewer) -> {
5258
final QueueManager queueManager = TheJpsPit.getInstance().getQueueManager();
@@ -57,7 +63,7 @@ private DynamicGuiElement queueButton(char symbol, String serverName, ItemStack
5763
if (isQueued) {
5864
queueManager.cancelQueue(pitPlayer);
5965
} else {
60-
queueManager.addQueue(pitPlayer, serverName);
66+
queueManager.addQueue(pitPlayer, serverName, command);
6167
}
6268
click.getGui().draw();
6369
return true;

src/main/java/com/github/elic0de/thejpspit/spigot/queue/QueueManager.java

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,36 +2,32 @@
22

33
import com.github.elic0de.thejpspit.spigot.network.PluginMessageReceiver;
44
import com.github.elic0de.thejpspit.spigot.player.PitPlayer;
5-
import java.util.Arrays;
65
import java.util.HashMap;
7-
import java.util.HashSet;
86
import java.util.Map;
97
import java.util.Objects;
10-
import java.util.Set;
11-
import java.util.stream.Collectors;
12-
import java.util.stream.Stream;
138

149
public class QueueManager {
1510

1611
private final Map<PitPlayer, String> queuedPlayers = new HashMap<>();
1712
private final Map<String, Integer> servers = new HashMap<>();
1813

14+
private final Map<PitPlayer, String> commands = new HashMap<>();
15+
1916
private final int MIN_PLAYER_SIZE = 2;
2017

2118
public void checkQueue() {
2219
PluginMessageReceiver.sendServerPlayerCount();
2320
if (servers.isEmpty()) return;
2421

2522
servers.forEach((s, integer) -> {
26-
if (getNeededPlayer(s) == 0) sendServer(s);
23+
if (getNeededPlayer(s) == 0) executeCommand(s);
2724
});
2825
}
2926

30-
public void addQueue(PitPlayer player, String serverName) {
31-
cancelQueue(player);
27+
public void addQueue(PitPlayer player, String serverName, String command) {
3228
queuedPlayers.remove(player);
3329
queuedPlayers.put(player, serverName);
34-
30+
commands.put(player, command);
3531
checkQueue();
3632
}
3733

@@ -49,10 +45,13 @@ public boolean isQueued(PitPlayer player, String serverName) {
4945
return queuedServerName.equals(serverName);
5046
}
5147

52-
private void sendServer(String serverName) {
48+
private void executeCommand(String serverName) {
5349
for (PitPlayer player : queuedPlayers.keySet()) {
5450
if (!Objects.equals(queuedPlayers.get(player), serverName)) return;
55-
PluginMessageReceiver.changeServer(player, serverName);
51+
final String command = commands.getOrDefault(player,"");
52+
if (command.equals("")) return;
53+
player.getPlayer().performCommand(command);
54+
cancelQueue(player);
5655
}
5756
}
5857

0 commit comments

Comments
 (0)