From 38f860e0a8f40cf226a6c1c7bc0852b4902f06ff Mon Sep 17 00:00:00 2001 From: Shoccapik Date: Fri, 12 Jun 2026 22:26:09 +0200 Subject: [PATCH 1/2] Feat Dungeons Add : Key System & Menu --- .../api/menulib/utils/ItemMenuBuilder.java | 2 +- src/main/java/fr/openmc/core/OMCPlugin.java | 4 +- .../features/dungeons/DungeonsCommand.java | 13 ++ .../features/dungeons/DungeonsManager.java | 71 ++++++++++ .../core/features/dungeons/DungeonsMenu.java | 131 ++++++++++++++++++ .../openmc/core/features/dungeons/Rarity.java | 23 +++ .../core/features/dungeons/db/DBKeyVault.java | 44 ++++++ .../features/dungeons/registry/items/Key.java | 27 ++++ .../registry/items/CustomItemRegistry.java | 29 ++++ .../java/fr/openmc/core/utils/FilesUtils.java | 3 + .../core/utils/text/messages/Prefix.java | 3 +- .../contents/omc_dungeons/config/items.yml | 33 +++++ 12 files changed, 380 insertions(+), 3 deletions(-) create mode 100644 src/main/java/fr/openmc/core/features/dungeons/DungeonsCommand.java create mode 100644 src/main/java/fr/openmc/core/features/dungeons/DungeonsManager.java create mode 100644 src/main/java/fr/openmc/core/features/dungeons/DungeonsMenu.java create mode 100644 src/main/java/fr/openmc/core/features/dungeons/Rarity.java create mode 100644 src/main/java/fr/openmc/core/features/dungeons/db/DBKeyVault.java create mode 100644 src/main/java/fr/openmc/core/features/dungeons/registry/items/Key.java create mode 100644 src/main/resources/contents/omc_dungeons/config/items.yml diff --git a/src/main/java/fr/openmc/api/menulib/utils/ItemMenuBuilder.java b/src/main/java/fr/openmc/api/menulib/utils/ItemMenuBuilder.java index 6b1b550eb..2e6103e5c 100644 --- a/src/main/java/fr/openmc/api/menulib/utils/ItemMenuBuilder.java +++ b/src/main/java/fr/openmc/api/menulib/utils/ItemMenuBuilder.java @@ -209,7 +209,7 @@ public ItemMenuBuilder(Menu itemMenu, ItemStack item, Consumer itemMet * modification of properties such as the display name, lore, enchantments, and more. */ public ItemMenuBuilder(Menu itemMenu, CustomItem customitem, Consumer itemMeta) { - super(customitem.getBest()); + super(customitem.getBest(), itemMeta); this.itemMenu = itemMenu; } diff --git a/src/main/java/fr/openmc/core/OMCPlugin.java b/src/main/java/fr/openmc/core/OMCPlugin.java index 09227433b..d2becf6f8 100644 --- a/src/main/java/fr/openmc/core/OMCPlugin.java +++ b/src/main/java/fr/openmc/core/OMCPlugin.java @@ -24,6 +24,7 @@ import fr.openmc.core.features.displays.holograms.HologramLoader; import fr.openmc.core.features.displays.scoreboards.ScoreboardManager; import fr.openmc.core.features.dream.DreamManager; +import fr.openmc.core.features.dungeons.DungeonsManager; import fr.openmc.core.features.economy.BankManager; import fr.openmc.core.features.economy.EconomyManager; import fr.openmc.core.features.economy.TransactionsManager; @@ -114,7 +115,8 @@ public class OMCPlugin extends JavaPlugin { new LeaderboardManager(), new MainMenu(), new HologramLoader(), - new HomeIconCacheManager() + new HomeIconCacheManager(), + new DungeonsManager() )); // ** Registry of OMC Plugin Hooks diff --git a/src/main/java/fr/openmc/core/features/dungeons/DungeonsCommand.java b/src/main/java/fr/openmc/core/features/dungeons/DungeonsCommand.java new file mode 100644 index 000000000..0f9d2de07 --- /dev/null +++ b/src/main/java/fr/openmc/core/features/dungeons/DungeonsCommand.java @@ -0,0 +1,13 @@ +package fr.openmc.core.features.dungeons; + +import org.bukkit.entity.Player; +import revxrsal.commands.annotation.Command; +import revxrsal.commands.annotation.CommandPlaceholder; + +@Command({"keyvault", "kv", "vault", "keys"}) +public class DungeonsCommand { + @CommandPlaceholder + public void dungeonsCommands(Player player) { + new DungeonsMenu(player).open(); + } +} diff --git a/src/main/java/fr/openmc/core/features/dungeons/DungeonsManager.java b/src/main/java/fr/openmc/core/features/dungeons/DungeonsManager.java new file mode 100644 index 000000000..64af556b1 --- /dev/null +++ b/src/main/java/fr/openmc/core/features/dungeons/DungeonsManager.java @@ -0,0 +1,71 @@ +package fr.openmc.core.features.dungeons; + +import com.j256.ormlite.dao.Dao; +import com.j256.ormlite.dao.DaoManager; +import com.j256.ormlite.support.ConnectionSource; +import com.j256.ormlite.table.TableUtils; +import fr.openmc.core.bootstrap.features.Feature; +import fr.openmc.core.bootstrap.features.types.DatabaseFeature; +import fr.openmc.core.bootstrap.features.types.HasCommands; +import fr.openmc.core.bootstrap.integration.OMCLogger; +import fr.openmc.core.features.dungeons.db.DBKeyVault; +import lombok.Getter; + +import java.sql.SQLException; +import java.util.*; + +public class DungeonsManager extends Feature implements DatabaseFeature, HasCommands { + + @Getter + public static Map> dataKeyVault = new HashMap<>(); + private static Dao keyVaultDao; + + @Override + public void init() { + + + + } + + + + @Override + public void initDB(ConnectionSource connectionSource) throws SQLException { + + TableUtils.createTableIfNotExists(connectionSource, DBKeyVault.class); + keyVaultDao = DaoManager.createDao(connectionSource, DBKeyVault.class); + + } + + public static void loadKeyVaultPlayerData() { + try { + keyVaultDao.queryForAll().forEach(keyVault -> dataKeyVault.computeIfAbsent(keyVault.getPlayerUUID(), l-> + new ArrayList<>() + ).add(keyVault)); + } catch (SQLException e) { + throw new RuntimeException(e); + } + } + + /** + * Sauvegarde les données des joueurs (points, camp, etc.) dans la DB. + */ + public static void saveKeyVaultPlayerData() { + OMCLogger.info("Saving Key vault data..."); + dataKeyVault.forEach((player, data) -> { + data.forEach(keyVault -> { + try { + keyVaultDao.createOrUpdate(keyVault); + } catch (SQLException e) { + OMCLogger.error("Cannot register key vault : ", e); + } + }); + }); + OMCLogger.info("Key vault data saved successfully."); + } + + @Override + public Set getCommands() { + return Set.of(new DungeonsCommand()); + } +} diff --git a/src/main/java/fr/openmc/core/features/dungeons/DungeonsMenu.java b/src/main/java/fr/openmc/core/features/dungeons/DungeonsMenu.java new file mode 100644 index 000000000..3406a9390 --- /dev/null +++ b/src/main/java/fr/openmc/core/features/dungeons/DungeonsMenu.java @@ -0,0 +1,131 @@ +package fr.openmc.core.features.dungeons; + +import com.mojang.brigadier.Message; +import fr.openmc.api.menulib.Menu; +import fr.openmc.api.menulib.utils.InventorySize; +import fr.openmc.api.menulib.utils.ItemMenuBuilder; +import fr.openmc.core.OMCRegistry; +import fr.openmc.core.features.dungeons.db.DBKeyVault; +import fr.openmc.core.features.dungeons.registry.items.Key; +import fr.openmc.core.registry.items.CustomItem; +import fr.openmc.core.utils.bukkit.ItemUtils; +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 net.kyori.adventure.text.Component; +import net.kyori.adventure.text.format.NamedTextColor; +import net.kyori.adventure.text.format.TextDecoration; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.event.inventory.InventoryCloseEvent; +import org.bukkit.inventory.ItemStack; +import org.jetbrains.annotations.NotNull; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.function.Consumer; + +public class DungeonsMenu extends Menu { + + private final List playerKeyVaults; + + protected DungeonsMenu(Player owner) { + super(owner); + playerKeyVaults = DungeonsManager.getDataKeyVault().get(owner.getUniqueId()); + } + + @Override + public @NotNull Component getName() { + return Component.text("Dungeon Vault"); + } + + @Override + public String getTexture() { + return ""; + } + + @Override + public @NotNull InventorySize getInventorySize() { + return InventorySize.LARGEST; + } + + @Override + public void onInventoryClick(InventoryClickEvent e) { + + } + + @Override + public void onClose(InventoryCloseEvent event) { + + } + + @Override + public @NotNull Map getContent() { + Map map = new HashMap<>(); + + for (int i = 1; i <= 4; i++) { + final int level = i; + for (Rarity rarity : Rarity.values()) { + if (rarity == Rarity.ABSOLUTE_MASTER) continue; + Key key = (Key) OMCRegistry.CUSTOM_ITEMS.getOrThrow("omc_dungeons:key_level_" + i + "_rarity_" + rarity.name().toLowerCase()); + map.put(2 * i + rarity.ordinal() * 9 - 1, new ItemMenuBuilder(this, key.getBest(), itemMeta -> { + itemMeta.lore(List.of( + Component.text("§fLevel " + level), + Component.text(rarity.getName()).color(rarity.getColor()).decoration(TextDecoration.ITALIC, TextDecoration.State.FALSE).decorate(TextDecoration.BOLD) + )); + + }).setOnClick(keyOnClick(key))); + + + } + } + + map.put(45, new ItemMenuBuilder(this, Material.SMITHING_TABLE, itemMeta -> { + itemMeta.displayName(Component.text("Collisionneur de Hadrons")); + itemMeta.lore(List.of( + Component.text("Permet de fusionner deux clé de niveau identique pour obtenir une clé de rareté supérieure."), + Component.text("Fusionnez deux exemplaires de chaque clé de niveau Maître pour obtenir la clé de Maître Absolu.") + )); + })); + + map.put(49, new ItemMenuBuilder(this, OMCRegistry.CUSTOM_ITEMS.KEY_L5_R6.getBest(), itemMeta -> { + itemMeta.lore(List.of( + Component.text(Rarity.ABSOLUTE_MASTER.getName()).color(Rarity.ABSOLUTE_MASTER.getColor()).decoration(TextDecoration.ITALIC, TextDecoration.State.FALSE).decorate(TextDecoration.BOLD) + )); + }).setOnClick(keyOnClick((Key) OMCRegistry.CUSTOM_ITEMS.KEY_L5_R6))); + + return map; + } + + @Override + public List getTakableSlot() { + return List.of(); + } + + private Consumer keyOnClick(Key key) { + return event -> { + + if (event.isLeftClick()) { + if (ItemUtils.hasEnoughItems(getOwner(), key.getBest(), 1)) { + MessagesManager.sendMessage(getOwner(), Component.text("Vous ne possédez pas assez de cet item"), Prefix.DUNGEONS, MessageType.ERROR, true); + return; + }; + ItemUtils.removeItemsFromInventory(getOwner(), key.getBest(), 1); + } else if (event.isRightClick()) { + if (!ItemUtils.hasEnoughItems(getOwner(), key.getBest(), 1)) { + MessagesManager.sendMessage(getOwner(), Component.text("Vous n'avez pas assez de de cet item dans votre vault"), Prefix.DUNGEONS, MessageType.ERROR, true); + return; + } + if (!ItemUtils.hasEnoughSpace(getOwner(), key.getBest())) { + MessagesManager.sendMessage(getOwner(), Component.text("Vous n'avez pas assez de place dans votre inventaire."), Prefix.DUNGEONS, MessageType.ERROR, true); + return; + } + + } + }; + + }; + +} diff --git a/src/main/java/fr/openmc/core/features/dungeons/Rarity.java b/src/main/java/fr/openmc/core/features/dungeons/Rarity.java new file mode 100644 index 000000000..85c828fb3 --- /dev/null +++ b/src/main/java/fr/openmc/core/features/dungeons/Rarity.java @@ -0,0 +1,23 @@ +package fr.openmc.core.features.dungeons; + +import lombok.Getter; +import net.kyori.adventure.text.format.NamedTextColor; + +@Getter +public enum Rarity { + COMMON("COMMUN", NamedTextColor.GREEN), + RARE("RARE", NamedTextColor.BLUE), + EPIC("ÉPIQUE", NamedTextColor.DARK_PURPLE), + LEGENDARY("LÉGENDAIRE", NamedTextColor.GOLD), + MASTER("MAÎTRE", NamedTextColor.RED), + ABSOLUTE_MASTER("GRAND MAÎTRE" ,NamedTextColor.LIGHT_PURPLE); + + private String name; + private NamedTextColor color; + + + Rarity(String name, NamedTextColor color) { + this.name = name; + this.color = color; + } +} diff --git a/src/main/java/fr/openmc/core/features/dungeons/db/DBKeyVault.java b/src/main/java/fr/openmc/core/features/dungeons/db/DBKeyVault.java new file mode 100644 index 000000000..0706f4ec7 --- /dev/null +++ b/src/main/java/fr/openmc/core/features/dungeons/db/DBKeyVault.java @@ -0,0 +1,44 @@ +package fr.openmc.core.features.dungeons.db; + +import com.j256.ormlite.field.DatabaseField; +import com.j256.ormlite.table.DatabaseTable; +import com.sun.jna.WString; +import fr.openmc.core.features.dungeons.Rarity; +import lombok.Getter; + +import java.util.UUID; + +@DatabaseTable(tableName = "db_key_vault") +@Getter +public class DBKeyVault { + @DatabaseField(columnName = "player_uuid") + private UUID playerUUID; + + @DatabaseField(columnName = "key_level") + private int keyLevel; + + @DatabaseField(columnName = "rarity_key") + private String rarityKeyStr; + + @DatabaseField(columnName = "key_number") + private int keyNumber; + + private Rarity rarity; + + DBKeyVault() { + + } + + public DBKeyVault(UUID playerUUID, int keyLevel, int keyNumber, Rarity rarity) { + this.playerUUID = playerUUID; + this.keyLevel = keyLevel; + this.keyNumber = keyNumber; + this.rarity = rarity; + } + + public DBKeyVault serialize() { + this.rarityKeyStr = rarity.name(); + return this; + } + +} diff --git a/src/main/java/fr/openmc/core/features/dungeons/registry/items/Key.java b/src/main/java/fr/openmc/core/features/dungeons/registry/items/Key.java new file mode 100644 index 000000000..822204354 --- /dev/null +++ b/src/main/java/fr/openmc/core/features/dungeons/registry/items/Key.java @@ -0,0 +1,27 @@ +package fr.openmc.core.features.dungeons.registry.items; + +import fr.openmc.core.features.dungeons.Rarity; +import fr.openmc.core.registry.items.CustomItem; +import fr.openmc.core.registry.items.CustomItemMeta; +import lombok.Getter; +import org.bukkit.Material; +import org.bukkit.inventory.ItemStack; + +@Getter +public class Key extends CustomItem { + + private final int level; + private final Rarity rarity; + + + public Key(int level, Rarity rarity) { + super("omc_dungeons:key_level_" + level + "_rarity_" + rarity.name().toLowerCase()); + this.level = level; + this.rarity = rarity; + } + + @Override + public ItemStack getVanilla() { + return new ItemStack(Material.TRIPWIRE_HOOK); + } +} diff --git a/src/main/java/fr/openmc/core/registry/items/CustomItemRegistry.java b/src/main/java/fr/openmc/core/registry/items/CustomItemRegistry.java index 84dd8d737..5feb16f0f 100644 --- a/src/main/java/fr/openmc/core/registry/items/CustomItemRegistry.java +++ b/src/main/java/fr/openmc/core/registry/items/CustomItemRegistry.java @@ -4,6 +4,8 @@ import fr.openmc.core.CommandsManager; import fr.openmc.core.bootstrap.registries.KeyedRegistry; import fr.openmc.core.bootstrap.registries.Registry; +import fr.openmc.core.features.dungeons.Rarity; +import fr.openmc.core.features.dungeons.registry.items.*; import fr.openmc.core.hooks.itemsadder.ItemsAdderHook; import fr.openmc.core.registry.items.contents.AywenCap; import fr.openmc.core.registry.items.contents.Hammer; @@ -86,6 +88,33 @@ public class CustomItemRegistry extends Registry implements public final CustomItem DIAMOND_HAMMER = register(new Hammer("omc_items:diamond_hammer", Material.DIAMOND_PICKAXE, 1, 1)); public final CustomItem NETHERITE_HAMMER = register(new Hammer("omc_items:netherite_hammer", Material.NETHERITE_PICKAXE, 1, 2)); + /* DUNGEONS */ + public final CustomItem KEY_L1_R1 = register (new Key(1, Rarity.COMMON)); + public final CustomItem KEY_L1_R2 = register (new Key(1, Rarity.RARE)); + public final CustomItem KEY_L1_R3 = register (new Key(1, Rarity.EPIC)); + public final CustomItem KEY_L1_R4 = register (new Key(1, Rarity.LEGENDARY)); + public final CustomItem KEY_L1_R5 = register (new Key(1, Rarity.MASTER)); + + public final CustomItem KEY_L2_R1 = register (new Key(2, Rarity.COMMON)); + public final CustomItem KEY_L2_R2 = register (new Key(2, Rarity.RARE)); + public final CustomItem KEY_L2_R3 = register (new Key(2, Rarity.EPIC)); + public final CustomItem KEY_L2_R4 = register (new Key(2, Rarity.LEGENDARY)); + public final CustomItem KEY_L2_R5 = register (new Key(2, Rarity.MASTER)); + + public final CustomItem KEY_L3_R1 = register (new Key(3, Rarity.COMMON)); + public final CustomItem KEY_L3_R2 = register (new Key(3, Rarity.RARE)); + public final CustomItem KEY_L3_R3 = register (new Key(3, Rarity.EPIC)); + public final CustomItem KEY_L3_R4 = register (new Key(3, Rarity.LEGENDARY)); + public final CustomItem KEY_L3_R5 = register (new Key(3, Rarity.MASTER)); + + public final CustomItem KEY_L4_R1 = register (new Key(4, Rarity.COMMON)); + public final CustomItem KEY_L4_R2 = register (new Key(4, Rarity.RARE)); + public final CustomItem KEY_L4_R3 = register (new Key(4, Rarity.EPIC)); + public final CustomItem KEY_L4_R4 = register (new Key(4, Rarity.LEGENDARY)); + public final CustomItem KEY_L4_R5 = register (new Key(4, Rarity.MASTER)); + + public final CustomItem KEY_L5_R6 = register (new Key(5, Rarity.ABSOLUTE_MASTER)); + @Override public void postInit() { CommandsManager.getHandler().register(new CustomItemsDebugCommand()); diff --git a/src/main/java/fr/openmc/core/utils/FilesUtils.java b/src/main/java/fr/openmc/core/utils/FilesUtils.java index ad79f91fd..12b274be7 100644 --- a/src/main/java/fr/openmc/core/utils/FilesUtils.java +++ b/src/main/java/fr/openmc/core/utils/FilesUtils.java @@ -10,6 +10,7 @@ import java.net.URL; import java.nio.charset.StandardCharsets; import java.nio.file.Files; +import java.nio.file.NoSuchFileException; import java.nio.file.Path; import java.nio.file.Paths; import java.util.*; @@ -45,6 +46,8 @@ public static void deleteDirectory(File dir) throws IOException { .forEach(path -> { try { Files.delete(path); + } catch (NoSuchFileException e) { + OMCLogger.warn("Impossible de supprimer (fichier manquant): {}", path, e); } catch (IOException e) { OMCLogger.warn("Impossible de supprimer: {}", path, e); } diff --git a/src/main/java/fr/openmc/core/utils/text/messages/Prefix.java b/src/main/java/fr/openmc/core/utils/text/messages/Prefix.java index 9e2e50c2c..54b168a51 100644 --- a/src/main/java/fr/openmc/core/utils/text/messages/Prefix.java +++ b/src/main/java/fr/openmc/core/utils/text/messages/Prefix.java @@ -31,7 +31,8 @@ public enum Prefix { MILLESTONE("ᴍɪʟʟᴇѕᴛᴏɴᴇ"), DREAM("ᴅʀᴇᴀᴍ"), MAILBOX("ᴍᴀɪʟʙᴏx"), - HALLOWEEN("ʜᴀʟʟᴏᴡᴇᴇɴ") + HALLOWEEN("ʜᴀʟʟᴏᴡᴇᴇɴ"), + DUNGEONS("ᴅᴜɴɢᴇᴏɴѕ") ; @Getter diff --git a/src/main/resources/contents/omc_dungeons/config/items.yml b/src/main/resources/contents/omc_dungeons/config/items.yml new file mode 100644 index 000000000..7ea5c545b --- /dev/null +++ b/src/main/resources/contents/omc_dungeons/config/items.yml @@ -0,0 +1,33 @@ +info: + namespace: omc_dungeons +items: + key_level_1: + display_name: §l§aForêt Elfique + resource: + generate: false + model_path: "minecraft:item/tripwire_hook" + material: TRIPWIRE_HOOK + key_level_2: + display_name: §l§cCroisade Ardente + resource: + generate: false + model_path: "minecraft:item/tripwire_hook" + material: TRIPWIRE_HOOK + key_level_3: + display_name: §l§9Forêt des Elfs de la Nuits + resource: + generate: false + model_path: "minecraft:item/tripwire_hook" + material: TRIPWIRE_HOOK + key_level_4: + display_name: §l§3Aether + resource: + generate: false + model_path: "minecraft:item/tripwire_hook" + material: TRIPWIRE_HOOK + key_level_5: + display_name: §l§4Paralysie du Sommeil + resource: + generate: false + model_path: "minecraft:item/tripwire_hook" + material: TRIPWIRE_HOOK \ No newline at end of file From 4b996f758859e945bb30fc26a6bc7702a10e822b Mon Sep 17 00:00:00 2001 From: Shoccapik Date: Wed, 17 Jun 2026 21:21:53 +0200 Subject: [PATCH 2/2] feat: modifications of key system and repair key name --- .../core/features/dungeons/DungeonsMenu.java | 2 +- .../features/dungeons/registry/items/Key.java | 2 +- .../contents/omc_dungeons/config/items.yml | 126 +++++++++++++++++- 3 files changed, 123 insertions(+), 7 deletions(-) diff --git a/src/main/java/fr/openmc/core/features/dungeons/DungeonsMenu.java b/src/main/java/fr/openmc/core/features/dungeons/DungeonsMenu.java index 3406a9390..de663eebe 100644 --- a/src/main/java/fr/openmc/core/features/dungeons/DungeonsMenu.java +++ b/src/main/java/fr/openmc/core/features/dungeons/DungeonsMenu.java @@ -69,7 +69,7 @@ public void onClose(InventoryCloseEvent event) { final int level = i; for (Rarity rarity : Rarity.values()) { if (rarity == Rarity.ABSOLUTE_MASTER) continue; - Key key = (Key) OMCRegistry.CUSTOM_ITEMS.getOrThrow("omc_dungeons:key_level_" + i + "_rarity_" + rarity.name().toLowerCase()); + Key key = (Key) OMCRegistry.CUSTOM_ITEMS.getOrThrow("omc_dungeons:key_level_" + i + "_" + rarity.name().toLowerCase()); map.put(2 * i + rarity.ordinal() * 9 - 1, new ItemMenuBuilder(this, key.getBest(), itemMeta -> { itemMeta.lore(List.of( Component.text("§fLevel " + level), diff --git a/src/main/java/fr/openmc/core/features/dungeons/registry/items/Key.java b/src/main/java/fr/openmc/core/features/dungeons/registry/items/Key.java index 822204354..6c24451c5 100644 --- a/src/main/java/fr/openmc/core/features/dungeons/registry/items/Key.java +++ b/src/main/java/fr/openmc/core/features/dungeons/registry/items/Key.java @@ -15,7 +15,7 @@ public class Key extends CustomItem { public Key(int level, Rarity rarity) { - super("omc_dungeons:key_level_" + level + "_rarity_" + rarity.name().toLowerCase()); + super("omc_dungeons:key_level_" + level + "_" + rarity.name().toLowerCase()); this.level = level; this.rarity = rarity; } diff --git a/src/main/resources/contents/omc_dungeons/config/items.yml b/src/main/resources/contents/omc_dungeons/config/items.yml index 7ea5c545b..74fa0b3f7 100644 --- a/src/main/resources/contents/omc_dungeons/config/items.yml +++ b/src/main/resources/contents/omc_dungeons/config/items.yml @@ -1,31 +1,147 @@ info: namespace: omc_dungeons items: - key_level_1: + key_level_1_common: display_name: §l§aForêt Elfique resource: generate: false model_path: "minecraft:item/tripwire_hook" material: TRIPWIRE_HOOK - key_level_2: + + key_level_1_rare: + display_name: §l§aForêt Elfique + resource: + generate: false + model_path: "minecraft:item/tripwire_hook" + material: TRIPWIRE_HOOK + + key_level_1_epic: + display_name: §l§aForêt Elfique + resource: + generate: false + model_path: "minecraft:item/tripwire_hook" + material: TRIPWIRE_HOOK + + key_level_1_legendary: + display_name: §l§aForêt Elfique + resource: + generate: false + model_path: "minecraft:item/tripwire_hook" + material: TRIPWIRE_HOOK + + key_level_1_master: + display_name: §l§aForêt Elfique + resource: + generate: false + model_path: "minecraft:item/tripwire_hook" + material: TRIPWIRE_HOOK + + key_level_2_common: + display_name: §l§cCroisade Ardente + resource: + generate: false + model_path: "minecraft:item/tripwire_hook" + material: TRIPWIRE_HOOK + + key_level_2_rare: + display_name: §l§cCroisade Ardente + resource: + generate: false + model_path: "minecraft:item/tripwire_hook" + material: TRIPWIRE_HOOK + + key_level_2_epic: + display_name: §l§cCroisade Ardente + resource: + generate: false + model_path: "minecraft:item/tripwire_hook" + material: TRIPWIRE_HOOK + + key_level_2_legendary: + display_name: §l§cCroisade Ardente + resource: + generate: false + model_path: "minecraft:item/tripwire_hook" + material: TRIPWIRE_HOOK + + key_level_2_master: display_name: §l§cCroisade Ardente resource: generate: false model_path: "minecraft:item/tripwire_hook" material: TRIPWIRE_HOOK - key_level_3: + + key_level_3_common: display_name: §l§9Forêt des Elfs de la Nuits resource: generate: false model_path: "minecraft:item/tripwire_hook" material: TRIPWIRE_HOOK - key_level_4: + + key_level_3_rare: + display_name: §l§9Forêt des Elfs de la Nuits + resource: + generate: false + model_path: "minecraft:item/tripwire_hook" + material: TRIPWIRE_HOOK + + key_level_3_epic: + display_name: §l§9Forêt des Elfs de la Nuits + resource: + generate: false + model_path: "minecraft:item/tripwire_hook" + material: TRIPWIRE_HOOK + + key_level_3_legendary: + display_name: §l§9Forêt des Elfs de la Nuits + resource: + generate: false + model_path: "minecraft:item/tripwire_hook" + material: TRIPWIRE_HOOK + + key_level_3_master: + display_name: §l§9Forêt des Elfs de la Nuits + resource: + generate: false + model_path: "minecraft:item/tripwire_hook" + material: TRIPWIRE_HOOK + + key_level_4_common: + display_name: §l§3Aether + resource: + generate: false + model_path: "minecraft:item/tripwire_hook" + material: TRIPWIRE_HOOK + + key_level_4_rare: + display_name: §l§3Aether + resource: + generate: false + model_path: "minecraft:item/tripwire_hook" + material: TRIPWIRE_HOOK + + key_level_4_epic: + display_name: §l§3Aether + resource: + generate: false + model_path: "minecraft:item/tripwire_hook" + material: TRIPWIRE_HOOK + + key_level_4_legendary: + display_name: §l§3Aether + resource: + generate: false + model_path: "minecraft:item/tripwire_hook" + material: TRIPWIRE_HOOK + + key_level_4_master: display_name: §l§3Aether resource: generate: false model_path: "minecraft:item/tripwire_hook" material: TRIPWIRE_HOOK - key_level_5: + + key_level_5_absolute_master: display_name: §l§4Paralysie du Sommeil resource: generate: false