getLore() {
for (var entry : logWeights.entrySet()) {
lore.add(Component.text("- ").color(NamedTextColor.DARK_GRAY)
- .append(ItemUtils.getItemTranslation(entry.getKey()))
- .append(Component.text(" : "))
- .append(Component.text(entry.getValue()).color(NamedTextColor.AQUA))
- .append(Component.text(" points"))
- .decoration(TextDecoration.ITALIC, false)
- .color(NamedTextColor.GRAY)
- );
+ .append(TranslationManager.translation(
+ "feature.quests.break_log.lore.line",
+ ItemUtils.getItemTranslation(entry.getKey()),
+ Component.text(entry.getValue()).color(NamedTextColor.AQUA)
+ ).color(NamedTextColor.GRAY))
+ .decoration(TextDecoration.ITALIC, false));
}
return lore;
}
public BreakLogQuest() {
- super("Bûcheron de l'extrême", List.of("Casser {target} bûches"), new ItemStack(Material.IRON_AXE));
+ super(
+ TranslationManager.translationString("feature.quests.break_log.name"),
+ List.of(TranslationManager.translationString("feature.quests.break_log.description")),
+ new ItemStack(Material.IRON_AXE)
+ );
this.setAdditionalLore(getLore());
this.addTiers(
diff --git a/src/main/java/fr/openmc/core/features/quests/quests/BreakStoneQuest.java b/src/main/java/fr/openmc/core/features/quests/quests/BreakStoneQuest.java
index 51249d9db..ffc80b79a 100644
--- a/src/main/java/fr/openmc/core/features/quests/quests/BreakStoneQuest.java
+++ b/src/main/java/fr/openmc/core/features/quests/quests/BreakStoneQuest.java
@@ -4,6 +4,7 @@
import fr.openmc.core.features.quests.objects.QuestTier;
import fr.openmc.core.features.quests.rewards.QuestMoneyReward;
import fr.openmc.core.registry.items.contents.UseHammerEvent;
+import fr.openmc.core.utils.text.messages.TranslationManager;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Item;
@@ -18,7 +19,11 @@
public class BreakStoneQuest extends Quest implements Listener {
public BreakStoneQuest() {
- super("Casseur de pierres", List.of("Miner {target} blocs de pierre"), new ItemStack(Material.DIAMOND_PICKAXE));
+ super(
+ TranslationManager.translationString("feature.quests.break_stone.name"),
+ List.of(TranslationManager.translationString("feature.quests.break_stone.description")),
+ new ItemStack(Material.DIAMOND_PICKAXE)
+ );
this.addTiers(
new QuestTier(10000, new QuestMoneyReward(500)),
diff --git a/src/main/java/fr/openmc/core/features/quests/quests/BreakWheatQuest.java b/src/main/java/fr/openmc/core/features/quests/quests/BreakWheatQuest.java
index 51a19545e..5cbc928b4 100644
--- a/src/main/java/fr/openmc/core/features/quests/quests/BreakWheatQuest.java
+++ b/src/main/java/fr/openmc/core/features/quests/quests/BreakWheatQuest.java
@@ -4,6 +4,7 @@
import fr.openmc.core.features.quests.objects.QuestTier;
import fr.openmc.core.features.quests.rewards.QuestItemReward;
import fr.openmc.core.features.quests.rewards.QuestMoneyReward;
+import fr.openmc.core.utils.text.messages.TranslationManager;
import org.bukkit.Material;
import org.bukkit.block.data.Ageable;
import org.bukkit.enchantments.Enchantment;
@@ -19,8 +20,8 @@ public class BreakWheatQuest extends Quest implements Listener {
public BreakWheatQuest() {
super(
- "Fermier dévoué",
- List.of("Récolter {target} blé"),
+ TranslationManager.translationString("feature.quests.break_wheat.name"),
+ List.of(TranslationManager.translationString("feature.quests.break_wheat.description")),
new ItemStack(Material.WHEAT)
);
diff --git a/src/main/java/fr/openmc/core/features/quests/quests/ChickenThrowerQuest.java b/src/main/java/fr/openmc/core/features/quests/quests/ChickenThrowerQuest.java
index a8dae36f6..feb687b40 100644
--- a/src/main/java/fr/openmc/core/features/quests/quests/ChickenThrowerQuest.java
+++ b/src/main/java/fr/openmc/core/features/quests/quests/ChickenThrowerQuest.java
@@ -3,6 +3,7 @@
import fr.openmc.core.features.quests.objects.Quest;
import fr.openmc.core.features.quests.objects.QuestTier;
import fr.openmc.core.features.quests.rewards.QuestMoneyReward;
+import fr.openmc.core.utils.text.messages.TranslationManager;
import org.bukkit.Material;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
@@ -16,8 +17,8 @@ public class ChickenThrowerQuest extends Quest implements Listener {
public ChickenThrowerQuest() {
super(
- "Lanceur de poules",
- List.of("Lancer {target} oeufs"),
+ TranslationManager.translationString("feature.quests.chicken_thrower.name"),
+ List.of(TranslationManager.translationString("feature.quests.chicken_thrower.description")),
new ItemStack(Material.EGG)
);
diff --git a/src/main/java/fr/openmc/core/features/quests/quests/ConsumeKebabQuest.java b/src/main/java/fr/openmc/core/features/quests/quests/ConsumeKebabQuest.java
index b3b64bac5..4c3af6872 100644
--- a/src/main/java/fr/openmc/core/features/quests/quests/ConsumeKebabQuest.java
+++ b/src/main/java/fr/openmc/core/features/quests/quests/ConsumeKebabQuest.java
@@ -4,6 +4,8 @@
import fr.openmc.core.features.quests.objects.Quest;
import fr.openmc.core.features.quests.objects.QuestTier;
import fr.openmc.core.features.quests.rewards.QuestMoneyReward;
+import fr.openmc.core.registry.items.CustomItemRegistry;
+import fr.openmc.core.utils.text.messages.TranslationManager;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
@@ -15,7 +17,11 @@
public class ConsumeKebabQuest extends Quest implements Listener {
public ConsumeKebabQuest() {
- super("Miam miam", List.of("Manger {target} kebab{s}"), OMCRegistry.CUSTOM_ITEMS.KEBAB);
+ super(
+ TranslationManager.translationString("feature.quests.consume_kebab.name"),
+ List.of(TranslationManager.translationString("feature.quests.consume_kebab.description")),
+ OMCRegistry.CUSTOM_ITEMS.KEBAB
+ );
this.addTiers(
new QuestTier(10, new QuestMoneyReward(30)),
diff --git a/src/main/java/fr/openmc/core/features/quests/quests/CraftCakeQuest.java b/src/main/java/fr/openmc/core/features/quests/quests/CraftCakeQuest.java
index a5d338a3d..413c0dfb6 100644
--- a/src/main/java/fr/openmc/core/features/quests/quests/CraftCakeQuest.java
+++ b/src/main/java/fr/openmc/core/features/quests/quests/CraftCakeQuest.java
@@ -3,6 +3,7 @@
import fr.openmc.core.features.quests.objects.Quest;
import fr.openmc.core.features.quests.objects.QuestTier;
import fr.openmc.core.features.quests.rewards.QuestMoneyReward;
+import fr.openmc.core.utils.text.messages.TranslationManager;
import org.bukkit.Material;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
@@ -14,7 +15,11 @@
public class CraftCakeQuest extends Quest implements Listener {
public CraftCakeQuest() {
- super("Le pâtissier", List.of("Craft {target} gâteaux"), Material.CAKE);
+ super(
+ TranslationManager.translationString("feature.quests.craft_cake.name"),
+ List.of(TranslationManager.translationString("feature.quests.craft_cake.description")),
+ Material.CAKE
+ );
this.addTiers(
new QuestTier(64, new QuestMoneyReward(100)),
diff --git a/src/main/java/fr/openmc/core/features/quests/quests/CraftDiamondArmorQuest.java b/src/main/java/fr/openmc/core/features/quests/quests/CraftDiamondArmorQuest.java
index 0b0e4f5af..3a31d002b 100644
--- a/src/main/java/fr/openmc/core/features/quests/quests/CraftDiamondArmorQuest.java
+++ b/src/main/java/fr/openmc/core/features/quests/quests/CraftDiamondArmorQuest.java
@@ -3,6 +3,7 @@
import fr.openmc.core.features.quests.objects.Quest;
import fr.openmc.core.features.quests.objects.QuestBuilder;
import fr.openmc.core.features.quests.rewards.QuestItemReward;
+import fr.openmc.core.utils.text.messages.TranslationManager;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
@@ -18,17 +19,21 @@ public class CraftDiamondArmorQuest extends Quest implements Listener {
public CraftDiamondArmorQuest() {
super(
- "Armure précieuse",
- List.of("Fabriquer une armure complète en diamant"),
+ TranslationManager.translationString("feature.quests.craft_diamond_armor.name"),
+ List.of(TranslationManager.translationString("feature.quests.craft_diamond_armor.description")),
new ItemStack(Material.DIAMOND_CHESTPLATE)
);
- Quest quest = new QuestBuilder("Armure précieuse", List.of("Fabriquer une armure complète en diamant"), new ItemStack(Material.DIAMOND_CHESTPLATE))
- .tier(4, "Fabriquer une armure complète en diamant", new QuestItemReward(Material.DIAMOND, 10))
- .step("Casque en diamant", 1)
- .step("Plastron en diamant", 1)
- .step("Pantalon en diamant", 1)
- .step("Bottes en diamant", 1)
+ Quest quest = new QuestBuilder(
+ TranslationManager.translationString("feature.quests.craft_diamond_armor.name"),
+ List.of(TranslationManager.translationString("feature.quests.craft_diamond_armor.description")),
+ new ItemStack(Material.DIAMOND_CHESTPLATE)
+ )
+ .tier(4, TranslationManager.translationString("feature.quests.craft_diamond_armor.description"), new QuestItemReward(Material.DIAMOND, 10))
+ .step(TranslationManager.translationString("feature.quests.craft_diamond_armor.step.helmet"), 1)
+ .step(TranslationManager.translationString("feature.quests.craft_diamond_armor.step.chestplate"), 1)
+ .step(TranslationManager.translationString("feature.quests.craft_diamond_armor.step.leggings"), 1)
+ .step(TranslationManager.translationString("feature.quests.craft_diamond_armor.step.boots"), 1)
.requireAllSteps(true)
.build();
diff --git a/src/main/java/fr/openmc/core/features/quests/quests/CraftTheMixtureQuest.java b/src/main/java/fr/openmc/core/features/quests/quests/CraftTheMixtureQuest.java
index 0fb0851eb..c841894e8 100644
--- a/src/main/java/fr/openmc/core/features/quests/quests/CraftTheMixtureQuest.java
+++ b/src/main/java/fr/openmc/core/features/quests/quests/CraftTheMixtureQuest.java
@@ -6,6 +6,7 @@
import fr.openmc.core.features.quests.rewards.QuestItemReward;
import fr.openmc.core.features.quests.rewards.QuestMoneyReward;
import fr.openmc.core.utils.bukkit.ItemUtils;
+import fr.openmc.core.utils.text.messages.TranslationManager;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
@@ -19,8 +20,8 @@ public class CraftTheMixtureQuest extends Quest implements Listener {
public CraftTheMixtureQuest() {
super(
- "The Mixture",
- List.of("Fabriquer {target} The Mixture{s}"),
+ TranslationManager.translationString("feature.quests.craft_the_mixture.name"),
+ List.of(TranslationManager.translationString("feature.quests.craft_the_mixture.description")),
OMCRegistry.CUSTOM_ITEMS.THE_MIXTURE
);
diff --git a/src/main/java/fr/openmc/core/features/quests/quests/EnchantFirstItemQuest.java b/src/main/java/fr/openmc/core/features/quests/quests/EnchantFirstItemQuest.java
index fa145c551..8079566a3 100644
--- a/src/main/java/fr/openmc/core/features/quests/quests/EnchantFirstItemQuest.java
+++ b/src/main/java/fr/openmc/core/features/quests/quests/EnchantFirstItemQuest.java
@@ -3,6 +3,7 @@
import fr.openmc.core.features.quests.objects.Quest;
import fr.openmc.core.features.quests.objects.QuestTier;
import fr.openmc.core.features.quests.rewards.QuestMoneyReward;
+import fr.openmc.core.utils.text.messages.TranslationManager;
import org.bukkit.Material;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
@@ -15,7 +16,11 @@
public class EnchantFirstItemQuest extends Quest implements Listener {
public EnchantFirstItemQuest() {
- super("Abracadabra", List.of("Enchanter un objet pour la première fois"), Material.ENCHANTING_TABLE);
+ super(
+ TranslationManager.translationString("feature.quests.enchant_first_item.name"),
+ List.of(TranslationManager.translationString("feature.quests.enchant_first_item.description")),
+ Material.ENCHANTING_TABLE
+ );
this.addTiers(
new QuestTier(1, new QuestMoneyReward(200))
diff --git a/src/main/java/fr/openmc/core/features/quests/quests/FishingQuest.java b/src/main/java/fr/openmc/core/features/quests/quests/FishingQuest.java
index 45da64416..182bd504a 100644
--- a/src/main/java/fr/openmc/core/features/quests/quests/FishingQuest.java
+++ b/src/main/java/fr/openmc/core/features/quests/quests/FishingQuest.java
@@ -4,6 +4,7 @@
import fr.openmc.core.features.quests.objects.QuestTier;
import fr.openmc.core.features.quests.rewards.QuestItemReward;
import fr.openmc.core.features.quests.rewards.QuestMoneyReward;
+import fr.openmc.core.utils.text.messages.TranslationManager;
import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Item;
@@ -19,8 +20,8 @@ public class FishingQuest extends Quest implements Listener {
public FishingQuest() {
super(
- "Pêcheur expérimenté",
- List.of("Pêcher {target} poissons"),
+ TranslationManager.translationString("feature.quests.fishing.name"),
+ List.of(TranslationManager.translationString("feature.quests.fishing.description")),
new ItemStack(Material.FISHING_ROD)
);
diff --git a/src/main/java/fr/openmc/core/features/quests/quests/KillPlayersQuest.java b/src/main/java/fr/openmc/core/features/quests/quests/KillPlayersQuest.java
index 82b72d6c6..6d095cc29 100644
--- a/src/main/java/fr/openmc/core/features/quests/quests/KillPlayersQuest.java
+++ b/src/main/java/fr/openmc/core/features/quests/quests/KillPlayersQuest.java
@@ -3,6 +3,7 @@
import fr.openmc.core.features.quests.objects.Quest;
import fr.openmc.core.features.quests.objects.QuestTier;
import fr.openmc.core.features.quests.rewards.QuestMoneyReward;
+import fr.openmc.core.utils.text.messages.TranslationManager;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
@@ -16,8 +17,8 @@ public class KillPlayersQuest extends Quest implements Listener {
public KillPlayersQuest() {
super(
- "Tueur à gage",
- List.of("Tuer {target} joueurs"),
+ TranslationManager.translationString("feature.quests.kill_players.name"),
+ List.of(TranslationManager.translationString("feature.quests.kill_players.description")),
Material.IRON_SWORD
);
diff --git a/src/main/java/fr/openmc/core/features/quests/quests/KillSuperCreeperQuest.java b/src/main/java/fr/openmc/core/features/quests/quests/KillSuperCreeperQuest.java
index 2976e6a8d..e1e96ff15 100644
--- a/src/main/java/fr/openmc/core/features/quests/quests/KillSuperCreeperQuest.java
+++ b/src/main/java/fr/openmc/core/features/quests/quests/KillSuperCreeperQuest.java
@@ -3,6 +3,7 @@
import fr.openmc.core.features.quests.objects.Quest;
import fr.openmc.core.features.quests.objects.QuestTier;
import fr.openmc.core.features.quests.rewards.QuestMoneyReward;
+import fr.openmc.core.utils.text.messages.TranslationManager;
import org.bukkit.Material;
import org.bukkit.entity.Creeper;
import org.bukkit.entity.Player;
@@ -17,8 +18,8 @@ public class KillSuperCreeperQuest extends Quest implements Listener {
public KillSuperCreeperQuest() {
super(
- "Le boss des creepers",
- List.of("Tuer {target} creepers super chargés"),
+ TranslationManager.translationString("feature.quests.kill_super_creeper.name"),
+ List.of(TranslationManager.translationString("feature.quests.kill_super_creeper.description")),
Material.CREEPER_HEAD
);
diff --git a/src/main/java/fr/openmc/core/features/quests/quests/KillZombieQuest.java b/src/main/java/fr/openmc/core/features/quests/quests/KillZombieQuest.java
index b7ec6128c..90ec55d35 100644
--- a/src/main/java/fr/openmc/core/features/quests/quests/KillZombieQuest.java
+++ b/src/main/java/fr/openmc/core/features/quests/quests/KillZombieQuest.java
@@ -3,6 +3,7 @@
import fr.openmc.core.features.quests.objects.Quest;
import fr.openmc.core.features.quests.objects.QuestTier;
import fr.openmc.core.features.quests.rewards.QuestMoneyReward;
+import fr.openmc.core.utils.text.messages.TranslationManager;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.entity.Zombie;
@@ -16,7 +17,11 @@
public class KillZombieQuest extends Quest implements Listener {
public KillZombieQuest() {
- super("Apocalypse zombie ?", List.of("Tuer {target} zombies"), Material.ZOMBIE_HEAD);
+ super(
+ TranslationManager.translationString("feature.quests.kill_zombie.name"),
+ List.of(TranslationManager.translationString("feature.quests.kill_zombie.description")),
+ Material.ZOMBIE_HEAD
+ );
this.addTiers(
new QuestTier(1000, new QuestMoneyReward(300)),
diff --git a/src/main/java/fr/openmc/core/features/quests/quests/MineAyweniteQuest.java b/src/main/java/fr/openmc/core/features/quests/quests/MineAyweniteQuest.java
index 154537a08..2a88fe8ad 100644
--- a/src/main/java/fr/openmc/core/features/quests/quests/MineAyweniteQuest.java
+++ b/src/main/java/fr/openmc/core/features/quests/quests/MineAyweniteQuest.java
@@ -7,6 +7,7 @@
import fr.openmc.core.features.quests.rewards.QuestItemReward;
import fr.openmc.core.features.quests.rewards.QuestMoneyReward;
import fr.openmc.core.hooks.itemsadder.ItemsAdderHook;
+import fr.openmc.core.utils.text.messages.TranslationManager;
import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.event.EventHandler;
@@ -20,7 +21,11 @@
public class MineAyweniteQuest extends Quest implements Listener {
public MineAyweniteQuest() {
- super("Ohhh... c'est précieux ça ?", List.of("Miner {target} Aywenite{s}"), OMCRegistry.CUSTOM_ITEMS.AYWENITE.getBest());
+ super(
+ TranslationManager.translationString("feature.quests.mine_aywenite.name"),
+ List.of(TranslationManager.translationString("feature.quests.mine_aywenite.description")),
+ OMCRegistry.CUSTOM_ITEMS.AYWENITE.getBest()
+ );
this.addTiers(
new QuestTier(1, new QuestMoneyReward(20)),
@@ -32,9 +37,8 @@ public MineAyweniteQuest() {
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onPlayerBreakBlock(BlockBreakEvent event) {
ItemStack tool = event.getPlayer().getInventory().getItemInMainHand();
- if (tool.containsEnchantment(Enchantment.SILK_TOUCH)) {
+ if (tool.containsEnchantment(Enchantment.SILK_TOUCH))
return; // Ne pas compter si le joueur utilise Silk Touch
- }
if (!ItemsAdderHook.isEnable())
return;
diff --git a/src/main/java/fr/openmc/core/features/quests/quests/SaveTheEarthQuest.java b/src/main/java/fr/openmc/core/features/quests/quests/SaveTheEarthQuest.java
index ca49b8259..896f62826 100644
--- a/src/main/java/fr/openmc/core/features/quests/quests/SaveTheEarthQuest.java
+++ b/src/main/java/fr/openmc/core/features/quests/quests/SaveTheEarthQuest.java
@@ -3,6 +3,7 @@
import fr.openmc.core.features.quests.objects.Quest;
import fr.openmc.core.features.quests.objects.QuestTier;
import fr.openmc.core.features.quests.rewards.QuestItemReward;
+import fr.openmc.core.utils.text.messages.TranslationManager;
import org.bukkit.Material;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
@@ -14,7 +15,11 @@
public class SaveTheEarthQuest extends Quest implements Listener {
public SaveTheEarthQuest() {
- super("Sauvons la planète", List.of("Planter {target} arbres et les faire grandir avec des poudres d'os"), Material.OAK_SAPLING);
+ super(
+ TranslationManager.translationString("feature.quests.save_the_earth.name"),
+ List.of(TranslationManager.translationString("feature.quests.save_the_earth.description")),
+ Material.OAK_SAPLING
+ );
this.addTiers(
new QuestTier(10, new QuestItemReward(Material.OAK_LOG, 32)),
diff --git a/src/main/java/fr/openmc/core/features/quests/quests/SmeltIronQuest.java b/src/main/java/fr/openmc/core/features/quests/quests/SmeltIronQuest.java
index d73796f37..2a5b1a52a 100644
--- a/src/main/java/fr/openmc/core/features/quests/quests/SmeltIronQuest.java
+++ b/src/main/java/fr/openmc/core/features/quests/quests/SmeltIronQuest.java
@@ -3,6 +3,7 @@
import fr.openmc.core.features.quests.objects.Quest;
import fr.openmc.core.features.quests.objects.QuestTier;
import fr.openmc.core.features.quests.rewards.QuestMoneyReward;
+import fr.openmc.core.utils.text.messages.TranslationManager;
import org.bukkit.Material;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
@@ -14,7 +15,11 @@
public class SmeltIronQuest extends Quest implements Listener {
public SmeltIronQuest() {
- super("Chaud devant !", List.of("Faire fondre {target} lingots de fer"), Material.IRON_ORE);
+ super(
+ TranslationManager.translationString("feature.quests.smelt_iron.name"),
+ List.of(TranslationManager.translationString("feature.quests.smelt_iron.description")),
+ Material.IRON_ORE
+ );
this.addTiers(
new QuestTier(256, new QuestMoneyReward(500)),
diff --git a/src/main/java/fr/openmc/core/features/quests/quests/WalkQuests.java b/src/main/java/fr/openmc/core/features/quests/quests/WalkQuests.java
index ad9fbabbc..a7d25dc02 100644
--- a/src/main/java/fr/openmc/core/features/quests/quests/WalkQuests.java
+++ b/src/main/java/fr/openmc/core/features/quests/quests/WalkQuests.java
@@ -3,6 +3,7 @@
import fr.openmc.core.features.quests.objects.Quest;
import fr.openmc.core.features.quests.objects.QuestTier;
import fr.openmc.core.features.quests.rewards.QuestMoneyReward;
+import fr.openmc.core.utils.text.messages.TranslationManager;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
@@ -14,7 +15,12 @@
public class WalkQuests extends Quest implements Listener {
public WalkQuests() {
- super("Le randonneur", List.of("Marcher {target} blocs"), Material.LEATHER_BOOTS, true);
+ super(
+ TranslationManager.translationString("feature.quests.walk.name"),
+ List.of(TranslationManager.translationString("feature.quests.walk.description")),
+ Material.LEATHER_BOOTS,
+ true
+ );
this.addTiers(
new QuestTier(4000, new QuestMoneyReward(300)),
diff --git a/src/main/java/fr/openmc/core/features/quests/quests/WinContestQuest.java b/src/main/java/fr/openmc/core/features/quests/quests/WinContestQuest.java
index 2b74a6cd7..25bad0e97 100644
--- a/src/main/java/fr/openmc/core/features/quests/quests/WinContestQuest.java
+++ b/src/main/java/fr/openmc/core/features/quests/quests/WinContestQuest.java
@@ -5,6 +5,8 @@
import fr.openmc.core.features.quests.objects.Quest;
import fr.openmc.core.features.quests.objects.QuestTier;
import fr.openmc.core.features.quests.rewards.QuestItemReward;
+import fr.openmc.core.registry.items.CustomItemRegistry;
+import fr.openmc.core.utils.text.messages.TranslationManager;
import org.bukkit.Material;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
@@ -16,8 +18,8 @@ public class WinContestQuest extends Quest implements Listener {
public WinContestQuest() {
super(
- "Choisir son camp",
- List.of("Gagne {target} contest"),
+ TranslationManager.translationString("feature.quests.win_contest.name"),
+ List.of(TranslationManager.translationString("feature.quests.win_contest.description")),
Material.NAUTILUS_SHELL
);
diff --git a/src/main/java/fr/openmc/core/features/quests/rewards/QuestMoneyReward.java b/src/main/java/fr/openmc/core/features/quests/rewards/QuestMoneyReward.java
index 97362bc4d..948627b11 100644
--- a/src/main/java/fr/openmc/core/features/quests/rewards/QuestMoneyReward.java
+++ b/src/main/java/fr/openmc/core/features/quests/rewards/QuestMoneyReward.java
@@ -4,7 +4,9 @@
import fr.openmc.core.utils.text.messages.MessageType;
import fr.openmc.core.utils.text.messages.MessagesManager;
import fr.openmc.core.utils.text.messages.Prefix;
+import fr.openmc.core.utils.text.messages.TranslationManager;
import net.kyori.adventure.text.Component;
+import net.kyori.adventure.text.format.NamedTextColor;
import org.bukkit.entity.Player;
/**
@@ -22,9 +24,13 @@ public record QuestMoneyReward(double amount) implements QuestReward {
@Override
public void giveReward(Player player) {
EconomyManager.addBalance(player.getUniqueId(), amount, "Récompense de quête");
+ Component amountComponent = Component.text(EconomyManager.getFormattedSimplifiedNumber(amount) + " " + EconomyManager.getEconomyIcon())
+ .color(NamedTextColor.YELLOW);
+ Component message = TranslationManager.translation("feature.quests.message.money_reward", amountComponent)
+ .color(NamedTextColor.GREEN);
MessagesManager.sendMessage(
player,
- Component.text("§aVous avez reçu §e" + amount + EconomyManager.getEconomyIcon()),
+ message,
Prefix.QUEST,
MessageType.SUCCESS,
false
diff --git a/src/main/java/fr/openmc/core/features/quests/rewards/QuestTextReward.java b/src/main/java/fr/openmc/core/features/quests/rewards/QuestTextReward.java
index 59bac4d97..75e81b489 100644
--- a/src/main/java/fr/openmc/core/features/quests/rewards/QuestTextReward.java
+++ b/src/main/java/fr/openmc/core/features/quests/rewards/QuestTextReward.java
@@ -13,7 +13,7 @@
*
* This class implements the QuestReward interface and provides functionality to give a specified amount of money to a player.
*/
-public record QuestTextReward(String text, Prefix prefix, MessageType messageType) implements QuestReward {
+public record QuestTextReward(Component text, Prefix prefix, MessageType messageType) implements QuestReward {
/**
* Gives the specified amount of money to the player.
*
@@ -24,7 +24,7 @@ public void giveReward(Player player) {
Bukkit.getScheduler().runTaskLater(OMCPlugin.getInstance(), () -> {
MessagesManager.sendMessage(
player,
- Component.text(text),
+ text,
prefix,
messageType,
false
diff --git a/src/main/resources/translations/default/itemsadder.properties b/src/main/resources/translations/default/itemsadder.properties
new file mode 100644
index 000000000..ebe730f98
--- /dev/null
+++ b/src/main/resources/translations/default/itemsadder.properties
@@ -0,0 +1,5 @@
+feature.itemsadder.spawner_extractor.fail=L'extraction a échoué ! Le spawner s'est brisé.
+feature.itemsadder.spawner_extractor.display_name=Spawner à %1$s
+feature.itemsadder.spawner_extractor.success_extract=Vous avez extrait un spawner à %1$s !
+feature.itemsadder.spawner_extractor.success_place=Spawner à %1$s placé !
+
diff --git a/src/main/resources/translations/default/leaderboards.properties b/src/main/resources/translations/default/leaderboards.properties
new file mode 100644
index 000000000..edbc6a6c6
--- /dev/null
+++ b/src/main/resources/translations/default/leaderboards.properties
@@ -0,0 +1,28 @@
+feature.leaderboards.empty.contributors=Aucun contributeur trouvé pour le moment.
+feature.leaderboards.empty.players=Aucun joueur trouvé pour le moment.
+feature.leaderboards.empty.cities=Aucune ville trouvée pour le moment.
+
+feature.leaderboards.header.contributors=--- Leaderboard des Contributeurs GitHub ---
+feature.leaderboards.header.money=--- Leaderboard de l'argent des joueurs ---
+feature.leaderboards.header.city_money=--- Leaderboard de l'argent des villes ---
+feature.leaderboards.header.playtime=------- Leaderboard du temps de jeu -------
+feature.leaderboards.header.pumpkin=--- Leaderboard des citrouilles ---
+
+feature.leaderboards.footer=-----------------------------------------
+
+feature.leaderboards.line.contributors=%1$s %2$s + %3$s - %4$s
+feature.leaderboards.line.money=%1$s %2$s - %3$s
+feature.leaderboards.line.city_money=%1$s %2$s - %3$s
+feature.leaderboards.line.playtime=%1$s %2$s - %3$s
+feature.leaderboards.line.pumpkin=%1$s %2$s - %3$s citrouilles
+
+feature.leaderboards.command.invalid=Veuillez spécifier un leaderboard valide. (Ex: /leaderboard contributeurs)
+feature.leaderboards.command.position_updated=Position du leaderboard %1$s mise à jour.
+feature.leaderboards.command.position_update_failed=Erreur lors de la mise à jour de la position du leaderboard %1$s : %2$s
+feature.leaderboards.command.invalid_list=Veuillez spécifier un leaderboard valide : contributors, money, ville-money, playtime, pumpkin-count
+feature.leaderboards.command.holograms_disabled=Hologrammes désactivés avec succès.
+feature.leaderboards.command.holograms_enabled=Hologrammes activés avec succès.
+feature.leaderboards.command.holograms_updated=Hologrammes mis à jour avec succès.
+feature.leaderboards.command.scale_changed=Taille des hologrammes modifiée à %1$s
+feature.leaderboards.command.scale_update_failed=Erreur lors de la mise à jour de la taille des hologrammes : %1$s
+
diff --git a/src/main/resources/translations/default/mailboxes.properties b/src/main/resources/translations/default/mailboxes.properties
new file mode 100644
index 000000000..ee0ab2d67
--- /dev/null
+++ b/src/main/resources/translations/default/mailboxes.properties
@@ -0,0 +1,51 @@
+feature.mailboxes.player.unknown=Inconnu
+
+feature.mailboxes.menu.title.home=Boite aux lettres
+feature.mailboxes.menu.title.player=Boite aux lettres
+feature.mailboxes.menu.title.pending=Courriers en attente d'annulation
+feature.mailboxes.menu.title.players_list=Liste des joueurs
+feature.mailboxes.menu.title.letter=Lettre de %1$s
+feature.mailboxes.menu.title.sending=Envoyer une lettre à %1$s
+
+feature.mailboxes.menu.pending.item=En attente
+feature.mailboxes.menu.player.item=Ma boite aux lettres
+feature.mailboxes.menu.send.item=Envoyer
+
+feature.mailboxes.menu.button.cancel=Annuler
+feature.mailboxes.menu.button.accept=Accepter
+feature.mailboxes.menu.button.send=Envoyer
+feature.mailboxes.menu.button.refuse=Refuser
+feature.mailboxes.menu.button.home_arrow=⬅ Home
+feature.mailboxes.menu.button.next_page_arrow=Page suivante ➡
+feature.mailboxes.menu.button.previous_page_arrow=⬅ Page précédente
+
+feature.mailboxes.menu.refuse_warning=Si vous faites cela, les items seront supprimés
+feature.mailboxes.menu.cancel.success=Vous avez annulé la mailbox #%1$s
+feature.mailboxes.menu.cancel.confirm=Confirmer l'annulation de la mailbox #%1$s
+feature.mailboxes.menu.cancel.cancel=Annuler l'annulation de la mailbox #%1$s
+
+feature.mailboxes.message.letter_not_found=La lettre avec l'id %1$s n'existe pas.
+feature.mailboxes.message.cancel_success_sender=%1$s a annulé la lettre. Vous avez reçu %2$s%3$s
+feature.mailboxes.message.refuse_success=Vous avez refusé la lettre #%1$s.
+feature.mailboxes.message.items_received=Vous avez reçu %1$s %2$s
+feature.mailboxes.message.cancel_letter=Vous avez annulé la lettre #%1$s.
+feature.mailboxes.message.empty_letter=Vous ne pouvez pas envoyer de lettre vide
+feature.mailboxes.message.player_not_found=Le joueur %1$s n'existe pas ou ne s'est jamais connecté !
+feature.mailboxes.message.send_to_self=Vous ne pouvez pas vous envoyer à vous-même !
+feature.mailboxes.message.cannot_send=Vous n'avez pas les droits pour envoyer à %1$s !
+
+feature.mailboxes.message.send_error=Une erreur est apparue lors de l'envoie des items à %1$s
+feature.mailboxes.message.one_letter=une
+feature.mailboxes.message.new_letters.line1=Vous avez reçu %1$s %2$s.
+feature.mailboxes.message.new_letters.click=Cliquez-ici
+feature.mailboxes.message.new_letters.suffix=pour ouvrir les lettres
+feature.mailboxes.message.new_letters.hover=Ouvrir ma boîte aux lettres
+feature.mailboxes.message.letter_received.line1=Vous avez reçu %1$s%2$s de la part de %3$s
+feature.mailboxes.message.letter_received.click=Cliquez-ici
+feature.mailboxes.message.letter_received.suffix=pour ouvrir la lettre
+feature.mailboxes.message.letter_received.hover=Ouvrir la lettre #%1$s
+feature.mailboxes.message.send_success=%1$s %2$s %3$s à %4$s
+
+feature.mailboxes.letter.contains=➤ Contient %1$s %2$s
+feature.mailboxes.title.new_letter=Nouvelle lettre !
+feature.mailboxes.title.new_letter.subtitle=%1$s vous a envoyé %2$s%3$s
diff --git a/src/main/resources/translations/default/mainmenu.properties b/src/main/resources/translations/default/mainmenu.properties
new file mode 100644
index 000000000..dafb1bb65
--- /dev/null
+++ b/src/main/resources/translations/default/mainmenu.properties
@@ -0,0 +1,52 @@
+feature.mainmenu.item.city.lore=/city
+feature.mainmenu.item.city.name=Ville : %1$s
+feature.mainmenu.item.city.no_city=Vous ne faites pas partie d'une ville.
+
+feature.mainmenu.item.advancements.name=Afficher les progrès
+
+feature.mainmenu.item.quests.name=Quêtes
+feature.mainmenu.item.quests.lore=/quest
+
+feature.mainmenu.item.milestones.name=Milestones
+feature.mainmenu.item.milestones.lore=Découvrez les features dans des routes de progressions !
+feature.mainmenu.item.milestones.command=/milestones
+
+feature.mainmenu.item.contest.ends_in=Fin dans %1$s
+feature.mainmenu.item.contest.name=Concours
+feature.mainmenu.item.contest.command=/contest
+
+feature.mainmenu.item.shop.name=Boutique
+feature.mainmenu.item.shop.command=/adminshop
+
+feature.mainmenu.item.home.name=Homes
+feature.mainmenu.item.home.command=/home
+
+feature.mainmenu.item.profile.name=Profil
+feature.mainmenu.item.profile.lore=En développement
+
+feature.mainmenu.item.next_page=Page suivante
+feature.mainmenu.item.previous_page=Page précédente
+
+feature.mainmenu.item.settings.name=Paramètres
+feature.mainmenu.item.settings.command=/settings
+
+feature.mainmenu.item.mailbox.name=Boîte aux lettres
+feature.mainmenu.item.mailbox.command=/mailbox home
+
+feature.mainmenu.item.shops_disabled=Shops (Désactivé)
+feature.mainmenu.item.company_disabled=Entreprises (Désactivé)
+feature.mainmenu.item.leaderboard.name=Leaderboard
+feature.mainmenu.item.leaderboard.command=/leaderboard
+feature.mainmenu.item.bank.name=Banque
+feature.mainmenu.item.bank.command=/banque
+feature.mainmenu.item.coming_soon.name=À venir
+feature.mainmenu.item.coming_soon.lore=Cette fonctionnalité est en cours de développement.
+
+feature.mainmenu.message.dream_world=Vous ne pouvez pas interagir avec le menu principal depuis le monde des rêves.
+feature.mainmenu.message.profile_dev=Les profils des joueurs sont toujours en développement :sad:.
+feature.mainmenu.message.advancements_hint=Appuyez sur la touche '%1$s' pour ouvrir le menu des Avancements.
+feature.mainmenu.message.shops_disabled=Les entreprises et shops on été désactivé :sad:.
+feature.mainmenu.message.leaderboard_dev=Le menu de leaderboard est toujours en développement :sad:.\nVous pouvez toujours utiliser le /lb ou regarder les holograms dans le spawn.
+feature.mainmenu.message.coming_soon=Cette fonctionnalité est en cours de développement et sera bientôt disponible !
+feature.mainmenu.advancements.loading=Chargement...
+
diff --git a/src/main/resources/translations/default/milestones.properties b/src/main/resources/translations/default/milestones.properties
new file mode 100644
index 000000000..dbb834b4e
--- /dev/null
+++ b/src/main/resources/translations/default/milestones.properties
@@ -0,0 +1,96 @@
+feature.milestones.menu.title.main=Menu des milestones - Plus d'info
+feature.milestones.menu.title.milestone=Menu des milestones - %1$s
+feature.milestones.menu.page.previous=◀ Page précédente
+feature.milestones.menu.page.next=Page suivante ▶
+feature.milestones.menu.close=Fermer
+feature.milestones.menu.back=Retour
+feature.milestones.menu.coming_soon=s Comming soon e
+
+feature.milestones.menu.city.name=Milestone des villes
+feature.milestones.menu.city.lore.intro_1=Découvrez l'intégralité des villes
+feature.milestones.menu.city.lore.intro_2=Via cette route de progression !
+feature.milestones.menu.city.lore.details=Les claims, Les mascottes, Les maires, Les guerres, ...
+feature.milestones.menu.city.lore.need_city=Créez ou rejoignez une ville pour accéder à cela !
+feature.milestones.menu.city.lore.level=Level de votre ville : %1$s
+feature.milestones.menu.city.lore.click=CLIQUEZ ICI POUR ACCEDER A VOTRE MILESTONE
+
+feature.milestones.tutorial.name=Tutoriel d'OpenMC
+feature.milestones.tutorial.description.1=Découvrez OpenMC !
+feature.milestones.tutorial.description.2=Passez en revue les features
+feature.milestones.tutorial.description.3=Les villes, les contests, l'adminshop, les quêtes, ...
+feature.milestones.tutorial.description.4=Idéal pour se lancer dans l'aventure !
+
+feature.milestones.tutorial.hologram.icon=%1$s
+feature.milestones.tutorial.hologram.welcome=Bienvenue sur OpenMC V2!
+feature.milestones.tutorial.hologram.based_on=Cette version est basée sur les villes
+feature.milestones.tutorial.hologram.how_to=Pour accéder au tutoriel, utilisez la commande /milestones.
+feature.milestones.tutorial.hologram.server=C'est votre serveur!
+feature.milestones.tutorial.hologram.separator=
+feature.milestones.tutorial.hologram.links=Liens utiles : /socials
+
+feature.milestones.tutorial.quest.spare_bank.name=Déposer de l'argent à la banque
+feature.milestones.tutorial.quest.spare_bank.description.1=Tapez /bank ou bien allez dans le menu principal (/menu) pour pouvoir ouvrir le menu
+feature.milestones.tutorial.quest.spare_bank.description.2=Une méthode compétitive pour gagner des grosses récompenses !
+feature.milestones.tutorial.quest.spare_bank.reward=Bien joué ! Vous avez fini l'étape %1$s ! Les banques peuvent stocker une quantité infinie d'argent et protègent celui-ci si vous mourrez ! Personnalisons maintenant l'expérience de jeu grâce aux paramètres !
+
+feature.milestones.tutorial.quest.sell_buy.name=Acheter ou vendre une ressource à l'adminshop
+feature.milestones.tutorial.quest.sell_buy.description.1=Tapez /adminshop ou bien allez dans le menu principal /menu pour pouvoir vendre ou acheter une ressource
+feature.milestones.tutorial.quest.sell_buy.description.2=C'est le début de la richesse !
+feature.milestones.tutorial.quest.sell_buy.reward=Bien joué ! Vous avez fini l'étape %1$s ! L'adminshop propose divers objets afin de pouvoir build, ou faire de l'argent ! Cependant, lorsque vous mourrez vous perdez %2$s% de votre argent ! Il est donc important de faire attention à votre peau, ou alors de déposer de l'argent dans votre banque !
+
+feature.milestones.tutorial.quest.open_settings.name=Ouvrir le menu des paramètres
+feature.milestones.tutorial.quest.open_settings.description.1=Tapez /settings ou bien allez dans le menu principal (/menu) pour pouvoir ouvrir le menu
+feature.milestones.tutorial.quest.open_settings.description.2=Cela va vous permettre de configurer votre expérience de jeu !
+feature.milestones.tutorial.quest.open_settings.reward=Bien joué ! Vous avez fini l'étape %1$s ! Les paramètres customisent votre jeu, ils peuvent être utiles dans certains cas, comme pour bloquer des demandes d'amis, ... Sujet à part, vous pouvez passer en mode compétition grâce aux contests, une sorte de concours hebdomadaire !
+
+feature.milestones.tutorial.quest.open_quest.name=Ouvrir le menu des quêtes
+feature.milestones.tutorial.quest.open_quest.description.1=Tapez /quests ou bien allez dans le menu principal (/menu) pour pouvoir ouvrir le menu et voir quelles quêtes vous pouvez accomplir
+feature.milestones.tutorial.quest.open_quest.description.2=Cela va pouvoir vous lancer dans l'aventure et vous donner des défis afin de vous diversifier !
+feature.milestones.tutorial.quest.open_quest.reward=Bien joué ! Vous avez fini l'étape %1$s ! Les quêtes vous serviront à vous procurer de l'argent facilement pour le début de jeu ! Vous pouvez tenter d'accomplir la tâche que vous voulez !
+
+feature.milestones.tutorial.quest.open_contest.name=Ouvrez le menu des contests
+feature.milestones.tutorial.quest.open_contest.description.1=Tapez /contest ou bien aller dans le menu principal (/menu) pour pouvoir ouvrir le menu
+feature.milestones.tutorial.quest.open_contest.description.2=Une méthode compétitive pour gagner des grosses récompenses !
+feature.milestones.tutorial.quest.open_contest.reward=Bien joué ! Vous avez fini l'étape %1$s ! Les contests opposent 2 groupes sur un thème, les gagnants remportent une grosse récompense ! Et voila le tutoriel est maintenant terminé, allez récupérer votre récompense dans la mailbox, un système de lettre pour recevoir ou bien envoyer des lettres !
+
+feature.milestones.tutorial.quest.open_adminshop.name=Ouvrir le menu de l'adminshop
+feature.milestones.tutorial.quest.open_adminshop.description.1=Tapez /adminshop ou bien allez dans le menu principal (/menu) pour pouvoir ouvrir le menu
+feature.milestones.tutorial.quest.open_adminshop.description.2=Le marché qui varie en fonction de l'offre et de la demande !
+feature.milestones.tutorial.quest.open_adminshop.reward=Bien joué ! Vous avez fini l'étape %1$s ! L'adminshop vous servira à vous procurer de l'argent et des blocs ! Vous pouvez d'ailleurs dès maintenant vendre ou acheter une ressource à l'adminshop !
+
+feature.milestones.tutorial.quest.home_upgrade.name=Améliorer votre limite de homes
+feature.milestones.tutorial.quest.home_upgrade.description.1=Tapez /upgradehome ou bien aller dans le menu des homes (/homes)
+feature.milestones.tutorial.quest.home_upgrade.description.2=pour pouvoir améliorer votre limite de homes
+feature.milestones.tutorial.quest.home_upgrade.description.3=Cela vous permettra d'avoir plus de homes !
+feature.milestones.tutorial.quest.home_upgrade.reward=Bien joué ! Vous avez fini l'étape %1$s ! Les homes vous seront très utile pour vous déplacer rapidement entre vos bases ! maintenant, je pense que vous avez besoin de challenges ! Ouvrez le menu des quêtes.
+
+feature.milestones.tutorial.quest.home_create.name=Poser un home
+feature.milestones.tutorial.quest.home_create.description.1=Tapez /sethome en étant là où vous voulez poser votre home
+feature.milestones.tutorial.quest.home_create.description.2=C'est très utile d'en faire un pour se téléporter à sa base !
+feature.milestones.tutorial.quest.home_create.reward=Bien joué ! Vous avez fini l'étape %1$s ! Les homes sont souvent utilisés pour ne pas perdre votre base ! Vous êtes limité à avoir que 1 home au début. Il va falloir penser à les améliorer...
+
+feature.milestones.tutorial.quest.finish_quest.name=Accomplir une quête
+feature.milestones.tutorial.quest.finish_quest.description.1=Accomplissez une quête de votre choix
+feature.milestones.tutorial.quest.finish_quest.description.2=Cela va pouvoir vous donner de l'argent ou certaines ressources !
+feature.milestones.tutorial.quest.finish_quest.reward=Bien joué ! Vous avez fini l'étape %1$s ! Et voici une récompense ! Pratique, non ? Allons découvrir une autre méthode de production d'argent et de consommation ! Allez dans l'adminshop, un endroit où plusieurs items sont achetable à des prix variants en fonction l'offre et la demande !
+
+feature.milestones.tutorial.quest.claim_letter.name=Ouvrir la lettre des récompenses
+feature.milestones.tutorial.quest.claim_letter.description.1=Tapez /mailbox ou bien allez dans le menu principal (/menu) pour pouvoir ouvrir le menu mailbox
+feature.milestones.tutorial.quest.claim_letter.description.2=Un moyen efficace d'envoyer des items à d'autres joueurs !
+feature.milestones.tutorial.quest.claim_letter.reward=Bien joué ! Vous avez fini l'étape %1$s ! Vous avez découvert les bases d'OpenMC. Et maintenant, libre à vous d'aller découvrir les features par vous même ! Sur ce, nous vous souhaitons le meilleur de votre aventure sur OpenMC !
+
+feature.milestones.tutorial.quest.city_create.name=Créer/Rejoindre une ville
+feature.milestones.tutorial.quest.city_create.description.1=Faites /city pour commencer à créer votre ville
+feature.milestones.tutorial.quest.city_create.description.2=ou bien rejoindre une ville à l'aide d'une invitation !
+feature.milestones.tutorial.quest.city_create.reward=Bien joué ! Vous avez fini l'étape %1$s ! Cette version d'OpenMC est centrée autour des villes. Vous y trouverez une milestone spéciale pour les villes (/city milestone) qui vous guidera dans cette aventure singulière ! Et si vous passiez votre ville au niveau 2 ?
+
+feature.milestones.tutorial.quest.city_level_two.name=Avoir une ville niveau 2
+feature.milestones.tutorial.quest.city_level_two.description.1=Faites /city milestone pour en savoir plus comment
+feature.milestones.tutorial.quest.city_level_two.description.2=améliorer votre ville !
+feature.milestones.tutorial.quest.city_level_two.reward=Bien joué ! Vous avez fini l'étape %1$s ! Vous êtes bien parti pour découvrir toutes les features qu'ils se cachent dans les villes ! Mais avant cela, je voudrais que vous posiez un home.
+
+feature.milestones.tutorial.quest.break_aywenite.name=Casser 30 Aywenites
+feature.milestones.tutorial.quest.break_aywenite.description.1=Le nouveau minerai de la V2, trouvable dans les grottes
+feature.milestones.tutorial.quest.break_aywenite.description.2=Il vous sera utile dans de nombreuses fonctionnalités
+feature.milestones.tutorial.quest.break_aywenite.reward=Bien joué ! Vous avez fini l'étape %1$s ! Comme dit précédemment l'Aywenite est un minerai, précieux pour les features. D'ailleurs vous pouvez l'utiliser pour faire votre ville !
+
diff --git a/src/main/resources/translations/default/quests.properties b/src/main/resources/translations/default/quests.properties
new file mode 100644
index 000000000..2f78c1035
--- /dev/null
+++ b/src/main/resources/translations/default/quests.properties
@@ -0,0 +1,72 @@
+feature.quests.menu.title=Menu des quêtes
+feature.quests.menu.page.previous=Page précédente
+feature.quests.menu.page.next=Page suivante
+feature.quests.menu.tier_display=[%1$s/%2$s]
+feature.quests.menu.quest_item.name=%1$s %2$s %3$s
+feature.quests.menu.pending_rewards.title=Récompenses en attente:
+feature.quests.menu.pending_rewards.tier=Palier %1$s:
+feature.quests.menu.rewards.title=Récompenses:
+feature.quests.menu.completed=Quête complétée !
+feature.quests.menu.progress=Progrès: %1$s/%2$s (%3$s%%)
+feature.quests.menu.current_objective=Objectif actuel:
+feature.quests.menu.steps.title=Avancement:
+feature.quests.menu.next_tier.title=Prochain tier:
+
+feature.quests.actionbar.progress_label=Progression de la quête
+
+feature.quests.title.completed=Quête terminée !
+feature.quests.title.tier_completed=Palier %1$s terminé !
+
+feature.quests.message.money_reward=Vous avez reçu %1$s
+feature.quests.message.inventory_full_reward=Vous n'avez pas assez de place dans votre inventaire pour recevoir la récompense !
+feature.quests.message.completed=★ Quête terminée ! %1$s est maintenant complète !
+feature.quests.message.tier_completed=★ Palier %1$s de %2$s validé !
+feature.quests.message.rewards_claimed=Vous avez récupéré toutes les récompenses du palier %1$s de la quête %2$s !
+feature.quests.message.inventory_full_claim=Vous n'avez pas assez de place dans votre inventaire pour récupérer toutes les récompenses. Libérez de l'espace et réessayez.
+feature.quests.message.step_completed=✓ Étape %1$s de %2$s validée !
+
+feature.quests.break_log.lore.line=%1$s : %2$s points
+
+feature.quests.break_diamond.name=Richou
+feature.quests.break_diamond.description=Casser {target} minerai{s} de diamant
+feature.quests.break_log.name=Bûcheron de l'extrême
+feature.quests.break_log.description=Casser {target} bûches
+feature.quests.break_stone.name=Casseur de pierres
+feature.quests.break_stone.description=Miner {target} blocs de pierre
+feature.quests.break_wheat.name=Fermier dévoué
+feature.quests.break_wheat.description=Récolter {target} blé
+feature.quests.chicken_thrower.name=Lanceur de poules
+feature.quests.chicken_thrower.description=Lancer {target} oeufs
+feature.quests.consume_kebab.name=Miam miam
+feature.quests.consume_kebab.description=Manger {target} kebab{s}
+feature.quests.craft_cake.name=Le pâtissier
+feature.quests.craft_cake.description=Craft {target} gâteaux
+feature.quests.craft_diamond_armor.name=Armure précieuse
+feature.quests.craft_diamond_armor.description=Fabriquer une armure complète en diamant
+feature.quests.craft_diamond_armor.step.helmet=Casque en diamant
+feature.quests.craft_diamond_armor.step.chestplate=Plastron en diamant
+feature.quests.craft_diamond_armor.step.leggings=Pantalon en diamant
+feature.quests.craft_diamond_armor.step.boots=Bottes en diamant
+feature.quests.craft_the_mixture.name=The Mixture
+feature.quests.craft_the_mixture.description=Fabriquer {target} The Mixture{s}
+feature.quests.enchant_first_item.name=Abracadabra
+feature.quests.enchant_first_item.description=Enchanter un objet pour la première fois
+feature.quests.fishing.name=Pêcheur expérimenté
+feature.quests.fishing.description=Pêcher {target} poissons
+feature.quests.kill_players.name=Tueur à gage
+feature.quests.kill_players.description=Tuer {target} joueurs
+feature.quests.kill_super_creeper.name=Le boss des creepers
+feature.quests.kill_super_creeper.description=Tuer {target} creepers super chargés
+feature.quests.kill_zombie.name=Apocalypse zombie ?
+feature.quests.kill_zombie.description=Tuer {target} zombies
+feature.quests.mine_aywenite.name=Ohhh... c'est précieux ça ?
+feature.quests.mine_aywenite.description=Miner {target} Aywenite{s}
+feature.quests.save_the_earth.name=Sauvons la planète
+feature.quests.save_the_earth.description=Planter {target} arbres et les faire grandir avec des poudres d'os
+feature.quests.smelt_iron.name=Chaud devant !
+feature.quests.smelt_iron.description=Faire fondre {target} lingots de fer
+feature.quests.walk.name=Le randonneur
+feature.quests.walk.description=Marcher {target} blocs
+feature.quests.win_contest.name=Choisir son camp
+feature.quests.win_contest.description=Gagne {target} contest
+