Skip to content

Commit aa63e1a

Browse files
committed
[update] かっこいい剣を追加
1 parent 0e58920 commit aa63e1a

File tree

14 files changed

+215
-78
lines changed

14 files changed

+215
-78
lines changed

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

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,7 @@
1212
import com.github.elic0de.thejpspit.spigot.hook.Hook;
1313
import com.github.elic0de.thejpspit.spigot.hook.VaultEconomyHook;
1414
import com.github.elic0de.thejpspit.spigot.item.ItemManager;
15-
import com.github.elic0de.thejpspit.spigot.item.items.ItemDiamondBoots;
16-
import com.github.elic0de.thejpspit.spigot.item.items.ItemDiamondChestPlate;
17-
import com.github.elic0de.thejpspit.spigot.item.items.ItemDiamondSword;
18-
import com.github.elic0de.thejpspit.spigot.item.items.ItemObsidian;
15+
import com.github.elic0de.thejpspit.spigot.item.items.*;
1916
import com.github.elic0de.thejpspit.spigot.listener.CombatTagger;
2017
import com.github.elic0de.thejpspit.spigot.listener.EventListener;
2118
import com.github.elic0de.thejpspit.spigot.network.PluginMessageReceiver;
@@ -185,6 +182,7 @@ private void createItems() {
185182
ItemManager.register(new ItemDiamondChestPlate());
186183
ItemManager.register(new ItemDiamondBoots());
187184
ItemManager.register(new ItemObsidian());
185+
ItemManager.register(new ItemVividSword());
188186
}
189187

190188
private void createNPCs() {

src/main/java/com/github/elic0de/thejpspit/spigot/command/PitCommand.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
import co.aikar.commands.annotation.Subcommand;
88
import co.aikar.commands.bukkit.contexts.OnlinePlayer;
99
import com.github.elic0de.thejpspit.spigot.TheJpsPit;
10+
import com.github.elic0de.thejpspit.spigot.item.ItemManager;
11+
import com.github.elic0de.thejpspit.spigot.item.PitItemEntry;
1012
import com.github.elic0de.thejpspit.spigot.player.PitPlayer;
1113
import com.github.elic0de.thejpspit.spigot.player.PitPlayerManager;
1214
import com.github.elic0de.thejpspit.spigot.villager.VillagerNPCManager;
@@ -47,4 +49,12 @@ public void onSetSpawn(Player player) {
4749
public void onCreateShop(Player player) {
4850
VillagerNPCManager.getVillagerNPC("shop").spawnAt(player.getWorld(), player.getLocation());
4951
}
52+
53+
@Subcommand("item")
54+
@CommandPermission("tjp.item")
55+
public void onGetItem(Player player, String itemId) {
56+
final PitItemEntry entry = ItemManager.getPitItemEntry(itemId);
57+
if (entry == null) return;
58+
player.getInventory().addItem(entry.getItemStack());
59+
}
5060
}

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

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import com.github.elic0de.thejpspit.spigot.TheJpsPit;
44
import com.github.elic0de.thejpspit.spigot.hook.EconomyHook;
55
import com.github.elic0de.thejpspit.spigot.item.ItemManager;
6-
import com.github.elic0de.thejpspit.spigot.item.PitItem;
6+
import com.github.elic0de.thejpspit.spigot.item.PitItemEntry;
77
import com.github.elic0de.thejpspit.spigot.player.PitPlayer;
88
import com.github.elic0de.thejpspit.spigot.player.PitPlayerManager;
99
import de.themoep.inventorygui.DynamicGuiElement;
@@ -26,20 +26,20 @@ public class ShopMenu {
2626

2727
private ShopMenu(TheJpsPit plugin, String title) {
2828
this.menu = new InventoryGui(plugin, title, MENU_LAYOUT);
29-
this.menu.addElement(getItemElement('1', ItemManager.getPitItem("diamond_sword")));
30-
this.menu.addElement(getItemElement('2', ItemManager.getPitItem("diamond_chestplate")));
31-
this.menu.addElement(getItemElement('3', ItemManager.getPitItem("diamond_boots")));
32-
this.menu.addElement(getItemElement('4', ItemManager.getPitItem("obsidian")));
29+
this.menu.addElement(getItemElement('1', ItemManager.getPitItemEntry("diamond_sword")));
30+
this.menu.addElement(getItemElement('2', ItemManager.getPitItemEntry("diamond_chestplate")));
31+
this.menu.addElement(getItemElement('3', ItemManager.getPitItemEntry("diamond_boots")));
32+
this.menu.addElement(getItemElement('4', ItemManager.getPitItemEntry("obsidian")));
3333
}
3434

3535
public static ShopMenu create(TheJpsPit plugin, String title) {
3636
return new ShopMenu(plugin, title);
3737
}
3838

39-
private DynamicGuiElement getItemElement(char slotChar, PitItem pitItem) {
39+
private DynamicGuiElement getItemElement(char slotChar, PitItemEntry pitItemEntry) {
4040
return new DynamicGuiElement(slotChar, (viewer) -> {
4141
final PitPlayer pitPlayer = PitPlayerManager.getPitPlayer((Player) viewer);
42-
return new StaticGuiElement(slotChar, pitItem.getShopItem(), click -> {
42+
return new StaticGuiElement(slotChar, pitItemEntry.getItemStack(), click -> {
4343
if (TheJpsPit.getInstance().getEconomyHook().isEmpty()) {
4444
TheJpsPit.getInstance().getLogger().warning("経済プラグインが見つかりませんでした");
4545
return true;
@@ -49,7 +49,7 @@ private DynamicGuiElement getItemElement(char slotChar, PitItem pitItem) {
4949
final Inventory inventory = player.getInventory();
5050
final EconomyHook economyHook = TheJpsPit.getInstance().getEconomyHook().get();
5151

52-
if (!economyHook.hasMoney(pitPlayer, BigDecimal.valueOf(pitItem.getPrice()))) {
52+
if (!economyHook.hasMoney(pitPlayer, BigDecimal.valueOf(pitItemEntry.getPrice()))) {
5353
pitPlayer.sendMessage("&c【PIT】所持金が足りません!");
5454
return true;
5555
}
@@ -59,12 +59,12 @@ private DynamicGuiElement getItemElement(char slotChar, PitItem pitItem) {
5959
return true;
6060
}
6161

62-
economyHook.takeMoney(pitPlayer, BigDecimal.valueOf(pitItem.getPrice()));
63-
inventory.addItem(pitItem.getItemStack());
62+
economyHook.takeMoney(pitPlayer, BigDecimal.valueOf(pitItemEntry.getPrice()));
63+
inventory.addItem(pitItemEntry.getItemStack());
6464
player.updateInventory();
6565

6666
return true;
67-
}, pitItem.getLore());
67+
}, pitItemEntry.getLore());
6868
});
6969
}
7070

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.github.elic0de.thejpspit.spigot.item;
2+
3+
import org.bukkit.entity.Player;
4+
5+
public interface IUsable {
6+
7+
void use(Player var1);
8+
}
Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,45 @@
11
package com.github.elic0de.thejpspit.spigot.item;
22

3+
import com.github.elic0de.thejpspit.spigot.TheJpsPit;
4+
import org.bukkit.event.Listener;
5+
import org.bukkit.inventory.ItemStack;
6+
import org.bukkit.inventory.meta.ItemMeta;
7+
import org.bukkit.persistence.PersistentDataType;
8+
9+
import javax.annotation.Nullable;
310
import java.util.HashMap;
411

512
public class ItemManager {
613

7-
public static HashMap<String, PitItem> pitItemMap = new HashMap<>();
14+
private static final HashMap<String, PitItemEntry> pitItemMap = new HashMap<>();
815

9-
public static PitItem getPitItem(String id) {
10-
return pitItemMap.get(id);
16+
public ItemManager() {
1117
}
1218

13-
public static void register(PitItem pitItem) {
19+
public static void register(PitItemEntry pitItem) {
1420
pitItemMap.put(pitItem.getId(), pitItem);
21+
if (pitItem instanceof Listener listener) {
22+
TheJpsPit.getInstance().getServer().getPluginManager().registerEvents(listener, TheJpsPit.getInstance());
23+
}
24+
}
25+
26+
@Nullable
27+
public static PitItemEntry getPitItemEntry(String id) {
28+
return pitItemMap.get(id);
29+
}
30+
31+
@Nullable
32+
public static PitItemEntry getPitItemEntry(ItemStack itemStack) {
33+
ItemMeta itemMeta = itemStack.getItemMeta();
34+
return itemMeta == null ? null : getPitItemEntry(itemMeta.getPersistentDataContainer().get(PitItemEntry.itemIdKey, PersistentDataType.STRING));
35+
}
36+
37+
public static boolean isPitItem(ItemStack itemStack) {
38+
ItemMeta itemMeta = itemStack.getItemMeta();
39+
if (itemMeta == null) {
40+
return false;
41+
} else {
42+
return itemMeta.getPersistentDataContainer().get(PitItemEntry.itemIdKey, PersistentDataType.STRING) != null;
43+
}
1544
}
1645
}

src/main/java/com/github/elic0de/thejpspit/spigot/item/PitItem.java

Lines changed: 0 additions & 38 deletions
This file was deleted.
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package com.github.elic0de.thejpspit.spigot.item;
2+
3+
import com.github.elic0de.thejpspit.spigot.TheJpsPit;
4+
import org.bukkit.NamespacedKey;
5+
import org.bukkit.inventory.ItemFlag;
6+
import org.bukkit.inventory.ItemStack;
7+
import org.bukkit.inventory.meta.ItemMeta;
8+
import org.bukkit.persistence.PersistentDataType;
9+
10+
import java.util.Objects;
11+
12+
public abstract class PitItemEntry {
13+
14+
public static final NamespacedKey itemIdKey = new NamespacedKey(TheJpsPit.getInstance(), "itemId");
15+
16+
public abstract String getId();
17+
18+
public abstract ItemStack getRawItemStack();
19+
20+
public abstract int getPrice();
21+
22+
public abstract int getRequiredLevel();
23+
24+
public abstract String getName();
25+
26+
public final ItemStack getItemStack() {
27+
ItemStack itemStack = this.getRawItemStack().clone();
28+
ItemMeta itemMeta = itemStack.getItemMeta();
29+
if (itemMeta != null) {
30+
itemMeta.getPersistentDataContainer().set(itemIdKey, PersistentDataType.STRING, this.getId());
31+
itemMeta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
32+
itemMeta.addItemFlags(ItemFlag.HIDE_UNBREAKABLE);
33+
itemStack.setItemMeta(itemMeta);
34+
}
35+
return itemStack;
36+
}
37+
38+
public String[] getLore() {
39+
return new String[]{
40+
getName(),
41+
String.format("必要レベル: §e%d", this.getRequiredLevel()),
42+
String.format("値段: §e%d", this.getPrice())
43+
};
44+
}
45+
46+
protected boolean isEntryOf(ItemStack itemStack) {
47+
ItemMeta itemMeta = itemStack.getItemMeta();
48+
if (itemMeta == null) return false;
49+
return (Objects.requireNonNullElse(itemMeta.getPersistentDataContainer().get(itemIdKey, PersistentDataType.STRING), "")).equals(this.getId());
50+
}
51+
}

src/main/java/com/github/elic0de/thejpspit/spigot/item/items/ItemDiamondBoots.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
11
package com.github.elic0de.thejpspit.spigot.item.items;
22

3-
import com.github.elic0de.thejpspit.spigot.item.PitItem;
3+
import com.github.elic0de.thejpspit.spigot.item.PitItemEntry;
44
import com.github.elic0de.thejpspit.spigot.util.ItemUtil;
55
import org.bukkit.Material;
66
import org.bukkit.inventory.ItemStack;
77

8-
public class ItemDiamondBoots extends PitItem {
8+
public class ItemDiamondBoots extends PitItemEntry {
9+
910
@Override
1011
public String getId() {
1112
return "diamond_boots";
1213
}
1314

1415
@Override
15-
public ItemStack getItemStack() {
16+
public ItemStack getRawItemStack() {
1617
return ItemUtil.withUnbreakable(new ItemStack(Material.DIAMOND_BOOTS));
1718
}
1819

src/main/java/com/github/elic0de/thejpspit/spigot/item/items/ItemDiamondChestPlate.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
11
package com.github.elic0de.thejpspit.spigot.item.items;
22

3-
import com.github.elic0de.thejpspit.spigot.item.PitItem;
3+
import com.github.elic0de.thejpspit.spigot.item.PitItemEntry;
44
import com.github.elic0de.thejpspit.spigot.util.ItemUtil;
55
import org.bukkit.Material;
66
import org.bukkit.inventory.ItemStack;
77

8-
public class ItemDiamondChestPlate extends PitItem {
8+
public class ItemDiamondChestPlate extends PitItemEntry {
9+
910
@Override
1011
public String getId() {
1112
return "diamond_chestplate";
1213
}
1314

1415
@Override
15-
public ItemStack getItemStack() {
16+
public ItemStack getRawItemStack() {
1617
return ItemUtil.withUnbreakable(new ItemStack(Material.DIAMOND_CHESTPLATE));
1718
}
1819

src/main/java/com/github/elic0de/thejpspit/spigot/item/items/ItemDiamondSword.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
11
package com.github.elic0de.thejpspit.spigot.item.items;
22

3-
import com.github.elic0de.thejpspit.spigot.item.PitItem;
3+
import com.github.elic0de.thejpspit.spigot.item.PitItemEntry;
44
import com.github.elic0de.thejpspit.spigot.util.ItemUtil;
55
import org.bukkit.Material;
66
import org.bukkit.inventory.ItemStack;
77

8-
public class ItemDiamondSword extends PitItem {
8+
public class ItemDiamondSword extends PitItemEntry {
99

1010
@Override
1111
public String getId() {
1212
return "diamond_sword";
1313
}
1414

1515
@Override
16-
public ItemStack getItemStack() {
16+
public ItemStack getRawItemStack() {
1717
return ItemUtil.withUnbreakable(new ItemStack(Material.DIAMOND_SWORD));
1818
}
1919

0 commit comments

Comments
 (0)