Skip to content

Commit 8e36f27

Browse files
committed
[add] VillagerNPCManager
1 parent 8f58939 commit 8e36f27

3 files changed

Lines changed: 88 additions & 0 deletions

File tree

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package com.github.elic0de.thejpspit.villager;
2+
3+
import com.github.elic0de.thejpspit.TheJpsPit;
4+
import org.bukkit.Location;
5+
import org.bukkit.NamespacedKey;
6+
import org.bukkit.World;
7+
import org.bukkit.entity.Player;
8+
import org.bukkit.entity.Villager;
9+
import org.bukkit.persistence.PersistentDataType;
10+
11+
public abstract class VillagerNPC {
12+
13+
public static final NamespacedKey npcIdKey = new NamespacedKey(TheJpsPit.getInstance(), "npcId");
14+
15+
public abstract String getId();
16+
17+
public abstract String getName();
18+
19+
protected abstract void onClick(Player clickedPlayer);
20+
21+
public void click(Player clickedPlayer) {
22+
onClick(clickedPlayer);
23+
}
24+
25+
public Villager spawnAt(World world, Location location) {
26+
Villager villager = world.spawn(location, Villager.class);
27+
villager.setVillagerType(getVillagerType());
28+
villager.setProfession(getProfession());
29+
villager.setCustomNameVisible(true);
30+
villager.setCustomName(getName());
31+
villager.getPersistentDataContainer().set(npcIdKey, PersistentDataType.STRING, getId());
32+
return villager;
33+
}
34+
35+
public Villager.Type getVillagerType() {
36+
return Villager.Type.PLAINS;
37+
}
38+
39+
public Villager.Profession getProfession() {
40+
return Villager.Profession.NONE;
41+
}
42+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package com.github.elic0de.thejpspit.villager;
2+
3+
import org.bukkit.entity.Villager;
4+
import org.bukkit.persistence.PersistentDataType;
5+
6+
import java.util.HashMap;
7+
import java.util.Map;
8+
9+
public class VillagerNPCManager {
10+
11+
private static final Map<String, VillagerNPC> villagerNPCMap = new HashMap<>();
12+
13+
public static void register(VillagerNPC villagerNPC) {
14+
villagerNPCMap.put(villagerNPC.getId(), villagerNPC);
15+
}
16+
17+
public static void clear() {
18+
villagerNPCMap.clear();
19+
}
20+
21+
public static VillagerNPC getVillagerNPC(Villager villager) {
22+
final String npcId = villager.getPersistentDataContainer().get(VillagerNPC.npcIdKey, PersistentDataType.STRING);
23+
return villagerNPCMap.get(npcId);
24+
}
25+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.github.elic0de.thejpspit.villager.villagers;
2+
3+
import com.github.elic0de.thejpspit.villager.VillagerNPC;
4+
import org.bukkit.entity.Player;
5+
6+
public class ShopVillager extends VillagerNPC {
7+
@Override
8+
public String getId() {
9+
return "Shop";
10+
}
11+
12+
@Override
13+
public String getName() {
14+
return "&e&lショップ";
15+
}
16+
17+
@Override
18+
protected void onClick(Player clickedPlayer) {
19+
//@TODO implements
20+
}
21+
}

0 commit comments

Comments
 (0)