From b10553923a511d0a72feb8294f68806bba8f7aa6 Mon Sep 17 00:00:00 2001 From: boy0001 Date: Fri, 27 Feb 2015 18:50:16 +1100 Subject: [PATCH] Added default templates --- PlotSquared/pom.xml | 6 + .../plot/PlotSquared.java | 52 ++ .../plot/commands/Template.java | 45 +- .../plot/generator/HybridPlotManager.java | 8 +- .../plot/object/PlotManager.java | 3 +- .../plot/object/schematic/ItemType.java | 643 ++++++++++++++++++ .../plot/object/schematic/StateWrapper.java | 5 +- .../plot/util/bukkit/UUIDHandler.java | 4 - .../src/main/resources/skyblock.template | Bin 0 -> 1082 bytes PlotSquared/src/main/resources/town.template | Bin 0 -> 1771 bytes 10 files changed, 733 insertions(+), 33 deletions(-) create mode 100644 PlotSquared/src/main/java/com/intellectualcrafters/plot/object/schematic/ItemType.java create mode 100644 PlotSquared/src/main/resources/skyblock.template create mode 100644 PlotSquared/src/main/resources/town.template diff --git a/PlotSquared/pom.xml b/PlotSquared/pom.xml index a7c895e7a..57f9da66d 100644 --- a/PlotSquared/pom.xml +++ b/PlotSquared/pom.xml @@ -26,6 +26,12 @@ LICENSE + + town.template + + + skyblock.template + diff --git a/PlotSquared/src/main/java/com/intellectualcrafters/plot/PlotSquared.java b/PlotSquared/src/main/java/com/intellectualcrafters/plot/PlotSquared.java index 9a8b4d047..221aa7046 100644 --- a/PlotSquared/src/main/java/com/intellectualcrafters/plot/PlotSquared.java +++ b/PlotSquared/src/main/java/com/intellectualcrafters/plot/PlotSquared.java @@ -1,6 +1,8 @@ package com.intellectualcrafters.plot; import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; import java.io.IOException; import java.sql.Connection; import java.sql.DatabaseMetaData; @@ -17,6 +19,8 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Set; import java.util.UUID; +import java.util.zip.ZipEntry; +import java.util.zip.ZipInputStream; import net.milkbowl.vault.economy.Economy; @@ -72,6 +76,7 @@ public class PlotSquared { public static File storageFile; public static YamlConfiguration storage; public static PlotSquared THIS = null; // This class + public static File FILE = null; // This file public static IPlotMain IMP = null; // Specific implementation of PlotSquared public static String VERSION = null; public static TaskManager TASK = null; @@ -410,6 +415,12 @@ public class PlotSquared { public PlotSquared(final IPlotMain imp_class) { THIS = this; IMP = imp_class; + try { + FILE = new File(PlotSquared.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath()); + } + catch (Exception e) { + log("Could not determine file path"); + } VERSION = IMP.getVersion(); economy = IMP.getEconomy(); C.setupTranslations(); @@ -469,6 +480,47 @@ public class PlotSquared { if (Settings.AUTO_CLEAR) { ExpireManager.runTask(); } + // Copy files + copyFile("town.template"); + copyFile("skyblock.template"); + } + + public void copyFile(String file) { + try { + byte[] buffer = new byte[2048]; + File output = PlotSquared.IMP.getDirectory(); + if (!output.exists()) { + output.mkdirs(); + } + File newFile = new File((output + File.separator + "templates" + File.separator + file)); + if (newFile.exists()) { + return; + } + ZipInputStream zis = new ZipInputStream(new FileInputStream(FILE)); + ZipEntry ze = zis.getNextEntry(); + while (ze != null) { + String name = ze.getName(); + if (name.equals(file)) { + new File(newFile.getParent()).mkdirs(); + FileOutputStream fos = new FileOutputStream(newFile); + int len; + while ((len = zis.read(buffer)) > 0) { + fos.write(buffer, 0, len); + } + fos.close(); + ze = null; + } + else { + ze = zis.getNextEntry(); + } + } + zis.closeEntry(); + zis.close(); + } + catch (Exception e) { + e.printStackTrace(); + log("&cCould not save " + file); + } } public void disable() { diff --git a/PlotSquared/src/main/java/com/intellectualcrafters/plot/commands/Template.java b/PlotSquared/src/main/java/com/intellectualcrafters/plot/commands/Template.java index b9ba04316..4da7e0413 100644 --- a/PlotSquared/src/main/java/com/intellectualcrafters/plot/commands/Template.java +++ b/PlotSquared/src/main/java/com/intellectualcrafters/plot/commands/Template.java @@ -113,7 +113,14 @@ public class Template extends SubCommand { TaskManager.runTaskAsync(new Runnable() { @Override public void run() { - manager.exportTemplate(plotworld); + try { + manager.exportTemplate(plotworld); + } + catch (Exception e) { + e.printStackTrace(); + MainUtil.sendMessage(plr, "Failed: " + e.getMessage()); + return; + } MainUtil.sendMessage(plr, "Done!"); } }); @@ -159,30 +166,26 @@ public class Template extends SubCommand { } public static byte[] getBytes(PlotWorld plotworld) { + ConfigurationSection section = PlotSquared.config.getConfigurationSection("worlds." + plotworld.worldname); YamlConfiguration config = new YamlConfiguration(); - ConfigurationSection section = config.getConfigurationSection(""); - plotworld.saveConfiguration(section); + for (String key : section.getKeys(true)) { + config.set(key, section.get(key)); + } return config.saveToString().getBytes(); } - public static boolean zipAll(final String world, Set files) { - try { - File output = new File(PlotSquared.IMP.getDirectory() + File.separator + "templates"); - output.mkdirs(); - FileOutputStream fos = new FileOutputStream(output + File.separator + world + ".template"); - ZipOutputStream zos = new ZipOutputStream(fos); - - for (FileBytes file : files) { - ZipEntry ze = new ZipEntry(file.path); - zos.putNextEntry(ze); - zos.write(file.data); - } - zos.closeEntry(); - zos.close(); - return true; - } catch (final IOException ex) { - ex.printStackTrace(); - return false; + public static void zipAll(final String world, Set files) throws IOException { + File output = new File(PlotSquared.IMP.getDirectory() + File.separator + "templates"); + output.mkdirs(); + FileOutputStream fos = new FileOutputStream(output + File.separator + world + ".template"); + ZipOutputStream zos = new ZipOutputStream(fos); + + for (FileBytes file : files) { + ZipEntry ze = new ZipEntry(file.path); + zos.putNextEntry(ze); + zos.write(file.data); } + zos.closeEntry(); + zos.close(); } } diff --git a/PlotSquared/src/main/java/com/intellectualcrafters/plot/generator/HybridPlotManager.java b/PlotSquared/src/main/java/com/intellectualcrafters/plot/generator/HybridPlotManager.java index 7a9b19c9d..6a2518498 100644 --- a/PlotSquared/src/main/java/com/intellectualcrafters/plot/generator/HybridPlotManager.java +++ b/PlotSquared/src/main/java/com/intellectualcrafters/plot/generator/HybridPlotManager.java @@ -21,6 +21,7 @@ package com.intellectualcrafters.plot.generator; import java.io.File; +import java.io.IOException; import java.nio.file.Files; import java.util.Arrays; import java.util.HashSet; @@ -37,11 +38,10 @@ import com.intellectualcrafters.plot.util.MainUtil; import com.intellectualcrafters.plot.util.TaskManager; import com.intellectualcrafters.plot.util.bukkit.BukkitUtil; -@SuppressWarnings("deprecation") public class HybridPlotManager extends ClassicPlotManager { @Override - public void exportTemplate(PlotWorld plotworld) { + public void exportTemplate(PlotWorld plotworld) throws IOException { HashSet files = new HashSet<>(Arrays.asList(new FileBytes("templates/" + "tmp-data.yml", Template.getBytes(plotworld)))); String psRoot = PlotSquared.IMP.getDirectory() + File.separator; String dir = "schematics" + File.separator + "GEN_ROAD_SCHEMATIC" + File.separator + plotworld.worldname + File.separator; @@ -52,11 +52,11 @@ public class HybridPlotManager extends ClassicPlotManager { files.add(new FileBytes(newDir + "sideroad.schematic", Files.readAllBytes(sideroad.toPath()))); } File intersection = new File(psRoot + dir + "intersection.schematic"); - if (sideroad.exists()) { + if (intersection.exists()) { files.add(new FileBytes(newDir + "intersection.schematic", Files.readAllBytes(intersection.toPath()))); } File plot = new File(psRoot + dir + "plot.schematic"); - if (sideroad.exists()) { + if (plot.exists()) { files.add(new FileBytes(newDir + "plot.schematic", Files.readAllBytes(plot.toPath()))); } } diff --git a/PlotSquared/src/main/java/com/intellectualcrafters/plot/object/PlotManager.java b/PlotSquared/src/main/java/com/intellectualcrafters/plot/object/PlotManager.java index ab4a7b6b9..59127e80c 100644 --- a/PlotSquared/src/main/java/com/intellectualcrafters/plot/object/PlotManager.java +++ b/PlotSquared/src/main/java/com/intellectualcrafters/plot/object/PlotManager.java @@ -20,6 +20,7 @@ //////////////////////////////////////////////////////////////////////////////////////////////////// package com.intellectualcrafters.plot.object; +import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; @@ -86,7 +87,7 @@ public abstract class PlotManager { public abstract boolean finishPlotUnlink(final PlotWorld plotworld, final ArrayList plotIds); - public void exportTemplate(PlotWorld plotworld) { + public void exportTemplate(PlotWorld plotworld) throws IOException { HashSet files = new HashSet<>(Arrays.asList(new FileBytes("templates/" + "tmp-data.yml", Template.getBytes(plotworld)))); Template.zipAll(plotworld.worldname, files); } diff --git a/PlotSquared/src/main/java/com/intellectualcrafters/plot/object/schematic/ItemType.java b/PlotSquared/src/main/java/com/intellectualcrafters/plot/object/schematic/ItemType.java new file mode 100644 index 000000000..30bcc84ab --- /dev/null +++ b/PlotSquared/src/main/java/com/intellectualcrafters/plot/object/schematic/ItemType.java @@ -0,0 +1,643 @@ +package com.intellectualcrafters.plot.object.schematic; + +import java.util.EnumSet; +import java.util.HashMap; +import java.util.Map; + +public enum ItemType { + AIR("air", 0), + STONE("stone", 1), + GRANITE("stone", 1, 1), + POLISHED_GRANITE("stone", 1, 2), + DIORITE("stone", 1, 3), + POLISHED_DIORITE("stone", 1, 4), + ANDESITE("stone", 1, 5), + POLISHED_ANDESITE("stone", 1, 6), + GRASS("grass", 2), + DIRT("dirt", 3), + COARSE_DIRT("dirt", 3, 1), + PODZOL("dirt", 3, 2), + COBBLESTONE("cobblestone", 4), + OAK_WOOD_PLANK("planks", 5), + SPRUCE_WOOD_PLANK("planks", 5, 1), + BIRCH_WOOD_PLANK("planks", 5, 2), + JUNGLE_WOOD_PLANK("planks", 5, 3), + ACACIA_WOOD_PLANK("planks", 5, 4), + DARK_OAK_WOOD_PLANK("planks", 5, 5), + OAK_SAPLING("sapling", 6), + SPRUCE_SAPLING("sapling", 6, 1), + BIRCH_SAPLING("sapling", 6, 2), + JUNGLE_SAPLING("sapling", 6, 3), + ACACIA_SAPLING("sapling", 6, 4), + DARK_OAK_SAPLING("sapling", 6, 5), + BEDROCK("bedrock", 7), + FLOWING_WATER("flowing_water", 8), + STILL_WATER("water", 9), + FLOWING_LAVA("flowing_lava", 10), + STILL_LAVA("lava", 11), + SAND("sand", 12), + RED_SAND("sand", 12, 1), + GRAVEL("gravel", 13), + GOLD_ORE("gold_ore", 14), + IRON_ORE("iron_ore", 15), + COAL_ORE("coal_ore", 16), + OAK_WOOD("log", 17), + SPRUCE_WOOD("log", 17, 1), + BIRCH_WOOD("log", 17, 2), + JUNGLE_WOOD("log", 17, 3), + OAK_LEAVES("leaves", 18), + SPRUCE_LEAVES("leaves", 18, 1), + BIRCH_LEAVES("leaves", 18, 2), + JUNGLE_LEAVES("leaves", 18, 3), + SPONGE("sponge", 19), + WET_SPONGE("sponge", 19, 1), + GLASS("glass", 20), + LAPIS_LAZULI_ORE("lapis_ore", 21), + LAPIS_LAZULI_BLOCK("lapis_block", 22), + DISPENSER("dispenser", 23), + SANDSTONE("sandstone", 24), + CHISELED_SANDSTONE("sandstone", 24, 1), + SMOOTH_SANDSTONE("sandstone", 24, 2), + NOTE_BLOCK("noteblock", 25), + BED("bed", 26), + POWERED_RAIL("golden_rail", 27), + DETECTOR_RAIL("detector_rail", 28), + STICKY_PISTON("sticky_piston", 29), + COBWEB("web", 30), + DEAD_SHRUB("tallgrass", 31), + TALLGRASS("tallgrass", 31, 1), + FERN("tallgrass", 31, 2), + DEAD_SHRUB1("deadbush", 32), + PISTON("piston", 33), + PISTON_HEAD("piston_head", 34), + WHITE_WOOL("wool", 35), + ORANGE_WOOL("wool", 35, 1), + MAGENTA_WOOL("wool", 35, 2), + LIGHT_BLUE_WOOL("wool", 35, 3), + YELLOW_WOOL("wool", 35, 4), + LIME_WOOL("wool", 35, 5), + PINK_WOOL("wool", 35, 6), + GRAY_WOOL("wool", 35, 7), + LIGHT_GRAY_WOOL("wool", 35, 8), + CYAN_WOOL("wool", 35, 9), + PURPLE_WOOL("wool", 35, 10), + BLUE_WOOL("wool", 35, 11), + BROWN_WOOL("wool", 35, 12), + GREEN_WOOL("wool", 35, 13), + RED_WOOL("wool", 35, 14), + BLACK_WOOL("wool", 35, 15), + DANDELION("yellow_flower", 37), + POPPY("red_flower", 38), + BLUE_ORCHID("red_flower", 38, 1), + ALLIUM("red_flower", 38, 2), + AZURE_BLUET("red_flower", 38, 3), + RED_TULIP("red_flower", 38, 4), + ORANGE_TULIP("red_flower", 38, 5), + WHITE_TULIP("red_flower", 38, 6), + PINK_TULIP("red_flower", 38, 7), + OXEYE_DAISY("red_flower", 38, 8), + BROWN_MUSHROOM("brown_mushroom", 39), + RED_MUSHROOM("red_mushroom", 40), + GOLD_BLOCK("gold_block", 41), + IRON_BLOCK("iron_block", 42), + DOUBLE_STONE_SLAB("double_stone_slab", 43), + DOUBLE_SANDSTONE_SLAB("double_stone_slab", 43, 1), + DOUBLE_WOODEN_SLAB("double_stone_slab", 43, 2), + DOUBLE_COBBLESTONE_SLAB("double_stone_slab", 43, 3), + DOUBLE_BRICK_SLAB("double_stone_slab", 43, 4), + DOUBLE_STONE_BRICK_SLAB("double_stone_slab", 43, 5), + DOUBLE_NETHER_BRICK_SLAB("double_stone_slab", 43, 6), + DOUBLE_QUARTZ_SLAB("double_stone_slab", 43, 7), + STONE_SLAB("stone_slab", 44), + SANDSTONE_SLAB("stone_slab", 44, 1), + WOODEN_SLAB("stone_slab", 44, 2), + COBBLESTONE_SLAB("stone_slab", 44, 3), + BRICK_SLAB("stone_slab", 44, 4), + STONE_BRICK_SLAB("stone_slab", 44, 5), + NETHER_BRICK_SLAB("stone_slab", 44, 6), + QUARTZ_SLAB("stone_slab", 44, 7), + BRICKS("brick_block", 45), + TNT("tnt", 46), + BOOKSHELF("bookshelf", 47), + MOSS_STONE("mossy_cobblestone", 48), + OBSIDIAN("obsidian", 49), + TORCH("torch", 50), + FIRE("fire", 51), + MONSTER_SPAWNER("mob_spawner", 52), + OAK_WOOD_STAIRS("oak_stairs", 53), + CHEST("chest", 54), + REDSTONE_WIRE("redstone_wire", 55), + DIAMOND_ORE("diamond_ore", 56), + DIAMOND_BLOCK("diamond_block", 57), + CRAFTING_TABLE("crafting_table", 58), + WHEAT_CROPS("wheat", 59), + FARMLAND("farmland", 60), + FURNACE("furnace", 61), + BURNING_FURNACE("lit_furnace", 62), + STANDING_SIGN_BLOCK("standing_sign", 63), + OAK_DOOR_BLOCK("wooden_door", 64), + LADDER("ladder", 65), + RAIL("rail", 66), + COBBLESTONE_STAIRS("stone_stairs", 67), + WALL_MOUNTED_SIGN_BLOCK("wall_sign", 68), + LEVER("lever", 69), + STONE_PRESSURE_PLATE("stone_pressure_plate", 70), + IRON_DOOR_BLOCK("iron_door", 71), + WOODEN_PRESSURE_PLATE("wooden_pressure_plate", 72), + REDSTONE_ORE("redstone_ore", 73), + GLOWING_REDSTONE_ORE("lit_redstone_ore", 74), + REDSTONE_TORCH_OFF("unlit_redstone_torch", 75), + REDSTONE_TORCH_ON("redstone_torch", 76), + STONE_BUTTON("stone_button", 77), + SNOW("snow_layer", 78), + ICE("ice", 79), + SNOW_BLOCK("snow", 80), + CACTUS("cactus", 81), + CLAY("clay", 82), + SUGAR_CANES("reeds", 83), + JUKEBOX("jukebox", 84), + OAK_FENCE("fence", 85), + PUMPKIN("pumpkin", 86), + NETHERRACK("netherrack", 87), + SOUL_SAND("soul_sand", 88), + GLOWSTONE("glowstone", 89), + NETHER_PORTAL("portal", 90), + JACK_OLANTERN("lit_pumpkin", 91), + CAKE_BLOCK("cake", 92), + REDSTONE_REPEATER_BLOCK_OFF("unpowered_repeater", 93), + REDSTONE_REPEATER_BLOCK_ON("powered_repeater", 94), + WHITE_STAINED_GLASS("stained_glass", 95), + ORANGE_STAINED_GLASS("stained_glass", 95, 1), + MAGENTA_STAINED_GLASS("stained_glass", 95, 2), + LIGHT_BLUE_STAINED_GLASS("stained_glass", 95, 3), + YELLOW_STAINED_GLASS("stained_glass", 95, 4), + LIME_STAINED_GLASS("stained_glass", 95, 5), + PINK_STAINED_GLASS("stained_glass", 95, 6), + GRAY_STAINED_GLASS("stained_glass", 95, 7), + LIGHT_GRAY_STAINED_GLASS("stained_glass", 95, 8), + CYAN_STAINED_GLASS("stained_glass", 95, 9), + PURPLE_STAINED_GLASS("stained_glass", 95, 10), + BLUE_STAINED_GLASS("stained_glass", 95, 11), + BROWN_STAINED_GLASS("stained_glass", 95, 12), + GREEN_STAINED_GLASS("stained_glass", 95, 13), + RED_STAINED_GLASS("stained_glass", 95, 14), + BLACK_STAINED_GLASS("stained_glass", 95, 15), + WOODEN_TRAPDOOR("trapdoor", 96), + STONE_MONSTER_EGG("monster_egg", 97), + COBBLESTONE_MONSTER_EGG("monster_egg", 97, 1), + STONE_BRICK_MONSTER_EGG("monster_egg", 97, 2), + MOSSY_STONE_BRICK_MONSTER_EGG("monster_egg", 97, 3), + CRACKED_STONE_BRICK_MONSTER_EGG("monster_egg", 97, 4), + CHISELED_STONE_BRICK_MONSTER_EGG("monster_egg", 97, 5), + STONE_BRICKS("stonebrick", 98), + MOSSY_STONE_BRICKS("stonebrick", 98, 1), + CRACKED_STONE_BRICKS("stonebrick", 98, 2), + CHISELED_STONE_BRICKS("stonebrick", 98, 3), + RED_MUSHROOM_CAP("stonebrick", 99), + BROWN_MUSHROOM_CAP("stonebrick", 100), + IRON_BARS("iron_bars", 101), + GLASS_PANE("glass_pane", 102), + MELON_BLOCK("melon_block", 103), + PUMPKIN_STEM("pumpkin_stem", 104), + MELON_STEM("melon_stem", 105), + VINES("vine", 106), + OAK_FENCE_GATE("fence_gate", 107), + BRICK_STAIRS("brick_stairs", 108), + STONE_BRICK_STAIRS("stone_brick_stairs", 109), + MYCELIUM("mycelium", 110), + LILY_PAD("waterlily", 111), + NETHER_BRICK("nether_brick", 112), + NETHER_BRICK_FENCE("nether_brick_fence", 113), + NETHER_BRICK_STAIRS("nether_brick_stairs", 114), + NETHER_WART("nether_wart", 115), + ENCHANTMENT_TABLE("enchanting_table", 116), + BREWING_STAND("brewing_stand", 117), + CAULDRON("cauldron", 118), + END_PORTAL("end_portal", 119), + END_PORTAL_FRAME("end_portal_frame", 120), + END_STONE("end_stone", 121), + DRAGON_EGG("dragon_egg", 122), + REDSTONE_LAMP_INACTIVE("redstone_lamp", 123), + REDSTONE_LAMP_ACTIVE("lit_redstone_lamp", 124), + DOUBLE_OAK_WOOD_SLAB("double_wooden_slab", 125), + DOUBLE_SPRUCE_WOOD_SLAB("double_wooden_slab", 125, 1), + DOUBLE_BIRCH_WOOD_SLAB("double_wooden_slab", 125, 2), + DOUBLE_JUNGLE_WOOD_SLAB("double_wooden_slab", 125, 3), + DOUBLE_ACACIA_WOOD_SLAB("double_wooden_slab", 125, 4), + DOUBLE_DARK_OAK_WOOD_SLAB("double_wooden_slab", 125, 5), + OAK_WOOD_SLAB("wooden_slab", 126), + SPRUCE_WOOD_SLAB("wooden_slab", 126, 1), + BIRCH_WOOD_SLAB("wooden_slab", 126, 2), + JUNGLE_WOOD_SLAB("wooden_slab", 126, 3), + ACACIA_WOOD_SLAB("wooden_slab", 126, 4), + DARK_OAK_WOOD_SLAB("wooden_slab", 126, 5), + COCOA("cocoa", 127), + SANDSTONE_STAIRS("sandstone_stairs", 128), + EMERALD_ORE("emerald_ore", 129), + ENDER_CHEST("ender_chest", 130), + TRIPWIRE_HOOK("tripwire_hook", 131), + TRIPWIRE("tripwire_hook", 132), + EMERALD_BLOCK("emerald_block", 133), + SPRUCE_WOOD_STAIRS("spruce_stairs", 134), + BIRCH_WOOD_STAIRS("birch_stairs", 135), + JUNGLE_WOOD_STAIRS("jungle_stairs", 136), + COMMAND_BLOCK("command_block", 137), + BEACON("beacon", 138), + COBBLESTONE_WALL("cobblestone_wall", 139), + MOSSY_COBBLESTONE_WALL("cobblestone_wall", 139, 1), + FLOWER_POT("flower_pot", 140), + CARROTS("carrots", 141), + POTATOES("potatoes", 142), + WOODEN_BUTTON("wooden_button", 143), + MOB_HEAD("skull", 144), + ANVIL("anvil", 145), + TRAPPED_CHEST("trapped_chest", 146), + WEIGHTED_PRESSURE_PLATE_LIGHT("light_weighted_pressure_plate", 147), + WEIGHTED_PRESSURE_PLATE_HEAVY("heavy_weighted_pressure_plate", 148), + REDSTONE_COMPARATOR_INACTIVE("unpowered_comparator", 149), + REDSTONE_COMPARATOR_ACTIVE("powered_comparator", 150), + DAYLIGHT_SENSOR("daylight_detector", 151), + REDSTONE_BLOCK("redstone_block", 152), + NETHER_QUARTZ_ORE("quartz_ore", 153), + HOPPER("hopper", 154), + QUARTZ_BLOCK("quartz_block", 155), + CHISELED_QUARTZ_BLOCK("quartz_block", 155, 1), + PILLAR_QUARTZ_BLOCK("quartz_block", 155, 2), + QUARTZ_STAIRS("quartz_stairs", 156), + ACTIVATOR_RAIL("activator_rail", 157), + DROPPER("dropper", 158), + WHITE_STAINED_CLAY("stained_hardened_clay", 159), + ORANGE_STAINED_CLAY("stained_hardened_clay", 159, 1), + MAGENTA_STAINED_CLAY("stained_hardened_clay", 159, 2), + LIGHT_BLUE_STAINED_CLAY("stained_hardened_clay", 159, 3), + YELLOW_STAINED_CLAY("stained_hardened_clay", 159, 4), + LIME_STAINED_CLAY("stained_hardened_clay", 159, 5), + PINK_STAINED_CLAY("stained_hardened_clay", 159, 6), + GRAY_STAINED_CLAY("stained_hardened_clay", 159, 7), + LIGHT_GRAY_STAINED_CLAY("stained_hardened_clay", 159, 8), + CYAN_STAINED_CLAY("stained_hardened_clay", 159, 9), + PURPLE_STAINED_CLAY("stained_hardened_clay", 159, 10), + BLUE_STAINED_CLAY("stained_hardened_clay", 159, 11), + BROWN_STAINED_CLAY("stained_hardened_clay", 159, 12), + GREEN_STAINED_CLAY("stained_hardened_clay", 159, 13), + RED_STAINED_CLAY("stained_hardened_clay", 159, 14), + BLACK_STAINED_CLAY("stained_hardened_clay", 159, 15), + WHITE_STAINED_GLASS_PANE("stained_glass_pane", 160), + ORANGE_STAINED_GLASS_PANE("stained_glass_pane", 160, 1), + MAGENTA_STAINED_GLASS_PANE("stained_glass_pane", 160, 2), + LIGHT_BLUE_STAINED_GLASS_PANE("stained_glass_pane", 160, 3), + YELLOW_STAINED_GLASS_PANE("stained_glass_pane", 160, 4), + LIME_STAINED_GLASS_PANE("stained_glass_pane", 160, 5), + PINK_STAINED_GLASS_PANE("stained_glass_pane", 160, 6), + GRAY_STAINED_GLASS_PANE("stained_glass_pane", 160, 7), + LIGHT_GRAY_STAINED_GLASS_PANE("stained_glass_pane", 160, 8), + CYAN_STAINED_GLASS_PANE("stained_glass_pane", 160, 9), + PURPLE_STAINED_GLASS_PANE("stained_glass_pane", 160, 10), + BLUE_STAINED_GLASS_PANE("stained_glass_pane", 160, 11), + BROWN_STAINED_GLASS_PANE("stained_glass_pane", 160, 12), + GREEN_STAINED_GLASS_PANE("stained_glass_pane", 160, 13), + RED_STAINED_GLASS_PANE("stained_glass_pane", 160, 14), + BLACK_STAINED_GLASS_PANE("stained_glass_pane", 160, 15), + ACACIA_LEAVES("leaves2", 161), + DARK_OAK_LEAVES("leaves2", 161, 1), + ACACIA_WOOD("log2", 162), + DARK_OAK_WOOD("log2", 162, 1), + ACACIA_WOOD_STAIRS("acacia_stairs", 163), + DARK_OAK_WOOD_STAIRS("dark_oak_stairs", 164), + SLIME_BLOCK("slime", 165), + BARRIER("barrier", 166), + IRON_TRAPDOOR("iron_trapdoor", 167), + PRISMARINE("prismarine", 168), + PRISMARINE_BRICKS("prismarine", 168, 1), + DARK_PRISMARINE("prismarine", 168, 2), + SEA_LANTERN("sea_lantern", 169), + HAY_BALE("hay_block", 170), + WHITE_CARPET("carpet", 171), + ORANGE_CARPET("carpet", 171, 1), + MAGENTA_CARPET("carpet", 171, 2), + LIGHT_BLUE_CARPET("carpet", 171, 3), + YELLOW_CARPET("carpet", 171, 4), + LIME_CARPET("carpet", 171, 5), + PINK_CARPET("carpet", 171, 6), + GRAY_CARPET("carpet", 171, 7), + LIGHT_GRAY_CARPET("carpet", 171, 8), + CYAN_CARPET("carpet", 171, 9), + PURPLE_CARPET("carpet", 171, 10), + BLUE_CARPET("carpet", 171, 11), + BROWN_CARPET("carpet", 171, 12), + GREEN_CARPET("carpet", 171, 13), + RED_CARPET("carpet", 171, 14), + BLACK_CARPET("carpet", 171, 15), + HARDENED_CLAY("hardened_clay", 172), + BLOCK_OF_COAL("coal_block", 173), + PACKED_ICE("packed_ice", 174), + SUNFLOWER("double_plant", 175), + LILAC("double_plant", 175, 1), + DOUBLE_TALLGRASS("double_plant", 175, 2), + LARGE_FERN("double_plant", 175, 3), + ROSE_BUSH("double_plant", 175, 4), + PEONY("double_plant", 175, 5), + FREE_STANDING_BANNER("standing_banner", 176), + WALL_MOUNTED_BANNER("wall_banner", 177), + INVERTED_DAYLIGHT_SENSOR("daylight_detector_inverted", 178), + RED_SANDSTONE("red_sandstone", 179), + SMOOTH_RED_SANDSTONE("red_sandstone", 179, 1), + CHISELED_RED_SANDSTONE("red_sandstone", 179, 2), + RED_SANDSTONE_STAIRS("red_sandstone_stairs", 180), + DOUBLE_RED_SANDSTONE_SLAB("stone_slab2", 181), + RED_SANDSTONE_SLAB("double_stone_slab2", 182), + SPRUCE_FENCE_GATE("spruce_fence_gate", 183), + BIRCH_FENCE_GATE("birch_fence_gate", 184), + JUNGLE_FENCE_GATE("jungle_fence_gate", 185), + DARK_OAK_FENCE_GATE("dark_oak_fence_gate", 186), + ACACIA_FENCE_GATE("acacia_fence_gate", 187), + SPRUCE_FENCE("spruce_fence", 188), + BIRCH_FENCE("birch_fence", 189), + JUNGLE_FENCE("jungle_fence", 190), + DARK_OAK_FENCE("dark_oak_fence", 191), + ACACIA_FENCE("acacia_fence", 192), + SPRUCE_DOOR_BLOCK("spruce_door", 193), + BIRCH_DOOR_BLOCK("birch_door", 194), + JUNGLE_DOOR_BLOCK("jungle_door", 195), + ACACIA_DOOR_BLOCK("acacia_door", 196), + DARK_OAK_DOOR_BLOCK("dark_oak_door", 197), + IRON_SHOVEL("iron_shovel", 256), + IRON_PICKAXE("iron_pickaxe", 257), + IRON_AXE("iron_axe", 258), + FLINT_AND_STEEL("flint_and_steel", 259), + APPLE("apple", 260), + BOW("bow", 261), + ARROW("arrow", 262), + COAL("coal", 263), + CHARCOAL("coal", 263, 1), + DIAMOND("diamond", 264), + IRON_INGOT("iron_ingot", 265), + GOLD_INGOT("gold_ingot", 266), + IRON_SWORD("iron_sword", 267), + WOODEN_SWORD("wooden_sword", 268), + WOODEN_SHOVEL("wooden_shovel", 269), + WOODEN_PICKAXE("wooden_pickaxe", 270), + WOODEN_AXE("wooden_axe", 271), + STONE_SWORD("stone_sword", 272), + STONE_SHOVEL("stone_shovel", 273), + STONE_PICKAXE("stone_pickaxe", 274), + STONE_AXE("stone_axe", 275), + DIAMOND_SWORD("diamond_sword", 276), + DIAMOND_SHOVEL("diamond_shovel", 277), + DIAMOND_PICKAXE("diamond_pickaxe", 278), + DIAMOND_AXE("diamond_axe", 279), + STICK("stick", 280), + BOWL("bowl", 281), + MUSHROOM_STEW("mushroom_stew", 282), + GOLDEN_SWORD("golden_sword", 283), + GOLDEN_SHOVEL("golden_shovel", 284), + GOLDEN_PICKAXE("golden_pickaxe", 285), + GOLDEN_AXE("golden_axe", 286), + STRING("string", 287), + FEATHER("feather", 288), + GUNPOWDER("gunpowder", 289), + WOODEN_HOE("wooden_hoe", 290), + STONE_HOE("stone_hoe", 291), + IRON_HOE("iron_hoe", 292), + DIAMOND_HOE("diamond_hoe", 293), + GOLDEN_HOE("golden_hoe", 294), + WHEAT_SEEDS("wheat_seeds", 295), + WHEAT("wheat", 296), + BREAD("bread", 297), + LEATHER_HELMET("leather_helmet", 298), + LEATHER_TUNIC("leather_chestplate", 299), + LEATHER_PANTS("leather_leggings", 300), + LEATHER_BOOTS("leather_boots", 301), + CHAINMAIL_HELMET("chainmail_helmet", 302), + CHAINMAIL_CHESTPLATE("chainmail_chestplate", 303), + CHAINMAIL_LEGGINGS("chainmail_leggings", 304), + CHAINMAIL_BOOTS("chainmail_boots", 305), + IRON_HELMET("iron_helmet", 306), + IRON_CHESTPLATE("iron_chestplate", 307), + IRON_LEGGINGS("iron_leggings", 308), + IRON_BOOTS("iron_boots", 309), + DIAMOND_HELMET("diamond_helmet", 310), + DIAMOND_CHESTPLATE("diamond_chestplate", 311), + DIAMOND_LEGGINGS("diamond_leggings", 312), + DIAMOND_BOOTS("diamond_boots", 313), + GOLDEN_HELMET("golden_helmet", 314), + GOLDEN_CHESTPLATE("golden_chestplate", 315), + GOLDEN_LEGGINGS("golden_leggings", 316), + GOLDEN_BOOTS("golden_boots", 317), + FLINT("flint_and_steel", 318), + RAW_PORKCHOP("porkchop", 319), + COOKED_PORKCHOP("cooked_porkchop", 320), + PAINTING("painting", 321), + GOLDEN_APPLE("golden_apple", 322), + ENCHANTED_GOLDEN_APPLE("golden_apple", 322, 1), + SIGN("sign", 323), + OAK_DOOR("wooden_door", 324), + BUCKET("bucket", 325), + WATER_BUCKET("water_bucket", 326), + LAVA_BUCKET("lava_bucket", 327), + MINECART("minecart", 328), + SADDLE("saddle", 329), + IRON_DOOR("iron_door", 330), + REDSTONE("redstone", 331), + SNOWBALL("snowball", 332), + BOAT("boat", 333), + LEATHER("leather", 334), + MILK_BUCKET("milk_bucket", 335), + BRICK("brick", 336), + CLAY1("clay_ball", 337), + SUGAR_CANES1("reeds", 338), + PAPER("paper", 339), + BOOK("book", 340), + SLIMEBALL("slime_ball", 341), + MINECART_WITH_CHEST("chest_minecart", 342), + MINECART_WITH_FURNACE("furnace_minecart", 343), + EGG("egg", 344), + COMPASS("compass", 345), + FISHING_ROD("fishing_rod", 346), + CLOCK("clock", 347), + GLOWSTONE_DUST("glowstone_dust", 348), + RAW_FISH("fish", 349), + RAW_SALMON("fish", 349, 1), + CLOWNFISH("fish", 349, 2), + PUFFERFISH("fish", 349, 3), + COOKED_FISH("cooked_fish", 350), + COOKED_SALMON("cooked_fish", 350, 1), + INK_SACK("dye", 351), + ROSE_RED("dye", 351, 1), + CACTUS_GREEN("dye", 351, 2), + COCO_BEANS("dye", 351, 3), + LAPIS_LAZULI("dye", 351, 4), + PURPLE_DYE("dye", 351, 5), + CYAN_DYE("dye", 351, 6), + LIGHT_GRAY_DYE("dye", 351, 7), + GRAY_DYE("dye", 351, 8), + PINK_DYE("dye", 351, 9), + LIME_DYE("dye", 351, 10), + DANDELION_YELLOW("dye", 351, 11), + LIGHT_BLUE_DYE("dye", 351, 12), + MAGENTA_DYE("dye", 351, 13), + ORANGE_DYE("dye", 351, 14), + BONE_MEAL("dye", 351, 15), + BONE("bone", 352), + SUGAR("sugar", 353), + CAKE("cake", 354), + BED1("bed", 355), + REDSTONE_REPEATER("repeater", 356), + COOKIE("cookie", 357), + MAP("filled_map", 358), + SHEARS("shears", 359), + MELON("melon", 360), + PUMPKIN_SEEDS("pumpkin_seeds", 361), + MELON_SEEDS("melon_seeds", 362), + RAW_BEEF("beef", 363), + STEAK("cooked_beef", 364), + RAW_CHICKEN("chicken", 365), + COOKED_CHICKEN("cooked_chicken", 366), + ROTTEN_FLESH("rotten_flesh", 367), + ENDER_PEARL("ender_pearl", 368), + BLAZE_ROD("blaze_rod", 369), + GHAST_TEAR("ghast_tear", 370), + GOLD_NUGGET("gold_nugget", 371), + NETHER_WART1("nether_wart", 372), + POTION("potion", 373), + GLASS_BOTTLE("glass_bottle", 374), + SPIDER_EYE("spider_eye", 375), + FERMENTED_SPIDER_EYE("fermented_spider_eye", 376), + BLAZE_POWDER("blaze_powder", 377), + MAGMA_CREAM("magma_cream", 378), + BREWING_STAND1("brewing_stand", 379), + CAULDRON1("cauldron", 380), + EYE_OF_ENDER("ender_eye", 381), + GLISTERING_MELON("speckled_melon", 382), + SPAWN_CREEPER("spawn_egg", 383, 50), + SPAWN_SKELETON("spawn_egg", 383, 51), + SPAWN_SPIDER("spawn_egg", 383, 52), + SPAWN_ZOMBIE("spawn_egg", 383, 54), + SPAWN_SLIME("spawn_egg", 383, 55), + SPAWN_GHAST("spawn_egg", 383, 56), + SPAWN_PIGMAN("spawn_egg", 383, 57), + SPAWN_ENDERMAN("spawn_egg", 383, 58), + SPAWN_CAVE_SPIDER("spawn_egg", 383, 59), + SPAWN_SILVERFISH("spawn_egg", 383, 60), + SPAWN_BLAZE("spawn_egg", 383, 61), + SPAWN_MAGMA_CUBE("spawn_egg", 383, 62), + SPAWN_BAT("spawn_egg", 383, 65), + SPAWN_WITCH("spawn_egg", 383, 66), + SPAWN_ENDERMITE("spawn_egg", 383, 67), + SPAWN_GUARDIAN("spawn_egg", 383, 68), + SPAWN_PIG("spawn_egg", 383, 90), + SPAWN_SHEEP("spawn_egg", 383, 91), + SPAWN_COW("spawn_egg", 383, 92), + SPAWN_CHICKEN("spawn_egg", 383, 93), + SPAWN_SQUID("spawn_egg", 383, 94), + SPAWN_WOLF("spawn_egg", 383, 95), + SPAWN_MOOSHROOM("spawn_egg", 383, 96), + SPAWN_OCELOT("spawn_egg", 383, 98), + SPAWN_HORSE("spawn_egg", 383, 100), + SPAWN_RABBIT("spawn_egg", 383, 101), + SPAWN_VILLAGER("spawn_egg", 383, 120), + BOTTLE_O_ENCHANTING("experience_bottle", 384), + FIRE_CHARGE("fire_charge", 385), + BOOK_AND_QUILL("writable_book", 386), + WRITTEN_BOOK("written_book", 387), + EMERALD("emerald", 388), + ITEM_FRAME("item_frame", 389), + FLOWER_POT1("flower_pot", 390), + CARROT("carrot", 391), + POTATO("potato", 392), + BAKED_POTATO("baked_potato", 393), + POISONOUS_POTATO("poisonous_potato", 394), + EMPTY_MAP("map", 395), + GOLDEN_CARROT("golden_carrot", 396), + MOB_HEAD_SKELETON("skull", 397), + MOB_HEAD_WITHER_SKELETON("skull", 397, 1), + MOB_HEAD_ZOMBIE("skull", 397, 2), + MOB_HEAD_HUMAN("skull", 397, 3), + MOB_HEAD_CREEPER("skull", 397, 4), + CARROT_ON_A_STICK("carrot_on_a_stick", 398), + NETHER_STAR("nether_star", 399), + PUMPKIN_PIE("pumpkin_pie", 400), + FIREWORK_ROCKET("fireworks", 401), + FIREWORK_STAR("firework_charge", 402), + ENCHANTED_BOOK("enchanted_book", 403), + REDSTONE_COMPARATOR("comparator", 404), + NETHER_BRICK1("netherbrick", 405), + NETHER_QUARTZ("quartz", 406), + MINECART_WITH_TNT("tnt_minecart", 407), + MINECART_WITH_HOPPER("hopper_minecart", 408), + PRISMARINE_SHARD("prismarine_shard", 409), + PRISMARINE_CRYSTALS("prismarine_crystals", 410), + RAW_RABBIT("rabbit", 411), + COOKED_RABBIT("cooked_rabbit", 412), + RABBIT_STEW("rabbit_stew", 413), + RABBITS_FOOT("rabbit_foot", 414), + RABBIT_HIDE("rabbit_hide", 415), + ARMOR_STAND("armor_stand", 416), + IRON_HORSE_ARMOR("iron_horse_armor", 417), + GOLDEN_HORSE_ARMOR("golden_horse_armor", 418), + DIAMOND_HORSE_ARMOR("diamond_horse_armor", 419), + LEAD("lead", 420), + NAME_TAG("name_tag", 421), + MINECART_WITH_COMMAND_BLOCK("command_block_minecart", 422), + RAW_MUTTON("mutton", 423), + COOKED_MUTTON("cooked_mutton", 424), + BANNER("banner", 425), + SPRUCE_DOOR("spruce_door", 427), + BIRCH_DOOR("birch_door", 428), + JUNGLE_DOOR("jungle_door", 429), + ACACIA_DOOR("acacia_door", 430), + DARK_OAK_DOOR("dark_oak_door", 431), + DISC_13("record_13", 2256), + CAT_DISC("record_cat", 2257), + BLOCKS_DISC("record_blocks", 2258), + CHIRP_DISC("record_chirp", 2259), + FAR_DISC("record_far", 2260), + MALL_DISC("record_mall", 2261), + MELLOHI_DISC("record_mellohi", 2262), + STAL_DISC("record_stal", 2263), + STRAD_DISC("record_strad", 2264), + WARD_DISC("record_ward", 2265), + DISC_11("record_11", 2266), + WAIT_DISC("record_wait", 2267); + + private static final Map ids = new HashMap(); + private static final Map datas = new HashMap(); + + private final int id; + private final byte data; + private final String name; + + static { + for (ItemType type : EnumSet.allOf(ItemType.class)) { + ids.put(type.name, type.id); + datas.put(type.name, type.data); + } + } + + ItemType(String name, int id) { + this.id = id; + this.data = 0; + this.name = name; + } + + ItemType(String name, int id, int data) { + this.id = id; + this.data = (byte) data; + this.name = name; + } + + public static int getId(String name) { + Integer value = ids.get(name); + if (value == null) { + return 0; + } + return value; + } + public static byte getData(String name) { + Byte value = datas.get(name); + if (value == null) { + return 0; + } + return value; + } +} diff --git a/PlotSquared/src/main/java/com/intellectualcrafters/plot/object/schematic/StateWrapper.java b/PlotSquared/src/main/java/com/intellectualcrafters/plot/object/schematic/StateWrapper.java index f4ac35d62..6568f2df3 100644 --- a/PlotSquared/src/main/java/com/intellectualcrafters/plot/object/schematic/StateWrapper.java +++ b/PlotSquared/src/main/java/com/intellectualcrafters/plot/object/schematic/StateWrapper.java @@ -7,7 +7,6 @@ import java.util.Map; import java.util.Map.Entry; import org.apache.commons.lang.StringUtils; -import org.bukkit.Material; import org.bukkit.block.BlockState; import org.bukkit.enchantments.Enchantment; import org.bukkit.inventory.InventoryHolder; @@ -48,8 +47,8 @@ public class StateWrapper { short id = itemComp.getShort("id"); String idStr = itemComp.getString("id"); if (!StringUtils.isNumeric(idStr) && idStr != null) { - idStr = idStr.split(":")[1]; - id = (short) Material.valueOf(idStr.toUpperCase()).getId(); + idStr = idStr.split(":")[1].toLowerCase(); + id = (short) ItemType.getId(idStr); } ids[i] = id; datas[i] = (byte) itemComp.getShort("Damage"); diff --git a/PlotSquared/src/main/java/com/intellectualcrafters/plot/util/bukkit/UUIDHandler.java b/PlotSquared/src/main/java/com/intellectualcrafters/plot/util/bukkit/UUIDHandler.java index 63e151f8e..63989284b 100644 --- a/PlotSquared/src/main/java/com/intellectualcrafters/plot/util/bukkit/UUIDHandler.java +++ b/PlotSquared/src/main/java/com/intellectualcrafters/plot/util/bukkit/UUIDHandler.java @@ -1,9 +1,6 @@ package com.intellectualcrafters.plot.util.bukkit; -import java.io.File; -import java.io.FilenameFilter; import java.util.HashMap; -import java.util.HashSet; import java.util.UUID; import com.google.common.collect.BiMap; @@ -16,7 +13,6 @@ import com.intellectualcrafters.plot.object.BukkitOfflinePlayer; import com.intellectualcrafters.plot.object.OfflinePlotPlayer; import com.intellectualcrafters.plot.object.PlotPlayer; import com.intellectualcrafters.plot.object.StringWrapper; -import com.intellectualcrafters.plot.uuid.DefaultUUIDWrapper; import com.intellectualcrafters.plot.uuid.OfflineUUIDWrapper; import com.intellectualcrafters.plot.uuid.UUIDWrapper; diff --git a/PlotSquared/src/main/resources/skyblock.template b/PlotSquared/src/main/resources/skyblock.template new file mode 100644 index 0000000000000000000000000000000000000000..76855bca133e7c308c70ed7978e2bea5958741c1 GIT binary patch literal 1082 zcmWIWW@Zs#;Nak35SkY4#()IGfb5dg+=86MlGI}TlH3B_l*E!my~^C2*uaB+M-)W% zybmw9J$c!zP~mq~rh)IDOx?Hb2>W`*TWO~Mc01hO`mT3o<(cHRMvGI;0=Bc(^#|F^ z6XJNrz0~6F^5pD}p4XpF^sY#ms+shydeO0CoBvH&#L6{;^RSuZo;~|)_t&eev2}70 z^?BYTaagow?-qtM@@1W})i3eBuvGr{KTC^_#q2@TvO|B}n)-!1z?+?8+M^Szl^Gcr zT$mUb0&oViB`}zalQU9t6H79ai(}kf{o;fC9bMvsojqKA9YZ{wW8&jOTzv!LT|9&0 z<6{bP@=NsK>KT_YM*frU=72`q+bQ1uha5y&-%k;{#pdd9=eKsuj$nn0ERUIl<)n>y zoUIq~JFzeRmw#7s&sJR?u22J&V-;rYmv6t{GV@DP^VKxH?<+;tFoZ3yG?sFWDPwfl zd?1G{$m5{0wDF9D*x-}Po2mpQp5HsNR7ymDXF&|-HmC2;KL6Z2>9^tBCo2nFE*w5F z<<8OH@!ku}S1hS`%=zcFxX116-TSV8+pn8i`fG=kzSxxf*5g-GRmCL2C;fiEFr!JW zE#Rx`ftyqMo=9^4QDK&>-dF-LQ*Y^@y;(a9fKZu zRPv-2P5UmQo2uoVcIu}Azvhw?2ZaQ4?pCKZ%wsz4ePHqTFL?&Z$$G^O%B;P+PAg|N z-Q&7xVORU9r9Eqr{i4?|_&+K>J|q%tQ?P`48=IRu&&TPJO^;gJW0w5eII&gBCDhDk z&nLzF4?mi3EXdh0b@8cHTq=c5r%oDt{`6gDscy)HkkrF#Yh16MpT6%(=DD2dcCMx& zS)JkGMP~Px>8)SCEp`5-IZ<1;O)3uy3;rE>U)stx_h~;cfafmx{?{h0|0Uk Bv~vIe literal 0 HcmV?d00001 diff --git a/PlotSquared/src/main/resources/town.template b/PlotSquared/src/main/resources/town.template new file mode 100644 index 0000000000000000000000000000000000000000..f655fbd0a11b4b4b97ddac0914dc9bba7d4b348c GIT binary patch literal 1771 zcmbVNc~BBq9L6iCJn+b-n#8uuR?V!mGBrcZ3lA){#v>%9Gz2eFbG=s0ifqk1(2P7r zSKaa;HOd3ZDqWnfLy9@6G#u-}gN@OiWw>00Myk zs5{Q4fK4zE&I8;%Q5Yo7%RRuw?3@kaye-rOalzR9oHf+m!q^3Yus>%FN0?ZgM<84R zygX3;K1dJEuX_@wKecrWD!|6^Ms z)j+o{qNVGIG?}^B#4026sI7$J+3IE5qJByk!f%j2^p-Mf=mKM-DGXwLby#{Yl}Vr( z75VTgY#NtejO`^5VL>rlJPzB)616e(ENjAx&@N{KBn+S5+a9@N^;Z&M96P{PIYvxg zYm9HfGhiVsz45C2QPC%19SWOx4YTJI|7qTUNGY_S7ZoQ=;f_UWd{x z-J;J@r#WzT64qnNp}11LTPOBOZ^lm*KK%I0Z`GwLMcoI2Wi%95H3J2O&OiI~V*R#Q z&A5$BEzB_yL4(if5#`>*es6AJHMfWE)3-Z({#wq_o)sQuO`4J(#(O^QkoHob(h^a< zw17@zu(*Qh#cnpK(TU2cN}s-OKzO=p#vM0vD2-qU5~+?@NXJE9|Lc@xNl5@41_U*G zO$_RY0st1mg8!>N6@~i5p)kJQNE|BQ2oB?W*aL|}YTm?nyC&FPh}HtvPlw_MPfec1 zup3>APj~Cd*T@}W)tHg)CQt+^j8*&r;Y5! z6KH|$uIa%TWx-#4Dc*Iw+Fk?zxc{Ghf&N%-cwuoU{{WOb&dUe8ksTu2Mdnr^_dtK= z5&Jw8TcZVj{JV}@T_N*>eBs#}P}jk9+5#m}2U|$~ zL-UC#EuTeYUXP0K1-&VlIZzbruoxXFFG3Y9vXoRzn)JgqKG5VRYqX&`AmT})>cM*M z{!xGZ0q<=X$F780<{nC3%&d+cBE!jATcrRxnlsz(KvYYavvb8mR0GMF$SvzO0D{at z!4qI1{o92Fhlz+P05*bqvt`zU`=9t4$^R$DzrAX+3f4WiflQ$;zVFCy&)EEwb-irh cl=u(*I^S0h93~;;3;+-l4kaO5WQq0FpAlUTS^xk5 literal 0 HcmV?d00001