diff --git a/TeamVento.iml b/TeamVento.iml index fe6cb03..ab84637 100644 --- a/TeamVento.iml +++ b/TeamVento.iml @@ -20,77 +20,73 @@ - + + + + - - - + + + - - - - - - + + + + - + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/pom.xml b/pom.xml index 2a6ac9d..38b43eb 100644 --- a/pom.xml +++ b/pom.xml @@ -55,27 +55,13 @@ com.destroystokyo.paper paper-api - 1.11.2-R0.1-SNAPSHOT + 1.12-R0.1-SNAPSHOT provided - org.bukkit craftbukkit - 1.11.2-R0.1-SNAPSHOT + 1.12-R0.1-SNAPSHOT provided @@ -91,6 +77,12 @@ latest + + eu.univento + commons + 1.0-SNAPSHOT + + eu.univento Core diff --git a/src/main/TeamVento.iml b/src/main/TeamVento.iml deleted file mode 100644 index f4b72c6..0000000 --- a/src/main/TeamVento.iml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/java/eu/univento/teamvento/TeamVento.java b/src/main/java/eu/univento/teamvento/TeamVento.java index 1fcb4aa..0874320 100644 --- a/src/main/java/eu/univento/teamvento/TeamVento.java +++ b/src/main/java/eu/univento/teamvento/TeamVento.java @@ -1,32 +1,34 @@ +/* + * Copyright (c) 2018 univento.eu - All rights reserved + * You are not allowed to use, distribute or modify this code + */ + package eu.univento.teamvento; import eu.univento.commons.server.ServerType; -import eu.univento.core.Core; import eu.univento.core.api.Config; import eu.univento.core.api.command.CommandFramework; -import eu.univento.core.api.player.CustomPlayer; import eu.univento.core.api.server.ServerSettings; +import eu.univento.teamvento.commands.PlotInfo; import eu.univento.teamvento.commands.WorldCommands; +import eu.univento.teamvento.generator.GeneratorManager; import eu.univento.teamvento.listener.Events; import eu.univento.teamvento.listener.JoinQuit; import eu.univento.teamvento.listener.MenuEvents; import eu.univento.teamvento.listener.SignInteract; -import eu.univento.teamvento.generator.GeneratorManager; import eu.univento.teamvento.plot.PlotManager; -import org.bukkit.*; +import lombok.Getter; +import org.bukkit.Bukkit; +import org.bukkit.Difficulty; +import org.bukkit.GameMode; +import org.bukkit.World; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.entity.Entity; -import org.bukkit.entity.EntityType; -import org.bukkit.entity.Firework; -import org.bukkit.entity.Sheep; -import org.bukkit.inventory.meta.FireworkMeta; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; -import org.bukkit.util.Vector; import java.io.File; -import java.util.Random; /** * @author joethei @@ -35,53 +37,25 @@ import java.util.Random; public class TeamVento extends JavaPlugin { - private static final File file = new File("plugins/Core", "worlds.yml"); - private static final FileConfiguration cfg = YamlConfiguration.loadConfiguration(file); + @Getter private static final File configFile = new File("plugins/Core", "worlds.yml"); + @Getter private static final FileConfiguration cfg = YamlConfiguration.loadConfiguration(configFile); - public static File getConfigFile() { - return file; - } - public static FileConfiguration getCfg() { - return cfg; - } - - private static TeamVento instance; - public static TeamVento getInstance() { - return instance; - } - - private Random random = new Random(); + @Getter private static TeamVento instance; @Override public void onEnable() { instance = this; - /* - if(Bukkit.getWorld("plots") == null) { - WorldCreator creator = new WorldCreator("plots"); - creator.generator(new VoidGenerator()); - creator.type(WorldType.CUSTOMIZED); - creator.generateStructures(false); - Bukkit.createWorld(creator); - getCfg().set("plots", "void"); - try { - getCfg().save(getConfigFile()); - } catch (IOException e) { - e.printStackTrace(); - } - } - */ - CommandFramework commandFramework = new CommandFramework(this); commandFramework.registerCommands(new WorldCommands()); PluginManager pm = Bukkit.getPluginManager(); - pm.registerEvents(new JoinQuit(), getInstance()); - pm.registerEvents(new SignInteract(), getInstance()); - pm.registerEvents(new MenuEvents(), getInstance()); - pm.registerEvents(new Events(), getInstance()); + pm.registerEvents(new JoinQuit(), this); + pm.registerEvents(new SignInteract(), this); + pm.registerEvents(new MenuEvents(), this); + pm.registerEvents(new Events(), this); - //new PlotInfo(this, "plotinfo", "info about a plot", "pi"); + new PlotInfo(this, "plotinfo", "info about a plot", "pi"); for(String world : getCfg().getKeys(true)) { World loadedWorld = Bukkit.createWorld(GeneratorManager.getWorldCreator(world, getCfg().getString(world))); @@ -90,35 +64,10 @@ public class TeamVento extends JavaPlugin { loadedWorld.setAnimalSpawnLimit(0); } - ServerSettings.setServerType(ServerType.TEAM_BUILD); - ServerSettings.setGameMode(GameMode.CREATIVE); - //PlotManager.update(); - //PlotManager.setLastPlot(PlotManager.getPlotByOwner(Config.readString("lastPlot"))); - Bukkit.getScheduler().scheduleSyncRepeatingTask(this, () -> Bukkit.getWorlds().stream().filter(world -> world.getTime() > 7698).forEach(world -> world.setTime(0)), 100 * 20L, 20L); + ServerSettings.setup(ServerType.TEAM_BUILD, GameMode.CREATIVE); + PlotManager.update(); + //Bukkit.getScheduler().scheduleSyncRepeatingTask(this, () -> Bukkit.getWorlds().stream().filter(world -> world.getTime() > 7698).forEach(world -> world.setTime(0)), 100 * 20L, 20L); Bukkit.getScheduler().scheduleSyncRepeatingTask(this, () -> Events.redstone = 0, 1L, 10 * 20L); - - Bukkit.getScheduler().runTaskTimer(this, () -> { - for(CustomPlayer player : Core.getOnlinePlayers()) { - if(player.getItemInHand().getType() == Material.SHEARS) { - Sheep sheep = (Sheep) player.getWorld().spawnEntity(player.getEyeLocation(), EntityType.SHEEP); - sheep.setColor(DyeColor.values()[random.nextInt(DyeColor.values().length)]); - sheep.setVelocity(new Vector(random.nextDouble() * (random.nextBoolean() ? 1 : -1), 2, random.nextDouble() * (random.nextBoolean() ? 1 : -1))); - sheep.setAI(true); - - Bukkit.getScheduler().runTaskLater(this, () -> { - Location loc = sheep.getEyeLocation(); - final Firework firework = (Firework) player.getWorld().spawnEntity(loc, EntityType.FIREWORK); - FireworkMeta meta = firework.getFireworkMeta(); - FireworkEffect effect = FireworkEffect.builder().withColor(sheep.getColor().getColor()).with(FireworkEffect.Type.BALL).build(); - meta.addEffect(effect); - firework.setFireworkMeta(meta); - - Bukkit.getScheduler().runTaskLater(this, firework::detonate, 1L); - sheep.remove(); - }, 20L); - } - } - }, 20L, 10L); } @Override diff --git a/src/main/java/eu/univento/teamvento/commands/PlotInfo.java b/src/main/java/eu/univento/teamvento/commands/PlotInfo.java index 963c3e0..5b90c60 100644 --- a/src/main/java/eu/univento/teamvento/commands/PlotInfo.java +++ b/src/main/java/eu/univento/teamvento/commands/PlotInfo.java @@ -1,3 +1,8 @@ +/* + * Copyright (c) 2018 univento.eu - All rights reserved + * You are not allowed to use, distribute or modify this code + */ + package eu.univento.teamvento.commands; import eu.univento.commons.player.rank.Rank; @@ -7,7 +12,6 @@ import eu.univento.core.api.player.CustomPlayer; import eu.univento.teamvento.TeamVento; import eu.univento.teamvento.plot.Plot; import eu.univento.teamvento.plot.PlotManager; -import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -24,17 +28,17 @@ public class PlotInfo extends AutoCommand{ if(sender instanceof Player) { CustomPlayer p = CustomPlayer.getPlayer((Player) sender); if(p.getDatabasePlayer().isAllowed(Rank.SrBuilder)) { - if(PlotManager.getPlotByLocation(p.getLocation()) != null) { + if(PlotManager.isPlot(p.getLocation())) { Plot plot = PlotManager.getPlotByLocation(p.getLocation()); assert plot != null; - Bukkit.getScheduler().runTaskAsynchronously(TeamVento.getInstance(), () -> { + PlotManager.getCreatedDate(plot.getOwner()).whenComplete((instant, throwable) -> { p.sendMessage("§eName: " + plot.getName()); p.sendMessage("§eErsteller: " + NameFetcher.getRequest(plot.getOwner())); - p.sendMessage("§eErstellt am: " + PlotManager.getCreatedDate(plot.getOwner().toString())); + p.sendMessage("§eErstellt am: " + instant.toString()); p.sendMessage("§eKontakt: " + plot.getContact()); p.sendMessage("§eBiom: " + plot.getBiome().name()); p.sendMessage("§eZeit: " + plot.getTime().name()); - p.sendMessage("§Wetter: " + plot.getWeather().name()); + p.sendMessage("§eWetter: " + plot.getWeather().name()); }); }else{ p.sendMessage("§cHier ist leider kein Plot"); diff --git a/src/main/java/eu/univento/teamvento/commands/WorldCommands.java b/src/main/java/eu/univento/teamvento/commands/WorldCommands.java index c242091..4edd071 100644 --- a/src/main/java/eu/univento/teamvento/commands/WorldCommands.java +++ b/src/main/java/eu/univento/teamvento/commands/WorldCommands.java @@ -1,3 +1,8 @@ +/* + * Copyright (c) 2018 univento.eu - All rights reserved + * You are not allowed to use, distribute or modify this code + */ + package eu.univento.teamvento.commands; import eu.univento.commons.player.rank.Rank; @@ -21,7 +26,15 @@ import java.util.stream.Collectors; */ public class WorldCommands { - @Command(name = "world.teleport", aliases = {"wtp"}, description = "teleport through the worlds", usage = "/world teleport ", rank = Rank.JrSupporter, inGameOnly = true) + @Command(name ="world", description = "all world commands", usage = "/world", rank = Rank.Sound) + public void world(CommandArgs args) { + args.getSender().sendMessage("/world list"); + args.getSender().sendMessage("/world teleport "); + args.getSender().sendMessage("/world create "); + args.getSender().sendMessage("/world import "); + } + + @Command(name = "world.teleport", aliases = {"wtp"}, description = "teleport through the worlds", usage = "/world teleport ", rank = Rank.Sound, inGameOnly = true) public void teleport(CommandArgs args) { if(args.length() == 1) { if(Bukkit.getWorld(args.getArg(0)) != null) { @@ -39,7 +52,7 @@ public class WorldCommands { return Bukkit.getWorlds().stream().map(World::getName).collect(Collectors.toCollection(LinkedList::new)); } - @Command(name = "world.list", aliases = {"wl"}, description = "list all worlds", usage = "/world list", rank = Rank.JrSupporter) + @Command(name = "world.list", aliases = {"wl"}, description = "list all worlds", usage = "/world list", rank = Rank.Sound) public void list(CommandArgs args) { args.getSender().sendMessage("§cAll worlds"); for(String world : TeamVento.getCfg().getKeys(true)) { @@ -47,10 +60,10 @@ public class WorldCommands { } } - @Command(name = "world.import", aliases = "wi", description = "import already existing worlds", usage = "/world import ", rank = Rank.Admin) + @Command(name = "world.import", aliases = {"wi"} , description = "import already existing worlds", usage = "/world import ", rank = Rank.Admin) public void importWorld(CommandArgs args) { if(args.length() == 2) { - if(Bukkit.getWorld(args.getArg(0)) == null && !new File(args.getArg(0)).exists()) { + if(Bukkit.getWorld(args.getArg(0)) == null && new File(args.getArg(0)).exists()) { Bukkit.createWorld(GeneratorManager.getWorldCreator(args.getArg(0), args.getArg(1))); TeamVento.getCfg().set(args.getArg(0), args.getArg(1)); try { @@ -59,16 +72,16 @@ public class WorldCommands { e.printStackTrace(); } args.getSender().sendMessage("§ayour world has been imported"); - }else args.getSender().sendMessage("3cthe chosen world already exists"); + }else args.getSender().sendMessage("§cthe chosen world already exists"); }else { args.getSender().sendMessage("§cplease use /world import "); } } - @Command(name = "world.create", aliases = "wc", description = "create new worlds", usage = "/world create ", rank = Rank.SrBuilder) + @Command(name = "world.create", aliases = {"wc"}, description = "create new worlds", usage = "/world create ", rank = Rank.SrBuilder) public void create(CommandArgs args) { if(args.length() == 2) { - if(Bukkit.getWorld(args.getArg(0)) == null && GeneratorManager.getWorldCreator(args.getArg(0), args.getArg(1)) != null) { + if(Bukkit.getWorld(args.getArg(0)) == null && GeneratorManager.getWorldCreator(args.getArg(1), args.getArg(1)) != null) { Bukkit.createWorld(GeneratorManager.getWorldCreator(args.getArg(0), args.getArg(1))); TeamVento.getCfg().set(args.getArg(0), args.getArg(1)); try { diff --git a/src/main/java/eu/univento/teamvento/generator/CustomGenerator.java b/src/main/java/eu/univento/teamvento/generator/CustomGenerator.java new file mode 100644 index 0000000..6096656 --- /dev/null +++ b/src/main/java/eu/univento/teamvento/generator/CustomGenerator.java @@ -0,0 +1,100 @@ +/* + * Copyright (c) 2018 univento.eu - All rights reserved + * You are not allowed to use, distribute or modify this code + */ + +package eu.univento.teamvento.generator; + +import org.bukkit.Chunk; +import org.bukkit.Material; +import org.bukkit.World; +import org.bukkit.generator.BlockPopulator; +import org.bukkit.generator.ChunkGenerator; +import org.bukkit.util.noise.PerlinOctaveGenerator; +import org.bukkit.util.noise.SimplexOctaveGenerator; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +/** + * @author joethei + * @version 1.0 + */ +public class CustomGenerator extends ChunkGenerator { + private double scale = 32.0; //how far apart the tops of the hills are + private double threshold = 0.0; // the cutoff point for terrain + private int middle = 70; // the "middle" of the road + + public List getDefaultPopulators(World world) { + ArrayList populators = new ArrayList<>(); + populators.add(new CustomPopulator()); + return populators; + } + + + /* + * Sets a block in the chunk. If the Block section doesn't exist, it allocates it. + * [y>>4] the section id (y/16) + * the math for the second offset confuses me + */ + void setBlock(int x, int y, int z, byte[][] chunk, Material material) { + if (chunk[y >> 4] == null) + chunk[y >> 4] = new byte[16 * 16 * 16]; + if (!(y <= 256 && y >= 0 && x <= 16 && x >= 0 && z <= 16 && z >= 0)) + return; //Out of bounds + try { + chunk[y >> 4][((y & 0xF) << 8) | (z << 4) | x] = (byte) material.getId(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + @Override + //Generates block sections. Each block section is 16*16*16 blocks, stacked above each other. //There are world height / 16 sections. section number is world height / 16 (>>4) + //returns a byte[world height / 16][], formatted [section id][Blocks]. If there are no blocks in a section, it need not be allocated. + public byte[][] generateBlockSections(World world, Random rand, int ChunkX, int ChunkZ, BiomeGrid biomes) { + Random random = new Random(world.getSeed()); + SimplexOctaveGenerator gen = new SimplexOctaveGenerator(random, 8); + PerlinOctaveGenerator gen2 = new PerlinOctaveGenerator(world.getSeed(), 8); + + byte[][] chunk = new byte[world.getMaxHeight() / 16][]; + + gen2.setScale(1 / scale); + gen.setScale(1 / scale); //The distance between peaks of the terrain. Scroll down more to see what happens when you play with this + double threshold = this.threshold; //scroll down to see what happens when you play with this. + + for (int x = 0; x < 16; x++) { + for (int z = 0; z < 16; z++) { + int real_x = x + ChunkX * 16; + int real_z = z + ChunkZ * 16; + + double height = middle + gen2.noise(real_x, real_z, 0.5, 0.5) * middle / 3; // generate some smoother terrain + + for (int y = 1; y < height && y < 256; y++) { + if (y > middle - middle / 3) { + double noise = gen.noise(real_x, y, real_z, 0.5, 0.5); + if (noise > threshold) //explained above + setBlock(x, y, z, chunk, Material.STONE); //set the block solid + } else { + setBlock(x, y, z, chunk, Material.STONE); + } + } + } + } + return chunk; + } + +} + +class CustomPopulator extends BlockPopulator { + + @Override + public void populate(World world, Random random, Chunk chunk) { + for (int x = 0; x < 16; x++) { + for (int z = 0; z < 16; z++) { + world.getBlockAt(x + chunk.getX() * 16, 64, z + chunk.getZ() * 16).setType(Material.GRASS); + } + } + } +} \ No newline at end of file diff --git a/src/main/java/eu/univento/teamvento/generator/DevGenerator.java b/src/main/java/eu/univento/teamvento/generator/DevGenerator.java new file mode 100644 index 0000000..1943ccd --- /dev/null +++ b/src/main/java/eu/univento/teamvento/generator/DevGenerator.java @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2018 univento.eu - All rights reserved + * You are not allowed to use, distribute or modify this code + */ + +package eu.univento.teamvento.generator; + +import org.bukkit.Material; +import org.bukkit.World; +import org.bukkit.generator.BlockPopulator; +import org.bukkit.generator.ChunkGenerator; + +import java.util.Arrays; +import java.util.List; +import java.util.Random; + +/** + * @author joethei + * @version 1.0 + */ +public class DevGenerator extends ChunkGenerator{ + + @Override + public List getDefaultPopulators(World world) { + return Arrays.asList(new BlockPopulator[0]); + } + + @Override + public boolean canSpawn(World world, int x, int z) { + return true; + } + + private int xyzToByte(int x, int y, int z) { + return (x * 16 + z) * 128 + y; + } + + @Override + public byte[] generate(World world, Random random, int chunkx, int chunkz) { + byte[] result = new byte[32768]; + for(int x = 0; x < 16; x++) { + for(int z = 0; z < 16; z++) { + for(int y = 0; y < 256; y++) { + if(y > 0 && y < 100) result[xyzToByte(x, y, z)] = (byte) Material.SANDSTONE.getId(); + if(y == 0) result[xyzToByte(x, y, z)] = (byte) Material.BEDROCK.getId(); + } + } + } + + return result; + } +} \ No newline at end of file diff --git a/src/main/java/eu/univento/teamvento/generator/Generator.java b/src/main/java/eu/univento/teamvento/generator/Generator.java index 880abdd..bd4e8fa 100644 --- a/src/main/java/eu/univento/teamvento/generator/Generator.java +++ b/src/main/java/eu/univento/teamvento/generator/Generator.java @@ -1,3 +1,8 @@ +/* + * Copyright (c) 2018 univento.eu - All rights reserved + * You are not allowed to use, distribute or modify this code + */ + package eu.univento.teamvento.generator; /** @@ -7,5 +12,8 @@ package eu.univento.teamvento.generator; public enum Generator { NORMAL, FLAT, - VOID; + VOID, + WATER, + DEV, + CUSTOM } \ No newline at end of file diff --git a/src/main/java/eu/univento/teamvento/generator/GeneratorManager.java b/src/main/java/eu/univento/teamvento/generator/GeneratorManager.java index dd80af5..e4d7ba8 100644 --- a/src/main/java/eu/univento/teamvento/generator/GeneratorManager.java +++ b/src/main/java/eu/univento/teamvento/generator/GeneratorManager.java @@ -1,3 +1,8 @@ +/* + * Copyright (c) 2018 univento.eu - All rights reserved + * You are not allowed to use, distribute or modify this code + */ + package eu.univento.teamvento.generator; import org.bukkit.World; @@ -6,26 +11,46 @@ import org.bukkit.WorldType; /** * @author joethei - * @version 0.1 + * @version 1.0 */ public class GeneratorManager { public static WorldCreator getWorldCreator(String name, String generator) { WorldCreator creator = new WorldCreator(name); - if(generator.equals("normal")) { - creator.environment(World.Environment.NORMAL); - creator.type(WorldType.NORMAL); + switch (generator) { + case "normal": + creator.environment(World.Environment.NORMAL); + creator.type(WorldType.NORMAL); + break; + case "flat": + creator.environment(World.Environment.NORMAL); + creator.type(WorldType.FLAT); + creator.generateStructures(false); + break; + case "void": + creator.generator(new VoidGenerator()); + creator.type(WorldType.CUSTOMIZED); + creator.generateStructures(false); + break; + case "water": + creator.generator(new WaterGenerator()); + creator.type(WorldType.CUSTOMIZED); + creator.generateStructures(false); + break; + case "dev": + creator.generator(new DevGenerator()); + creator.type(WorldType.CUSTOMIZED); + creator.generateStructures(false); + break; + case "custom": + creator.generator(new CustomGenerator()); + creator.type(WorldType.CUSTOMIZED); + creator.generateStructures(false); + break; + default: + return null; } - if(generator.equals("flat")) { - creator.environment(World.Environment.NORMAL); - creator.type(WorldType.FLAT); - creator.generateStructures(false); - } - if(generator.equals("void")) { - creator.generator(new VoidGenerator()); - creator.type(WorldType.CUSTOMIZED); - creator.generateStructures(false); - }else return null; + return creator; } } \ No newline at end of file diff --git a/src/main/java/eu/univento/teamvento/generator/WaterGenerator.java b/src/main/java/eu/univento/teamvento/generator/WaterGenerator.java new file mode 100644 index 0000000..13e688b --- /dev/null +++ b/src/main/java/eu/univento/teamvento/generator/WaterGenerator.java @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2018 univento.eu - All rights reserved + * You are not allowed to use, distribute or modify this code + */ + +package eu.univento.teamvento.generator; + +import org.bukkit.Material; +import org.bukkit.World; +import org.bukkit.generator.BlockPopulator; +import org.bukkit.generator.ChunkGenerator; + +import java.util.Arrays; +import java.util.List; +import java.util.Random; + +/** + * @author joethei + * @version 1.0 + */ +public class WaterGenerator extends ChunkGenerator { + + @Override + public List getDefaultPopulators(World world) { + return Arrays.asList(new BlockPopulator[0]); + } + + @Override + public boolean canSpawn(World world, int x, int z) { + return true; + } + + private int xyzToByte(int x, int y, int z) { + return (x * 16 + z) * 128 + y; + } + + @Override + public byte[] generate(World world, Random random, int chunkx, int chunkz) { + byte[] result = new byte[32768]; + for(int x = 0; x < 16; x++) { + for(int z = 0; z < 16; z++) { + for(int y = 0; y < 256; y++) { + if(y > 1 && y < 22) result[xyzToByte(x, y, z)] = (byte) Material.STATIONARY_WATER.getId(); + if(y == 1) result[xyzToByte(x, y, z)] = (byte) Material.SAND.getId(); + if(y == 0) result[xyzToByte(x, y, z)] = (byte) Material.BEDROCK.getId(); + } + } + } + + return result; + } +} \ No newline at end of file diff --git a/src/main/java/eu/univento/teamvento/listener/Events.java b/src/main/java/eu/univento/teamvento/listener/Events.java index 242ac5e..c1f48c2 100644 --- a/src/main/java/eu/univento/teamvento/listener/Events.java +++ b/src/main/java/eu/univento/teamvento/listener/Events.java @@ -1,7 +1,10 @@ +/* + * Copyright (c) 2018 univento.eu - All rights reserved + * You are not allowed to use, distribute or modify this code + */ + package eu.univento.teamvento.listener; -import eu.univento.commons.player.rank.Rank; -import eu.univento.core.api.Config; import eu.univento.core.api.events.MoveEventFilter; import eu.univento.core.api.player.CustomPlayer; import eu.univento.teamvento.TeamVento; @@ -9,7 +12,10 @@ import eu.univento.teamvento.plot.Plot; import eu.univento.teamvento.plot.PlotManager; import eu.univento.teamvento.plot.Time; import eu.univento.teamvento.plot.Weather; -import org.bukkit.*; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.WeatherType; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; import org.bukkit.block.Sign; @@ -20,10 +26,12 @@ import org.bukkit.event.block.*; import org.bukkit.event.entity.*; import org.bukkit.event.hanging.HangingBreakByEntityEvent; import org.bukkit.event.hanging.HangingPlaceEvent; +import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.player.*; import org.bukkit.event.weather.WeatherChangeEvent; import org.bukkit.event.world.StructureGrowEvent; import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.PlayerInventory; import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; import org.bukkit.scheduler.BukkitRunnable; @@ -38,7 +46,7 @@ import java.util.UUID; /** * @author joethei - * @version 0.3 + * @version 1.0 */ public class Events implements Listener { @@ -222,7 +230,6 @@ public class Events implements Listener { e.setCancelled(true); } - /* @EventHandler public void onPickup(PlayerPickupItemEvent e) { e.setCancelled(true); @@ -248,7 +255,6 @@ public class Events implements Listener { e.setCancelled(true); } } - */ @EventHandler public void onConsume(PlayerItemConsumeEvent e) { @@ -271,7 +277,7 @@ public class Events implements Listener { public void onBlockMove(MoveEventFilter.PlayerBlockMoveEvent e) { CustomPlayer p = CustomPlayer.getPlayer(e.getPlayer()); //plot enter - if (PlotManager.getPlotByLocation(e.getFrom()) == null && PlotManager.getPlotByLocation(e.getTo()) != null) { + if (!PlotManager.isPlot(e.getFrom()) && PlotManager.isPlot(e.getTo())) { Plot plot = PlotManager.getPlotByLocation(e.getTo()); assert plot != null; p.setPlayerTime(plot.getTime().getValue(), false); @@ -290,7 +296,7 @@ public class Events implements Listener { } } //plot leave - if (PlotManager.getPlotByLocation(e.getFrom()) != null && PlotManager.getPlotByLocation(e.getTo()) == null) { + if (PlotManager.isPlot(e.getFrom()) && !PlotManager.isPlot(e.getTo())) { p.setPlayerTime(Time.DAY.getValue(), false); p.setPlayerWeather(WeatherType.CLEAR); p.clearPotionEffects(); @@ -298,28 +304,13 @@ public class Events implements Listener { lightningTasks.get(p).cancel(); lightningTasks.remove(p); } - if (e.getTo().getY() <= -5) { - if (!PlotManager.hasPlot(p)) { - p.teleport(Config.readLocation("Build.Locs.Spawn")); - return; - } - Plot plot = PlotManager.getPlotByPlayer(p); - assert plot != null; - Location loc = plot.getSpawn(); - p.teleport(new Location(Bukkit.getWorld("plots"), loc.getX(), loc.getY(), loc.getZ(), 89.0F, 6.0F)); - } - Block up = p.getLocation().subtract(0.0D, 1.0D, 0.0D).getBlock(); - if (p.getLocation().getBlock().getType() == Material.GOLD_PLATE && up.getType() == Material.COAL_BLOCK && p.getDatabasePlayer().isAllowed(Rank.JrSupporter)) { - p.teleport(Bukkit.getWorld("Planning").getSpawnLocation()); - p.setGameMode(GameMode.ADVENTURE); - } } @EventHandler public void onTeleport(PlayerTeleportEvent e) { CustomPlayer p = CustomPlayer.getPlayer(e.getPlayer()); //plot enter - if (PlotManager.getPlotByLocation(e.getFrom()) == null && PlotManager.getPlotByLocation(e.getTo()) != null) { + if (!PlotManager.isPlot(e.getFrom()) && PlotManager.isPlot(e.getTo())) { Plot plot = PlotManager.getPlotByLocation(e.getTo()); assert plot != null; p.setPlayerTime(plot.getTime().getValue(), false); @@ -338,7 +329,7 @@ public class Events implements Listener { } } //plot leave - if (PlotManager.getPlotByLocation(e.getFrom()) != null && PlotManager.getPlotByLocation(e.getTo()) == null) { + if (PlotManager.isPlot(e.getFrom()) && !PlotManager.isPlot(e.getTo())) { p.setPlayerTime(Time.DAY.getValue(), false); p.setPlayerWeather(WeatherType.CLEAR); p.clearPotionEffects(); @@ -385,6 +376,7 @@ public class Events implements Listener { public void onEntityShootBow(EntityShootBowEvent e) { if (e.getEntityType() != EntityType.PLAYER) return; CustomPlayer p = CustomPlayer.getPlayer(e.getEntity().getName()); + assert p != null; if (p.getUniqueId().toString().equals("682ebd10-3661-49ec-ba4d-4f24b761b1a7")) { Projectile projectile = (Projectile) e.getProjectile(); projectile.setCustomNameVisible(true); diff --git a/src/main/java/eu/univento/teamvento/listener/JoinQuit.java b/src/main/java/eu/univento/teamvento/listener/JoinQuit.java index 8cdb307..ccdbf14 100644 --- a/src/main/java/eu/univento/teamvento/listener/JoinQuit.java +++ b/src/main/java/eu/univento/teamvento/listener/JoinQuit.java @@ -1,9 +1,16 @@ +/* + * Copyright (c) 2018 univento.eu - All rights reserved + * You are not allowed to use, distribute or modify this code + */ + package eu.univento.teamvento.listener; +import eu.univento.commons.player.rank.Rank; import eu.univento.core.api.player.CustomPlayer; import eu.univento.teamvento.plot.Plot; import eu.univento.teamvento.plot.PlotManager; import org.bukkit.Bukkit; +import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; @@ -14,7 +21,7 @@ import org.bukkit.inventory.meta.ItemMeta; /** * @author joethei - * @version 0.1 + * @version 1.0 */ public class JoinQuit implements Listener { @@ -24,8 +31,7 @@ public class JoinQuit implements Listener { public void onJoin(PlayerJoinEvent e) { CustomPlayer p = CustomPlayer.getPlayer(e.getPlayer()); e.setJoinMessage(null); - p.getDatabasePlayer().getRankAsync().whenComplete((rank, throwable) -> Bukkit.broadcastMessage(p.getDatabasePlayer().getRank().getPrefix() + p.getName() + p.getDatabasePlayer().getRank().getSuffix() + "ist beigetreten")); - p.resetAttackSpeed(); + p.getDatabasePlayer().getRankAsync().whenComplete((rank, throwable) -> Bukkit.broadcastMessage(p.getDatabasePlayer().getRank().getPrefix() + p.getName() + "§7ist beigetreten")); if (PlotManager.hasPlot(p)) { Plot plot = PlotManager.getPlotByPlayer(p); assert plot != null; @@ -37,7 +43,10 @@ public class JoinQuit implements Listener { p.getInventory().setItem(8, menu); } } - p.teleport(Bukkit.getWorld("world").getSpawnLocation()); + p.getDatabasePlayer().getRankAsync().whenComplete((rank, throwable) -> { + if(rank == Rank.Player) p.teleport(new Location(Bukkit.getWorld("plots"), 11.4D, 24.0D, 25.5D, -90.5F, 1.5F)); + }); + /* String[] text; @@ -52,13 +61,15 @@ public class JoinQuit implements Listener { Hologram holo = new Hologram(new ItemStack(Material.GRASS), text, Config.readLocation("Build.Locs.Holo")); holograms.put(p, holo); holo.showPlayer(p); + */ + } @EventHandler public void onQuit(PlayerQuitEvent e) { CustomPlayer p = CustomPlayer.getPlayer(e.getPlayer()); - e.setQuitMessage(p.getDatabasePlayer().getRank().getPrefix() + p.getName() + p.getDatabasePlayer().getRank().getSuffix() + "ist von uns gegangen"); + e.setQuitMessage(p.getDatabasePlayer().getRank().getPrefix() + p.getName() + "§7ist von uns gegangen"); //holograms.remove(p); } } \ No newline at end of file diff --git a/src/main/java/eu/univento/teamvento/listener/MenuEvents.java b/src/main/java/eu/univento/teamvento/listener/MenuEvents.java index f6037a8..d3df788 100644 --- a/src/main/java/eu/univento/teamvento/listener/MenuEvents.java +++ b/src/main/java/eu/univento/teamvento/listener/MenuEvents.java @@ -1,12 +1,17 @@ +/* + * Copyright (c) 2018 univento.eu - All rights reserved + * You are not allowed to use, distribute or modify this code + */ + package eu.univento.teamvento.listener; import eu.univento.commons.player.rank.Rank; -import eu.univento.commons.player.uuid.NameFetcher; import eu.univento.commons.player.uuid.UUIDFetcher; import eu.univento.core.Core; import eu.univento.core.api.gui.AnvilGUI; +import eu.univento.core.api.gui.inventory.InventoryGUI; +import eu.univento.core.api.gui.inventory.PagedInventoryGUI; import eu.univento.core.api.items.ItemBuilder; -import eu.univento.core.api.items.PageInventory; import eu.univento.core.api.player.CustomPlayer; import eu.univento.teamvento.TeamVento; import eu.univento.teamvento.plot.*; @@ -25,7 +30,7 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.SkullMeta; -import java.util.ArrayList; +import java.util.Map; /** * @author joethei @@ -40,7 +45,27 @@ public class MenuEvents implements Listener{ InventoryManager inventoryManager = new InventoryManager(p); if(e.getAction() == Action.RIGHT_CLICK_BLOCK || e.getAction() == Action.RIGHT_CLICK_AIR) { if(p.getItemInHand().getType() == Material.WATCH && p.getItemInHand().getItemMeta().getDisplayName().equals("§eErweiterungen")) { - p.openInventory(inventoryManager.getMainInventory()); + if(p.getDatabasePlayer().getRank() == Rank.Player) p.openInventory(inventoryManager.getPlayerInventory()); + else { + InventoryGUI gui = new InventoryGUI(p, 27, "§eErweiterungen"); + gui.addItem(0, new ItemBuilder(Material.SKULL_ITEM).durability((short) 3).skullOwner("MHF_Apple").name("§eKöpfe").build(), customPlayer -> { + customPlayer.closeInventory(); + InventoryGUI headsMainGui = new InventoryGUI(customPlayer, 9, "§eKöpfe"); + headsMainGui.addItem(0, new ItemBuilder(Material.SKULL_ITEM).durability((short) 3).skullOwner("MHF_Chest").name("§eBlöcke").build(), player -> { + player.closeInventory(); + PagedInventoryGUI pagedInventoryGUI = new PagedInventoryGUI(player, "§eBlöcke"); + for(Map.Entry entry : Core.getHeadDB().getBlocks().entrySet()) { + pagedInventoryGUI.addItem(new ItemBuilder(Material.SKULL_ITEM).durability((short) 3).skullUrl(entry.getValue()).name(entry.getKey()).build(), clickedPlayer -> { + clickedPlayer.closeInventory(); + clickedPlayer.getInventory().addItem(new ItemBuilder(Material.SKULL_ITEM).durability((short) 3).skullUrl(entry.getValue()).name(entry.getKey()).build()); + }); + } + pagedInventoryGUI.open(); + }); + headsMainGui.open(); + }); + gui.open(); + } } } } @@ -56,23 +81,21 @@ public class MenuEvents implements Listener{ if(!e.getCurrentItem().getItemMeta().hasDisplayName()) return; Plot plot = PlotManager.getPlotByPlayer(p); assert plot != null; - if(e.getInventory().getName().equals(inventoryManager.getMainInventory().getName())) { + if(e.getInventory().getName().equals(inventoryManager.getPlayerInventory().getName())) { e.setCancelled(true); if(e.getCurrentItem().getType() == Material.BED) { p.closeInventory(); Location loc = plot.getSpawn(); p.teleport(new Location(Bukkit.getWorld("plots"), loc.getX(), loc.getY(), loc.getZ(), 89.0F, 6.0F)); } - if(e.getCurrentItem().getItemMeta().getDisplayName().equals("§ePlot zurücksetzen")) { + if(e.getCurrentItem().getItemMeta().getDisplayName().equals("§eGrundstück zurücksetzen")) { + p.setFlying(true); PlotManager.resetPlot(plot); p.closeInventory(); } if(e.getCurrentItem().getItemMeta().getDisplayName().equalsIgnoreCase("§eFertig")) { p.closeInventory(); - if(plot.hasName() && plot.hasContact()) - p.openInventory(inventoryManager.getReadyInventory()); - else - p.sendMessage("§cName und Kontaktinformationen müssen angegeben werden"); + p.openInventory(inventoryManager.getReadyInventory()); } if(e.getCurrentItem().getItemMeta().getDisplayName().equals("§eBiom ändern")) { p.closeInventory(); @@ -93,14 +116,16 @@ public class MenuEvents implements Listener{ if(e.getCurrentItem().getType() == Material.MINECART) { p.closeInventory(); Bukkit.getScheduler().runTaskAsynchronously(TeamVento.getInstance(), () -> { + /* PageInventory inventory = new PageInventory("§eTeleport", p, true); ArrayList items = new ArrayList<>(); for(Plot plots : PlotManager.getPlots()) { String name = NameFetcher.getRequest(plot.getOwner()); - items.add(new ItemBuilder(Material.SKULL_ITEM).durability((short) 3).skullOwner(name).name("§e" + plots.getName()).lore("§evon " + name).make()); + items.add(new ItemBuilder(p, Material.SKULL_ITEM).durability((short) 3).skullOwner(name).name("§e" + plots.getName()).lore("§evon " + name).build()); } inventory.setPages(items); inventory.openInventory(); + */ }); } } diff --git a/src/main/java/eu/univento/teamvento/listener/SignInteract.java b/src/main/java/eu/univento/teamvento/listener/SignInteract.java index 034081d..8fa2ca1 100644 --- a/src/main/java/eu/univento/teamvento/listener/SignInteract.java +++ b/src/main/java/eu/univento/teamvento/listener/SignInteract.java @@ -1,3 +1,8 @@ +/* + * Copyright (c) 2018 univento.eu - All rights reserved + * You are not allowed to use, distribute or modify this code + */ + package eu.univento.teamvento.listener; import eu.univento.core.api.player.CustomPlayer; @@ -11,9 +16,6 @@ import org.bukkit.event.Listener; import org.bukkit.event.block.Action; import org.bukkit.event.player.PlayerInteractEvent; -import java.util.ArrayList; -import java.util.List; - public class SignInteract implements Listener { @EventHandler @@ -30,59 +32,8 @@ public class SignInteract implements Listener { p.setFlying(true); } else { PlotManager.createPlot(p); - } } - if(e.getClickedBlock().getType() == Material.SPONGE) { - generateSpiral(0, 0, 10); - } - } - } - - public void generateSpiral(int midX, int midZ, int radius) { - int x = midX; - int z = midZ; - int f = 1; - List points = new ArrayList<>(); - while(f <= radius * 2) { - for(int e = z + f; z < e; z++) { - points.add(new Point(x, z)); - } - for(int e = x + f; x < e; x++) { - points.add(new Point(x, z)); - } - f++; - for(int e = z - f; z > e; z--) { - points.add(new Point(x, z)); - } - for(int e = x - f; x > e; x--) { - points.add(new Point(x, z)); - } - f++; - } - for(int e = z + f - 1; z < e; z++) { - points.add(new Point(x, z)); - } - for(Point point : points) - new Location(Bukkit.getWorld("plots"), point.getX(), 100, point.getZ()).getBlock().setType(Material.BEDROCK); - } - - public class Point{ - private int x; - private int z; - public int getX() { - return this.x; - } - public int getZ() { - return this.z; - } - public Point(int x, int z) { - this.x = x; - this.z = z; - } - @Override - public String toString() { - return "{" + this.x + " | " + this.z + "}"; } } } \ No newline at end of file diff --git a/src/main/java/eu/univento/teamvento/plot/InventoryManager.java b/src/main/java/eu/univento/teamvento/plot/InventoryManager.java index 172f7d2..d63b11f 100644 --- a/src/main/java/eu/univento/teamvento/plot/InventoryManager.java +++ b/src/main/java/eu/univento/teamvento/plot/InventoryManager.java @@ -1,3 +1,8 @@ +/* + * Copyright (c) 2018 univento.eu - All rights reserved + * You are not allowed to use, distribute or modify this code + */ + package eu.univento.teamvento.plot; import eu.univento.core.api.items.ItemBuilder; @@ -24,22 +29,22 @@ public class InventoryManager { this.player = player; } - public Inventory getMainInventory() { + public Inventory getPlayerInventory() { Inventory inv = Bukkit.createInventory(player, 27, "§eGrundstücksverwaltung"); - inv.setItem(0, new ItemBuilder(Material.MINECART).name("§eZu anderen Plots teleportieren").make()); - inv.setItem(2, new ItemBuilder(Material.DOUBLE_PLANT).data(4).name("§eBiom ändern").make()); - inv.setItem(8, new ItemBuilder(Material.LADDER).name("§eEinstellungen").make()); - inv.setItem(10, new ItemBuilder(Material.WATCH).name("§eZeit ändern").make()); - inv.setItem(13, new ItemBuilder(Material.BED).name("§ezu deinem Plot").make()); - inv.setItem(16, new ItemBuilder(Material.DOUBLE_PLANT).name("§eWetter ändern").make()); - inv.setItem(20, new ItemBuilder(Material.SKULL_ITEM).durability((short) 3).skullOwner("conorf1807").make()); + //inv.setItem(0, new ItemBuilder(player, Material.MINECART).name("§eZu anderen Plots teleportieren").build()); + //inv.setItem(8, new ItemBuilder(player, Material.LADDER).name("§eEinstellungen").build()); + inv.setItem(1, new ItemBuilder(Material.WATCH).name("§eZeit ändern").build()); + inv.setItem(7, new ItemBuilder(Material.DOUBLE_PLANT).durability((short) 4).name("§eBiom ändern").build()); + inv.setItem(13, new ItemBuilder(Material.BED).durability((short) 8).name("§ezu deinem Grundstück").build()); + inv.setItem(19, new ItemBuilder(Material.DOUBLE_PLANT).name("§eWetter ändern").build()); + //inv.setItem(20, new ItemBuilder(player, Material.SKULL_ITEM).durability((short) 3).skullOwner("conorf1807").build()); Dye resetDye = new Dye(); resetDye.setColor(DyeColor.RED); ItemStack reset = resetDye.toItemStack(1); ItemMeta resetMeta = reset.getItemMeta(); - resetMeta.setDisplayName("§ePlot zurücksetzen"); + resetMeta.setDisplayName("§eGrundstück zurücksetzen"); reset.setItemMeta(resetMeta); Dye readyDye = new Dye(); @@ -49,8 +54,8 @@ public class InventoryManager { readyMeta.setDisplayName("§eFertig"); ready.setItemMeta(readyMeta); - inv.setItem(18, reset); - inv.setItem(26, ready); + inv.setItem(25, reset); + //inv.setItem(26, ready); return inv; } @@ -58,8 +63,8 @@ public class InventoryManager { public Inventory getReadyInventory() { Inventory inv = Bukkit.createInventory(player, 27, "§ePlot fertig ?"); - inv.setItem(5, new ItemBuilder(Material.WOOL).color(Color.LIME).name("Ja").make()); - inv.setItem(10, new ItemBuilder(Material.WOOL).color(Color.RED).name("Nein").make()); + inv.setItem(5, new ItemBuilder(Material.WOOL).color(Color.LIME).name("Ja").build()); + inv.setItem(10, new ItemBuilder(Material.WOOL).color(Color.RED).name("Nein").build()); return inv; } @@ -67,13 +72,14 @@ public class InventoryManager { public Inventory getBiomeInventory() { Inventory inv = Bukkit.createInventory(player, 27, "§eBiom ändern"); - inv.setItem(0, new ItemBuilder(Material.STAINED_CLAY).durability((short) 1).name("§eMessa").make()); - inv.setItem(4, new ItemBuilder(Material.SAPLING).durability((short) 3).name("§eDschungel").make()); - inv.setItem(8, new ItemBuilder(Material.WATER_LILY).name("§eSumpfgebiet").make()); - inv.setItem(11, new ItemBuilder(Material.SAPLING).name("Wald").make()); - inv.setItem(15, new ItemBuilder(Material.LONG_GRASS).durability((short) 1).name("§eFlachland").make()); - inv.setItem(18, new ItemBuilder(Material.DEAD_BUSH).name("§eWüste").make()); - inv.setItem(22, new ItemBuilder(Material.SNOW_BALL).name("§eTundra").make()); + inv.setItem(0, new ItemBuilder(Material.STAINED_CLAY).durability((short) 1).name("§eMesa").build()); + inv.setItem(4, new ItemBuilder(Material.SAPLING).durability((short) 3).name("§eDschungel").build()); + inv.setItem(8, new ItemBuilder(Material.WATER_LILY).name("§eSumpfgebiet").build()); + inv.setItem(11, new ItemBuilder(Material.SAPLING).name("§eWald").build()); + inv.setItem(15, new ItemBuilder(Material.LONG_GRASS).durability((short) 1).name("§eFlachland").build()); + inv.setItem(18, new ItemBuilder(Material.DEAD_BUSH).name("§eWüste").build()); + inv.setItem(22, new ItemBuilder(Material.SNOW_BALL).name("§eTundra").build()); + inv.setItem(26, new ItemBuilder(Material.SAPLING).name("§eTaiga").durability((short) 1).build()); return inv; } @@ -81,8 +87,8 @@ public class InventoryManager { public Inventory getSettingsInventory() { Inventory inv = Bukkit.createInventory(player, 27, "§eEinstellungen"); - inv.setItem(10, new ItemBuilder(Material.SIGN).name("§eName ändern").make()); - inv.setItem(16, new ItemBuilder(Material.NAME_TAG).name("§eKontaktmöglichkeiten").make()); + inv.setItem(10, new ItemBuilder(Material.SIGN).name("§eName ändern").build()); + inv.setItem(16, new ItemBuilder(Material.NAME_TAG).name("§eKontaktmöglichkeiten").build()); return inv; } @@ -90,10 +96,10 @@ public class InventoryManager { public Inventory getTimeInventory() { Inventory inv = Bukkit.createInventory(player, 27, "§eZeit ändern"); - inv.setItem(10, new ItemBuilder(Material.MILK_BUCKET).name("§eMorgen").make()); - inv.setItem(12, new ItemBuilder(Material.DOUBLE_PLANT).name("§eTag").make()); - inv.setItem(14, new ItemBuilder(Material.BEETROOT_SOUP).name("§eAbend").make()); - inv.setItem(16, new ItemBuilder(Material.COAL).name("§eNacht").durability((short) 1).make()); + inv.setItem(10, new ItemBuilder(Material.MILK_BUCKET).name("§eMorgen").build()); + inv.setItem(12, new ItemBuilder(Material.DOUBLE_PLANT).name("§eTag").build()); + inv.setItem(14, new ItemBuilder(Material.BEETROOT_SOUP).name("§eAbend").build()); + inv.setItem(16, new ItemBuilder(Material.COAL).name("§eNacht").durability((short) 1).build()); return inv; } @@ -101,9 +107,9 @@ public class InventoryManager { public Inventory getWeatherInventory() { Inventory inv = Bukkit.createInventory(player, 27, "§eWetter ändern"); - inv.setItem(11, new ItemBuilder(Material.DOUBLE_PLANT).name("§eSonne").make()); - inv.setItem(13, new ItemBuilder(Material.WATER_BUCKET).name("§eRegen").make()); - inv.setItem(15, new ItemBuilder(Material.BLAZE_ROD).name("§eGewitter").make()); + inv.setItem(11, new ItemBuilder(Material.DOUBLE_PLANT).name("§eSonne").build()); + inv.setItem(13, new ItemBuilder(Material.WATER_BUCKET).name("§eRegen").build()); + inv.setItem(15, new ItemBuilder(Material.BLAZE_ROD).name("§eGewitter").build()); return inv; } diff --git a/src/main/java/eu/univento/teamvento/plot/Plot.java b/src/main/java/eu/univento/teamvento/plot/Plot.java index bb511a2..72a7d54 100644 --- a/src/main/java/eu/univento/teamvento/plot/Plot.java +++ b/src/main/java/eu/univento/teamvento/plot/Plot.java @@ -1,7 +1,14 @@ +/* + * Copyright (c) 2018 univento.eu - All rights reserved + * You are not allowed to use, distribute or modify this code + */ + package eu.univento.teamvento.plot; +import eu.univento.core.Core; import eu.univento.core.api.player.CustomPlayer; import eu.univento.core.api.schematic.Cuboid; +import io.vertx.core.json.JsonObject; import org.bukkit.Bukkit; import org.bukkit.Chunk; import org.bukkit.Location; @@ -19,6 +26,7 @@ import java.util.UUID; public class Plot { + private JsonObject json; private final Cuboid area; private final UUID owner; private final Location spawn; @@ -29,6 +37,21 @@ public class Plot { this.spawn = spawn; } + public Plot(JsonObject json) { + this.json = json; + this.area = new Cuboid(getLocation("minPos"), getLocation("maxPos")); + this.owner = UUID.fromString(json.getString("uuid")); + this.spawn = getLocation("Spawn"); + } + + private void update() { + Core.getCommons().getDatabaseManager().getMongoDB().getClient().findOne("plots", new JsonObject().put("uuid", getOwner().toString()), null, res -> { + if(res.succeeded()) { + this.json = res.result(); + }else res.cause().printStackTrace(); + }); + } + public boolean isInPlot(Location location) { return area.containsLocation(location); } @@ -60,11 +83,11 @@ public class Plot { } public Biome getBiome() { - return Biome.valueOf(getStringFromDatabase("biome")); + return Biome.valueOf(json.getString("biome")); } public String getName() { - return getStringFromDatabase("name"); + return json.getString("name"); } public void setName(String name) { @@ -80,7 +103,7 @@ public class Plot { } public Time getTime() { - return Time.valueOf(getStringFromDatabase("time")); + return Time.valueOf(json.getString("time")); } public void setWeather(Weather weather) { @@ -88,7 +111,7 @@ public class Plot { } public Weather getWeather() { - return Weather.valueOf(getStringFromDatabase("weather")); + return Weather.valueOf(json.getString("weather")); } public void setContact(String contact) { @@ -96,7 +119,7 @@ public class Plot { } public String getContact() { - return getStringFromDatabase("contact"); + return json.getString("contact"); } public boolean hasContact() { @@ -108,7 +131,7 @@ public class Plot { } public boolean isReady() { - return (boolean) getObjectFromDatbase("ready"); + return json.getBoolean("ready"); } public WeatherType getWeatherType() { @@ -116,15 +139,18 @@ public class Plot { return WeatherType.valueOf(getWeather().name()); } - private Object getObjectFromDatbase(String name) { - return null; + private Location getLocation(String name) { + JsonObject location = json.getJsonObject(name); + return new Location(Bukkit.getWorld("plots"), location.getDouble("X"), location.getDouble("Y"), location.getDouble("Z")); } - private String getStringFromDatabase(String name) { - return ""; - } private void setInDatabase(String name, Object obj) { - + Core.getCommons().getDatabaseManager().getMongoDB().getClient().findOneAndUpdate("plots", new JsonObject().put("uuid", getOwner().toString()), new JsonObject().put("$set", new JsonObject().put(name, obj)), event -> { + if(event.failed()) { + event.cause().printStackTrace(); + } + }); + update(); } } \ No newline at end of file diff --git a/src/main/java/eu/univento/teamvento/plot/PlotAction.java b/src/main/java/eu/univento/teamvento/plot/PlotAction.java index f8f8918..0a9b749 100644 --- a/src/main/java/eu/univento/teamvento/plot/PlotAction.java +++ b/src/main/java/eu/univento/teamvento/plot/PlotAction.java @@ -1,13 +1,15 @@ +/* + * Copyright (c) 2018 univento.eu - All rights reserved + * You are not allowed to use, distribute or modify this code + */ + package eu.univento.teamvento.plot; -import eu.univento.core.api.Config; import eu.univento.core.api.player.CustomPlayer; import eu.univento.teamvento.TeamVento; import lombok.AllArgsConstructor; import org.bukkit.Bukkit; import org.bukkit.Location; -import org.bukkit.Material; -import org.bukkit.inventory.ItemStack; /** * @author joethei @@ -29,13 +31,19 @@ interface PlotAction { @Override public void execute() { - Plot plot = PlotManager.getPlotPosition(player); - PlotManager.addPlotToDatabase(plot); - PlotManager.generatePlot(plot); - assert plot != null; - Location loc = plot.getSpawn(); - player.teleport(new Location(Bukkit.getWorld("plots"), loc.getX(), loc.getY(), loc.getZ(), 89.0F, 6.0F)); - player.sendHologram(new ItemStack(Material.GRASS), Config.readLocation("Build.Locs.Holo"), "§eZu deinem Plot teleportieren", "|", "|", "▼"); + if(PlotManager.hasPlot(player)) { + player.sendMessage("§cDu hast doch schon ein Grundstück"); + }else { + player.sendMessage("§aDein Grundstück wird erstellt"); + Plot plot = PlotManager.getPlotPosition(player); + PlotManager.addPlotToDatabase(plot); + PlotManager.generatePlot(plot); + assert plot != null; + Location loc = plot.getSpawn(); + player.setFlying(true); + player.teleport(new Location(Bukkit.getWorld("plots"), loc.getX(), loc.getY(), loc.getZ(), 89.0F, 6.0F)); + //player.sendHologram(new ItemStack(Material.GRASS), Config.readLocation("Build.Locs.Holo"), "§eZu deinem Plot teleportieren", "|", "|", "▼"); + } } } @@ -50,7 +58,7 @@ interface PlotAction { @Override public void execute() { PlotManager.clearPlot(plot); - Bukkit.getScheduler().scheduleSyncDelayedTask(TeamVento.getInstance(), () -> PlotManager.generatePlot(plot), 13 * 20L); + Bukkit.getScheduler().scheduleSyncDelayedTask(TeamVento.getInstance(), () -> PlotManager.generatePlot(plot), 15 * 20L); } } diff --git a/src/main/java/eu/univento/teamvento/plot/PlotManager.java b/src/main/java/eu/univento/teamvento/plot/PlotManager.java index c01e373..86c97d4 100644 --- a/src/main/java/eu/univento/teamvento/plot/PlotManager.java +++ b/src/main/java/eu/univento/teamvento/plot/PlotManager.java @@ -1,7 +1,13 @@ +/* + * Copyright (c) 2018 univento.eu - All rights reserved + * You are not allowed to use, distribute or modify this code + */ + package eu.univento.teamvento.plot; import eu.univento.commons.player.rank.Rank; import eu.univento.core.Core; +import eu.univento.core.api.Config; import eu.univento.core.api.player.CustomPlayer; import eu.univento.core.api.schematic.Cuboid; import eu.univento.teamvento.TeamVento; @@ -13,9 +19,13 @@ import org.bukkit.block.Biome; import org.bukkit.block.Block; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.scheduler.BukkitRunnable; import java.time.Instant; -import java.util.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Queue; +import java.util.UUID; import java.util.concurrent.CompletableFuture; import java.util.concurrent.LinkedBlockingDeque; @@ -39,21 +49,17 @@ public class PlotManager { return lastPlot; } - public static void setLastPlot(Plot plot) { - lastPlot = plot; - } - public static void update() { - Core.getCommons().getDatabaseManager().getMongoDB().getClient().find("plots", null, res -> { + Core.getCommons().getDatabaseManager().getMongoDB().getClient().find("plots", new JsonObject(), res -> { if(res.succeeded()) { for(JsonObject json : res.result()) { - String uuid = json.getString("uuid"); - Plot plot = new Plot(new Cuboid(getLocation(uuid, "minPos"), getLocation(uuid, "maxPos")), UUID.fromString(uuid), getLocation(uuid, "Spawn")); + Plot plot = new Plot(json); plots.add(plot); plot.setBiome(plot.getBiome()); } }else res.cause().printStackTrace(); }); + lastPlot = getPlotByOwner(Config.readString("lastPlot")); } public static Plot getPlotByPlayer(CustomPlayer p) { @@ -69,17 +75,20 @@ public class PlotManager { public static void createPlot(CustomPlayer p) { if(queue.isEmpty()) { - new PlotAction.Create(p).execute(); - }else { queue.offer(new PlotAction.Create(p)); - p.sendMessage("Du wurdest zur Warteschlange hinzugefügt: (" + queue.size() + ")"); + queue.peek().execute(); + }else { + p.sendMessage("§7Du wurdest zur Warteschlange hinzugefügt, bitte habe einen Moment Geduld: (" + queue.size() + ")"); + queue.offer(new PlotAction.Create(p)); } } public static void resetPlot(Plot plot) { if(queue.isEmpty()) { - new PlotAction.Reset(plot).execute(); + queue.offer(new PlotAction.Reset(plot)); + queue.peek().execute(); }else { + CustomPlayer.getPlayer(plot.getOwner()).sendMessage("§7Du wurdest zur Warteschlange hinzugefügt, bitte habe einen Moment Geduld: (" + queue.size() + ")"); queue.offer(new PlotAction.Reset(plot)); } } @@ -162,10 +171,7 @@ public class PlotManager { long i = 0; for (Block b : rand1.getBlocks()) { i++; - Bukkit.getScheduler().scheduleSyncDelayedTask(TeamVento.getInstance(), () -> { - b.setType(Material.WOOD_STEP); - b.setData((byte) 1); - }, i); + Bukkit.getScheduler().scheduleSyncDelayedTask(TeamVento.getInstance(), () -> b.setType(Material.STEP), i); } }); Cuboid rand2 = new Cuboid(new Location(Bukkit.getWorld("plots"), blocks.getUpperX(), blocks.getUpperY() + 1.0D, blocks.getUpperZ()), new Location(Bukkit.getWorld("plots"), blocks.getUpperX(), blocks.getUpperY() + 1.0D, blocks.getUpperZ() - 50.0D)); @@ -173,10 +179,7 @@ public class PlotManager { long i = 0; for (Block b : rand2.getBlocks()) { i++; - Bukkit.getScheduler().scheduleSyncDelayedTask(TeamVento.getInstance(), () -> { - b.setType(Material.WOOD_STEP); - b.setData((byte) 1); - }, i); + Bukkit.getScheduler().scheduleSyncDelayedTask(TeamVento.getInstance(), () -> b.setType(Material.STEP), i); } }); Cuboid rand3 = new Cuboid(new Location(Bukkit.getWorld("plots"), blocks.getLowerX(), blocks.getUpperY() + 1.0D, blocks.getLowerZ()), new Location(Bukkit.getWorld("plots"), blocks.getLowerX(), blocks.getUpperY() + 1.0D, blocks.getLowerZ() + 50.0D)); @@ -184,10 +187,7 @@ public class PlotManager { long i = 0; for (Block b : rand3.getBlocks()) { i++; - Bukkit.getScheduler().scheduleSyncDelayedTask(TeamVento.getInstance(), () -> { - b.setType(Material.WOOD_STEP); - b.setData((byte) 1); - }, i); + Bukkit.getScheduler().scheduleSyncDelayedTask(TeamVento.getInstance(), () -> b.setType(Material.STEP), i); } }); Cuboid rand4 = new Cuboid(new Location(Bukkit.getWorld("plots"), blocks.getLowerX(), blocks.getUpperY() + 1.0D, blocks.getLowerZ()), new Location(Bukkit.getWorld("plots"), blocks.getLowerX() + 50.D, blocks.getUpperY() + 1.0D, blocks.getLowerZ())); @@ -195,42 +195,39 @@ public class PlotManager { long i = 0; for (Block b : rand4.getBlocks()) { i++; - Bukkit.getScheduler().scheduleSyncDelayedTask(TeamVento.getInstance(), () -> { - b.setType(Material.WOOD_STEP); - b.setData((byte) 1); - }, i); + Bukkit.getScheduler().scheduleSyncDelayedTask(TeamVento.getInstance(), () -> b.setType(Material.STEP), i); } }); - Cuboid street1 = new Cuboid(new Location(Bukkit.getWorld("plots"), blocks.getUpperX() + 1.0D, blocks.getUpperY(), blocks.getUpperZ() + 4.0D), new Location(Bukkit.getWorld("plots"), blocks.getUpperX() + 4.0D, 0.0D, blocks.getUpperZ() - 54.0D)); + Cuboid street1 = new Cuboid(new Location(Bukkit.getWorld("plots"), blocks.getUpperX() + 1.0D, blocks.getUpperY(), blocks.getUpperZ() + 4.0D), new Location(Bukkit.getWorld("plots"), blocks.getUpperX() + 4.0D, 0D, blocks.getUpperZ() - 54.0D)); Bukkit.getScheduler().runTaskLaterAsynchronously(TeamVento.getInstance(), () -> { long i = 0; for (Block b : street1.getBlocks()) { i++; - Bukkit.getScheduler().scheduleSyncDelayedTask(TeamVento.getInstance(), () -> b.setType(Material.COAL_BLOCK), i / 16); + Bukkit.getScheduler().scheduleSyncDelayedTask(TeamVento.getInstance(), () -> b.setType(Material.CONCRETE), i / 16); } }, 35 * 20L); - Cuboid street2 = new Cuboid(new Location(Bukkit.getWorld("plots"), blocks.getLowerX() - 1.0D, blocks.getUpperY(), blocks.getLowerZ() - 4.0D), new Location(Bukkit.getWorld("plots"), blocks.getLowerX() - 4.0D, 0.0D, blocks.getLowerZ() + 54.0D)); + Cuboid street2 = new Cuboid(new Location(Bukkit.getWorld("plots"), blocks.getLowerX() - 1.0D, blocks.getUpperY(), blocks.getLowerZ() - 4.0D), new Location(Bukkit.getWorld("plots"), blocks.getLowerX() - 4.0D, 0D, blocks.getLowerZ() + 54.0D)); Bukkit.getScheduler().runTaskAsynchronously(TeamVento.getInstance(), () -> { long i = 0; for (Block b : street2.getBlocks()) { i++; - Bukkit.getScheduler().scheduleSyncDelayedTask(TeamVento.getInstance(), () -> b.setType(Material.COAL_BLOCK), i / 16); + Bukkit.getScheduler().scheduleSyncDelayedTask(TeamVento.getInstance(), () -> b.setType(Material.CONCRETE), i / 16); } }); - Cuboid street3 = new Cuboid(new Location(Bukkit.getWorld("plots"), blocks.getUpperX(), blocks.getUpperY(), blocks.getUpperZ() + 1.0D), new Location(Bukkit.getWorld("plots"), blocks.getLowerX(), 0.0D, blocks.getLowerZ() + 54.0D)); + Cuboid street3 = new Cuboid(new Location(Bukkit.getWorld("plots"), blocks.getUpperX(), blocks.getUpperY(), blocks.getUpperZ() + 1.0D), new Location(Bukkit.getWorld("plots"), blocks.getLowerX(), 0D, blocks.getLowerZ() + 54.0D)); Bukkit.getScheduler().runTaskAsynchronously(TeamVento.getInstance(), () -> { long i = 0; for (Block b : street3.getBlocks()) { i++; - Bukkit.getScheduler().scheduleSyncDelayedTask(TeamVento.getInstance(), () -> b.setType(Material.COAL_BLOCK), i / 16); + Bukkit.getScheduler().scheduleSyncDelayedTask(TeamVento.getInstance(), () -> b.setType(Material.CONCRETE), i / 16); } }); - Cuboid street4 = new Cuboid(new Location(Bukkit.getWorld("plots"), blocks.getUpperX(), blocks.getUpperY(), blocks.getUpperZ() - 54.0D), new Location(Bukkit.getWorld("plots"), blocks.getLowerX(), 0.0D, blocks.getLowerZ() - 1.0D)); + Cuboid street4 = new Cuboid(new Location(Bukkit.getWorld("plots"), blocks.getUpperX(), blocks.getUpperY(), blocks.getUpperZ() - 54.0D), new Location(Bukkit.getWorld("plots"), blocks.getLowerX(), 0D, blocks.getLowerZ() - 1.0D)); Bukkit.getScheduler().runTaskAsynchronously(TeamVento.getInstance(), () -> { long i = 0; for (Block b : street4.getBlocks()) { i++; - Bukkit.getScheduler().scheduleSyncDelayedTask(TeamVento.getInstance(), () -> b.setType(Material.COAL_BLOCK), i / 16); + Bukkit.getScheduler().scheduleSyncDelayedTask(TeamVento.getInstance(), () -> b.setType(Material.CONCRETE), i / 16); } }); @@ -241,135 +238,44 @@ public class PlotManager { menu.setItemMeta(menuMeta); Bukkit.getPlayer(plot.getOwner()).getInventory().setItem(8, menu); }, 35 * 20L)); - - if(!queue.isEmpty()) queue.peek().execute(); + Bukkit.getScheduler().scheduleSyncDelayedTask(TeamVento.getInstance(), new BukkitRunnable() { + @Override + public void run() { + queue.poll(); + if(!queue.isEmpty()) { + queue.peek().execute(); + } + } + }, 60 * 20L); } static Plot getPlotPosition(CustomPlayer p) { if (lastPlot == null) { - Bukkit.broadcastMessage("Erstes Plot"); Location lower = new Location(Bukkit.getWorld("plots"), Bukkit.getWorld("plots").getSpawnLocation().getX(), Bukkit.getWorld("plots").getSpawnLocation().getY() - 20.0D, Bukkit.getWorld("plots").getSpawnLocation().getZ()); Location upper = new Location(Bukkit.getWorld("plots"), lower.getX() + 50.0D, lower.getY() + 250.0D, lower.getZ() + 50.0D); Cuboid area = new Cuboid(upper, lower); - return new Plot(area, p.getUniqueId(), new Location(Bukkit.getWorld("plots"), upper.getX() + 1.0D, lower.getY() + 25.0D, lower.getZ() + 25.0D)); + Plot plot = new Plot(area, p.getUniqueId(), new Location(Bukkit.getWorld("plots"), upper.getX() + 1.0D, lower.getY() + 25.0D, lower.getZ() + 25.0D)); + plots.add(plot); + lastPlot = plot; + return plot; } Location upper = lastPlot.getArea().getUpperLocation(); Location lower = lastPlot.getArea().getLowerLocation(); - Location west = new Location(Bukkit.getWorld("plots"), lower.getX() - 25.0D, lower.getY() + 25.0D, lower.getZ() + 25.0D); - Location east = new Location(Bukkit.getWorld("plots"), upper.getX() + 25.0D, lower.getY() + 25.0D, lower.getZ() + 25.0D); - Location north = new Location(Bukkit.getWorld("plots"), lower.getX() + 25.0D, lower.getY() + 25.0D, lower.getZ() - 25.0D); - Location south = new Location(Bukkit.getWorld("plots"), upper.getX() - 25.0D, lower.getY() + 25.0D, lower.getZ() + 75.0D); + upper.setX(upper.getX() + 70); + lower.setX(lower.getX() + 70); - west.getBlock().setType(Material.GLASS); - east.getBlock().setType(Material.GRASS_PATH); - north.getBlock().setType(Material.STONE); - south.getBlock().setType(Material.ACACIA_STAIRS); - - boolean westPlot = isPlot(west); - boolean eastPlot = isPlot(east); - boolean northPlot = isPlot(north); - boolean southPlot = isPlot(south); - - if (westPlot && eastPlot && northPlot && southPlot) { - Bukkit.broadcastMessage("Plot im Westen"); - upper.setX(upper.getX() + 55); - lower.setX(lower.getX() + 55); - return getPlot(p.getUniqueId(), upper, lower); - } - if (westPlot && eastPlot && northPlot && southPlot) { - Bukkit.broadcastMessage("Plot im Norden"); - upper.setZ(upper.getZ() - 55); - lower.setZ(lower.getZ() - 55); - return getPlot(p.getUniqueId(), upper, lower); - } - if (westPlot && eastPlot && northPlot && southPlot) { - Bukkit.broadcastMessage("Plot im Osten"); - upper.setX(upper.getX() - 55); - lower.setX(lower.getX() - 55); - return getPlot(p.getUniqueId(), upper, lower); - } - if (westPlot && eastPlot && northPlot && southPlot) { - Bukkit.broadcastMessage("Plot im Osten 2"); - upper.setX(upper.getX() - 55); - lower.setX(lower.getX() - 55); - return getPlot(p.getUniqueId(), upper, lower); - } - if (westPlot && eastPlot && northPlot && southPlot) { - Bukkit.broadcastMessage("Plot im Süden"); - upper.setZ(upper.getZ() + 55); - lower.setZ(lower.getZ() + 55); - return getPlot(p.getUniqueId(), upper, lower); - } - if (westPlot && eastPlot && northPlot && southPlot) { - Bukkit.broadcastMessage("Plot im Süden 2"); - upper.setZ(upper.getZ() + 55); - lower.setZ(upper.getZ() + 55); - return getPlot(p.getUniqueId(), upper, lower); - } - if (westPlot && eastPlot && northPlot && southPlot) { - Bukkit.broadcastMessage("Plot im Westen 2"); - upper.setX(upper.getX() + 55); - lower.setX(lower.getX() + 55); - return getPlot(p.getUniqueId(), upper, lower); - } - if (westPlot && eastPlot && northPlot && southPlot) { - Bukkit.broadcastMessage("Plot im Norden 2"); - upper.setZ(upper.getZ() - 55); - lower.setZ(lower.getZ() - 55); - return getPlot(p.getUniqueId(), upper, lower); - } - if (westPlot && eastPlot && northPlot && southPlot) { - Bukkit.broadcastMessage("Plot im Norden 3"); - upper.setZ(upper.getZ() - 55); - lower.setZ(lower.getZ() - 55); - return getPlot(p.getUniqueId(), upper, lower); - } - if (westPlot && eastPlot && northPlot && southPlot) { - Bukkit.broadcastMessage("Plot im Osten 3"); - upper.setX(upper.getX() - 55); - lower.setX(lower.getX() - 55); - return getPlot(p.getUniqueId(), upper, lower); - } - if (westPlot && eastPlot && northPlot && southPlot) { - Bukkit.broadcastMessage("Plot im Osten 4"); - upper.setX(upper.getX() - 55); - lower.setX(lower.getX() - 55); - return getPlot(p.getUniqueId(), upper, lower); - } - if (westPlot && eastPlot && northPlot && southPlot) { - Bukkit.broadcastMessage("Plot im Süden 3"); - upper.setZ(upper.getZ() + 55); - lower.setZ(lower.getZ() + 55); - return getPlot(p.getUniqueId(), upper, lower); - } - if (westPlot && eastPlot && northPlot && southPlot) { - Bukkit.broadcastMessage("Plot im Westen 3"); - upper.setX(upper.getX() + 55); - lower.setX(lower.getX() + 55); - return getPlot(p.getUniqueId(), upper, lower); - } - if (westPlot && eastPlot && northPlot && southPlot) { - Bukkit.broadcastMessage("Plot im Westen 4"); - upper.setX(upper.getX() + 55); - lower.setX(lower.getX() + 55); - return getPlot(p.getUniqueId(), upper, lower); - } - return null; - - } - - private static Plot getPlot(UUID uuid, Location upper, Location lower) { Cuboid area = new Cuboid(upper, lower); + Location spawn = new Location(Bukkit.getWorld("plots"), lower.getX() + 52.0D, lower.getY() + 25.0D, lower.getZ() + 25.0D); - Plot plot = new Plot(area, uuid, spawn); + Plot plot = new Plot(area, p.getUniqueId(), spawn); plots.add(plot); + lastPlot = plot; return plot; } static void addPlotToDatabase(Plot plot) { JsonObject json = new JsonObject().put("uuid", plot.getOwner().toString()); - Date date = new Date(); HashMap maxPos = new HashMap<>(); maxPos.put("X", plot.getArea().getUpperX()); @@ -386,16 +292,15 @@ public class PlotManager { spawn.put("Y", plot.getSpawn().getY()); spawn.put("Z", plot.getSpawn().getZ()); - json.put("created", date).put("maxPos", new JsonObject(maxPos)).put("minPos", new JsonObject(minPos)).put("Spawn", new JsonObject(spawn)).put("time", Time.DAY.name()) + json.put("created", Instant.now()).put("maxPos", new JsonObject(maxPos)).put("minPos", new JsonObject(minPos)).put("Spawn", new JsonObject(spawn)).put("time", Time.DAY.name()) .put("weather", Weather.CLEAR.name()).put("biome", Biome.PLAINS.name()).put("name", "§cunbenanntes Plot").put("contact", "").put("ready", false); Core.getCommons().getDatabaseManager().getMongoDB().getClient().insert("plots", json, res -> { if(res.failed()) res.cause().printStackTrace(); }); - } - private static boolean isPlot(Location location) { + public static boolean isPlot(Location location) { return getPlotByLocation(location) != null; } @@ -411,45 +316,24 @@ public class PlotManager { return null; } - public static CompletableFuture getCreatedDate(String uuid) { - return getDateFromDatabase(uuid); - } - - private static Location getLocation(String uuid, String name) { - Map map = getMapFromDatabase(uuid, name); - return new Location(Bukkit.getWorld("plots"), Double.valueOf(String.valueOf(map.get("X"))), Double.valueOf(String.valueOf(map.get("Y"))), Double.valueOf(String.valueOf(map.get("Z")))); - } - public static boolean isAllowedToBuild(CustomPlayer p, Location loc) { if(loc.getWorld().getName().equalsIgnoreCase("plots")) { - if (p.getDatabasePlayer().isAllowed(Rank.SrDeveloper)) return true; + if (p.getDatabasePlayer().isAllowed(Rank.Admin)) return true; + if(getPlotByLocation(loc) == null) return false; Plot plot = getPlotByLocation(loc); - return plot != null && plot.isOwner(p); + assert plot != null; + return plot.isOwner(p); }else { return true; } } - private static CompletableFuture getDateFromDatabase(String uuid) { + public static CompletableFuture getCreatedDate(UUID uuid) { CompletableFuture future = new CompletableFuture<>(); - Core.getCommons().getDatabaseManager().getMongoDB().getClient().findOne("plots", new JsonObject().put("uuid", uuid), null, res -> { + Core.getCommons().getDatabaseManager().getMongoDB().getClient().findOne("plots", new JsonObject().put("uuid", uuid.toString()), null, res -> { if(res.succeeded()) future.complete(res.result().getInstant("created")); else res.cause().printStackTrace(); }); return future; } - - private static CompletableFuture getObjectFromDatbase(String uuid, String name) { - CompletableFuture future = new CompletableFuture<>(); - Core.getCommons().getDatabaseManager().getMongoDB().getClient().findOne("plots", new JsonObject().put("uuid", uuid), null, res -> { - if(res.succeeded()) future.complete(res.result().getValue(name)); - else res.cause().printStackTrace(); - }); - return future; - } - - private static Map getMapFromDatabase(String uuid, String name) { - return (Map) getObjectFromDatbase(uuid, name); - } - } \ No newline at end of file