geforkt von Mirrors/HeadDB
Commit
cfd2ed9368
20
pom.xml
20
pom.xml
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
<groupId>tsp.headdb</groupId>
|
<groupId>tsp.headdb</groupId>
|
||||||
<artifactId>HeadDB</artifactId>
|
<artifactId>HeadDB</artifactId>
|
||||||
<version>2.2</version>
|
<version>2.3</version>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
<name>HeadDB</name>
|
<name>HeadDB</name>
|
||||||
@ -28,6 +28,11 @@
|
|||||||
<id>jitpack.io</id>
|
<id>jitpack.io</id>
|
||||||
<url>https://jitpack.io</url>
|
<url>https://jitpack.io</url>
|
||||||
</repository>
|
</repository>
|
||||||
|
<!-- CodeMC -->
|
||||||
|
<repository>
|
||||||
|
<id>codemc-snapshots</id>
|
||||||
|
<url>https://repo.codemc.io/repository/maven-snapshots/</url>
|
||||||
|
</repository>
|
||||||
</repositories>
|
</repositories>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
@ -57,9 +62,22 @@
|
|||||||
<artifactId>simplixstorage</artifactId>
|
<artifactId>simplixstorage</artifactId>
|
||||||
<version>3.2.0</version>
|
<version>3.2.0</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<!-- AnvilGUI -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>net.wesjd</groupId>
|
||||||
|
<artifactId>anvilgui</artifactId>
|
||||||
|
<version>1.5.0-SNAPSHOT</version>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
|
<resources>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/resources</directory>
|
||||||
|
<filtering>true</filtering>
|
||||||
|
</resource>
|
||||||
|
</resources>
|
||||||
|
|
||||||
<plugins>
|
<plugins>
|
||||||
<!-- Compiler -->
|
<!-- Compiler -->
|
||||||
<plugin>
|
<plugin>
|
||||||
|
@ -17,8 +17,8 @@ import tsp.headdb.util.Utils;
|
|||||||
public class HeadDB extends JavaPlugin {
|
public class HeadDB extends JavaPlugin {
|
||||||
|
|
||||||
private static HeadDB instance;
|
private static HeadDB instance;
|
||||||
private static Config config;
|
private Config config;
|
||||||
private static Json playerdata;
|
private Json playerdata;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
@ -42,21 +42,21 @@ public class HeadDB extends JavaPlugin {
|
|||||||
if (config.getBoolean("fetchStartup")) {
|
if (config.getBoolean("fetchStartup")) {
|
||||||
if (config.getBoolean("asyncStartup")) {
|
if (config.getBoolean("asyncStartup")) {
|
||||||
Log.debug("Initializing Database... (ASYNC)");
|
Log.debug("Initializing Database... (ASYNC)");
|
||||||
Bukkit.getScheduler().runTaskAsynchronously(this, task -> HeadAPI.getDatabase().update());
|
Bukkit.getScheduler().runTaskAsynchronously(this, () -> HeadAPI.getDatabase().update());
|
||||||
}else {
|
} else {
|
||||||
Log.debug("Initializing Database... (SYNC)");
|
Log.debug("Initializing Database... (SYNC)");
|
||||||
Bukkit.getScheduler().runTask(this, task -> HeadAPI.getDatabase().update());
|
HeadAPI.getDatabase().update();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Log.info("Done!");
|
Log.info("Done!");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Config getCfg() {
|
public Config getCfg() {
|
||||||
return config;
|
return config;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Json getPlayerdata() {
|
public Json getPlayerdata() {
|
||||||
return playerdata;
|
return playerdata;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,15 +3,16 @@ package tsp.headdb.api;
|
|||||||
import com.mojang.authlib.GameProfile;
|
import com.mojang.authlib.GameProfile;
|
||||||
import com.mojang.authlib.properties.Property;
|
import com.mojang.authlib.properties.Property;
|
||||||
import org.apache.commons.lang.Validate;
|
import org.apache.commons.lang.Validate;
|
||||||
import org.bukkit.Material;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.inventory.meta.SkullMeta;
|
import org.bukkit.inventory.meta.SkullMeta;
|
||||||
import tsp.headdb.database.Category;
|
import tsp.headdb.database.Category;
|
||||||
import tsp.headdb.util.Log;
|
import tsp.headdb.util.Log;
|
||||||
import tsp.headdb.util.Utils;
|
import tsp.headdb.util.Utils;
|
||||||
|
import tsp.headdb.util.XMaterial;
|
||||||
|
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
public class Head {
|
public class Head {
|
||||||
@ -21,6 +22,7 @@ public class Head {
|
|||||||
private String value;
|
private String value;
|
||||||
private Category category;
|
private Category category;
|
||||||
private int id;
|
private int id;
|
||||||
|
private List<String> tags;
|
||||||
|
|
||||||
public Head() {}
|
public Head() {}
|
||||||
|
|
||||||
@ -33,11 +35,11 @@ public class Head {
|
|||||||
Validate.notNull(uuid, "uuid must not be null!");
|
Validate.notNull(uuid, "uuid must not be null!");
|
||||||
Validate.notNull(value, "value must not be null!");
|
Validate.notNull(value, "value must not be null!");
|
||||||
|
|
||||||
ItemStack item = new ItemStack(Material.PLAYER_HEAD);
|
ItemStack item = new ItemStack(XMaterial.PLAYER_HEAD.parseItem());
|
||||||
SkullMeta meta = (SkullMeta) item.getItemMeta();
|
SkullMeta meta = (SkullMeta) item.getItemMeta();
|
||||||
meta.setDisplayName(Utils.colorize(category != null ? category.getColor() + name : "&8" + name));
|
meta.setDisplayName(Utils.colorize(category != null ? category.getColor() + name : "&8" + name));
|
||||||
// set skull owner
|
// set skull owner
|
||||||
GameProfile profile = new GameProfile(uuid, name);
|
GameProfile profile = new GameProfile(uuid, null);
|
||||||
profile.getProperties().put("textures", new Property("textures", value));
|
profile.getProperties().put("textures", new Property("textures", value));
|
||||||
Field profileField;
|
Field profileField;
|
||||||
try {
|
try {
|
||||||
@ -50,7 +52,8 @@ public class Head {
|
|||||||
}
|
}
|
||||||
meta.setLore(Arrays.asList(
|
meta.setLore(Arrays.asList(
|
||||||
Utils.colorize("&cID: " + id),
|
Utils.colorize("&cID: " + id),
|
||||||
" ",
|
Utils.colorize("&e" + buildTagLore((String[]) tags.toArray())),
|
||||||
|
"",
|
||||||
Utils.colorize("&8Right-Click to add/remove from favorites.")
|
Utils.colorize("&8Right-Click to add/remove from favorites.")
|
||||||
));
|
));
|
||||||
item.setItemMeta(meta);
|
item.setItemMeta(meta);
|
||||||
@ -78,6 +81,10 @@ public class Head {
|
|||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<String> getTags() {
|
||||||
|
return tags;
|
||||||
|
}
|
||||||
|
|
||||||
public Head withName(String name) {
|
public Head withName(String name) {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
return this;
|
return this;
|
||||||
@ -103,4 +110,21 @@ public class Head {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Head withTags(String tags) {
|
||||||
|
this.tags = Arrays.asList(tags.split(","));
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String buildTagLore(String... tags) {
|
||||||
|
StringBuilder builder = new StringBuilder();
|
||||||
|
for (int i = 0; i < tags.length; i++) {
|
||||||
|
builder.append(tags[i]);
|
||||||
|
if (i != tags.length - 1) {
|
||||||
|
builder.append(",");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return builder.toString();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -19,7 +19,9 @@ import java.util.UUID;
|
|||||||
*
|
*
|
||||||
* @author TheSilentPro
|
* @author TheSilentPro
|
||||||
*/
|
*/
|
||||||
public class HeadAPI {
|
public final class HeadAPI {
|
||||||
|
|
||||||
|
private HeadAPI() {}
|
||||||
|
|
||||||
private static final HeadDatabase database = new HeadDatabase();
|
private static final HeadDatabase database = new HeadDatabase();
|
||||||
|
|
||||||
@ -83,6 +85,10 @@ public class HeadAPI {
|
|||||||
return database.getHeadByUUID(uuid);
|
return database.getHeadByUUID(uuid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static List<Head> getHeadsByTag(String tag) {
|
||||||
|
return database.getHeadsByTag(tag);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieves a {@link List} of {@link Head}'s matching a name
|
* Retrieves a {@link List} of {@link Head}'s matching a name
|
||||||
*
|
*
|
||||||
@ -141,11 +147,11 @@ public class HeadAPI {
|
|||||||
* @param id The ID of the head
|
* @param id The ID of the head
|
||||||
*/
|
*/
|
||||||
public static void addFavoriteHead(UUID uuid, int id) {
|
public static void addFavoriteHead(UUID uuid, int id) {
|
||||||
List<Integer> favs = HeadDB.getPlayerdata().getIntegerList(uuid.toString() + ".favorites");
|
List<Integer> favs = HeadDB.getInstance().getPlayerdata().getIntegerList(uuid.toString() + ".favorites");
|
||||||
if (!favs.contains(id)) {
|
if (!favs.contains(id)) {
|
||||||
favs.add(id);
|
favs.add(id);
|
||||||
}
|
}
|
||||||
HeadDB.getPlayerdata().set(uuid.toString() + ".favorites", favs);
|
HeadDB.getInstance().getPlayerdata().set(uuid.toString() + ".favorites", favs);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -155,14 +161,14 @@ public class HeadAPI {
|
|||||||
* @param id The ID of the head
|
* @param id The ID of the head
|
||||||
*/
|
*/
|
||||||
public static void removeFavoriteHead(UUID uuid, int id) {
|
public static void removeFavoriteHead(UUID uuid, int id) {
|
||||||
List<Integer> favs = HeadDB.getPlayerdata().getIntegerList(uuid.toString() + ".favorites");
|
List<Integer> favs = HeadDB.getInstance().getPlayerdata().getIntegerList(uuid.toString() + ".favorites");
|
||||||
for (int i = 0; i < favs.size(); i++) {
|
for (int i = 0; i < favs.size(); i++) {
|
||||||
if (favs.get(i) == id) {
|
if (favs.get(i) == id) {
|
||||||
favs.remove(i);
|
favs.remove(i);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
HeadDB.getPlayerdata().set(uuid.toString() + ".favorites", favs);
|
HeadDB.getInstance().getPlayerdata().set(uuid.toString() + ".favorites", favs);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -173,7 +179,7 @@ public class HeadAPI {
|
|||||||
*/
|
*/
|
||||||
public static List<Head> getFavoriteHeads(UUID uuid) {
|
public static List<Head> getFavoriteHeads(UUID uuid) {
|
||||||
List<Head> heads = new ArrayList<>();
|
List<Head> heads = new ArrayList<>();
|
||||||
List<Integer> ids = HeadDB.getPlayerdata().getIntegerList(uuid.toString() + ".favorites");
|
List<Integer> ids = HeadDB.getInstance().getPlayerdata().getIntegerList(uuid.toString() + ".favorites");
|
||||||
for (int id : ids) {
|
for (int id : ids) {
|
||||||
Head head = getHeadByID(id);
|
Head head = getHeadByID(id);
|
||||||
heads.add(head);
|
heads.add(head);
|
||||||
@ -190,7 +196,7 @@ public class HeadAPI {
|
|||||||
*/
|
*/
|
||||||
public static List<LocalHead> getLocalHeads() {
|
public static List<LocalHead> getLocalHeads() {
|
||||||
List<LocalHead> heads = new ArrayList<>();
|
List<LocalHead> heads = new ArrayList<>();
|
||||||
for (String key : HeadDB.getPlayerdata().singleLayerKeySet()) {
|
for (String key : HeadDB.getInstance().getPlayerdata().singleLayerKeySet()) {
|
||||||
OfflinePlayer player = Bukkit.getOfflinePlayer(UUID.fromString(key));
|
OfflinePlayer player = Bukkit.getOfflinePlayer(UUID.fromString(key));
|
||||||
heads.add(new LocalHead(player.getUniqueId())
|
heads.add(new LocalHead(player.getUniqueId())
|
||||||
.withName(player.getName()));
|
.withName(player.getName()));
|
||||||
|
@ -2,10 +2,10 @@ package tsp.headdb.api;
|
|||||||
|
|
||||||
import org.apache.commons.lang.Validate;
|
import org.apache.commons.lang.Validate;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Material;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.inventory.meta.SkullMeta;
|
import org.bukkit.inventory.meta.SkullMeta;
|
||||||
import tsp.headdb.util.Utils;
|
import tsp.headdb.util.Utils;
|
||||||
|
import tsp.headdb.util.XMaterial;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -19,7 +19,7 @@ public class LocalHead {
|
|||||||
public ItemStack getItemStack() {
|
public ItemStack getItemStack() {
|
||||||
Validate.notNull(uuid, "uuid must not be null!");
|
Validate.notNull(uuid, "uuid must not be null!");
|
||||||
|
|
||||||
ItemStack item = new ItemStack(Material.PLAYER_HEAD);
|
ItemStack item = new ItemStack(XMaterial.PLAYER_HEAD.parseItem());
|
||||||
SkullMeta meta = (SkullMeta) item.getItemMeta();
|
SkullMeta meta = (SkullMeta) item.getItemMeta();
|
||||||
meta.setOwningPlayer(Bukkit.getOfflinePlayer(uuid));
|
meta.setOwningPlayer(Bukkit.getOfflinePlayer(uuid));
|
||||||
meta.setDisplayName(Utils.colorize("&e" + name));
|
meta.setDisplayName(Utils.colorize("&e" + name));
|
||||||
|
@ -68,6 +68,27 @@ public class Command_headdb implements CommandExecutor {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (sub.equalsIgnoreCase("tagsearch") || sub.equalsIgnoreCase("ts")) {
|
||||||
|
if (!sender.hasPermission("headdb.tagsearch")) {
|
||||||
|
Utils.sendMessage(sender, "&cNo permission!");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (args.length < 2) {
|
||||||
|
Utils.sendMessage(sender, "&c/hdb tagsearch <tag>");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (!(sender instanceof Player)) {
|
||||||
|
Utils.sendMessage(sender, "&cOnly players may open the database.");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
Player player = (Player) sender;
|
||||||
|
|
||||||
|
String tag = args[1];
|
||||||
|
Utils.sendMessage(sender, "Searching for heads with tag &e" + tag);
|
||||||
|
InventoryUtils.openTagSearchDatabase(player, tag);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
if (sub.equalsIgnoreCase("give") || sub.equalsIgnoreCase("g")) {
|
if (sub.equalsIgnoreCase("give") || sub.equalsIgnoreCase("g")) {
|
||||||
if (!sender.hasPermission("headdb.give")) {
|
if (!sender.hasPermission("headdb.give")) {
|
||||||
Utils.sendMessage(sender, "&cNo permission!");
|
Utils.sendMessage(sender, "&cNo permission!");
|
||||||
@ -112,6 +133,7 @@ public class Command_headdb implements CommandExecutor {
|
|||||||
Utils.sendMessage(sender, " > &c/hdb &7- Opens the database");
|
Utils.sendMessage(sender, " > &c/hdb &7- Opens the database");
|
||||||
Utils.sendMessage(sender, " > &c/hdb info &9(i) &7- Plugin Information");
|
Utils.sendMessage(sender, " > &c/hdb info &9(i) &7- Plugin Information");
|
||||||
Utils.sendMessage(sender, " > &c/hdb search &9(s) &c<name> &7- Search for heads matching a name");
|
Utils.sendMessage(sender, " > &c/hdb search &9(s) &c<name> &7- Search for heads matching a name");
|
||||||
|
Utils.sendMessage(sender, " > &c/hdb tagsearch &9(ts) &c<tag> &7- Search for heads matching a tag");
|
||||||
Utils.sendMessage(sender, " > &c/hdb give &9(g) &c<id> <player> &6[amount] &7- Give player a head");
|
Utils.sendMessage(sender, " > &c/hdb give &9(g) &c<id> <player> &6[amount] &7- Give player a head");
|
||||||
Utils.sendMessage(sender, " ");
|
Utils.sendMessage(sender, " ");
|
||||||
return true;
|
return true;
|
||||||
|
@ -26,6 +26,7 @@ public class HeadDatabase {
|
|||||||
|
|
||||||
private final Map<Category, List<Head>> HEADS = new HashMap<>();
|
private final Map<Category, List<Head>> HEADS = new HashMap<>();
|
||||||
private final String URL = "https://minecraft-heads.com/scripts/api.php?cat=";
|
private final String URL = "https://minecraft-heads.com/scripts/api.php?cat=";
|
||||||
|
private final String TAGS = "&tags=true";
|
||||||
private long updated;
|
private long updated;
|
||||||
|
|
||||||
public HeadDatabase() {}
|
public HeadDatabase() {}
|
||||||
@ -63,6 +64,21 @@ public class HeadDatabase {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<Head> getHeadsByTag(String tag) {
|
||||||
|
List<Head> result = new ArrayList<>();
|
||||||
|
List<Head> heads = getHeads();
|
||||||
|
tag = tag.toLowerCase(Locale.ROOT);
|
||||||
|
for (Head head : heads) {
|
||||||
|
for (String t : head.getTags()) {
|
||||||
|
if (t.toLowerCase(Locale.ROOT).contains(tag)) {
|
||||||
|
result.add(head);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
public List<Head> getHeadsByName(Category category, String name) {
|
public List<Head> getHeadsByName(Category category, String name) {
|
||||||
List<Head> result = new ArrayList<>();
|
List<Head> result = new ArrayList<>();
|
||||||
List<Head> heads = getHeads(category);
|
List<Head> heads = getHeads(category);
|
||||||
@ -114,7 +130,7 @@ public class HeadDatabase {
|
|||||||
String line;
|
String line;
|
||||||
StringBuilder response = new StringBuilder();
|
StringBuilder response = new StringBuilder();
|
||||||
|
|
||||||
URLConnection connection = new URL(URL + category.getName()).openConnection();
|
URLConnection connection = new URL(URL + category.getName() + TAGS).openConnection();
|
||||||
connection.setConnectTimeout(5000);
|
connection.setConnectTimeout(5000);
|
||||||
connection.setRequestProperty("User-Agent", "HeadDB");
|
connection.setRequestProperty("User-Agent", "HeadDB");
|
||||||
try (BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()))) {
|
try (BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()))) {
|
||||||
@ -132,6 +148,7 @@ public class HeadDatabase {
|
|||||||
.withName(obj.get("name").toString())
|
.withName(obj.get("name").toString())
|
||||||
.withUUID(uuid.isEmpty() ? UUID.randomUUID() : UUID.fromString(uuid))
|
.withUUID(uuid.isEmpty() ? UUID.randomUUID() : UUID.fromString(uuid))
|
||||||
.withValue(obj.get("value").toString())
|
.withValue(obj.get("value").toString())
|
||||||
|
.withTags(obj.get("tags") != null ? obj.get("tags").toString() : "None")
|
||||||
.withCategory(category);
|
.withCategory(category);
|
||||||
|
|
||||||
id++;
|
id++;
|
||||||
@ -164,8 +181,8 @@ public class HeadDatabase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean isLastUpdateOld() {
|
public boolean isLastUpdateOld() {
|
||||||
if (HeadDB.getCfg() == null && getLastUpdate() >= 3600) return true;
|
if (HeadDB.getInstance().getCfg() == null && getLastUpdate() >= 3600) return true;
|
||||||
return getLastUpdate() >= HeadDB.getCfg().getLong("refresh");
|
return getLastUpdate() >= HeadDB.getInstance().getCfg().getLong("refresh");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -71,7 +71,7 @@ public class InventoryUtils {
|
|||||||
pane.open(player);
|
pane.open(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void openSearchDatabase(Player player, String search) {
|
public static PagedPane openSearchDatabase(Player player, String search) {
|
||||||
PagedPane pane = new PagedPane(4, 6, Utils.colorize("&c&lHeadDB &8- &eSearch: " + search));
|
PagedPane pane = new PagedPane(4, 6, Utils.colorize("&c&lHeadDB &8- &eSearch: " + search));
|
||||||
|
|
||||||
List<Head> heads = HeadAPI.getHeadsByName(search);
|
List<Head> heads = HeadAPI.getHeadsByName(search);
|
||||||
@ -93,6 +93,32 @@ public class InventoryUtils {
|
|||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pane.open(player);
|
||||||
|
return pane;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void openTagSearchDatabase(Player player, String tag) {
|
||||||
|
PagedPane pane = new PagedPane(4, 6, Utils.colorize("&c&lHeadDB &8- &eTag Search: " + tag));
|
||||||
|
|
||||||
|
List<Head> heads = HeadAPI.getHeadsByTag(tag);
|
||||||
|
for (Head head : heads) {
|
||||||
|
pane.addButton(new Button(head.getItemStack(), e -> {
|
||||||
|
if (e.getClick() == ClickType.SHIFT_LEFT) {
|
||||||
|
ItemStack item = head.getItemStack();
|
||||||
|
item.setAmount(64);
|
||||||
|
player.getInventory().addItem(item);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (e.getClick() == ClickType.LEFT) {
|
||||||
|
player.getInventory().addItem(head.getItemStack());
|
||||||
|
}
|
||||||
|
if (e.getClick() == ClickType.RIGHT) {
|
||||||
|
HeadAPI.addFavoriteHead(player.getUniqueId(), head.getId());
|
||||||
|
Utils.sendMessage(player, "Added &e" + head.getName() + " &7to favorites.");
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
pane.open(player);
|
pane.open(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -143,6 +169,13 @@ public class InventoryUtils {
|
|||||||
"&8Click to view your favorites")
|
"&8Click to view your favorites")
|
||||||
);
|
);
|
||||||
|
|
||||||
|
inventory.setItem(40, buildButton(
|
||||||
|
XMaterial.DARK_OAK_SIGN.parseItem(),
|
||||||
|
"&9Search",
|
||||||
|
"",
|
||||||
|
"&8Click to open search menu"
|
||||||
|
));
|
||||||
|
|
||||||
inventory.setItem(41, buildButton(
|
inventory.setItem(41, buildButton(
|
||||||
XMaterial.COMPASS.parseItem(),
|
XMaterial.COMPASS.parseItem(),
|
||||||
"&aLocal",
|
"&aLocal",
|
||||||
@ -155,7 +188,7 @@ public class InventoryUtils {
|
|||||||
|
|
||||||
public static void fill(Inventory inv, ItemStack item) {
|
public static void fill(Inventory inv, ItemStack item) {
|
||||||
int size = inv.getSize();
|
int size = inv.getSize();
|
||||||
int[] ignored = new int[]{20, 21, 22, 23, 24, 29, 30, 31, 32, 33, 39, 41};
|
int[] ignored = new int[]{20, 21, 22, 23, 24, 29, 30, 31, 32, 33, 39, 40, 41};
|
||||||
|
|
||||||
// Fill
|
// Fill
|
||||||
for (int i = 0; i < size; i++) {
|
for (int i = 0; i < size; i++) {
|
||||||
|
@ -1,15 +1,18 @@
|
|||||||
package tsp.headdb.inventory;
|
package tsp.headdb.inventory;
|
||||||
|
|
||||||
|
import net.wesjd.anvilgui.AnvilGUI;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.inventory.ClickType;
|
||||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||||
import org.bukkit.event.inventory.InventoryType;
|
import org.bukkit.event.inventory.InventoryType;
|
||||||
import org.bukkit.inventory.Inventory;
|
import org.bukkit.inventory.Inventory;
|
||||||
import org.bukkit.inventory.InventoryHolder;
|
import org.bukkit.inventory.InventoryHolder;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.inventory.meta.ItemMeta;
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
|
import tsp.headdb.HeadDB;
|
||||||
import tsp.headdb.api.HeadAPI;
|
import tsp.headdb.api.HeadAPI;
|
||||||
import tsp.headdb.util.Utils;
|
import tsp.headdb.util.Utils;
|
||||||
import tsp.headdb.util.XMaterial;
|
import tsp.headdb.util.XMaterial;
|
||||||
@ -245,9 +248,38 @@ public class PagedPane implements InventoryHolder {
|
|||||||
"&3&lPage &a&l%d &7/ &c&l%d",
|
"&3&lPage &a&l%d &7/ &c&l%d",
|
||||||
getCurrentPage(), getPageAmount()
|
getCurrentPage(), getPageAmount()
|
||||||
);
|
);
|
||||||
String lore = "&7Click to go to the &cMain Menu";
|
ItemStack itemStack = setMeta(HeadAPI.getHeadByValue("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvY2Q5MWY1MTI2NmVkZGM2MjA3ZjEyYWU4ZDdhNDljNWRiMDQxNWFkYTA0ZGFiOTJiYjc2ODZhZmRiMTdmNGQ0ZSJ9fX0=").getItemStack(),
|
||||||
ItemStack itemStack = setMeta(HeadAPI.getHeadByValue("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvY2Q5MWY1MTI2NmVkZGM2MjA3ZjEyYWU4ZDdhNDljNWRiMDQxNWFkYTA0ZGFiOTJiYjc2ODZhZmRiMTdmNGQ0ZSJ9fX0=").getItemStack(), name, lore);
|
name,
|
||||||
controlMain = new Button(itemStack, event -> InventoryUtils.openDatabase((Player) event.getWhoClicked()));
|
"&7Left-Click to go to the &cMain Menu",
|
||||||
|
"&7Right-Click to go to a &6Specific Page");
|
||||||
|
controlMain = new Button(itemStack, event -> {
|
||||||
|
if (event.getClick() == ClickType.RIGHT) {
|
||||||
|
new AnvilGUI.Builder()
|
||||||
|
.onComplete((player, text) -> {
|
||||||
|
try {
|
||||||
|
int i = Integer.parseInt(text);
|
||||||
|
if (i > getPageAmount()) {
|
||||||
|
Utils.sendMessage(player, "&cPage number is out of bounds! Max: &e" + getPageAmount());
|
||||||
|
return AnvilGUI.Response.text("&cOut of bounds!");
|
||||||
|
}
|
||||||
|
Bukkit.getScheduler().runTaskLater(HeadDB.getInstance(), () -> {
|
||||||
|
open(player);
|
||||||
|
selectPage(i - 1);
|
||||||
|
}, 40L);
|
||||||
|
return AnvilGUI.Response.close();
|
||||||
|
} catch (NumberFormatException nfe) {
|
||||||
|
Utils.sendMessage(player, "&cValue must be a number!");
|
||||||
|
return AnvilGUI.Response.text(Utils.colorize("&cValue must be a number!"));
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.title("Select Page")
|
||||||
|
.text("Page number...")
|
||||||
|
.plugin(HeadDB.getInstance())
|
||||||
|
.open((Player) event.getWhoClicked());
|
||||||
|
} else {
|
||||||
|
InventoryUtils.openDatabase((Player) event.getWhoClicked());
|
||||||
|
}
|
||||||
|
});
|
||||||
inventory.setItem(inventory.getSize() - 5, itemStack);
|
inventory.setItem(inventory.getSize() - 5, itemStack);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -13,7 +13,7 @@ public class JoinListener implements Listener {
|
|||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onJoin(PlayerJoinEvent e) {
|
public void onJoin(PlayerJoinEvent e) {
|
||||||
HeadDB.getPlayerdata().set(e.getPlayer().getUniqueId().toString() + ".username", e.getPlayer().getName());
|
HeadDB.getInstance().getPlayerdata().set(e.getPlayer().getUniqueId().toString() + ".username", e.getPlayer().getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package tsp.headdb.listener;
|
package tsp.headdb.listener;
|
||||||
|
|
||||||
|
import net.wesjd.anvilgui.AnvilGUI;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
@ -8,6 +9,7 @@ import org.bukkit.event.inventory.InventoryClickEvent;
|
|||||||
import org.bukkit.inventory.Inventory;
|
import org.bukkit.inventory.Inventory;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
import tsp.headdb.HeadDB;
|
||||||
import tsp.headdb.database.Category;
|
import tsp.headdb.database.Category;
|
||||||
import tsp.headdb.inventory.InventoryUtils;
|
import tsp.headdb.inventory.InventoryUtils;
|
||||||
import tsp.headdb.util.Utils;
|
import tsp.headdb.util.Utils;
|
||||||
@ -53,6 +55,18 @@ public class MenuListener implements Listener {
|
|||||||
InventoryUtils.openLocalMenu(player);
|
InventoryUtils.openLocalMenu(player);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (name.equalsIgnoreCase("search")) {
|
||||||
|
new AnvilGUI.Builder()
|
||||||
|
.onComplete((p, text) -> {
|
||||||
|
InventoryUtils.openSearchDatabase(p, text);
|
||||||
|
return AnvilGUI.Response.openInventory(InventoryUtils.openSearchDatabase(p, text).getInventory());
|
||||||
|
})
|
||||||
|
.title("Search Heads")
|
||||||
|
.text("Name...")
|
||||||
|
.plugin(HeadDB.getInstance())
|
||||||
|
.open(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
Category category = Category.getByName(name);
|
Category category = Category.getByName(name);
|
||||||
|
|
||||||
|
@ -35,7 +35,7 @@ public class Log {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void log(LogLevel level, String message) {
|
public static void log(LogLevel level, String message) {
|
||||||
if (level == LogLevel.DEBUG && !HeadDB.getCfg().getBoolean("debug")) {
|
if (level == LogLevel.DEBUG && !HeadDB.getInstance().getCfg().getBoolean("debug")) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Bukkit.getConsoleSender().sendMessage(Utils.colorize("&7[&9&l" + name + "&7] " + level.getColor() + "[" + level.name() + "]: " + message));
|
Bukkit.getConsoleSender().sendMessage(Utils.colorize("&7[&9&l" + name + "&7] " + level.getColor() + "[" + level.name() + "]: " + message));
|
||||||
|
Datei-Diff unterdrückt, da er zu groß ist
Diff laden
@ -1,9 +1,8 @@
|
|||||||
name: HeadDB
|
name: ${project.name}
|
||||||
description: Database with thousands of heads
|
description: ${project.description}
|
||||||
|
|
||||||
main: tsp.headdb.HeadDB
|
main: tsp.headdb.HeadDB
|
||||||
version: 2.2
|
version: ${project.version}
|
||||||
api-version: 1.16
|
|
||||||
author: Silent
|
author: Silent
|
||||||
|
|
||||||
commands:
|
commands:
|
||||||
@ -21,6 +20,7 @@ permissions:
|
|||||||
headdb.give: true
|
headdb.give: true
|
||||||
headdb.favorites: true
|
headdb.favorites: true
|
||||||
headdb.local: true
|
headdb.local: true
|
||||||
|
headdb.tagsearch: true
|
||||||
headdb.open:
|
headdb.open:
|
||||||
default: op
|
default: op
|
||||||
headdb.search:
|
headdb.search:
|
||||||
@ -31,3 +31,5 @@ permissions:
|
|||||||
default: op
|
default: op
|
||||||
headdb.local:
|
headdb.local:
|
||||||
default: op
|
default: op
|
||||||
|
headdb.tagsearch:
|
||||||
|
default: op
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren