TeamVento/src/main/java/eu/univento/teamvento/utils/Plot.java

146 lines
3.9 KiB
Java
Raw Normal View History

2016-04-30 07:38:37 +02:00
package eu.univento.teamvento.utils;
2016-07-09 13:19:56 +02:00
import com.mongodb.CursorType;
import com.mongodb.client.FindIterable;
import eu.univento.core.Core;
2016-04-30 07:38:37 +02:00
import eu.univento.core.api.player.CustomPlayer;
import eu.univento.core.api.schematic.Cuboid;
2016-07-09 13:19:56 +02:00
import org.bson.Document;
import org.bukkit.Bukkit;
import org.bukkit.Chunk;
import org.bukkit.Location;
import org.bukkit.WeatherType;
2016-07-09 13:19:56 +02:00
import org.bukkit.block.Biome;
import org.bukkit.block.Block;
import org.bukkit.entity.LivingEntity;
2016-04-30 07:38:37 +02:00
import java.util.UUID;
2016-04-30 07:38:37 +02:00
2016-11-24 20:00:03 +01:00
/**
* @author joethei
* @version 1.0
*/
2016-04-30 07:38:37 +02:00
public class Plot {
2016-08-03 00:28:53 +02:00
private final Cuboid area;
private final UUID owner;
private final Location spawn;
2016-04-30 07:38:37 +02:00
public Plot(Cuboid area, UUID owner, Location spawn) {
this.area = area;
this.owner = owner;
this.spawn = spawn;
}
public boolean isInPlot(Location location) {
return area.containsLocation(location);
}
public boolean isOwner(CustomPlayer p) {
return p.getUniqueId().equals(owner);
2016-04-30 07:38:37 +02:00
}
public Cuboid getArea() {
return area;
}
public UUID getOwner() {
return owner;
}
public Location getSpawn() {
return spawn;
}
2016-07-09 13:19:56 +02:00
public void setBiome(Biome biome) {
setInDatabase("biome", biome.name());
for(Block blocks : getArea())
blocks.setBiome(biome);
for(Chunk chunk : Bukkit.getWorld("plots").getLoadedChunks())
Bukkit.getWorld("plots").refreshChunk(chunk.getX(), chunk.getZ());
for(LivingEntity entity : Bukkit.getWorld("plots").getLivingEntities())
entity.teleport(entity);
}
public Biome getBiome() {
return Biome.valueOf(getStringFromDatabase("biome"));
}
public String getName() {
return getStringFromDatabase("name");
}
public void setName(String name) {
setInDatabase("name", name);
}
public boolean hasName() {
return !getName().equals("");
}
public void setTime(Time time) {
setInDatabase("time", time.name());
}
public Time getTime() {
return Time.valueOf(getStringFromDatabase("time"));
}
public void setWeather(Weather weather) {
setInDatabase("weather", weather.name());
}
public Weather getWeather() {
return Weather.valueOf(getStringFromDatabase("weather"));
}
public void setContact(String contact) {
setInDatabase("contact", contact);
}
public String getContact() {
return getStringFromDatabase("contact");
}
public boolean hasContact() {
return !getContact().equals("");
}
public void setReady() {
setInDatabase("ready", true);
}
public boolean isReady() {
return (boolean) getObjectFromDatbase("ready");
}
2016-07-09 13:19:56 +02:00
public WeatherType getWeatherType() {
if(getWeather() == Weather.THUNDER) return WeatherType.DOWNFALL;
return WeatherType.valueOf(getWeather().name());
}
private Object getObjectFromDatbase(String name) {
2016-08-03 00:28:53 +02:00
FindIterable<Document> cursor = Core.getCommons().getDatabaseManager().getMongoDB().getDatabase().getCollection("plots").find(new Document("uuid", owner.toString()));
2016-07-09 13:19:56 +02:00
cursor.cursorType(CursorType.NonTailable);
Document doc = cursor.first();
if (doc == null) return null;
return doc.get(name);
}
private String getStringFromDatabase(String name) {
2016-08-03 00:28:53 +02:00
FindIterable<Document> cursor = Core.getCommons().getDatabaseManager().getMongoDB().getDatabase().getCollection("plots").find(new Document("uuid", owner.toString()));
2016-07-09 13:19:56 +02:00
cursor.cursorType(CursorType.NonTailable);
Document doc = cursor.first();
if (doc == null) return null;
return doc.getString(name);
}
private void setInDatabase(String name, Object obj) {
2016-08-03 00:28:53 +02:00
Core.getCommons().getDatabaseManager().getMongoDB().getDatabase().getCollection("plots").updateOne(new Document("uuid", owner.toString()), new Document("$set", new Document(name, obj)));
2016-07-09 13:19:56 +02:00
}
2016-04-30 07:38:37 +02:00
}