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