2024 · actif
OpenMC
Un serveur Minecraft communautaire, où les joueurs participent au développement du serveur. De la communauté, par la communauté, pour la communauté.

Overview
OpenMC est un serveur Minecraft imaginé par Aywen, avec une idée simple au départ : et si les joueurs participaient vraiment au développement du serveur ?
Mon rôle dans ce projet, au début du projet, était de coder les fonctionnalités du serveur comme le reste de la communauté et de m'assurer que tout fonctionne correctement. J'ai ensuite pris en charge la modération et la gestion du serveur et du repository GitHub.
Système de quête
Les joueurs peuvent accomplir des quêtes pour gagner de l'argent et des récompenses. Chaque quête est stockée dans des fichiers JSONs pour chaque joueur.
Pour créer une quête, contrairement à la V1 du serveur, où j'avais fait en sorte que les quêtes soient codées dans un enum :
public enum QUESTS {
BREAK_STONE(Material.STONE, new int[]{10000, 30000, 80000}, TYPE.BREAK, "Casseur de pierres", "de stone", REWARD.MONEY, new int[]{2000, 4000, 6000}),
BREAK_DIAMOND(Material.DIAMOND, new int[]{100, 400, 800}, TYPE.BREAK, "Richou", "diamants", REWARD.MONEY, new int[]{2500, 5000, 10000}),
}Cette méthode était très peu flexible et demandait de modifier deux fichiers communs à chaque fois, le QUESTS.java et le QuestsListener.java qui contenait le code de l'event BlockBreakEvent pour chaque quête.
J'ai donc refait le système pour que chaque quête ait sa propre classe, qui hérite d'une classe abstraite Quest et qui contient toutes les informations de la quête, ainsi que le code de l'event qui lui est associé.
Un exemple de quête, qui demande au joueur de miner :
public class MinerQuest extends Quest {
public MinerQuest() {
// Le nom de la quete, la description, l'item qui la represente, et si on affiche une barre de progression ou pas
super("Miner", "Mine {target} blocks", Material.DIAMOND_PICKAXE, false);
this.addTiers(
new QuestTier(10, new QuestMoneyReward(100)), // 10000 blocks mined, reward 100 money
new QuestTier(50, new QuestItemReward(Material.DIAMOND, 5)), // 50000 blocks mined, reward 5 diamonds
)
}
@Override
public void onBlockBreak(BlockBreakEvent event) {
if (event.getBlock().getType() == Material.STONE) {
this.incrementProgress(event.getPlayer());
}
}
}