Skip to content

Commit

Permalink
add placeholderapi, player head textures and some changes to ItemBuil…
Browse files Browse the repository at this point in the history
…der + config
  • Loading branch information
NONPLAYT committed Jul 26, 2024
1 parent 8e3e3fb commit 41a8d21
Show file tree
Hide file tree
Showing 13 changed files with 483 additions and 29 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,9 @@ jobs:
run: chmod +x ./gradlew

- name: Build with Gradle
uses: gradle/gradle-build-action@v3.4.2
uses: gradle/gradle-build-action@v3.5.0
with:
arguments: build
arguments: shadowJar

#- name: Publish API
# continue-on-error: true
Expand Down
10 changes: 10 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ plugins {
id 'java'
id 'maven-publish'
id 'com.github.johnrengelman.shadow' version '8.1.1'
id 'io.papermc.paperweight.userdev' version '1.7.1'
}

group = project.group
Expand All @@ -10,6 +11,7 @@ description = project.description

repositories {
mavenCentral()
gradlePluginPortal()
maven {
name = "papermc-repo"
url = "https://repo.papermc.io/repository/maven-public/"
Expand All @@ -30,6 +32,7 @@ repositories {

dependencies {
compileOnly("io.papermc.paper:paper-api:${project.paper_api}") // Paper API
paperweight.paperDevBundle("${project.paper_api}")

// Dependencies
implementation("com.zaxxer:HikariCP:${project.hikari_cp}")
Expand All @@ -38,6 +41,7 @@ dependencies {

shadowJar {
archiveClassifier.set('')
archiveFileName.set("${project.name}-${project.version}.jar")
dependencies {
include(dependency("com.zaxxer:HikariCP:${project.hikari_cp}"))
}
Expand All @@ -51,6 +55,8 @@ java {
if (JavaVersion.current() < javaVersion) {
toolchain.languageVersion = JavaLanguageVersion.of(targetJavaVersion)
}
withSourcesJar()
withJavadocJar()
}

tasks.withType(JavaCompile).configureEach {
Expand All @@ -61,6 +67,10 @@ tasks.withType(JavaCompile).configureEach {
}
}

tasks.assemble {
dependsOn(tasks.reobfJar)
}

processResources {
def props = [version: version]
inputs.properties props
Expand Down
18 changes: 11 additions & 7 deletions src/main/java/space/bxteam/ndailyrewards/NDailyRewards.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,24 +5,25 @@
import org.bukkit.event.Listener;
import org.bukkit.plugin.java.JavaPlugin;
import space.bxteam.ndailyrewards.commands.RewardCommand;
import space.bxteam.ndailyrewards.hooks.HookManager;
import space.bxteam.ndailyrewards.listeners.*;
import space.bxteam.ndailyrewards.managers.MenuManager;
import space.bxteam.ndailyrewards.managers.database.MySQLManager;
import space.bxteam.ndailyrewards.managers.database.DatabaseManager;
import space.bxteam.ndailyrewards.managers.enums.Language;
import space.bxteam.ndailyrewards.managers.reward.RewardManager;
import space.bxteam.ndailyrewards.utils.LogUtil;
import space.bxteam.ndailyrewards.utils.UpdateCheckerUtil;
import space.bxteam.ndailyrewards.utils.metrics.Metrics;

import java.io.File;
import java.time.Duration;
import java.time.Instant;

public final class NDailyRewards extends JavaPlugin {
private static NDailyRewards instance;
private Instant startTime;
private File langFile;
private FileConfiguration langConfig;
private MySQLManager database;
private DatabaseManager database;
private RewardManager rewardManager;
private MenuManager menuManager;

Expand All @@ -49,7 +50,7 @@ public FileConfiguration getLangConfig() {
*
* @return database manager
*/
public MySQLManager getDatabase() {
public DatabaseManager getDatabase() {
return database;
}

Expand All @@ -73,17 +74,19 @@ public MenuManager getMenuManager() {

@Override
public void onEnable() {
startTime = Instant.now();
Instant startTime = Instant.now();
NDailyRewards.instance = this;
saveDefaultConfig();
createLangFile();
Language.init(this);
registerCommands();
new Metrics(this, 13844);

LogUtil.log("Loading plugin managers...", LogUtil.LogLevel.INFO);
database = new MySQLManager(this);
database = new DatabaseManager(this);
rewardManager = new RewardManager(this, database);
menuManager = new MenuManager();
new HookManager(this).registerHooks();

LogUtil.log("Registering listeners...", LogUtil.LogLevel.INFO);
final Listener[] events = new Listener[]{
Expand All @@ -109,6 +112,7 @@ public void onEnable() {
@Override
public void onDisable() {
LogUtil.log("Disabling plugin...", LogUtil.LogLevel.INFO);
getServer().getScheduler().cancelTasks(this);
database.dbSource.close();
}

Expand All @@ -119,7 +123,7 @@ public void reload() {
reloadConfig();
createLangFile();
Language.init(this);
database = new MySQLManager(this);
database = new DatabaseManager(this);
rewardManager = new RewardManager(this, database);
}

Expand Down
20 changes: 20 additions & 0 deletions src/main/java/space/bxteam/ndailyrewards/hooks/HookManager.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package space.bxteam.ndailyrewards.hooks;

import space.bxteam.ndailyrewards.NDailyRewards;
import space.bxteam.ndailyrewards.hooks.list.PlaceholderAPIHook;
import space.bxteam.ndailyrewards.utils.LogUtil;

public class HookManager {
private final NDailyRewards plugin;

public HookManager(NDailyRewards plugin) {
this.plugin = plugin;
}

public void registerHooks() {
if (plugin.getServer().getPluginManager().getPlugin("PlaceholderAPI") != null) {
new PlaceholderAPIHook().register();
LogUtil.log("PlaceholderAPI hook registered", LogUtil.LogLevel.INFO);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
package space.bxteam.ndailyrewards.hooks.list;

import me.clip.placeholderapi.expansion.PlaceholderExpansion;
import org.bukkit.OfflinePlayer;
import org.jetbrains.annotations.NotNull;
import space.bxteam.ndailyrewards.NDailyRewards;
import space.bxteam.ndailyrewards.managers.reward.RewardManager;

public class PlaceholderAPIHook extends PlaceholderExpansion {
@Override
public @NotNull String getIdentifier() {
return "dailyrewards";
}

@Override
public @NotNull String getAuthor() {
return NDailyRewards.getInstance().getPluginMeta().getAuthors().toString();
}

@Override
public @NotNull String getVersion() {
return NDailyRewards.getInstance().getPluginMeta().getVersion();
}

@Override
public boolean persist() {
return true;
}

@Override
public boolean canRegister() {
return true;
}

@Override
public String onRequest(OfflinePlayer player, @NotNull String params) {
if (params.equalsIgnoreCase("reward_day")) {
RewardManager rewardManager = NDailyRewards.getInstance().getRewardManager();
RewardManager.PlayerRewardData playerRewardData = rewardManager.getPlayerRewardData(player.getUniqueId());

return String.valueOf(playerRewardData.getCurrentDay() + 1);
}

if (params.equalsIgnoreCase("remaining_time")) {
RewardManager rewardManager = NDailyRewards.getInstance().getRewardManager();
RewardManager.PlayerRewardData playerRewardData = rewardManager.getPlayerRewardData(player.getUniqueId());

long timeLeft = playerRewardData.getNext() - System.currentTimeMillis() / 1000L;
if (timeLeft < 0) {
return "00:00:00";
} else {
return formatTime(timeLeft);
}
}

return null;
}

private String formatTime(long seconds) {
long hours = seconds / 3600;
long minutes = (seconds % 3600) / 60;
long secs = seconds % 60;
return String.format("%02d:%02d:%02d", hours, minutes, secs);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,6 @@
import space.bxteam.ndailyrewards.managers.enums.Language;
import space.bxteam.ndailyrewards.managers.reward.RewardManager;

import java.util.UUID;

public class InventoryClickListener implements Listener {
@EventHandler
public void mainMenuClickListener(InventoryClickEvent event) {
Expand Down
21 changes: 15 additions & 6 deletions src/main/java/space/bxteam/ndailyrewards/managers/MenuManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;

public class MenuManager {
Expand Down Expand Up @@ -76,6 +77,7 @@ private void updateRewardsMenu(Player player) {
String material = NDailyRewards.getInstance().getConfig().getString("gui.reward.display.next.material");
String name = NDailyRewards.getInstance().getConfig().getString("gui.reward.display.next.name").replace("<dayNum>", String.valueOf(day));
int customModelData = NDailyRewards.getInstance().getConfig().getInt("gui.reward.display.next.custom-model-data");
String playerHead = NDailyRewards.getInstance().getConfig().getString("gui.reward.display.next.player-head-texture");
List<String> rewardLore = daySection.getStringList("lore").stream()
.map(TextUtils::applyColor)
.collect(Collectors.toList());
Expand All @@ -85,10 +87,11 @@ private void updateRewardsMenu(Player player) {
.flatMap(s -> Arrays.stream(s.split("\n")))
.collect(Collectors.toList());

rewardItem = new ItemBuilder(new ItemStack(Material.valueOf(material)))
rewardItem = new ItemBuilder(ItemBuilder.parseItemStack(Objects.requireNonNull(material)))
.setName(name)
.setCustomModelData(customModelData)
.setLore(loreFormatted)
.setHeadTexture(playerHead)
.build();
} else {
rewardItem = createItemStack("unavailable", day, daySection);
Expand All @@ -104,10 +107,14 @@ private void updateRewardsMenu(Player player) {
}

private ItemStack loadFillItem() {
ItemBuilder itemBuilder = new ItemBuilder(new ItemStack(Material.valueOf(NDailyRewards.getInstance().getConfig().getString("gui.reward.other.filler.material"))));
itemBuilder.setName(NDailyRewards.getInstance().getConfig().getString("gui.reward.other.filler.name"));
itemBuilder.setLore(NDailyRewards.getInstance().getConfig().getStringList("gui.reward.other.filler.lore"));
return itemBuilder.build();
String material = NDailyRewards.getInstance().getConfig().getString("gui.reward.other.filler.material");
String name = NDailyRewards.getInstance().getConfig().getString("gui.reward.other.filler.name");
List<String> lore = NDailyRewards.getInstance().getConfig().getStringList("gui.reward.other.filler.lore");

return new ItemBuilder(ItemBuilder.parseItemStack(Objects.requireNonNull(material)))
.setName(name)
.setLore(lore)
.build();
}

private boolean checkIfClaimed(Player player, int day) {
Expand All @@ -132,6 +139,7 @@ private ItemStack createItemStack(String type, int day, ConfigurationSection day
String material = NDailyRewards.getInstance().getConfig().getString("gui.reward.display." + type + ".material");
String name = NDailyRewards.getInstance().getConfig().getString("gui.reward.display." + type + ".name").replace("<dayNum>", String.valueOf(day));
int customModelData = NDailyRewards.getInstance().getConfig().getInt("gui.reward.display." + type + ".custom-model-data");
String playerHead = NDailyRewards.getInstance().getConfig().getString("gui.reward.display." + type + ".player-head-texture");

List<String> rewardLore = daySection.getStringList("lore").stream()
.map(TextUtils::applyColor)
Expand All @@ -143,10 +151,11 @@ private ItemStack createItemStack(String type, int day, ConfigurationSection day
.flatMap(s -> Arrays.stream(s.split("\n")))
.collect(Collectors.toList());

return new ItemBuilder(new ItemStack(Material.valueOf(material)))
return new ItemBuilder(ItemBuilder.parseItemStack(Objects.requireNonNull(material)))
.setName(name)
.setCustomModelData(customModelData)
.setLore(loreFormatted)
.setHeadTexture(playerHead)
.build();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,11 @@
import java.util.HashMap;
import java.util.Objects;

public class MySQLManager {
public class DatabaseManager {
public final @NotNull HikariConfig hikariConfig = new HikariConfig();
public HikariDataSource dbSource;

public MySQLManager(@NotNull JavaPlugin plugin) {
public DatabaseManager(@NotNull JavaPlugin plugin) {
setupDatabaseSource();
try {
initTables();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player;
import space.bxteam.ndailyrewards.NDailyRewards;
import space.bxteam.ndailyrewards.managers.database.MySQLManager;
import space.bxteam.ndailyrewards.managers.database.DatabaseManager;
import space.bxteam.ndailyrewards.managers.enums.Language;
import space.bxteam.ndailyrewards.utils.LogUtil;
import space.bxteam.ndailyrewards.utils.TextUtils;
Expand All @@ -24,13 +24,13 @@

public class RewardManager {
private final NDailyRewards plugin;
private final MySQLManager dbManager;
private final DatabaseManager dbManager;
private final Map<Integer, Reward> rewards = new HashMap<>();
private final boolean resetWhenAllClaimed;
private final int cooldown;
private final boolean unlockAfterMidnight;

public RewardManager(NDailyRewards plugin, MySQLManager dbManager) {
public RewardManager(NDailyRewards plugin, DatabaseManager dbManager) {
this.plugin = plugin;
this.dbManager = dbManager;
this.resetWhenAllClaimed = plugin.getConfig().getBoolean("rewards.reset-when-all-claimed", true);
Expand Down
Loading

0 comments on commit 41a8d21

Please sign in to comment.