Skip to content

Commit

Permalink
Merge pull request #27 from TheSilentPro/v4
Browse files Browse the repository at this point in the history
4.0.0
  • Loading branch information
TheSilentPro authored Feb 26, 2022
2 parents dab2440 + 87d1ff3 commit 956d6a0
Show file tree
Hide file tree
Showing 30 changed files with 667 additions and 318 deletions.
16 changes: 15 additions & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<groupId>tsp.headdb</groupId>
<artifactId>HeadDB</artifactId>
<version>3.3.0</version>
<version>4.0.0</version>
<packaging>jar</packaging>

<name>HeadDB</name>
Expand Down Expand Up @@ -63,6 +63,13 @@
<version>1.7</version>
<scope>provided</scope>
</dependency>
<!-- Treasury -->
<dependency>
<groupId>me.lokka30</groupId>
<artifactId>treasury-api</artifactId>
<version>1.1.0</version>
<scope>provided</scope>
</dependency>
</dependencies>

<build>
Expand Down Expand Up @@ -106,6 +113,13 @@
</execution>
</executions>
</plugin>

<!-- Javadoc -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.3.2</version>
</plugin>
</plugins>
</build>

Expand Down
21 changes: 14 additions & 7 deletions src/main/java/tsp/headdb/HeadDB.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,10 @@
import org.bukkit.Bukkit;
import org.bukkit.plugin.java.JavaPlugin;
import tsp.headdb.api.HeadAPI;
import tsp.headdb.command.CommandHeadDB;
import tsp.headdb.database.DatabaseUpdateTask;
import tsp.headdb.economy.HEconomyProvider;
import tsp.headdb.command.HeadDBCommand;
import tsp.headdb.economy.TreasuryProvider;
import tsp.headdb.implementation.DatabaseUpdateTask;
import tsp.headdb.economy.BasicEconomyProvider;
import tsp.headdb.economy.VaultProvider;
import tsp.headdb.listener.JoinListener;
import tsp.headdb.listener.MenuListener;
Expand All @@ -19,10 +20,13 @@
import javax.annotation.Nullable;
import java.io.File;

/**
* Main class of HeadDB
*/
public class HeadDB extends JavaPlugin {

private static HeadDB instance;
private HEconomyProvider economyProvider;
private BasicEconomyProvider economyProvider;
private PlayerDataFile playerData;
private Localization localization;

Expand All @@ -42,19 +46,22 @@ public void onEnable() {
if (rawProvider.equalsIgnoreCase("vault")) {
economyProvider = new VaultProvider();
economyProvider.initProvider();
} else if (rawProvider.equalsIgnoreCase("treasury")) {
economyProvider = new TreasuryProvider();
economyProvider.initProvider();
}
}

long refresh = getConfig().getLong("refresh") * 20;
HeadAPI.getDatabase().updateAsync(heads -> Log.info("Fetched " + HeadAPI.getHeads().size() + " heads!")); // Update database on startup
HeadAPI.getDatabase().update(heads -> Log.info("Fetched " + HeadAPI.getHeads().size() + " heads!")); // Update database on startup
Bukkit.getScheduler().runTaskTimerAsynchronously(this, new DatabaseUpdateTask(), refresh, refresh); // Update database on set interval (also saves data)
HeadAPI.getDatabase().setRefresh(refresh);

new JoinListener(this);
new MenuListener(this);
new PagedPaneListener(this);

getCommand("headdb").setExecutor(new CommandHeadDB());
getCommand("headdb").setExecutor(new HeadDBCommand());

Log.debug("Starting metrics...");
new Metrics(this, 9152);
Expand Down Expand Up @@ -83,7 +90,7 @@ public PlayerDataFile getPlayerData() {
}

@Nullable
public HEconomyProvider getEconomyProvider() {
public BasicEconomyProvider getEconomyProvider() {
return economyProvider;
}

Expand Down
88 changes: 58 additions & 30 deletions src/main/java/tsp/headdb/api/HeadAPI.java
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
package tsp.headdb.api;

import org.apache.commons.lang.Validate;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player;
import tsp.headdb.HeadDB;
import tsp.headdb.database.Category;
import tsp.headdb.database.HeadDatabase;
import tsp.headdb.implementation.Category;
import tsp.headdb.implementation.Head;
import tsp.headdb.implementation.HeadDatabase;
import tsp.headdb.implementation.LocalHead;
import tsp.headdb.inventory.InventoryUtils;
import tsp.headdb.storage.PlayerDataFile;

Expand All @@ -14,14 +17,14 @@
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;

/**
* This class provides simple methods
* for interacting with the HeadDB plugin
*
* @author TheSilentPro
*/
// TODO: Possibly change to singleton class
public final class HeadAPI {

private HeadAPI() {}
Expand All @@ -45,7 +48,9 @@ public static HeadDatabase getDatabase() {
*
* @param player Target player
*/
public static void openDatabase(Player player) {
public static void openDatabase(@Nonnull Player player) {
Validate.notNull(player, "Player can not be null!");

InventoryUtils.openDatabase(player);
}

Expand All @@ -55,7 +60,10 @@ public static void openDatabase(Player player) {
* @param player Target player
* @param category Category to open
*/
public static void openCategoryDatabase(Player player, Category category) {
public static void openCategoryDatabase(@Nonnull Player player, @Nonnull Category category) {
Validate.notNull(player, "Player can not be null!");
Validate.notNull(category, "Category can not be null!");

InventoryUtils.openCategoryDatabase(player, category);
}

Expand All @@ -65,7 +73,10 @@ public static void openCategoryDatabase(Player player, Category category) {
* @param player Target player
* @param search Search term
*/
public static void openSearchDatabase(Player player, String search) {
public static void openSearchDatabase(@Nonnull Player player, @Nonnull String search) {
Validate.notNull(player, "Player can not be null!");
Validate.notNull(search, "Search can not be null!");

InventoryUtils.openSearchDatabase(player, search);
}

Expand All @@ -75,7 +86,10 @@ public static void openSearchDatabase(Player player, String search) {
* @param player Target player
* @param tag Tag search term
*/
public static void openTagSearchDatabase(Player player, String tag) {
public static void openTagSearchDatabase(@Nonnull Player player, @Nonnull String tag) {
Validate.notNull(player, "Player can not be null!");
Validate.notNull(tag, "Tag can not be null!");

InventoryUtils.openTagSearchDatabase(player, tag);
}

Expand All @@ -97,7 +111,9 @@ public static Head getHeadByID(int id) {
* @return The head
*/
@Nullable
public static Head getHeadByUniqueId(UUID uuid) {
public static Head getHeadByUniqueId(@Nonnull UUID uuid) {
Validate.notNull(uuid, "UUID can not be null!");

return database.getHeadByUniqueId(uuid);
}

Expand All @@ -108,7 +124,9 @@ public static Head getHeadByUniqueId(UUID uuid) {
* @return List of heads
*/
@Nonnull
public static List<Head> getHeadsByTag(String tag) {
public static List<Head> getHeadsByTag(@Nonnull String tag) {
Validate.notNull(tag, "Tag can not be null!");

return database.getHeadsByTag(tag);
}

Expand All @@ -119,7 +137,9 @@ public static List<Head> getHeadsByTag(String tag) {
* @return List of heads
*/
@Nonnull
public static List<Head> getHeadsByName(String name) {
public static List<Head> getHeadsByName(@Nonnull String name) {
Validate.notNull(name, "Name can not be null!");

return database.getHeadsByName(name);
}

Expand All @@ -131,7 +151,10 @@ public static List<Head> getHeadsByName(String name) {
* @return List of heads
*/
@Nonnull
public static List<Head> getHeadsByName(Category category, String name) {
public static List<Head> getHeadsByName(@Nonnull Category category, @Nonnull String name) {
Validate.notNull(category, "Category can not be null!");
Validate.notNull(name, "Name can not be null!");

return database.getHeadsByName(category, name);
}

Expand All @@ -142,7 +165,9 @@ public static List<Head> getHeadsByName(Category category, String name) {
* @return The head
*/
@Nullable
public static Head getHeadByValue(String value) {
public static Head getHeadByValue(@Nonnull String value) {
Validate.notNull(value, "Value can not be null!");

return database.getHeadByValue(value);
}

Expand All @@ -153,7 +178,9 @@ public static Head getHeadByValue(String value) {
* @return List of heads
*/
@Nonnull
public static List<Head> getHeads(Category category) {
public static List<Head> getHeads(@Nonnull Category category) {
Validate.notNull(category, "Category can not be null!");

return database.getHeads(category);
}

Expand All @@ -173,7 +200,10 @@ public static List<Head> getHeads() {
* @param uuid The player's unique id
* @param textureValue The head's texture value
*/
public static void addFavoriteHead(UUID uuid, String textureValue) {
public static void addFavoriteHead(@Nonnull UUID uuid, @Nonnull String textureValue) {
Validate.notNull(uuid, "UUID can not be null!");
Validate.notNull(textureValue, "Value can not be null!");

HeadDB.getInstance().getPlayerData().modifyFavorite(uuid, textureValue, PlayerDataFile.ModificationType.SET);
}

Expand All @@ -183,7 +213,10 @@ public static void addFavoriteHead(UUID uuid, String textureValue) {
* @param uuid The player's unique id
* @param textureValue The head's texture value
*/
public static void removeFavoriteHead(UUID uuid, String textureValue) {
public static void removeFavoriteHead(@Nonnull UUID uuid, @Nonnull String textureValue) {
Validate.notNull(uuid, "UUID can not be null!");
Validate.notNull(textureValue, "Value can not be null!");

HeadDB.getInstance().getPlayerData().modifyFavorite(uuid, textureValue, PlayerDataFile.ModificationType.REMOVE);
}

Expand All @@ -194,15 +227,13 @@ public static void removeFavoriteHead(UUID uuid, String textureValue) {
* @return List of favorite {@link Head}'s for the player
*/
@Nonnull
public static List<Head> getFavoriteHeads(UUID uuid) {
List<Head> result = new ArrayList<>();

List<String> textures = HeadDB.getInstance().getPlayerData().getFavoriteHeadsByTexture(uuid);
for (String texture : textures) {
result.add(HeadAPI.getHeadByValue(texture));
}
public static List<Head> getFavoriteHeads(@Nonnull UUID uuid) {
Validate.notNull(uuid, "UUID can not be null!");

return result;
return HeadDB.getInstance().getPlayerData().getFavoriteHeadsByTexture(uuid).stream()
.map(HeadAPI::getHeadByValue)
.filter(head -> head != null)
.collect(Collectors.toList());
}

/**
Expand All @@ -214,13 +245,10 @@ public static List<Head> getFavoriteHeads(UUID uuid) {
*/
@Nonnull
public static List<LocalHead> getLocalHeads() {
List<LocalHead> result = new ArrayList<>();
for (String entry : HeadDB.getInstance().getPlayerData().getEntries()) {
OfflinePlayer player = Bukkit.getOfflinePlayer(UUID.fromString(entry));
result.add(new LocalHead(player.getUniqueId()).name(player.getName()));
}

return result;
return HeadDB.getInstance().getPlayerData().getEntries().stream()
.map(entry -> Bukkit.getOfflinePlayer(UUID.fromString(entry)))
.map(player -> new LocalHead(player.getUniqueId()).name(player.getName()))
.collect(Collectors.toList());
}

}
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
package tsp.headdb.event;
package tsp.headdb.api.event;

import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import tsp.headdb.api.Head;
import tsp.headdb.database.Category;
import tsp.headdb.database.HeadDatabase;
import tsp.headdb.implementation.Head;
import tsp.headdb.implementation.Category;
import tsp.headdb.implementation.HeadDatabase;

import java.util.List;
import java.util.Map;

/**
* This event is called AFTER a {@link tsp.headdb.database.HeadDatabase} updates.
* This event is called AFTER a {@link HeadDatabase} updates.
* The event is called asynchronously and can not be cancelled.
*
* @author TheSilentPro
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package tsp.headdb.event;
package tsp.headdb.api.event;

import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import tsp.headdb.api.Head;
import tsp.headdb.implementation.Head;

/**
* This event is called when a player purchases a {@link Head}
Expand All @@ -21,6 +21,7 @@ public class PlayerHeadPurchaseEvent extends Event implements Cancellable {
private double cost;

public PlayerHeadPurchaseEvent(Player player, Head head, double cost) {
super(true);
this.player = player;
this.head = head;
this.cost = cost;
Expand Down
Loading

0 comments on commit 956d6a0

Please sign in to comment.