Skip to content

Commit 2eaa16e

Browse files
committed
サボってたECPKaiのプッシュ
1 parent 6fc5a78 commit 2eaa16e

File tree

10 files changed

+188
-136
lines changed

10 files changed

+188
-136
lines changed

src/main/java/jp/azisaba/lgw/ecplus/EnderChestPlus.java

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,16 @@
55
import co.aikar.taskchain.TaskChainFactory;
66
import jp.azisaba.lgw.ecplus.commands.EnderChestPlusCommand;
77
import jp.azisaba.lgw.ecplus.commands.ReceiveDroppedCommand;
8-
import jp.azisaba.lgw.ecplus.listeners.BuyInventoryListener;
9-
import jp.azisaba.lgw.ecplus.listeners.DroppedItemListener;
10-
import jp.azisaba.lgw.ecplus.listeners.EnderChestListener;
11-
import jp.azisaba.lgw.ecplus.listeners.LoadInventoryDataListener;
8+
import jp.azisaba.lgw.ecplus.commands.ShortcutCommand;
9+
import jp.azisaba.lgw.ecplus.listeners.*;
1210
import jp.azisaba.lgw.ecplus.tasks.AutoSaveTask;
1311
import jp.azisaba.lgw.ecplus.utils.Chat;
1412
import lombok.Getter;
1513
import lombok.Setter;
14+
import net.milkbowl.vault.economy.Economy;
1615
import org.bukkit.Bukkit;
1716
import org.bukkit.inventory.ItemStack;
17+
import org.bukkit.plugin.RegisteredServiceProvider;
1818
import org.bukkit.plugin.java.JavaPlugin;
1919

2020
import java.io.File;
@@ -49,6 +49,8 @@ public static <T> TaskChain<T> newChain() {
4949
public static <T> TaskChain<T> newSharedChain(String name) {
5050
return taskChainFactory.newSharedChain(name);
5151
}
52+
@Getter
53+
private static Economy economy = null;
5254

5355
@Override
5456
public void onEnable() {
@@ -73,13 +75,22 @@ public void onEnable() {
7375
Bukkit.getPluginManager().registerEvents(new LoadInventoryDataListener(loader), this);
7476
Bukkit.getPluginManager().registerEvents(new BuyInventoryListener(loader), this);
7577
Bukkit.getPluginManager().registerEvents(new DroppedItemListener(dropItemContainer), this);
78+
Bukkit.getPluginManager().registerEvents(new InventoryOpenListener(), this);
7679

7780
Bukkit.getPluginCommand("enderchestplus").setExecutor(new EnderChestPlusCommand(this, loader));
7881
Bukkit.getPluginCommand("enderchestplus").setPermissionMessage(Chat.f("{0}&c権限がありません!", config.chatPrefix));
7982
Bukkit.getPluginCommand("receivedropped").setExecutor(new ReceiveDroppedCommand(dropItemContainer));
8083
Bukkit.getPluginCommand("receivedropped").setPermissionMessage(Chat.f("{0}&c権限がありません!", config.chatPrefix));
84+
Bukkit.getPluginCommand("ec").setExecutor(new ShortcutCommand(this, loader, dropItemContainer));
8185

8286
Bukkit.getLogger().info(getName() + " enabled.");
87+
88+
//VaultAPI初期化
89+
if (!setupEconomy()) {
90+
getLogger().severe("Vaultのセットアップに失敗しました。");
91+
getServer().getPluginManager().disablePlugin(this);
92+
return;
93+
}
8394
}
8495

8596
@Override
@@ -96,7 +107,7 @@ public void onDisable() {
96107
if (player.getOpenInventory().getTopInventory() == null) {
97108
return;
98109
}
99-
if (player.getOpenInventory().getTopInventory().getTitle().startsWith(enderChestTitlePrefix)) {
110+
if (InventoryOpenListener.getPlayerOpenInventoryTitle(player).startsWith(enderChestTitlePrefix)) {
100111
ItemStack item = player.getOpenInventory().getCursor();
101112
if (item != null) {
102113
boolean success = false;
@@ -128,6 +139,19 @@ public void onDisable() {
128139
Bukkit.getLogger().info(getName() + " disabled.");
129140
}
130141

142+
private boolean setupEconomy() {
143+
if (getServer().getPluginManager().getPlugin("Vault") == null) {
144+
return false;
145+
}
146+
RegisteredServiceProvider<Economy> rsp = getServer().getServicesManager().getRegistration(Economy.class);
147+
if (rsp == null) {
148+
return false;
149+
}
150+
economy = rsp.getProvider();
151+
return economy != null;
152+
}
153+
154+
131155
public void reloadPluginConfig() {
132156

133157
reloadConfig();

src/main/java/jp/azisaba/lgw/ecplus/InventoryData.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ public InventoryData migrateAs(UUID uuid) {
169169
if (inv == null) {
170170
continue;
171171
}
172-
Inventory newInv = Bukkit.createInventory(null, inv.getSize(), inv.getName());
172+
Inventory newInv = Bukkit.createInventory(null, inv.getSize());
173173

174174
for (int index = 0; index < inv.getSize(); index++) {
175175
ItemStack item = inv.getItem(index);

src/main/java/jp/azisaba/lgw/ecplus/InventoryLoader.java

Lines changed: 13 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,9 @@ public static Inventory getMainInventory(InventoryData data, int index) {
5353

5454
public static Inventory getBuyInventory(int page) {
5555
Inventory inv = Bukkit.createInventory(null, 9 * 1, Chat.f("{0}&a - &cUnlock Page {1}", EnderChestPlus.enderChestTitlePrefix, page + 1));
56-
ItemStack confirm = ItemHelper.createItem(Material.STAINED_GLASS_PANE, 5, Chat.f("&a確定"));
57-
ItemStack cancel = ItemHelper.createItem(Material.STAINED_GLASS_PANE, 14, Chat.f("&cキャンセル"));
58-
ItemStack sign = ItemHelper.createItem(Material.SIGN, 0, Chat.f("&aページ&e{0}&aを購入しますか?", page + 1));
56+
ItemStack confirm = ItemHelper.createItem(Material.LIME_STAINED_GLASS_PANE, 5, Chat.f("&a確定"));
57+
ItemStack cancel = ItemHelper.createItem(Material.RED_STAINED_GLASS_PANE, 14, Chat.f("&cキャンセル"));
58+
ItemStack sign = ItemHelper.createItem(Material.OAK_SIGN, 0, Chat.f("&aページ&e{0}&aを購入しますか?", page + 1));
5959

6060
inv.setItem(0, cancel);
6161
inv.setItem(1, cancel);
@@ -71,37 +71,23 @@ public static Inventory getBuyInventory(int page) {
7171
}
7272

7373
public static ItemStack getBuyPane(int page) {
74-
ItemStack buyPane = ItemHelper.createItem(Material.STAINED_GLASS_PANE, 15, Chat.f("&eクリックでページ&a{0}&eを購入する", page + 1));
74+
ItemStack buyPane = ItemHelper.createItem(Material.BLACK_STAINED_GLASS_PANE, 15, Chat.f("&eクリックでページ&a{0}&eを購入する", page + 1));
7575

7676
List<String> lore = new ArrayList<>(Arrays.asList(Chat.f("&6解禁コスト&a:")));
7777
if (0 <= page && page < 18) {
7878
lore.add(Chat.f("&7 - &cなし"));
7979
} else if (18 <= page && page < 27) {
80-
lore.add(Chat.f("&7 - &a&lエメラルドブロック&7x32"));
80+
lore.add(Chat.f("&7 - &a&l500$"));
8181
} else if (27 <= page && page < 36) {
82-
lore.add(Chat.f("&7 - &a&lエメラルドブロック&7x64"));
82+
lore.add(Chat.f("&7 - &a&l1000$"));
8383
} else if (36 <= page && page < 45) {
84-
lore.add(Chat.f("&7 - &a&lエメラルドブロック&7x64"));
85-
lore.add(Chat.f("&7 - &b&lダイヤモンドブロック&7x10"));
84+
lore.add(Chat.f("&7 - &a&l1500$"));
8685
} else if (45 <= page && page < 54) {
87-
lore.add(Chat.f("&7 - &b&lダイヤモンドブロック&7x32"));
86+
lore.add(Chat.f("&7 - &a&l2000$"));
8887
} else if (54 <= page && page < 81) {
89-
lore.add(Chat.f("&7 - &b&lダイヤモンドブロック&7x64"));
88+
lore.add(Chat.f("&7 - &a&l2500$"));
9089
} else if (81 <= page) {
91-
int mainPageNum = ((page) / (9 * 6)) + 1;
92-
boolean isBottomThreeLine = page % (9 * 6) >= (9 * 3);
93-
94-
int emeraldAmount = ((mainPageNum - 1) * 64);
95-
String emeraldAmountStr = "x" + emeraldAmount + " ( " + (emeraldAmount / 64) + "st )";
96-
97-
int diamondAmount = (mainPageNum - 2) * 64;
98-
if (isBottomThreeLine) {
99-
diamondAmount += 64;
100-
}
101-
String diamondAmountStr = "x" + diamondAmount + " ( " + (diamondAmount / 64) + "st )";
102-
103-
lore.add(Chat.f("&7 - &a&lエメラルドブロック&7{0}", emeraldAmountStr));
104-
lore.add(Chat.f("&7 - &b&lダイヤモンドブロック&7{0}", diamondAmountStr));
90+
lore.add(Chat.f("&7 - &a&l3000$"));
10591
}
10692

10793
ItemHelper.setLore(buyPane, lore);
@@ -111,21 +97,21 @@ public static ItemStack getBuyPane(int page) {
11197

11298
public static ItemStack getLowPane() {
11399
if (lowPane == null) {
114-
lowPane = new ItemStack(Material.STAINED_GLASS_PANE, 1, (byte) 5);
100+
lowPane = new ItemStack(Material.LIME_STAINED_GLASS_PANE, 1, (byte) 5);
115101
}
116102
return lowPane;
117103
}
118104

119105
public static ItemStack getMidiumPane() {
120106
if (midiumPane == null) {
121-
midiumPane = new ItemStack(Material.STAINED_GLASS_PANE, 1, (byte) 4);
107+
midiumPane = new ItemStack(Material.YELLOW_STAINED_GLASS_PANE, 1, (byte) 4);
122108
}
123109
return midiumPane;
124110
}
125111

126112
public static ItemStack getHighPane() {
127113
if (highPane == null) {
128-
highPane = new ItemStack(Material.STAINED_GLASS_PANE, 1, (byte) 14);
114+
highPane = new ItemStack(Material.RED_STAINED_GLASS_PANE, 1, (byte) 14);
129115
}
130116
return highPane;
131117
}

src/main/java/jp/azisaba/lgw/ecplus/commands/EnderChestPlusCommand.java

Lines changed: 5 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import jp.azisaba.lgw.ecplus.EnderChestPlus;
99
import jp.azisaba.lgw.ecplus.InventoryData;
1010
import jp.azisaba.lgw.ecplus.InventoryLoader;
11+
import jp.azisaba.lgw.ecplus.listeners.InventoryOpenListener;
1112
import jp.azisaba.lgw.ecplus.utils.Chat;
1213
import jp.azisaba.lgw.ecplus.utils.UUIDUtils;
1314
import lombok.RequiredArgsConstructor;
@@ -58,17 +59,8 @@ public boolean onCommand(CommandSender sender, Command cmd, String label, String
5859
} else if (args[0].equalsIgnoreCase("openingPlayer")) {
5960
List<String> playerNames = Bukkit.getOnlinePlayers().stream()
6061
.filter(player -> {
61-
InventoryView inv = player.getOpenInventory();
62-
if (inv == null) {
63-
return false;
64-
}
65-
if (inv.getTopInventory() == null) {
66-
return false;
67-
}
68-
if (inv.getTopInventory().getTitle() == null) {
69-
return false;
70-
}
71-
return inv.getTopInventory().getTitle().startsWith(EnderChestPlus.enderChestTitlePrefix);
62+
String inv = InventoryOpenListener.getPlayerOpenInventoryTitle(player);
63+
return inv.startsWith(EnderChestPlus.enderChestTitlePrefix);
7264
}).map(Player::getName)
7365
.collect(Collectors.toList());
7466

@@ -153,17 +145,8 @@ public boolean onCommand(CommandSender sender, Command cmd, String label, String
153145
if (player == null) {
154146
return false;
155147
}
156-
InventoryView inv = player.getOpenInventory();
157-
if (inv == null) {
158-
return false;
159-
}
160-
if (inv.getTopInventory() == null) {
161-
return false;
162-
}
163-
if (inv.getTopInventory().getTitle() == null) {
164-
return false;
165-
}
166-
return inv.getTopInventory().getTitle()
148+
String inv = InventoryOpenListener.getPlayerOpenInventoryTitle(player);
149+
return inv
167150
.startsWith(EnderChestPlus.enderChestTitlePrefix);
168151
});
169152

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package jp.azisaba.lgw.ecplus.commands;
2+
3+
import jp.azisaba.lgw.ecplus.DropItemContainer;
4+
import jp.azisaba.lgw.ecplus.EnderChestPlus;
5+
import jp.azisaba.lgw.ecplus.InventoryData;
6+
import jp.azisaba.lgw.ecplus.InventoryLoader;
7+
import jp.azisaba.lgw.ecplus.utils.Chat;
8+
import lombok.RequiredArgsConstructor;
9+
import org.bukkit.command.Command;
10+
import org.bukkit.command.CommandExecutor;
11+
import org.bukkit.command.CommandSender;
12+
import org.bukkit.entity.Player;
13+
import org.bukkit.inventory.Inventory;
14+
@RequiredArgsConstructor
15+
public class ShortcutCommand implements CommandExecutor {
16+
private final EnderChestPlus plugin ;
17+
private final InventoryLoader loader;
18+
private final DropItemContainer dropItemContainer;
19+
20+
@Override
21+
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
22+
23+
if (sender instanceof Player) {
24+
Player p = (Player) sender;
25+
// エンダーチェストを開く
26+
if (!plugin.isAllowOpenEnderChest()) {
27+
p.sendMessage(Chat.f("&c現在エンダーチェストは無効化されています。運営が再度有効化するまでお待ちください。"));
28+
if (p.hasPermission("enderchestplus.command.enderchestplus")) {
29+
p.sendMessage(Chat.f("&eあなたは運営なので、&c/ecp enable &eで解除することができます。\n他の運営がエンチェスのメンテナンスをしていないか確認してから実行してください。"));
30+
}
31+
return true;
32+
}
33+
34+
if (loader.getLookingAt(p) != null) {
35+
loader.setLookingAt(p, null);
36+
}
37+
38+
InventoryData data = loader.getInventoryData(p);
39+
40+
// nullの場合は読み込み待ち
41+
if (data == null) {
42+
p.sendMessage(Chat.f("&c現在プレイヤーデータのロード中です。しばらくお待ちください..."));
43+
return true;
44+
}
45+
46+
Inventory inv = InventoryLoader.getMainInventory(data, 0);
47+
p.openInventory(inv);
48+
return true;
49+
}
50+
sender.sendMessage("このコマンドはプレイヤーのみ実行可能です。");
51+
return false;
52+
}
53+
}

0 commit comments

Comments
 (0)