diff --git a/src/main/java/fr/leomelki/loupgarou/MainLg.java b/src/main/java/fr/leomelki/loupgarou/MainLg.java index 8a9b156..abb38af 100644 --- a/src/main/java/fr/leomelki/loupgarou/MainLg.java +++ b/src/main/java/fr/leomelki/loupgarou/MainLg.java @@ -431,6 +431,7 @@ private void loadRoles() { roles.put("Pretre", RPretre.class.getConstructor(LGGame.class)); roles.put("Faucheur", RFaucheur.class.getConstructor(LGGame.class)); roles.put("EnfantSauvage", REnfantSauvage.class.getConstructor(LGGame.class)); + roles.put("ApprentiPretre", fr.leomelki.loupgarou.roles.RApprentiPretre.class.getConstructor(LGGame.class)); } catch (NoSuchMethodException | SecurityException e) { e.printStackTrace(); } diff --git a/src/main/java/fr/leomelki/loupgarou/classes/LGCustomItems.java b/src/main/java/fr/leomelki/loupgarou/classes/LGCustomItems.java index 72c4905..b8e7ac9 100644 --- a/src/main/java/fr/leomelki/loupgarou/classes/LGCustomItems.java +++ b/src/main/java/fr/leomelki/loupgarou/classes/LGCustomItems.java @@ -21,7 +21,7 @@ public class LGCustomItems { static { JSONParser parser = new JSONParser(); try { - JSONObject mappings = (JSONObject)parser.parse("{\"PetiteFille\":{\"\":\"SCUTE\",\"infecte\":\"ORANGE_CONCRETE\",\"infecte_mort\":\"WOODEN_SHOVEL\",\"infecte_maire\":\"SOUL_SAND\",\"maire\":\"EXPERIENCE_BOTTLE\",\"mort\":\"STRING\",\"maire_mort\":\"DARK_OAK_SIGN\",\"infecte_maire_mort\":\"PURPLE_SHULKER_BOX\"},\"LoupGarou\":{\"\":\"OAK_PLANKS\",\"infecte\":\"DRAGON_BREATH\",\"infecte_mort\":\"GOLDEN_PICKAXE\",\"infecte_maire\":\"WITHER_SKELETON_SKULL\",\"maire\":\"TRAPPED_CHEST\",\"maire_mort\":\"BRICK_WALL\",\"mort\":\"MELON\",\"infecte_maire_mort\":\"DARK_OAK_LEAVES\"},\"Corbeau\":{\"infecte_mort\":\"RED_TULIP\",\"infecte\":\"PURPLE_STAINED_GLASS\",\"\":\"HEAVY_WEIGHTED_PRESSURE_PLATE\",\"infecte_maire\":\"PUFFERFISH_BUCKET\",\"maire\":\"DIAMOND_CHESTPLATE\",\"maire_mort\":\"SPRUCE_PLANKS\",\"mort\":\"DARK_OAK_BOAT\",\"infecte_maire_mort\":\"WOODEN_PICKAXE\"},\"LoupGarouBlanc\":{\"infecte_mort\":\"DEAD_TUBE_CORAL_WALL_FAN\",\"infecte\":\"CORNFLOWER\",\"\":\"ANDESITE\",\"infecte_maire\":\"GRINDSTONE\",\"maire\":\"TUBE_CORAL\",\"mort\":\"STONE_PICKAXE\",\"maire_mort\":\"PURPLE_CONCRETE\",\"infecte_maire_mort\":\"CYAN_DYE\"},\"Assassin\":{\"infecte\":\"WITHER_ROSE\",\"\":\"GRAY_CONCRETE_POWDER\",\"infecte_mort\":\"ACACIA_DOOR\",\"infecte_maire\":\"ENCHANTING_TABLE\",\"maire\":\"DEAD_HORN_CORAL_FAN\",\"maire_mort\":\"WOODEN_AXE\",\"mort\":\"HOPPER\",\"infecte_maire_mort\":\"RED_STAINED_GLASS\"},\"Voyante\":{\"infecte_mort\":\"OAK_DOOR\",\"\":\"RED_CONCRETE_POWDER\",\"infecte\":\"END_STONE_BRICKS\",\"infecte_maire\":\"FARMLAND\",\"maire\":\"POPPY\",\"maire_mort\":\"PINK_CONCRETE_POWDER\",\"mort\":\"MUSHROOM_STEM\",\"infecte_maire_mort\":\"WHITE_BANNER\"},\"Dictateur\":{\"\":\"PRISMARINE_SHARD\",\"infecte_mort\":\"CYAN_TERRACOTTA\",\"infecte\":\"CYAN_GLAZED_TERRACOTTA\",\"infecte_maire\":\"REPEATER\",\"maire\":\"GREEN_BED\",\"maire_mort\":\"SPRUCE_TRAPDOOR\",\"mort\":\"DRIED_KELP_BLOCK\",\"infecte_maire_mort\":\"LIME_STAINED_GLASS_PANE\"},\"LoupGarouNoir\":{\"infecte_mort\":\"COBBLESTONE_WALL\",\"\":\"SLIME_BLOCK\",\"infecte\":\"TORCH\",\"infecte_maire\":\"CHORUS_FLOWER\",\"maire\":\"LANTERN\",\"maire_mort\":\"BRAIN_CORAL_WALL_FAN\",\"mort\":\"YELLOW_CARPET\",\"infecte_maire_mort\":\"MOJANG_BANNER_PATTERN\"},\"ChaperonRouge\":{\"\":\"GRASS\",\"infecte\":\"LIME_BANNER\",\"infecte_mort\":\"ORANGE_SHULKER_BOX\",\"infecte_maire\":\"STONE_SLAB\",\"maire\":\"BLUE_GLAZED_TERRACOTTA\",\"mort\":\"PURPLE_TERRACOTTA\",\"maire_mort\":\"YELLOW_DYE\",\"infecte_maire_mort\":\"EMERALD_ORE\"},\"EnfantSauvage\":{\"infecte\":\"GREEN_CARPET\",\"\":\"BLACK_STAINED_GLASS\",\"infecte_mort\":\"CHEST_MINECART\",\"infecte_maire\":\"MAGENTA_STAINED_GLASS\",\"maire\":\"ACACIA_SIGN\",\"mort\":\"GRAY_BANNER\",\"maire_mort\":\"POLISHED_DIORITE_SLAB\",\"infecte_maire_mort\":\"WHITE_STAINED_GLASS_PANE\"},\"Faucheur\":{\"infecte_mort\":\"RED_STAINED_GLASS_PANE\",\"infecte\":\"CYAN_WOOL\",\"\":\"MOSSY_COBBLESTONE_SLAB\",\"infecte_maire\":\"PISTON\",\"maire\":\"GOLDEN_HELMET\",\"maire_mort\":\"BIRCH_FENCE\",\"mort\":\"SKELETON_SKULL\",\"infecte_maire_mort\":\"LIGHT_BLUE_TERRACOTTA\"},\"Cupidon\":{\"\":\"CHORUS_PLANT\",\"infecte_mort\":\"SPRUCE_SIGN\",\"infecte\":\"TRIDENT\",\"infecte_maire\":\"GLOBE_BANNER_PATTERN\",\"maire\":\"YELLOW_STAINED_GLASS_PANE\",\"maire_mort\":\"BROWN_STAINED_GLASS_PANE\",\"mort\":\"GOLDEN_BOOTS\",\"infecte_maire_mort\":\"SEA_LANTERN\"},\"EnfantSauvageLG\":{\"\":\"HORN_CORAL_FAN\",\"infecte_mort\":\"JUNGLE_LOG\",\"infecte\":\"CARTOGRAPHY_TABLE\",\"infecte_maire\":\"BLACK_STAINED_GLASS_PANE\",\"maire\":\"YELLOW_GLAZED_TERRACOTTA\",\"maire_mort\":\"OXEYE_DAISY\",\"mort\":\"STICK\",\"infecte_maire_mort\":\"BROWN_MUSHROOM_BLOCK\"},\"Chasseur\":{\"infecte_mort\":\"COAL\",\"infecte\":\"PRISMARINE_SLAB\",\"\":\"DIORITE\",\"infecte_maire\":\"BLUE_CONCRETE\",\"maire\":\"DEAD_TUBE_CORAL_BLOCK\",\"maire_mort\":\"MAGENTA_TERRACOTTA\",\"mort\":\"CAKE\",\"infecte_maire_mort\":\"YELLOW_WOOL\"},\"Bouffon\":{\"infecte\":\"BIRCH_PLANKS\",\"\":\"LECTERN\",\"infecte_mort\":\"GREEN_CONCRETE_POWDER\",\"infecte_maire\":\"RABBIT_FOOT\",\"maire\":\"FIRE_CORAL_BLOCK\",\"maire_mort\":\"STRIPPED_OAK_WOOD\",\"mort\":\"DEAD_HORN_CORAL_WALL_FAN\",\"infecte_maire_mort\":\"LAPIS_BLOCK\"},\"Detective\":{\"\":\"GLASS_PANE\",\"infecte_mort\":\"RED_BED\",\"infecte\":\"MAGENTA_WOOL\",\"infecte_maire\":\"CHEST\",\"maire\":\"FEATHER\",\"mort\":\"REDSTONE_TORCH\",\"maire_mort\":\"DARK_OAK_BUTTON\",\"infecte_maire_mort\":\"GREEN_WOOL\"},\"GrandMechantLoup\":{\"infecte_mort\":\"LIGHT_BLUE_WOOL\",\"\":\"CHISELED_RED_SANDSTONE\",\"infecte\":\"LIGHT_GRAY_BED\",\"infecte_maire\":\"RABBIT_HIDE\",\"maire\":\"COCOA_BEANS\",\"maire_mort\":\"MILK_BUCKET\",\"mort\":\"PURPLE_GLAZED_TERRACOTTA\",\"infecte_maire_mort\":\"YELLOW_CONCRETE\"},\"Survivant\":{\"\":\"SLIME_BALL\",\"infecte_mort\":\"POPPED_CHORUS_FRUIT\",\"infecte\":\"INFESTED_COBBLESTONE\",\"infecte_maire\":\"GRAY_TERRACOTTA\",\"maire\":\"CHARCOAL\",\"mort\":\"PINK_STAINED_GLASS_PANE\",\"maire_mort\":\"MAGENTA_DYE\",\"infecte_maire_mort\":\"NETHER_BRICK_FENCE\"},\"ChienLoupLG\":{\"\":\"LEATHER_HORSE_ARMOR\",\"infecte\":\"BIRCH_BUTTON\",\"infecte_mort\":\"BLAST_FURNACE\",\"infecte_maire\":\"GLASS_BOTTLE\",\"maire\":\"PODZOL\",\"mort\":\"END_ROD\",\"maire_mort\":\"SPRUCE_LOG\",\"infecte_maire_mort\":\"MAGENTA_CARPET\"},\"Garde\":{\"\":\"BRICK_SLAB\",\"infecte\":\"GRAY_STAINED_GLASS\",\"infecte_mort\":\"DARK_OAK_PLANKS\",\"infecte_maire\":\"PURPUR_SLAB\",\"maire\":\"BLACK_TERRACOTTA\",\"maire_mort\":\"IRON_HELMET\",\"mort\":\"DIRT\",\"infecte_maire_mort\":\"ACACIA_WOOD\"},\"Villageois\":{\"\":\"DEAD_BUSH\",\"infecte_mort\":\"DIAMOND_AXE\",\"infecte\":\"CYAN_BED\",\"infecte_maire\":\"PINK_CONCRETE\",\"maire\":\"LEAD\",\"maire_mort\":\"LIME_CONCRETE\",\"mort\":\"DEAD_BRAIN_CORAL\",\"infecte_maire_mort\":\"SUNFLOWER\"},\"Ange\":{\"\":\"POLISHED_GRANITE_SLAB\",\"infecte\":\"BROWN_BED\",\"infecte_mort\":\"MOSSY_STONE_BRICK_WALL\",\"infecte_maire\":\"DEAD_FIRE_CORAL_WALL_FAN\",\"maire\":\"SANDSTONE\",\"maire_mort\":\"POLISHED_DIORITE\",\"mort\":\"NETHER_BRICK_SLAB\",\"infecte_maire_mort\":\"BONE_MEAL\"},\"ChienLoup\":{\"\":\"GRANITE_SLAB\",\"infecte_mort\":\"JUNGLE_PLANKS\",\"infecte\":\"PAINTING\",\"infecte_maire\":\"MOSSY_COBBLESTONE\",\"maire\":\"SUGAR_CANE\",\"mort\":\"MOSSY_STONE_BRICK_SLAB\",\"maire_mort\":\"RED_BANNER\",\"infecte_maire_mort\":\"END_CRYSTAL\"},\"Medium\":{\"infecte_mort\":\"GRAY_SHULKER_BOX\",\"infecte\":\"LIGHT_BLUE_BANNER\",\"\":\"OAK_TRAPDOOR\",\"infecte_maire\":\"LIGHT_BLUE_STAINED_GLASS_PANE\",\"maire\":\"FERN\",\"maire_mort\":\"WHITE_TERRACOTTA\",\"mort\":\"STICKY_PISTON\",\"infecte_maire_mort\":\"CYAN_SHULKER_BOX\"},\"Pyromane\":{\"\":\"BLUE_ICE\",\"infecte_mort\":\"PURPLE_WOOL\",\"infecte\":\"BEDROCK\",\"infecte_maire\":\"STONE_BRICK_WALL\",\"maire\":\"DEAD_BUBBLE_CORAL_BLOCK\",\"mort\":\"ORANGE_TULIP\",\"maire_mort\":\"PINK_STAINED_GLASS\",\"infecte_maire_mort\":\"GREEN_TERRACOTTA\"},\"Pirate\":{\"infecte\":\"BLUE_STAINED_GLASS\",\"\":\"RED_MUSHROOM_BLOCK\",\"infecte_mort\":\"SPAWNER\",\"infecte_maire\":\"STRIPPED_DARK_OAK_LOG\",\"maire\":\"DROPPER\",\"maire_mort\":\"COBBLESTONE_SLAB\",\"mort\":\"ENDER_CHEST\",\"infecte_maire_mort\":\"IRON_INGOT\"},\"Pretre\":{\"\":\"SNOWBALL\",\"infecte_mort\":\"PINK_BANNER\",\"infecte\":\"ORANGE_BED\",\"infecte_maire\":\"SPRUCE_LEAVES\",\"maire\":\"PRISMARINE_WALL\",\"maire_mort\":\"DEAD_BUBBLE_CORAL\",\"mort\":\"WHITE_SHULKER_BOX\",\"infecte_maire_mort\":\"FLINT\"},\"Sorciere\":{\"\":\"NETHERRACK\",\"infecte_mort\":\"OAK_SIGN\",\"infecte\":\"CONDUIT\",\"infecte_maire\":\"IRON_HORSE_ARMOR\",\"maire\":\"STRIPPED_OAK_LOG\",\"mort\":\"HORN_CORAL_BLOCK\",\"maire_mort\":\"COMPOSTER\",\"infecte_maire_mort\":\"BIRCH_FENCE_GATE\"}}"); + JSONObject mappings = (JSONObject)parser.parse("{\"PetiteFille\":{\"\":\"SCUTE\",\"infecte\":\"ORANGE_CONCRETE\",\"infecte_mort\":\"WOODEN_SHOVEL\",\"infecte_maire\":\"SOUL_SAND\",\"maire\":\"EXPERIENCE_BOTTLE\",\"mort\":\"STRING\",\"maire_mort\":\"DARK_OAK_SIGN\",\"infecte_maire_mort\":\"PURPLE_SHULKER_BOX\"},\"LoupGarou\":{\"\":\"OAK_PLANKS\",\"infecte\":\"DRAGON_BREATH\",\"infecte_mort\":\"GOLDEN_PICKAXE\",\"infecte_maire\":\"WITHER_SKELETON_SKULL\",\"maire\":\"TRAPPED_CHEST\",\"maire_mort\":\"BRICK_WALL\",\"mort\":\"MELON\",\"infecte_maire_mort\":\"DARK_OAK_LEAVES\"},\"Corbeau\":{\"infecte_mort\":\"RED_TULIP\",\"infecte\":\"PURPLE_STAINED_GLASS\",\"\":\"HEAVY_WEIGHTED_PRESSURE_PLATE\",\"infecte_maire\":\"PUFFERFISH_BUCKET\",\"maire\":\"DIAMOND_CHESTPLATE\",\"maire_mort\":\"SPRUCE_PLANKS\",\"mort\":\"DARK_OAK_BOAT\",\"infecte_maire_mort\":\"WOODEN_PICKAXE\"},\"LoupGarouBlanc\":{\"infecte_mort\":\"DEAD_TUBE_CORAL_WALL_FAN\",\"infecte\":\"CORNFLOWER\",\"\":\"ANDESITE\",\"infecte_maire\":\"GRINDSTONE\",\"maire\":\"TUBE_CORAL\",\"mort\":\"STONE_PICKAXE\",\"maire_mort\":\"PURPLE_CONCRETE\",\"infecte_maire_mort\":\"CYAN_DYE\"},\"Assassin\":{\"infecte\":\"WITHER_ROSE\",\"\":\"GRAY_CONCRETE_POWDER\",\"infecte_mort\":\"ACACIA_DOOR\",\"infecte_maire\":\"ENCHANTING_TABLE\",\"maire\":\"DEAD_HORN_CORAL_FAN\",\"maire_mort\":\"WOODEN_AXE\",\"mort\":\"HOPPER\",\"infecte_maire_mort\":\"RED_STAINED_GLASS\"},\"Voyante\":{\"infecte_mort\":\"OAK_DOOR\",\"\":\"RED_CONCRETE_POWDER\",\"infecte\":\"END_STONE_BRICKS\",\"infecte_maire\":\"FARMLAND\",\"maire\":\"POPPY\",\"maire_mort\":\"PINK_CONCRETE_POWDER\",\"mort\":\"MUSHROOM_STEM\",\"infecte_maire_mort\":\"WHITE_BANNER\"},\"Dictateur\":{\"\":\"PRISMARINE_SHARD\",\"infecte_mort\":\"CYAN_TERRACOTTA\",\"infecte\":\"CYAN_GLAZED_TERRACOTTA\",\"infecte_maire\":\"REPEATER\",\"maire\":\"GREEN_BED\",\"maire_mort\":\"SPRUCE_TRAPDOOR\",\"mort\":\"DRIED_KELP_BLOCK\",\"infecte_maire_mort\":\"LIME_STAINED_GLASS_PANE\"},\"LoupGarouNoir\":{\"infecte_mort\":\"COBBLESTONE_WALL\",\"\":\"SLIME_BLOCK\",\"infecte\":\"TORCH\",\"infecte_maire\":\"CHORUS_FLOWER\",\"maire\":\"LANTERN\",\"maire_mort\":\"BRAIN_CORAL_WALL_FAN\",\"mort\":\"YELLOW_CARPET\",\"infecte_maire_mort\":\"MOJANG_BANNER_PATTERN\"},\"ChaperonRouge\":{\"\":\"GRASS\",\"infecte\":\"LIME_BANNER\",\"infecte_mort\":\"ORANGE_SHULKER_BOX\",\"infecte_maire\":\"STONE_SLAB\",\"maire\":\"BLUE_GLAZED_TERRACOTTA\",\"mort\":\"PURPLE_TERRACOTTA\",\"maire_mort\":\"YELLOW_DYE\",\"infecte_maire_mort\":\"EMERALD_ORE\"},\"EnfantSauvage\":{\"infecte\":\"GREEN_CARPET\",\"\":\"BLACK_STAINED_GLASS\",\"infecte_mort\":\"CHEST_MINECART\",\"infecte_maire\":\"MAGENTA_STAINED_GLASS\",\"maire\":\"ACACIA_SIGN\",\"mort\":\"GRAY_BANNER\",\"maire_mort\":\"POLISHED_DIORITE_SLAB\",\"infecte_maire_mort\":\"WHITE_STAINED_GLASS_PANE\"},\"Faucheur\":{\"infecte_mort\":\"RED_STAINED_GLASS_PANE\",\"infecte\":\"CYAN_WOOL\",\"\":\"MOSSY_COBBLESTONE_SLAB\",\"infecte_maire\":\"PISTON\",\"maire\":\"GOLDEN_HELMET\",\"maire_mort\":\"BIRCH_FENCE\",\"mort\":\"SKELETON_SKULL\",\"infecte_maire_mort\":\"LIGHT_BLUE_TERRACOTTA\"},\"Cupidon\":{\"\":\"CHORUS_PLANT\",\"infecte_mort\":\"SPRUCE_SIGN\",\"infecte\":\"TRIDENT\",\"infecte_maire\":\"GLOBE_BANNER_PATTERN\",\"maire\":\"YELLOW_STAINED_GLASS_PANE\",\"maire_mort\":\"BROWN_STAINED_GLASS_PANE\",\"mort\":\"GOLDEN_BOOTS\",\"infecte_maire_mort\":\"SEA_LANTERN\"},\"EnfantSauvageLG\":{\"\":\"HORN_CORAL_FAN\",\"infecte_mort\":\"JUNGLE_LOG\",\"infecte\":\"CARTOGRAPHY_TABLE\",\"infecte_maire\":\"BLACK_STAINED_GLASS_PANE\",\"maire\":\"YELLOW_GLAZED_TERRACOTTA\",\"maire_mort\":\"OXEYE_DAISY\",\"mort\":\"STICK\",\"infecte_maire_mort\":\"BROWN_MUSHROOM_BLOCK\"},\"Chasseur\":{\"infecte_mort\":\"COAL\",\"infecte\":\"PRISMARINE_SLAB\",\"\":\"DIORITE\",\"infecte_maire\":\"BLUE_CONCRETE\",\"maire\":\"DEAD_TUBE_CORAL_BLOCK\",\"maire_mort\":\"MAGENTA_TERRACOTTA\",\"mort\":\"CAKE\",\"infecte_maire_mort\":\"YELLOW_WOOL\"},\"Bouffon\":{\"infecte\":\"BIRCH_PLANKS\",\"\":\"LECTERN\",\"infecte_mort\":\"GREEN_CONCRETE_POWDER\",\"infecte_maire\":\"RABBIT_FOOT\",\"maire\":\"FIRE_CORAL_BLOCK\",\"maire_mort\":\"STRIPPED_OAK_WOOD\",\"mort\":\"DEAD_HORN_CORAL_WALL_FAN\",\"infecte_maire_mort\":\"LAPIS_BLOCK\"},\"Detective\":{\"\":\"GLASS_PANE\",\"infecte_mort\":\"RED_BED\",\"infecte\":\"MAGENTA_WOOL\",\"infecte_maire\":\"CHEST\",\"maire\":\"FEATHER\",\"mort\":\"REDSTONE_TORCH\",\"maire_mort\":\"DARK_OAK_BUTTON\",\"infecte_maire_mort\":\"GREEN_WOOL\"},\"GrandMechantLoup\":{\"infecte_mort\":\"LIGHT_BLUE_WOOL\",\"\":\"CHISELED_RED_SANDSTONE\",\"infecte\":\"LIGHT_GRAY_BED\",\"infecte_maire\":\"RABBIT_HIDE\",\"maire\":\"COCOA_BEANS\",\"maire_mort\":\"MILK_BUCKET\",\"mort\":\"PURPLE_GLAZED_TERRACOTTA\",\"infecte_maire_mort\":\"YELLOW_CONCRETE\"},\"Survivant\":{\"\":\"SLIME_BALL\",\"infecte_mort\":\"POPPED_CHORUS_FRUIT\",\"infecte\":\"INFESTED_COBBLESTONE\",\"infecte_maire\":\"GRAY_TERRACOTTA\",\"maire\":\"CHARCOAL\",\"mort\":\"PINK_STAINED_GLASS_PANE\",\"maire_mort\":\"MAGENTA_DYE\",\"infecte_maire_mort\":\"NETHER_BRICK_FENCE\"},\"ChienLoupLG\":{\"\":\"LEATHER_HORSE_ARMOR\",\"infecte\":\"BIRCH_BUTTON\",\"infecte_mort\":\"BLAST_FURNACE\",\"infecte_maire\":\"GLASS_BOTTLE\",\"maire\":\"PODZOL\",\"mort\":\"END_ROD\",\"maire_mort\":\"SPRUCE_LOG\",\"infecte_maire_mort\":\"MAGENTA_CARPET\"},\"Garde\":{\"\":\"BRICK_SLAB\",\"infecte\":\"GRAY_STAINED_GLASS\",\"infecte_mort\":\"DARK_OAK_PLANKS\",\"infecte_maire\":\"PURPUR_SLAB\",\"maire\":\"BLACK_TERRACOTTA\",\"maire_mort\":\"IRON_HELMET\",\"mort\":\"DIRT\",\"infecte_maire_mort\":\"ACACIA_WOOD\"},\"Villageois\":{\"\":\"DEAD_BUSH\",\"infecte_mort\":\"DIAMOND_AXE\",\"infecte\":\"CYAN_BED\",\"infecte_maire\":\"PINK_CONCRETE\",\"maire\":\"LEAD\",\"maire_mort\":\"LIME_CONCRETE\",\"mort\":\"DEAD_BRAIN_CORAL\",\"infecte_maire_mort\":\"SUNFLOWER\"},\"Ange\":{\"\":\"POLISHED_GRANITE_SLAB\",\"infecte\":\"BROWN_BED\",\"infecte_mort\":\"MOSSY_STONE_BRICK_WALL\",\"infecte_maire\":\"DEAD_FIRE_CORAL_WALL_FAN\",\"maire\":\"SANDSTONE\",\"maire_mort\":\"POLISHED_DIORITE\",\"mort\":\"NETHER_BRICK_SLAB\",\"infecte_maire_mort\":\"BONE_MEAL\"},\"ChienLoup\":{\"\":\"GRANITE_SLAB\",\"infecte_mort\":\"JUNGLE_PLANKS\",\"infecte\":\"PAINTING\",\"infecte_maire\":\"MOSSY_COBBLESTONE\",\"maire\":\"SUGAR_CANE\",\"mort\":\"MOSSY_STONE_BRICK_SLAB\",\"maire_mort\":\"RED_BANNER\",\"infecte_maire_mort\":\"END_CRYSTAL\"},\"Medium\":{\"infecte_mort\":\"GRAY_SHULKER_BOX\",\"infecte\":\"LIGHT_BLUE_BANNER\",\"\":\"OAK_TRAPDOOR\",\"infecte_maire\":\"LIGHT_BLUE_STAINED_GLASS_PANE\",\"maire\":\"FERN\",\"maire_mort\":\"WHITE_TERRACOTTA\",\"mort\":\"STICKY_PISTON\",\"infecte_maire_mort\":\"CYAN_SHULKER_BOX\"},\"Pyromane\":{\"\":\"BLUE_ICE\",\"infecte_mort\":\"PURPLE_WOOL\",\"infecte\":\"BEDROCK\",\"infecte_maire\":\"STONE_BRICK_WALL\",\"maire\":\"DEAD_BUBBLE_CORAL_BLOCK\",\"mort\":\"ORANGE_TULIP\",\"maire_mort\":\"PINK_STAINED_GLASS\",\"infecte_maire_mort\":\"GREEN_TERRACOTTA\"},\"Pirate\":{\"infecte\":\"BLUE_STAINED_GLASS\",\"\":\"RED_MUSHROOM_BLOCK\",\"infecte_mort\":\"SPAWNER\",\"infecte_maire\":\"STRIPPED_DARK_OAK_LOG\",\"maire\":\"DROPPER\",\"maire_mort\":\"COBBLESTONE_SLAB\",\"mort\":\"ENDER_CHEST\",\"infecte_maire_mort\":\"IRON_INGOT\"},\"Pretre\":{\"\":\"SNOWBALL\",\"infecte_mort\":\"PINK_BANNER\",\"infecte\":\"ORANGE_BED\",\"infecte_maire\":\"SPRUCE_LEAVES\",\"maire\":\"PRISMARINE_WALL\",\"maire_mort\":\"DEAD_BUBBLE_CORAL\",\"mort\":\"WHITE_SHULKER_BOX\",\"infecte_maire_mort\":\"FLINT\"},\"ApprentiPretre\":{\"\":\"SNOWBALL\",\"infecte_mort\":\"PINK_BANNER\",\"infecte\":\"ORANGE_BED\",\"infecte_maire\":\"SPRUCE_LEAVES\",\"maire\":\"PRISMARINE_WALL\",\"maire_mort\":\"DEAD_BUBBLE_CORAL\",\"mort\":\"WHITE_SHULKER_BOX\",\"infecte_maire_mort\":\"FLINT\"},\"Sorciere\":{\"\":\"NETHERRACK\",\"infecte_mort\":\"OAK_SIGN\",\"infecte\":\"CONDUIT\",\"infecte_maire\":\"IRON_HORSE_ARMOR\",\"maire\":\"STRIPPED_OAK_LOG\",\"mort\":\"HORN_CORAL_BLOCK\",\"maire_mort\":\"COMPOSTER\",\"infecte_maire_mort\":\"BIRCH_FENCE_GATE\"}}"); for(Object key : mappings.keySet()) { for(Object key : mappings.keySet()) { HashMap map = new HashMap(); JSONObject array = (JSONObject) mappings.get(key); diff --git a/src/main/java/fr/leomelki/loupgarou/roles/RApprentiPretre.java b/src/main/java/fr/leomelki/loupgarou/roles/RApprentiPretre.java new file mode 100644 index 0000000..cd73cac --- /dev/null +++ b/src/main/java/fr/leomelki/loupgarou/roles/RApprentiPretre.java @@ -0,0 +1,299 @@ +package fr.leomelki.loupgarou.roles; + +import com.comphenix.protocol.wrappers.WrappedDataWatcher; +import com.comphenix.protocol.wrappers.WrappedWatchableObject; +import fr.leomelki.com.comphenix.packetwrapper.WrapperPlayServerEntityMetadata; +import fr.leomelki.com.comphenix.packetwrapper.WrapperPlayServerHeldItemSlot; +import fr.leomelki.loupgarou.MainLg; +import fr.leomelki.loupgarou.classes.LGCustomItems; +import fr.leomelki.loupgarou.classes.LGGame; +import fr.leomelki.loupgarou.classes.LGPlayer; +import fr.leomelki.loupgarou.events.LGPreDayStartEvent; +import fr.leomelki.loupgarou.utils.VariousUtils; +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.craftbukkit.v1_15_R1.inventory.CraftInventoryCustom; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.event.inventory.InventoryCloseEvent; +import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.potion.PotionEffectType; +import org.bukkit.scheduler.BukkitRunnable; + +import java.util.ArrayList; +import java.util.Arrays; + +public class RApprentiPretre extends fr.leomelki.loupgarou.roles.Role { + static ItemStack[] items = new ItemStack[9]; + static { + items[3] = new ItemStack(Material.IRON_NUGGET); + ItemMeta meta = items[3].getItemMeta(); + meta.setDisplayName("§7§lNe rien faire"); + meta.setLore(Arrays.asList("§8Passez votre tour")); + items[3].setItemMeta(meta); + items[5] = new ItemStack(Material.ROTTEN_FLESH); + meta = items[5].getItemMeta(); + meta.setDisplayName("§2§lRessuciter"); + meta.setLore(Arrays.asList( + "§8Tu peux ressusciter une §a§lpersonne", + "§8mort précédemment pendant la partie.")); + items[5].setItemMeta(meta); + } + + public RApprentiPretre(LGGame game) { + super(game); + } + + @Override + public String getName() { + return "§a§lApprenti Prêtre"; + } + + @Override + public String getFriendlyName() { + return "de l'"+getName(); + } + + @Override + public String getShortDescription() { + return "Tu gagnes avec le §a§lVillage"; + } + + @Override + public String getDescription() { + return "Tu gagnes avec le §a§lVillage§f. Une fois dans la partie, tu peux ressusciter parmi les morts un membre du §a§lVillage§f, qui reviendra à la vie en étant soit Villageois soit Loup-garou."; + } + + @Override + public String getTask() { + return "Veux-tu ressusciter un allié défunt ?"; + } + + @Override + public String getBroadcastedTask() { + return "L'"+getName()+"§9 récite ses ouvrages..."; + } + @Override + public fr.leomelki.loupgarou.roles.RoleType getType() { + return fr.leomelki.loupgarou.roles.RoleType.VILLAGER; + } + @Override + public fr.leomelki.loupgarou.roles.RoleWinType getWinType() { + return fr.leomelki.loupgarou.roles.RoleWinType.VILLAGE; + } + + @Override + public int getTimeout() { + return 30; + } + @Override + public boolean hasPlayersLeft() { + for(LGPlayer imam : getPlayers()) + for(LGPlayer lgp : getGame().getInGame()) + if(lgp.isDead()) + return super.hasPlayersLeft(); + return false; + } + + Runnable callback; + + public void openInventory(Player player) { + inMenu = true; + Inventory inventory = Bukkit.createInventory(null, 9, "§7Veux-tu réssuciter quelqu'un ?"); + inventory.setContents(items.clone()); + player.closeInventory(); + player.openInventory(inventory); + } + WrappedDataWatcher.WrappedDataWatcherObject invisible = new WrappedDataWatcher.WrappedDataWatcherObject(0, WrappedDataWatcher.Registry.get(Byte.class)); + @SuppressWarnings("deprecation") + @Override + protected void onNightTurn(LGPlayer player, Runnable callback) { + player.showView(); + for(LGPlayer lgp : getGame().getInGame()) + if(lgp.isDead() && (lgp.getRoleType() == fr.leomelki.loupgarou.roles.RoleType.VILLAGER || lgp.getRoleType() == player.getRoleType())){ + if(lgp.getPlayer() != null) { + player.getPlayer().showPlayer(lgp.getPlayer()); + WrapperPlayServerEntityMetadata meta = new WrapperPlayServerEntityMetadata(); + meta.setEntityID(lgp.getPlayer().getEntityId()); + meta.setMetadata(Arrays.asList(new WrappedWatchableObject(invisible, (byte)0))); + meta.sendPacket(player.getPlayer()); + } + }else + player.getPlayer().hidePlayer(lgp.getPlayer()); + this.callback = callback; + openInventory(player.getPlayer()); + } + @Override + protected void onNightTurnTimeout(LGPlayer player) { + player.getPlayer().getInventory().setItem(8, null); + player.stopChoosing(); + closeInventory(player.getPlayer()); + player.canSelectDead = false; + player.getPlayer().updateInventory(); + hidePlayers(player); + player.sendMessage("§6Tu n'as rien fait cette nuit."); + } + + private void hidePlayers(LGPlayer player) { + if(player.getPlayer() != null) { + for(LGPlayer lgp : getGame().getInGame()) + if(lgp.getPlayer() != null && lgp != player) + player.getPlayer().hidePlayer(lgp.getPlayer()); + } + } + + boolean inMenu = false; + ArrayList ressucited = new ArrayList(); + + private void closeInventory(Player p) { + inMenu = false; + p.closeInventory(); + } + @EventHandler + public void onInventoryClick(InventoryClickEvent e) { + ItemStack item = e.getCurrentItem(); + Player player = (Player)e.getWhoClicked(); + LGPlayer lgp = LGPlayer.thePlayer(player); + + if(lgp.getRole() != this || item == null || item.getItemMeta() == null)return; + + if(item.getItemMeta().getDisplayName().equals(items[3].getItemMeta().getDisplayName())) { + e.setCancelled(true); + closeInventory(player); + lgp.sendMessage("§6Tu n'as rien fait cette nuit."); + hidePlayers(lgp); + lgp.hideView(); + callback.run(); + }else if(item.getItemMeta().getDisplayName().equals(items[5].getItemMeta().getDisplayName())) { + e.setCancelled(true); + closeInventory(player); + player.getInventory().setItem(8, items[3]); + player.updateInventory(); + //Pour éviter les missclick + WrapperPlayServerHeldItemSlot held = new WrapperPlayServerHeldItemSlot(); + held.setSlot(0); + held.sendPacket(player); + lgp.sendMessage("§6Choisissez qui réssuciter."); + lgp.canSelectDead = true; + lgp.choose(new LGPlayer.LGChooseCallback() { + + @Override + public void callback(LGPlayer choosen) { + if(choosen != null) { + if(!choosen.isDead()) + lgp.sendMessage("§7§l"+choosen.getName()+"§c n'est pas mort."); + if(lgp.getRoleType() == fr.leomelki.loupgarou.roles.RoleType.LOUP_GAROU) { + lgp.sendMessage("§7§l"+choosen.getName()+"§c ne faisait pas partie du §a§lVillage§6."); + }else { + player.getInventory().setItem(8, null); + player.updateInventory(); + lgp.stopChoosing(); + lgp.canSelectDead = false; + lgp.sendMessage("§6Tu essaies de ramené §7§l"+choosen.getName()+"§6 à la vie."); + lgp.sendActionBarMessage("§7§l"+choosen.getName()+"§6 sera réssucité"); + + + ressucited.add(choosen); + getPlayers().remove(lgp);//Pour éviter qu'il puisse sauver plusieurs personnes. + choosen.sendMessage("§6Tu vas être réssucité, regarde bien ton rôle au réveil."); + hidePlayers(lgp); + lgp.hideView(); + callback.run(); + } + } + } + }, lgp); + } + } + @EventHandler + public void onClick(PlayerInteractEvent e) { + Player player = e.getPlayer(); + LGPlayer lgp = LGPlayer.thePlayer(player); + if(lgp.getRole() == this) { + if(e.getItem() != null && e.getItem().hasItemMeta() && e.getItem().getItemMeta().getDisplayName().equals(items[3].getItemMeta().getDisplayName())) { + e.setCancelled(true); + player.getInventory().setItem(8, null); + player.updateInventory(); + lgp.stopChoosing(); + lgp.sendMessage("§6Tu n'as rien fait cette nuit."); + lgp.canSelectDead = false; + hidePlayers(lgp); + callback.run(); + } + } + } + + @EventHandler(priority = EventPriority.HIGHEST) + public void onDayStart(LGPreDayStartEvent e) { + if(e.getGame() == getGame()) + if(ressucited.size() > 0) { + for(LGPlayer lgp : ressucited) { + int random = (int)(Math.random() * ((1) + 1)); + if(lgp.getPlayer() == null || !lgp.isDead()) + continue; + lgp.setDead(false); + lgp.getCache().reset(); + + System.out.println(random); + + if(random == 0){ // il devient Villageois + fr.leomelki.loupgarou.roles.RVillageois villagers = null; + for(fr.leomelki.loupgarou.roles.Role role : getGame().getRoles()) + if(role instanceof fr.leomelki.loupgarou.roles.RVillageois) + villagers = (fr.leomelki.loupgarou.roles.RVillageois)role; + if(villagers == null) + getGame().getRoles().add(villagers = new fr.leomelki.loupgarou.roles.RVillageois(getGame())); + villagers.join(lgp, true);//Le joueur réssucité rejoint les villageois. + lgp.setRole(villagers); + + } else if(random == 1){ // il devient LG + RVillageoisLG villageoisLG = null; + for(fr.leomelki.loupgarou.roles.Role role : getGame().getRoles()) + if(role instanceof RVillageoisLG) + villageoisLG = (RVillageoisLG) role; + if(villageoisLG == null) + getGame().getRoles().add(villageoisLG = new RVillageoisLG(getGame())); + lgp.setRole(villageoisLG); + villageoisLG.join(lgp, true);//Le joueur réssucité rejoint les villageoisLG. + } + + lgp.getPlayer().removePotionEffect(PotionEffectType.INVISIBILITY); + lgp.getPlayer().getInventory().setHelmet(null); + lgp.getPlayer().updateInventory(); + LGCustomItems.updateItem(lgp); + lgp.joinChat(getGame().getDayChat());//Pour qu'il ne parle plus dans le chat des morts (et ne le voit plus) et qu'il parle dans le chat des vivants + VariousUtils.setWarning(lgp.getPlayer(), true); + + getGame().updateRoleScoreboard(); + + getGame().broadcastMessage("§7§l"+lgp.getName()+"§6 a été ressuscité cette nuit."); + + for(LGPlayer player : getGame().getInGame()) + if(player.getPlayer() != null && player != lgp) { + player.getPlayer().showPlayer(lgp.getPlayer()); + } + } + ressucited.clear(); + } + } + @EventHandler + public void onQuitInventory(InventoryCloseEvent e) { + if(e.getInventory() instanceof CraftInventoryCustom) { + LGPlayer player = LGPlayer.thePlayer((Player)e.getPlayer()); + if(player.getRole() == this && inMenu) { + new BukkitRunnable() { + + @Override + public void run() { + e.getPlayer().openInventory(e.getInventory()); + } + }.runTaskLater(MainLg.getInstance(), 1); + } + } + } +} diff --git a/src/main/java/fr/leomelki/loupgarou/roles/RoleSort.java b/src/main/java/fr/leomelki/loupgarou/roles/RoleSort.java index 4b90a95..64426d7 100644 --- a/src/main/java/fr/leomelki/loupgarou/roles/RoleSort.java +++ b/src/main/java/fr/leomelki/loupgarou/roles/RoleSort.java @@ -10,6 +10,7 @@ public enum RoleSort { Detective, Dictateur, Pretre, + ApprentiPretre, LoupGarou, LoupGarouNoir, GrandMechantLoup,