Skip to content
This repository was archived by the owner on Oct 12, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 16 additions & 5 deletions src/main/java/fr/communaywen/core/AywenCraftPlugin.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,10 @@
import fr.communaywen.core.levels.LevelsCommand;
import fr.communaywen.core.levels.LevelsListeners;
import fr.communaywen.core.listeners.*;
import fr.communaywen.core.quests.PlayerQuests;
import fr.communaywen.core.quests.QuestsListener;
import fr.communaywen.core.quests.QuestsManager;
import fr.communaywen.core.quests.qenum.QUESTS;
import fr.communaywen.core.staff.freeze.FreezeCommand;
import fr.communaywen.core.staff.players.PlayersCommand;
import fr.communaywen.core.tpa.TPACommand;
Expand All @@ -25,6 +27,7 @@
import fr.communaywen.core.utils.*;
import fr.communaywen.core.utils.command.InteractiveHelpMenu;
import lombok.Getter;
import lombok.SneakyThrows;
import net.kyori.adventure.platform.bukkit.BukkitAudiences;
import net.luckperms.api.LuckPerms;
import org.bukkit.Bukkit;
Expand All @@ -43,6 +46,7 @@
import revxrsal.commands.autocomplete.SuggestionProvider;
import revxrsal.commands.bukkit.BukkitCommandHandler;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

Expand All @@ -66,6 +70,7 @@ public final class AywenCraftPlugin extends JavaPlugin {

public List<RegionManager> regions;

@SneakyThrows
@Override
public void onEnable() {
// Logs
Expand Down Expand Up @@ -197,19 +202,25 @@ public void run() {

createFarineRecipe();

getServer().getOnlinePlayers().forEach(QuestsManager::loadPlayerData);

for (Player player : Bukkit.getOnlinePlayers()) {
new GamePlayer(player.getName());
QuestsManager.loadPlayerData(player);
}

ClaimConfigDataBase.loadAllClaims();
QuestsManager.createQuestsTable();
ClaimConfigDataBase.loadAllClaims();
}

@SneakyThrows
@Override
public void onDisable() {
for(Player player : Bukkit.getOnlinePlayers()) {
for(QUESTS quests : QUESTS.values()) {
PlayerQuests pq = QuestsManager.getPlayerQuests(player);
QuestsManager.savePlayerQuestProgress(player, quests, pq.getProgress(quests));
}
}
managers.cleanup();
QuestsManager.saveAllPlayersData();
}

public void registerEvents(Listener... args) {
Expand All @@ -232,6 +243,7 @@ public int getBanDuration() {
private void createFarineRecipe() {
ItemStack farine = new ItemStack(Material.SUGAR);
ItemMeta meta = farine.getItemMeta();
assert meta != null;
meta.setDisplayName("Farine");
farine.setItemMeta(meta);

Expand All @@ -251,7 +263,6 @@ private Menu hasMenuOpened(Player player) {
return null;
}


/**
* Format a permission with the permission prefix.
*
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package fr.communaywen.core.claim;

import fr.communaywen.core.AywenCraftPlugin;
import fr.communaywen.core.credit.Credit;
import fr.communaywen.core.teams.Team;
import fr.communaywen.core.utils.database.DatabaseConnector;
import org.bukkit.Bukkit;
Expand All @@ -27,9 +28,7 @@ public static void loadAllClaims() {
UUID uuid = UUID.fromString(result.getString("claimID"));
if (team != null) {
AywenCraftPlugin.getInstance().regions.add(new RegionManager(pos1, pos2, team, uuid));
AywenCraftPlugin.getInstance().getLogger().info(AywenCraftPlugin.getInstance().regions.toString());
}
AywenCraftPlugin.getInstance().getLogger().info(result.getString("team"));
}


Expand Down Expand Up @@ -84,9 +83,6 @@ public static boolean removeAllClaims(String teamName) {

if (rowsAffected > 0) {
AywenCraftPlugin.getInstance().regions.removeIf(region -> region.getTeam().getName().equals(teamName));
AywenCraftPlugin.getInstance().getLogger().info("Claims removed for team: " + teamName + ". Affected rows: " + rowsAffected);
} else {
AywenCraftPlugin.getInstance().getLogger().info("No claims found for team: " + teamName);
}

return true;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,7 @@ public ClaimDeleteConfirmationMenu(Player owner, RegionManager claim, Team team)
}

@Override
public void onInventoryClick(InventoryClickEvent event) {
// This method is not needed as we're using ItemBuilder's setOnClick
}
public void onInventoryClick(InventoryClickEvent event) {}

@Override
public @NotNull Map<Integer, ItemStack> getContent() {
Expand Down
136 changes: 76 additions & 60 deletions src/main/java/fr/communaywen/core/economy/EconomyManager.java
Original file line number Diff line number Diff line change
@@ -1,60 +1,76 @@
package fr.communaywen.core.economy;

import fr.communaywen.core.credit.Credit;
import fr.communaywen.core.credit.Feature;
import org.bukkit.entity.Player;

import java.io.File;
import java.util.Map;
import java.util.UUID;

@Feature("Economie")
@Credit("TheR0001")
public class EconomyManager {
private final Map<UUID, Double> balances;
private final EconomyData economyData;

public EconomyManager(File dataFolder) {
this.economyData = new EconomyData(dataFolder);
this.balances = economyData.loadBalances();
}

public double getBalance(Player player) {
return balances.getOrDefault(player.getUniqueId(), 0.0);
}

public void addBalance(Player player, double amount) {
UUID uuid = player.getUniqueId();
balances.put(uuid, getBalance(player) + amount);
saveBalances();
}

public boolean withdrawBalance(Player player, double amount) {
UUID uuid = player.getUniqueId();
double balance = getBalance(player);
if (balance >= amount) {
balances.put(uuid, balance - amount);
saveBalances();
return true;
} else {
return false;
}
}

public boolean transferBalance(Player from, Player to, double amount) {
if (withdrawBalance(from, amount)) {
addBalance(to, amount);
return true;
} else {
return false;
}
}

private void saveBalances() {
economyData.saveBalances(balances);
}

public Map<UUID, Double> getBalances() {
return balances;
}
}
package fr.communaywen.core.economy;

import fr.communaywen.core.AywenCraftPlugin;
import fr.communaywen.core.credit.Credit;
import fr.communaywen.core.credit.Feature;
import fr.communaywen.core.quests.PlayerQuests;
import fr.communaywen.core.quests.QuestsManager;
import fr.communaywen.core.quests.qenum.QUESTS;
import fr.communaywen.core.quests.qenum.TYPE;
import org.bukkit.entity.Player;

import java.io.File;
import java.util.Map;
import java.util.UUID;

@Feature("Economie")
@Credit("TheR0001")
public class EconomyManager {
private final Map<UUID, Double> balances;
private final EconomyData economyData;

public EconomyManager(File dataFolder) {
this.economyData = new EconomyData(dataFolder);
this.balances = economyData.loadBalances();
}

public double getBalance(Player player) {
return balances.getOrDefault(player.getUniqueId(), 0.0);
}

public void addBalance(Player player, double amount) {
UUID uuid = player.getUniqueId();
balances.put(uuid, getBalance(player) + amount);

saveBalances();
for(QUESTS quests : QUESTS.values()) {
PlayerQuests pq = QuestsManager.getPlayerQuests(player);
if(quests.getType() == TYPE.MONEY) {
if(!pq.isQuestCompleted(quests)) {
AywenCraftPlugin.getInstance().getLogger().info(String.valueOf(pq.getProgress(quests)));
AywenCraftPlugin.getInstance().getLogger().info(String.valueOf(getBalance(player)));
QuestsManager.manageQuestsPlayer(player, quests, (int) amount, " argents récoltés");
}
}
}
}

public boolean withdrawBalance(Player player, double amount) {
UUID uuid = player.getUniqueId();
double balance = getBalance(player);
if (balance >= amount) {
balances.put(uuid, balance - amount);
saveBalances();
return true;
} else {
return false;
}
}

public boolean transferBalance(Player from, Player to, double amount) {
if (withdrawBalance(from, amount)) {
addBalance(to, amount);
return true;
} else {
return false;
}
}

private void saveBalances() {
economyData.saveBalances(balances);
}

public Map<UUID, Double> getBalances() {
return balances;
}
}
18 changes: 9 additions & 9 deletions src/main/java/fr/communaywen/core/quests/PlayerQuests.java
Original file line number Diff line number Diff line change
@@ -1,33 +1,33 @@
package fr.communaywen.core.quests;

import fr.communaywen.core.quests.qenum.QUESTS;
import lombok.Getter;

import java.util.HashMap;
import java.util.Map;

@Getter
public class PlayerQuests {

private final Map<QuestsManager.QUESTS, Integer> questsProgress;
private final Map<QUESTS, Integer> questsProgress;

public PlayerQuests() {
this.questsProgress = new HashMap<>();
for (QuestsManager.QUESTS quest : QuestsManager.QUESTS.values()) {
for (QUESTS quest : QUESTS.values()) {
questsProgress.put(quest, 0);
}
}

public Map<QuestsManager.QUESTS, Integer> getQuestsProgress() {
return questsProgress;
}

public int getProgress(QuestsManager.QUESTS quest) {
public int getProgress(QUESTS quest) {
return questsProgress.getOrDefault(quest, 0);
}

public void addProgress(QuestsManager.QUESTS quest, int amount) {
public void addProgress(QUESTS quest, int amount) {
int newProgress = questsProgress.getOrDefault(quest, 0) + amount;
questsProgress.put(quest, newProgress);
}

public boolean isQuestCompleted(QuestsManager.QUESTS quest) {
public boolean isQuestCompleted(QUESTS quest) {
return getProgress(quest) >= quest.getQt();
}

Expand Down
28 changes: 17 additions & 11 deletions src/main/java/fr/communaywen/core/quests/QuestsListener.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import dev.lone.itemsadder.api.CustomStack;
import fr.communaywen.core.AywenCraftPlugin;
import fr.communaywen.core.quests.qenum.QUESTS;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.entity.EntityType;
Expand All @@ -18,39 +19,43 @@
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.inventory.ItemStack;

import java.sql.SQLException;

public class QuestsListener implements Listener {
@EventHandler
public void onPlayerJoin(PlayerJoinEvent event) {
public void onPlayerJoin(PlayerJoinEvent event) throws SQLException {
QuestsManager.loadPlayerData(event.getPlayer());
}

@EventHandler
public void onPlayerQuit(PlayerQuitEvent event) {
QuestsManager.savePlayerData(event.getPlayer());
public void onPlayerQuit(PlayerQuitEvent event) throws SQLException {
PlayerQuests pq = QuestsManager.getPlayerQuests(event.getPlayer());
for(QUESTS quests : QUESTS.values())
QuestsManager.savePlayerQuestProgress(event.getPlayer(), quests, pq.getProgress(quests));
}

@EventHandler
public void onBlockBreak(BlockBreakEvent event) {
if ((event.getBlock().getType().equals(Material.DIAMOND_ORE) || event.getBlock().getType().equals(Material.DEEPSLATE_DIAMOND_ORE))) {
QuestsManager.manageQuestsPlayer(event.getPlayer(), QuestsManager.QUESTS.BREAK_DIAMOND, 1, "diamants(s) miné(s)");
QuestsManager.manageQuestsPlayer(event.getPlayer(), QUESTS.BREAK_DIAMOND, 1, "diamants(s) miné(s)");
} else if ((event.getBlock().getType().equals(Material.STONE) || event.getBlock().getType().equals(Material.DEEPSLATE))) {
QuestsManager.manageQuestsPlayer(event.getPlayer(), QuestsManager.QUESTS.BREAK_STONE, 1, "stone(s) cassé(s)");
QuestsManager.manageQuestsPlayer(event.getPlayer(), QUESTS.BREAK_STONE, 1, "stone(s) cassé(s)");
}
}

@EventHandler
public void onPlayerDeath(PlayerDeathEvent event) {
Player killer = event.getEntity().getKiller();
assert killer != null;
QuestsManager.manageQuestsPlayer(killer, QuestsManager.QUESTS.KILL_PLAYERS, 1, "joueur(s) tué(s)");
QuestsManager.manageQuestsPlayer(killer, QUESTS.KILL_PLAYERS, 1, "joueur(s) tué(s)");
}

@EventHandler
public void onEntityKill(EntityDeathEvent event) {
Player player = event.getEntity().getKiller();
if (player == null) return;
if (event.getEntity().getType().equals(EntityType.WARDEN)) {
QuestsManager.manageQuestsPlayer(player, QuestsManager.QUESTS.KILL_WARDENS, 1, "warden tué");
QuestsManager.manageQuestsPlayer(player, QUESTS.KILL_WARDENS, 1, "warden tué");
}
}

Expand All @@ -62,7 +67,7 @@ public void onPlayerMove(PlayerMoveEvent event) {
assert to != null;

if (to.getBlockX() != from.getBlockX() || to.getBlockZ() != from.getBlockZ()) {
QuestsManager.manageQuestsPlayer(player, QuestsManager.QUESTS.WALK_BLOCKS, 1, "Block(s) marché(s)");
QuestsManager.manageQuestsPlayer(player, QUESTS.WALK_BLOCKS, 1, "Block(s) marché(s)");
}
}

Expand All @@ -73,10 +78,11 @@ public void onCraftItem(CraftItemEvent event) {
ItemStack itemStackWAND = stackRTPWAND.getItemStack();

if (event.getRecipe().getResult().getItemMeta().equals(itemStackWAND.getItemMeta())) {
QuestsManager.manageQuestsPlayer(player, QuestsManager.QUESTS.CRAFT_RTP_WAND, 1, "RTP WAND crafté");
QuestsManager.manageQuestsPlayer(player, QUESTS.CRAFT_RTP_WAND, 1, "RTP WAND crafté");
} else if (event.getRecipe().getResult().getItemMeta().getDisplayName().equals("§fKebab")) {
QuestsManager.manageQuestsPlayer(player, QuestsManager.QUESTS.CRAFT_KEBAB, 1, "kebab crafté");
QuestsManager.manageQuestsPlayer(player, QUESTS.CRAFT_KEBAB, 1, "kebab crafté");
}

}

@EventHandler
Expand All @@ -86,7 +92,7 @@ public void onFurnaceExtract(FurnaceExtractEvent event) {
ItemStack iron = new ItemStack(Material.IRON_INGOT);

if (extractedItem.equals(iron)) {
QuestsManager.manageQuestsPlayer(player, QuestsManager.QUESTS.SMELT_IRON, event.getItemAmount(), "fer(s) cuit(s)");
QuestsManager.manageQuestsPlayer(player, QUESTS.SMELT_IRON, event.getItemAmount(), "fer(s) cuit(s)");
}
}

Expand Down
Loading