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#"),