From 1488b48c387c78ce11371896084a5ac01a37371f Mon Sep 17 00:00:00 2001 From: joethei Date: Sat, 17 Sep 2016 12:10:01 +0200 Subject: [PATCH] changed plot positions again, still not working --- TeamVento.iml | 29 +++-- pom.xml | 25 ++++ .../java/eu/univento/teamvento/TeamVento.java | 14 +-- .../univento/teamvento/commands/PlotInfo.java | 11 +- .../eu/univento/teamvento/commands/Set.java | 2 +- .../teamvento/commands/WorldList.java | 9 +- .../univento/teamvento/listener/Events.java | 117 +++++++++++++----- .../univento/teamvento/listener/JoinQuit.java | 15 ++- .../teamvento/listener/MenuEvents.java | 48 +++++-- .../teamvento/listener/SignInteract.java | 53 ++++++++ .../univento/teamvento/utils/Inventorys.java | 11 ++ .../eu/univento/teamvento/utils/Plot.java | 12 +- .../univento/teamvento/utils/PlotManager.java | 32 ++++- .../teamvento/utils/ResourcePack.java | 1 + 14 files changed, 303 insertions(+), 76 deletions(-) diff --git a/TeamVento.iml b/TeamVento.iml index 28eb5f3..bfa888d 100644 --- a/TeamVento.iml +++ b/TeamVento.iml @@ -6,29 +6,42 @@ + - + + - - + + + - - - - - + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index b8bbcf9..75e78cc 100644 --- a/pom.xml +++ b/pom.xml @@ -51,12 +51,37 @@ + + + spigot-repo + https://hub.spigotmc.org/nexus/content/repositories/snapshots/ + + + eu.univento Core 1.0-SNAPSHOT + + org.spigotmc + spigot-api + 1.10.2-R0.1-SNAPSHOT + provided + + + org.bukkit + bukkit + 1.10.2-R0.1-SNAPSHOT + provided + + + org.bukkit + craftbukkit + 1.10.2-R0.1-SNAPSHOT + provided + diff --git a/src/main/java/eu/univento/teamvento/TeamVento.java b/src/main/java/eu/univento/teamvento/TeamVento.java index 37d5a62..2d218dc 100644 --- a/src/main/java/eu/univento/teamvento/TeamVento.java +++ b/src/main/java/eu/univento/teamvento/TeamVento.java @@ -49,14 +49,14 @@ public class TeamVento extends JavaPlugin { pm.registerEvents(new SignInteract(), this); pm.registerEvents(new MenuEvents(), this); - new Setloc(this, "setloc" , "sets locations"); - new WorldTP(this, "teleports players to other worlds", "wtp"); - new WorldCreate(this, "creates new worlds", "wc"); - new WorldImport(this, "worldimport", "imports worlds"); + new Setloc(this, "setloc", "sets locations"); + new WorldTP(this, "worldteleport", "teleports players to other worlds", "wtp"); + new WorldCreate(this, "worldcreate", "creates new worlds", "wc"); + new WorldImport(this, "worldimport", "imports worlds", "wi"); new Set(this, "set", "sets the material of selected blocks"); new Sel(this, "sel", "removes block selection"); - new WorldList(this, "lists all worlds", "wl"); - new PlotInfo(this, "info about a plot", "pi"); + new WorldList(this, "worldlist", "lists all worlds", "wl"); + new PlotInfo(this, "plotinfo", "info about a plot", "pi"); new Pack(this, "pack", "sets resource pack"); for(String world : getCfg().getKeys(true)) { @@ -89,7 +89,6 @@ public class TeamVento extends JavaPlugin { ServerSettings.setBuild(false); PlotManager.update(); PlotManager.setLastPlot(PlotManager.getPlotByOwner(Config.readString("lastPlot"))); - Core.getCommons().getLoggingHandler().getTrashGames().info("Plugin ver." + getDescription().getVersion() + " gestartet"); 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); } @@ -99,6 +98,5 @@ public class TeamVento extends JavaPlugin { Config.write(PlotManager.getLastPlot().getOwner().toString()); Bukkit.getWorld("plots").getLivingEntities().forEach(Entity::remove); Core.getInstance().unregisterPlugin(this); - Core.getCommons().getLoggingHandler().getTrashGames().info("Plugin beendet"); } } \ No newline at end of file diff --git a/src/main/java/eu/univento/teamvento/commands/PlotInfo.java b/src/main/java/eu/univento/teamvento/commands/PlotInfo.java index 91cc082..9f467fe 100644 --- a/src/main/java/eu/univento/teamvento/commands/PlotInfo.java +++ b/src/main/java/eu/univento/teamvento/commands/PlotInfo.java @@ -8,6 +8,10 @@ import eu.univento.core.api.utils.UUIDFetcher; import eu.univento.teamvento.TeamVento; import eu.univento.teamvento.utils.Plot; import eu.univento.teamvento.utils.PlotManager; +import net.md_5.bungee.api.chat.ClickEvent; +import net.md_5.bungee.api.chat.ComponentBuilder; +import net.md_5.bungee.api.chat.HoverEvent; +import net.md_5.bungee.api.chat.TextComponent; import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -27,10 +31,15 @@ public class PlotInfo extends AutoCommand{ if(p.getDatabasePlayer().isAllowed(Rank.SrBuilder)) { if(PlotManager.getPlotByLocation(p.getLocation()) != null) { Plot plot = PlotManager.getPlotByLocation(p.getLocation()); + assert plot != null; Bukkit.getScheduler().runTaskAsynchronously(TeamVento.getInstance(), () -> { p.sendMessage("§eErsteller: " + UUIDFetcher.getName(plot.getOwner())); p.sendMessage("§eErstellt am: " + PlotManager.getCreatedDate(plot.getOwner().toString())); - p.sendMessage("§eResourcePack " + plot.getResourcePack().getName()); + p.sendMessage("§eResourcePack: " + plot.getResourcePack().getName()); + TextComponent text = new TextComponent("§eResourcePack: " + plot.getResourcePack().getName()); + text.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "pack " + plot.getResourcePack().getName())); + text.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("§eLade ResourcePack").create())); + p.spigot().sendMessage(text); }); }else{ p.sendMessage("§cHier ist leider kein Plot"); diff --git a/src/main/java/eu/univento/teamvento/commands/Set.java b/src/main/java/eu/univento/teamvento/commands/Set.java index 4e61e88..b9f5846 100644 --- a/src/main/java/eu/univento/teamvento/commands/Set.java +++ b/src/main/java/eu/univento/teamvento/commands/Set.java @@ -3,7 +3,7 @@ package eu.univento.teamvento.commands; import eu.univento.commons.player.Rank; import eu.univento.core.api.AutoCommand; import eu.univento.core.api.languages.Messages; -import eu.univento.core.api.map.Cuboid; +import eu.univento.core.api.schematic.Cuboid; import eu.univento.core.api.player.CustomPlayer; import eu.univento.teamvento.TeamVento; import eu.univento.teamvento.utils.WorldEdit; diff --git a/src/main/java/eu/univento/teamvento/commands/WorldList.java b/src/main/java/eu/univento/teamvento/commands/WorldList.java index f43f300..8d2ae4e 100644 --- a/src/main/java/eu/univento/teamvento/commands/WorldList.java +++ b/src/main/java/eu/univento/teamvento/commands/WorldList.java @@ -5,6 +5,10 @@ import eu.univento.core.api.AutoCommand; import eu.univento.core.api.languages.Messages; import eu.univento.core.api.player.CustomPlayer; import eu.univento.teamvento.TeamVento; +import net.md_5.bungee.api.chat.ClickEvent; +import net.md_5.bungee.api.chat.ComponentBuilder; +import net.md_5.bungee.api.chat.HoverEvent; +import net.md_5.bungee.api.chat.TextComponent; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -27,7 +31,10 @@ public class WorldList extends AutoCommand { if(p.getDatabasePlayer().isAllowed(Rank.Supporter)) { p.sendMessage("§cAll worlds"); for(String world : TeamVento.getCfg().getKeys(true)) { - p.sendMessage("§a- " + world); + TextComponent text = new TextComponent("§a- " + world); + text.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/wtp " + world)); + text.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("In die Welt").create())); + p.spigot().sendMessage(text); } }else{ p.sendMessage(p.getMessages().NO_PERMS()); diff --git a/src/main/java/eu/univento/teamvento/listener/Events.java b/src/main/java/eu/univento/teamvento/listener/Events.java index 447f3df..e130c87 100644 --- a/src/main/java/eu/univento/teamvento/listener/Events.java +++ b/src/main/java/eu/univento/teamvento/listener/Events.java @@ -61,11 +61,16 @@ public class Events implements Listener{ @EventHandler public void onBlockBreak(BlockBreakEvent e) { CustomPlayer p = CustomPlayer.getPlayer(e.getPlayer()); - if(PlotManager.getPlotByLocation(e.getBlock().getLocation()) == null) e.setCancelled(true); - if(!PlotManager.getPlotByLocation(e.getBlock().getLocation()).isOwner(p)) e.setCancelled(true); + if(PlotManager.getPlotByLocation(e.getBlock().getLocation()) == null) { + e.setCancelled(true); + return; + } + Plot plot = PlotManager.getPlotByLocation(e.getBlock().getLocation()); + assert plot != null; + if(!plot.isOwner(p)) e.setCancelled(true); if(!e.getBlock().getWorld().getName().equals("plots")) e.setCancelled(false); if(p.getDatabasePlayer().isAllowed(Rank.SrDeveloper)) e.setCancelled(false); - /** + /* if (p.getDatabasePlayer().isAllowed(Rank.SrDeveloper)) return; if (!e.getBlock().getWorld().getName().equalsIgnoreCase("plots")) return; if (PlotManager.getPlotByLocation(e.getBlock().getLocation()) == null) { @@ -79,11 +84,16 @@ public class Events implements Listener{ @EventHandler public void onBlockPlace(BlockPlaceEvent e) { CustomPlayer p = CustomPlayer.getPlayer(e.getPlayer()); - if(PlotManager.getPlotByLocation(e.getBlockPlaced().getLocation()) == null) e.setCancelled(true); - if(!PlotManager.getPlotByLocation(e.getBlockPlaced().getLocation()).isOwner(p)) e.setCancelled(true); + if(PlotManager.getPlotByLocation(e.getBlockPlaced().getLocation()) == null) { + e.setCancelled(true); + return; + } + Plot plot = PlotManager.getPlotByLocation(e.getBlockPlaced().getLocation()); + assert plot != null; + if(!plot.isOwner(p)) e.setCancelled(true); if(!e.getBlockPlaced().getWorld().getName().equals("plots")) e.setCancelled(false); if(p.getDatabasePlayer().isAllowed(Rank.SrDeveloper)) e.setCancelled(false); - /** + /* CustomPlayer p = CustomPlayer.getPlayer(e.getPlayer()); if (p.getDatabasePlayer().isAllowed(Ranks.SrDeveloper)) return; if (!e.getBlock().getWorld().getName().equalsIgnoreCase("plots")) return; @@ -101,7 +111,9 @@ public class Events implements Listener{ if (!e.getBlock().getWorld().getName().equalsIgnoreCase("plots")) return; if (p.getDatabasePlayer().isAllowed(Rank.SrDeveloper)) return; if (PlotManager.getPlotByLocation(e.getBlock().getLocation()) == null) e.setCancelled(true); - if (!PlotManager.getPlotByLocation(e.getBlock().getLocation()).isOwner(p)) e.setCancelled(true); + Plot plot = PlotManager.getPlotByLocation(e.getBlock().getLocation()); + assert plot != null; + if(!plot.isOwner(p)) e.setCancelled(true); } @EventHandler @@ -111,14 +123,18 @@ public class Events implements Listener{ if (!e.getEntity().getWorld().getName().equalsIgnoreCase("plots")) return; if (p.getDatabasePlayer().isAllowed(Rank.SrDeveloper)) return; if (PlotManager.getPlotByLocation(e.getEntity().getLocation()) == null) e.setCancelled(true); - if (!PlotManager.getPlotByLocation(e.getEntity().getLocation()).isOwner(p)) e.setCancelled(true); + Plot plot = PlotManager.getPlotByLocation(e.getEntity().getLocation()); + assert plot != null; + if(!plot.isOwner(p)) e.setCancelled(true); } if(e.getRemover() instanceof Player) { CustomPlayer p = CustomPlayer.getPlayer((Player) e.getRemover()); if (!e.getEntity().getWorld().getName().equalsIgnoreCase("plots")) return; if (p.getDatabasePlayer().isAllowed(Rank.SrDeveloper)) return; if (PlotManager.getPlotByLocation(e.getEntity().getLocation()) == null) e.setCancelled(true); - if (!PlotManager.getPlotByLocation(e.getEntity().getLocation()).isOwner(p)) e.setCancelled(true); + Plot plot = PlotManager.getPlotByLocation(e.getEntity().getLocation()); + assert plot != null; + if(!plot.isOwner(p)) e.setCancelled(true); }else{ e.setCancelled(true); } @@ -134,7 +150,9 @@ public class Events implements Listener{ e.setCancelled(true); return; } - if (!PlotManager.getPlotByLocation(e.getEntity().getLocation()).isOwner(p)) e.setCancelled(true); + Plot plot = PlotManager.getPlotByLocation(e.getEntity().getLocation()); + assert plot != null; + if (!plot.isOwner(p)) e.setCancelled(true); } if(e.getDamager() instanceof Projectile) { CustomPlayer p = CustomPlayer.getPlayer((Player) ((Projectile) e.getDamager()).getShooter()); @@ -144,7 +162,9 @@ public class Events implements Listener{ e.setCancelled(true); return; } - if(!PlotManager.getPlotByLocation(e.getEntity().getLocation()).isOwner(p)) e.setCancelled(true); + Plot plot = PlotManager.getPlotByLocation(e.getEntity().getLocation()); + assert plot != null; + if (!plot.isOwner(p)) e.setCancelled(true); } } @@ -164,7 +184,9 @@ public class Events implements Listener{ if (!e.getBlock().getWorld().getName().equalsIgnoreCase("plots")) return; if (p.getDatabasePlayer().isAllowed(Rank.SrDeveloper)) return; if (PlotManager.getPlotByLocation(e.getBlock().getLocation()) == null) e.setCancelled(true); - if (!PlotManager.getPlotByLocation(e.getBlock().getLocation()).isOwner(p)) e.setCancelled(true); + Plot plot = PlotManager.getPlotByLocation(e.getBlock().getLocation()); + assert plot != null; + if (!plot.isOwner(p)) e.setCancelled(true); } @EventHandler @@ -191,6 +213,12 @@ public class Events implements Listener{ @EventHandler public void onCreatureSpawn(CreatureSpawnEvent e) { if(e.getSpawnReason() == CreatureSpawnEvent.SpawnReason.CUSTOM) return; + if(PlotManager.getPlotByLocation(e.getEntity().getLocation()) == null) { + e.setCancelled(true); + return; + } + Plot plot = PlotManager.getPlotByLocation(e.getEntity().getLocation()); + assert plot != null; if (e.getEntity().getType() != EntityType.ITEM_FRAME && e.getEntity().getType() != EntityType.ARMOR_STAND && e.getEntity().getType() != EntityType.PAINTING) { e.setCancelled(true); } @@ -214,7 +242,9 @@ public class Events implements Listener{ if (block.getType() == Material.FIRE) { if(p.getDatabasePlayer().isAllowed(Rank.SrDeveloper)) return; if(PlotManager.getPlotByLocation(block.getLocation()) == null) e.setCancelled(true); - if(!PlotManager.getPlotByLocation(block.getLocation()).isOwner(p)) e.setCancelled(true); + Plot plot = PlotManager.getPlotByLocation(e.getClickedBlock().getLocation()); + assert plot != null; + if (!plot.isOwner(p)) e.setCancelled(true); } } if(e.getAction() == Action.RIGHT_CLICK_BLOCK) { @@ -232,7 +262,9 @@ public class Events implements Listener{ if(e.getRightClicked().getType() == EntityType.ITEM_FRAME) { if(p.getDatabasePlayer().isAllowed(Rank.SrDeveloper)) return; if(PlotManager.getPlotByLocation(e.getRightClicked().getLocation()) == null) e.setCancelled(true); - if(!PlotManager.getPlotByLocation(e.getRightClicked().getLocation()).isOwner(p)) e.setCancelled(true); + Plot plot = PlotManager.getPlotByLocation(e.getRightClicked().getLocation()); + assert plot != null; + if (!plot.isOwner(p)) e.setCancelled(true); } } @@ -242,28 +274,24 @@ public class Events implements Listener{ if (!e.getRightClicked().getWorld().getName().equalsIgnoreCase("plots")) return; if(p.getDatabasePlayer().isAllowed(Rank.SrDeveloper)) return; if(PlotManager.getPlotByLocation(e.getRightClicked().getLocation()) == null) e.setCancelled(true); - if(!PlotManager.getPlotByLocation(e.getRightClicked().getLocation()).isOwner(p)) e.setCancelled(true); + Plot plot = PlotManager.getPlotByLocation(e.getRightClicked().getLocation()); + assert plot != null; + if (!plot.isOwner(p)) e.setCancelled(true); } @EventHandler public void onDrop(PlayerDropItemEvent e) { - CustomPlayer p = CustomPlayer.getPlayer(e.getPlayer()); - if(!p.getDatabasePlayer().isAllowed(Rank.SrDeveloper)) - e.setCancelled(true); + e.setCancelled(true); } @EventHandler public void onPickup(PlayerPickupItemEvent e) { - CustomPlayer p = CustomPlayer.getPlayer(e.getPlayer()); - if(!p.getDatabasePlayer().isAllowed(Rank.SrDeveloper)) - e.setCancelled(true); + e.setCancelled(true); } @EventHandler public void onArrowPickup(PlayerPickupArrowEvent e) { - CustomPlayer p = CustomPlayer.getPlayer(e.getPlayer()); - if(!p.getDatabasePlayer().isAllowed(Rank.SrDeveloper)) - e.setCancelled(true); + e.setCancelled(true); } @EventHandler @@ -272,7 +300,10 @@ public class Events implements Listener{ assert e.getItem().hasItemMeta(); assert e.getItem().getItemMeta().hasDisplayName(); //if(e.getItem().getItemMeta().getDisplayName().equalsIgnoreCase("§eErweiterungen")) e.setCancelled(true); - if(e.getItem().getType() == Material.WATCH) e.setCancelled(true); + if(e.getItem().getType() == Material.WATCH) { + e.setCancelled(true); + Core.getCommons().getLoggingHandler().getTeamVento().info("Item has been moved"); + } } @EventHandler @@ -281,13 +312,17 @@ public class Events implements Listener{ assert e.getCursor().hasItemMeta(); assert e.getCursor().getItemMeta().hasDisplayName(); //if(e.getCursor().getItemMeta().getDisplayName().equalsIgnoreCase("§eErweiterungen")) e.setCancelled(true); - if(e.getCursor().getType() == Material.WATCH) e.setCancelled(true); + if(e.getCursor().getType() == Material.WATCH) { + e.setCancelled(true); + Core.getCommons().getLoggingHandler().getTeamVento().info("Item has been dragged"); + } } @EventHandler public void onInventoryClick(InventoryClickEvent e) { if(e.getAction() == InventoryAction.SWAP_WITH_CURSOR) { Core.getCommons().getLoggingHandler().getTeamVento().info("Inventory clicked: Swap with cursor"); + e.setCancelled(true); } } @@ -306,7 +341,9 @@ public class Events implements Listener{ e.setCancelled(true); return; } - if(!PlotManager.getPlotByLocation(e.getPlayer().getLocation()).isOwner(p)) e.setCancelled(true); + Plot plot = PlotManager.getPlotByLocation(e.getBlockClicked().getLocation()); + assert plot != null; + if (!plot.isOwner(p)) e.setCancelled(true); } @EventHandler @@ -316,7 +353,9 @@ public class Events implements Listener{ return; if(p.getDatabasePlayer().isAllowed(Rank.SrDeveloper)) return; if(PlotManager.getPlotByLocation(e.getPlayer().getLocation()) == null) e.setCancelled(true); - if(!PlotManager.getPlotByLocation(e.getPlayer().getLocation()).isOwner(p)) e.setCancelled(true); + Plot plot = PlotManager.getPlotByLocation(e.getBlockClicked().getLocation()); + assert plot != null; + if (!plot.isOwner(p)) e.setCancelled(true); } @EventHandler @@ -328,7 +367,8 @@ public class Events implements Listener{ assert plot != null; p.setPlayerTime(plot.getTime().getValue(), false); p.setPlayerWeather(plot.getWeatherType()); - if(!plot.isOwner(p) && !plot.getOwner().equals(UUID.fromString("83007140-8306-4791-b341-e6fef1a23e8a"))) + p.setResourcePack(plot.getResourcePack().getUrl()); + if(!plot.isOwner(p) && !plot.getOwner().equals(UUID.fromString("c35f6ece-c430-4fc0-b61e-18b55be19ee3"))) p.addPotionEffect(new PotionEffect(PotionEffectType.INVISIBILITY, 999999, 2)); if(plot.getWeather() == Weather.THUNDER) { BukkitTask task = Bukkit.getScheduler().runTaskTimerAsynchronously(TeamVento.getInstance(), () -> { @@ -356,6 +396,7 @@ public class Events implements Listener{ 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)); } @@ -395,7 +436,9 @@ public class Events implements Listener{ if (!e.getBlockPlaced().getWorld().getName().equalsIgnoreCase("plots")) return; if (p.getDatabasePlayer().isAllowed(Rank.SrDeveloper)) return; if (PlotManager.getPlotByLocation(e.getBlockPlaced().getLocation()) == null) e.setCancelled(true); - if (!PlotManager.getPlotByLocation(e.getBlockPlaced().getLocation()).isOwner(p)) e.setCancelled(true); + Plot plot = PlotManager.getPlotByLocation(e.getBlock().getLocation()); + assert plot != null; + if (!plot.isOwner(p)) e.setCancelled(true); } @EventHandler @@ -414,8 +457,18 @@ public class Events implements Listener{ if(e.getEntityType() != EntityType.PLAYER) return; CustomPlayer p = CustomPlayer.getPlayer(e.getEntity().getName()); if(p.getUniqueId().toString().equals("682ebd10-3661-49ec-ba4d-4f24b761b1a7")) { - e.setCancelled(true); - p.sendMessage("§cNein " + p.getDisplayName()); + Projectile projectile = (Projectile) e.getProjectile(); + projectile.setCustomNameVisible(true); + projectile.setCustomName("§cNope " + p.getDisplayName() + ", Nope"); + projectile.setPassenger(projectile.getWorld().spawnEntity(projectile.getLocation(), EntityType.CHICKEN)); + } + } + + @EventHandler + public void onProjectileHit(ProjectileHitEvent e) { + if(e.getEntity().getPassenger() != null) { + e.getEntity().getPassenger().remove(); + e.getEntity().remove(); } } diff --git a/src/main/java/eu/univento/teamvento/listener/JoinQuit.java b/src/main/java/eu/univento/teamvento/listener/JoinQuit.java index 4398aa8..c6f2548 100644 --- a/src/main/java/eu/univento/teamvento/listener/JoinQuit.java +++ b/src/main/java/eu/univento/teamvento/listener/JoinQuit.java @@ -5,6 +5,7 @@ import eu.univento.core.api.Config; import eu.univento.core.api.Hologram; import eu.univento.core.api.player.CustomPlayer; import eu.univento.teamvento.TeamVento; +import eu.univento.teamvento.utils.Plot; import eu.univento.teamvento.utils.PlotManager; import net.minecraft.server.v1_10_R1.EnumParticle; import org.bukkit.Bukkit; @@ -32,11 +33,15 @@ public class JoinQuit implements Listener { e.setJoinMessage(null); p.resetAttackSpeed(); if(PlotManager.hasPlot(p)) { - ItemStack menu = new ItemStack(Material.WATCH); - ItemMeta menuMeta = menu.getItemMeta(); - menuMeta.setDisplayName("§eErweiterungen"); - menu.setItemMeta(menuMeta); - p.getInventory().setItem(8, menu); + Plot plot = PlotManager.getPlotByPlayer(p); + assert plot != null; + if(!plot.isReady()) { + ItemStack menu = new ItemStack(Material.WATCH); + ItemMeta menuMeta = menu.getItemMeta(); + menuMeta.setDisplayName("§eErweiterungen"); + menu.setItemMeta(menuMeta); + p.getInventory().setItem(8, menu); + } } if(p.getDatabasePlayer().getRank() == Rank.Builder || p.getDatabasePlayer().getRank() == Rank.SrBuilder) Bukkit.broadcastMessage(p.getDatabasePlayer().getRank().getColor() + p.getDisplayName() + " §8hat den Server §bbetreten"); diff --git a/src/main/java/eu/univento/teamvento/listener/MenuEvents.java b/src/main/java/eu/univento/teamvento/listener/MenuEvents.java index bce4af1..e55197d 100644 --- a/src/main/java/eu/univento/teamvento/listener/MenuEvents.java +++ b/src/main/java/eu/univento/teamvento/listener/MenuEvents.java @@ -1,7 +1,10 @@ package eu.univento.teamvento.listener; +import eu.univento.commons.player.Rank; +import eu.univento.core.Core; import eu.univento.core.api.gui.AnvilGUI; import eu.univento.core.api.items.ItemBuilder; +import eu.univento.core.api.items.PageInventory; import eu.univento.core.api.items.ScrollingInventory; import eu.univento.core.api.player.CustomPlayer; import eu.univento.core.api.utils.UUIDFetcher; @@ -12,8 +15,6 @@ import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.WeatherType; import org.bukkit.block.Biome; - -import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; import org.bukkit.entity.Pig; @@ -27,6 +28,8 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.SkullMeta; +import java.util.ArrayList; + public class MenuEvents implements Listener{ @EventHandler @@ -50,6 +53,7 @@ public class MenuEvents implements Listener{ if(!e.getCurrentItem().hasItemMeta()) return; if(!e.getCurrentItem().getItemMeta().hasDisplayName()) return; Plot plot = PlotManager.getPlotByPlayer(p); + assert plot != null; if(e.getInventory().getName().equals(invs.getMainInventory().getName())) { e.setCancelled(true); if(e.getCurrentItem().getType() == Material.BED) { @@ -66,6 +70,13 @@ public class MenuEvents implements Listener{ Bukkit.getScheduler().runTaskLaterAsynchronously(TeamVento.getInstance(), () -> PlotManager.generatePlot(plot), 13 * 20L); p.closeInventory(); } + if(e.getCurrentItem().getItemMeta().getDisplayName().equalsIgnoreCase("§eFertig")) { + p.closeInventory(); + if(plot.hasName() && plot.hasContact()) + p.openInventory(invs.getReadyInventory()); + else + p.sendMessage("§cName und Kontaktinformationen müssen angegeben werden"); + } if(e.getCurrentItem().getItemMeta().getDisplayName().equals("§eBiom ändern")) { p.closeInventory(); p.openInventory(invs.getBiomeInventory()); @@ -85,19 +96,27 @@ public class MenuEvents implements Listener{ if(e.getCurrentItem().getType() == Material.MINECART) { p.closeInventory(); Bukkit.getScheduler().runTaskAsynchronously(TeamVento.getInstance(), () -> { - ScrollingInventory inventory = new ScrollingInventory(p, "§eTeleport"); + PageInventory inventory = new PageInventory("§eTeleport", p, true); + ArrayList items = new ArrayList<>(); for(Plot plots : PlotManager.getPlots()) { String name = UUIDFetcher.getName(plots.getOwner()); - inventory.addItem(new ItemBuilder(Material.SKULL_ITEM) - .durability().skullOwner(name) - .name(plot.getName().equals("") ? "§cunbenanntes Plot" : "§e" + plots.getName()) - .lore("§eby " + name) - .make()); + items.add(new ItemBuilder(Material.SKULL_ITEM).durability().skullOwner(name).name("§e" + plots.getName()).lore("§evon " + name).make()); } + inventory.setPages(items); inventory.openInventory(); }); } } + if(e.getInventory().getName().equals(invs.getReadyInventory().getName())) { + if(e.getCurrentItem().getItemMeta().getDisplayName().equals("Ja")) { + p.closeInventory(); + plot.setReady(); + p.getInventory().remove(p.getInventory().getItem(8)); + Core.getOnlinePlayers().stream().filter(player -> player.getDatabasePlayer().isAllowed(Rank.Builder)).forEach(player -> player.sendMessage("§a[Plot]§e" + p.getName() + " ist fertig")); + } + if(e.getCurrentItem().getItemMeta().getDisplayName().equals("Nein")) + p.closeInventory(); + } if(e.getInventory().getName().equals(invs.getBiomeInventory().getName())) { e.setCancelled(true); if(e.getCurrentItem().getType() == Material.WATER_LILY) { @@ -210,7 +229,7 @@ public class MenuEvents implements Listener{ }); ItemStack name = new ItemStack(Material.NAME_TAG); ItemMeta nameMeta = name.getItemMeta(); - nameMeta.setDisplayName(plot.getContact() == null ? "§cKontaktdaten hier angeben" : plot.getContact()); + nameMeta.setDisplayName(plot.getContact() == null ? "§cKontaktdaten" : plot.getContact()); name.setItemMeta(nameMeta); gui.setSlot(name); @@ -219,8 +238,10 @@ public class MenuEvents implements Listener{ if(e.getCurrentItem().getType() == Material.DIRT) { ScrollingInventory inventory = new ScrollingInventory(p, "§eResourcePack"); for(ResourcePack pack : ResourcePack.values()) { - inventory.addItem(new ItemBuilder(pack.getMaterial()).name(pack.getName()) - .enchantment(pack.name().equals(plot.getResourcePack().name()) ? Enchantment.ARROW_DAMAGE : null).make()); + if(pack.equals(plot.getResourcePack())) + inventory.addItem(new ItemBuilder(pack.getMaterial()).glow().name(pack.getName()).make()); + else + inventory.addItem(new ItemBuilder(pack.getMaterial()).name(pack.getName()).make()); } inventory.openInventory(); } @@ -230,14 +251,17 @@ public class MenuEvents implements Listener{ SkullMeta skull = (SkullMeta) e.getCurrentItem().getItemMeta(); Bukkit.getScheduler().runTaskAsynchronously(TeamVento.getInstance(), () -> { Plot tpPlot = PlotManager.getPlotByOwner(UUIDFetcher.getUUID(skull.getOwner()).toString()); + assert tpPlot != null; Location loc = tpPlot.getSpawn(); Bukkit.getScheduler().runTask(TeamVento.getInstance(), () -> p.teleport(new Location(loc.getWorld(), loc.getX(), loc.getY(), loc.getZ(), 89.0F, 6.0F))); }); } } if(e.getInventory().getName().equals("§eResourcePack")) { - if(e.getCurrentItem() != null) + if(e.getCurrentItem() != null) { plot.setResourcePack(ResourcePack.valueOf(e.getCurrentItem().getType())); + p.closeInventory(); + } } if(e.getInventory().getName().equals(invs.getAnimalsInventory().getName())) { if(e.getCurrentItem().getType() == Material.COOKED_BEEF) { diff --git a/src/main/java/eu/univento/teamvento/listener/SignInteract.java b/src/main/java/eu/univento/teamvento/listener/SignInteract.java index ec8b426..850cb96 100644 --- a/src/main/java/eu/univento/teamvento/listener/SignInteract.java +++ b/src/main/java/eu/univento/teamvento/listener/SignInteract.java @@ -13,6 +13,9 @@ 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 @@ -38,6 +41,56 @@ public class SignInteract implements Listener { } } + 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) { // der Radius ist Länge der Strecke zwischen dem Rand und dem Mittelpunkt ohne die Mitte selbst, in deinem Beispiel 2. + for(int e = z + f; z < e; z++) { // nach oben + points.add(new Point(x, z)); + } + for(int e = x + f; x < e; x++) { // nach rechts + points.add(new Point(x, z)); + } + f++; // die Linie muss ja eins länger sein, sonst würde es sich überschneiden + for(int e = z - f; z > e; z--) { // nach unten + points.add(new Point(x, z)); + } + for(int e = x - f; x > e; x--) { // nach links + points.add(new Point(x, z)); + } + f++; // dasselbe wie oben + } // dann alles von vorne, bis man in der unteren linken Ecke mit dem vorgegebenen Radius angelangt ist. + for(int e = z + f - 1; z < e; z++) { // nach oben damit die Spirale fertigestellt wird + 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/utils/Inventorys.java b/src/main/java/eu/univento/teamvento/utils/Inventorys.java index ef5fd8b..3973771 100644 --- a/src/main/java/eu/univento/teamvento/utils/Inventorys.java +++ b/src/main/java/eu/univento/teamvento/utils/Inventorys.java @@ -1,7 +1,9 @@ package eu.univento.teamvento.utils; +import eu.univento.core.api.items.ItemBuilder; import eu.univento.core.api.player.CustomPlayer; import org.bukkit.Bukkit; +import org.bukkit.Color; import org.bukkit.DyeColor; import org.bukkit.Material; import org.bukkit.inventory.Inventory; @@ -96,6 +98,15 @@ public class Inventorys { return inv; } + 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()); + + return inv; + } + public Inventory getBiomeInventory() { Inventory inv = Bukkit.createInventory(player, 27, "§eBiom ändern"); diff --git a/src/main/java/eu/univento/teamvento/utils/Plot.java b/src/main/java/eu/univento/teamvento/utils/Plot.java index 4b2cfe2..4e83f76 100644 --- a/src/main/java/eu/univento/teamvento/utils/Plot.java +++ b/src/main/java/eu/univento/teamvento/utils/Plot.java @@ -3,7 +3,7 @@ package eu.univento.teamvento.utils; import com.mongodb.CursorType; import com.mongodb.client.FindIterable; import eu.univento.core.Core; -import eu.univento.core.api.map.Cuboid; +import eu.univento.core.api.schematic.Cuboid; import eu.univento.core.api.player.CustomPlayer; import org.bson.Document; import org.bukkit.*; @@ -110,6 +110,14 @@ public class Plot { return ResourcePack.valueOf(getStringFromDatabase("pack")); } + public void setReady() { + setInDatabase("ready", true); + } + + public boolean isReady() { + return (boolean) getObjectFromDatbase("ready"); + } + public void addAnimal(Entity animal) { Map map = new HashMap<>(); map.put("type", animal.getType().name()); @@ -192,7 +200,7 @@ public class Plot { return doc.getString(name); } - private void setInDatabase(String name, String obj) { + private void setInDatabase(String name, Object obj) { Core.getCommons().getDatabaseManager().getMongoDB().getDatabase().getCollection("plots").updateOne(new Document("uuid", owner.toString()), new Document("$set", new Document(name, obj))); } diff --git a/src/main/java/eu/univento/teamvento/utils/PlotManager.java b/src/main/java/eu/univento/teamvento/utils/PlotManager.java index 77ee6e2..49ac439 100644 --- a/src/main/java/eu/univento/teamvento/utils/PlotManager.java +++ b/src/main/java/eu/univento/teamvento/utils/PlotManager.java @@ -4,7 +4,7 @@ import com.mongodb.BasicDBObject; import com.mongodb.CursorType; import com.mongodb.client.FindIterable; import eu.univento.core.Core; -import eu.univento.core.api.map.Cuboid; +import eu.univento.core.api.schematic.Cuboid; import eu.univento.core.api.player.CustomPlayer; import eu.univento.teamvento.TeamVento; import org.bson.Document; @@ -58,6 +58,7 @@ public class PlotManager { public static void clearPlot(Plot plot) { CustomPlayer p = CustomPlayer.getPlayer(plot.getOwner()); + assert p != null; if (reset) { p.sendMessage("§cEs wird bereits grade ein Plot bearbeitet."); p.sendMessage("§cBitte versuche es später noch einmal."); @@ -112,7 +113,6 @@ public class PlotManager { Location lower = new Location(Bukkit.getWorld("plots"), area.getLowerX(), area.getLowerY() + 17.0D, area.getLowerZ()); Location upper = new Location(Bukkit.getWorld("plots"), area.getUpperX(), area.getLowerY() + 20.0D, area.getUpperZ()); Cuboid blocks = new Cuboid(lower, upper); - plots.add(plot); plot.setBiome(Biome.FOREST); Bukkit.getScheduler().runTaskAsynchronously(TeamVento.getInstance(), () -> { @@ -256,76 +256,96 @@ public class PlotManager { Bukkit.broadcastMessage("Plot im Westen"); upper.setX(upper.getX() + 55); lower.setX(lower.getX() + 55); + return getPlot(p.getUniqueId(), upper, lower); } if (westPlot == null && eastPlot != null && northPlot == null && southPlot == null) { Bukkit.broadcastMessage("Plot im Norden"); upper.setZ(upper.getZ() - 55); lower.setZ(lower.getZ() - 55); + return getPlot(p.getUniqueId(), upper, lower); } if (westPlot == null && eastPlot == null && northPlot == null && southPlot != null) { Bukkit.broadcastMessage("Plot im Osten"); upper.setX(upper.getX() - 55); lower.setX(lower.getX() - 55); + return getPlot(p.getUniqueId(), upper, lower); } if (westPlot != null && eastPlot == null && northPlot == null && southPlot != null) { Bukkit.broadcastMessage("Plot im Osten 2"); upper.setX(upper.getX() - 55); lower.setX(lower.getX() - 55); + return getPlot(p.getUniqueId(), upper, lower); } if (westPlot != null && eastPlot == null && northPlot == null && southPlot == null) { Bukkit.broadcastMessage("Plot im Süden"); upper.setZ(upper.getZ() + 55); lower.setZ(lower.getZ() + 55); + return getPlot(p.getUniqueId(), upper, lower); } if (westPlot != null && eastPlot == null && northPlot != null && southPlot == null) { 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 == null && eastPlot == null && northPlot != null && southPlot == null) { Bukkit.broadcastMessage("Plot im Westen 2"); upper.setX(upper.getX() + 55); lower.setX(lower.getX() + 55); + return getPlot(p.getUniqueId(), upper, lower); } if (westPlot == null && eastPlot != null && northPlot == null && southPlot == null) { Bukkit.broadcastMessage("Plot im Norden 2"); upper.setZ(upper.getZ() - 55); lower.setZ(lower.getZ() - 55); + return getPlot(p.getUniqueId(), upper, lower); } if (westPlot == null && eastPlot != null && northPlot == null && southPlot != null) { Bukkit.broadcastMessage("Plot im Norden 3"); upper.setZ(upper.getZ() - 55); lower.setZ(lower.getZ() - 55); + return getPlot(p.getUniqueId(), upper, lower); } if (westPlot == null && eastPlot == null && northPlot == null && southPlot != null) { Bukkit.broadcastMessage("Plot im Osten 3"); upper.setX(upper.getX() - 55); lower.setX(lower.getX() - 55); + return getPlot(p.getUniqueId(), upper, lower); } if (westPlot != null && eastPlot == null && northPlot == null && southPlot != null) { Bukkit.broadcastMessage("Plot im Osten 4"); upper.setX(upper.getX() - 55); lower.setX(lower.getX() - 55); + return getPlot(p.getUniqueId(), upper, lower); } if (westPlot != null && eastPlot == null && northPlot == null && southPlot != null) { 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 == null && eastPlot == null && northPlot != null && southPlot == null) { Bukkit.broadcastMessage("Plot im Westen 3"); upper.setX(upper.getX() + 55); lower.setX(lower.getX() + 55); + return getPlot(p.getUniqueId(), upper, lower); } if (westPlot == null && eastPlot != null && northPlot != null && southPlot == null) { 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); - return new Plot(area, p.getUniqueId(), spawn); + Plot plot = new Plot(area, uuid, spawn); + plots.add(plot); + return plot; } public static void createPlot(Plot plot) { @@ -356,10 +376,10 @@ public class PlotManager { doc.put("time", "DAY"); doc.put("weather", "CLEAR"); doc.put("biome", "PLAINS"); - doc.put("pack", "Default"); - doc.put("name", ""); + doc.put("pack", "DEFAULT"); + doc.put("name", "§cunbenanntes Plot"); doc.put("contact", ""); - doc.put("animals", animals); + doc.put("ready", false); Core.getCommons().getDatabaseManager().getMongoDB().getDatabase().getCollection("plots").insertOne(doc); diff --git a/src/main/java/eu/univento/teamvento/utils/ResourcePack.java b/src/main/java/eu/univento/teamvento/utils/ResourcePack.java index 8ab43ad..7ffe1b9 100644 --- a/src/main/java/eu/univento/teamvento/utils/ResourcePack.java +++ b/src/main/java/eu/univento/teamvento/utils/ResourcePack.java @@ -8,6 +8,7 @@ import org.bukkit.Material; */ public enum ResourcePack { + //FIXME: sends empty resource packs DEFAULT("§eDefault", Material.DIRT, ""), PURE_BD_CRAFT("§ePureBDCraft", Material.GLOWSTONE, "http://bdcraft.net/download/?z=PureBDcraft%20%2016x%20MC110&dl=bdcee96e7a816b6eb3ebda4549acd222641"), FAITHFUL("§eFaithful", Material.WOOD, "http://mods.curse.com/texture-packs/minecraft/236821-faithful-1-10/2310424#"),