mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2024-11-25 06:36:44 +01:00
* Added Fly Flag
* Moved stuff away from the actual listener class * Ability to delete plot on player ban
This commit is contained in:
parent
bc4c99bf3a
commit
7bd6ee5f33
@ -931,11 +931,13 @@ public class PlotMain extends JavaPlugin {
|
|||||||
|
|
||||||
Settings.AUTO_CLEAR = config.getBoolean("clear.auto.enabled");
|
Settings.AUTO_CLEAR = config.getBoolean("clear.auto.enabled");
|
||||||
Settings.AUTO_CLEAR_DAYS = config.getInt("clear.auto.days");
|
Settings.AUTO_CLEAR_DAYS = config.getInt("clear.auto.days");
|
||||||
|
Settings.DELETE_PLOTS_ON_BAN = config.getBoolean("clear.on.ban");
|
||||||
}
|
}
|
||||||
if (Settings.DEBUG) {
|
if (Settings.DEBUG) {
|
||||||
Map<String, String> settings = new HashMap<>();
|
Map<String, String> settings = new HashMap<>();
|
||||||
settings.put("Kill Road Mobs", "" + Settings.KILL_ROAD_MOBS);
|
settings.put("Kill Road Mobs", "" + Settings.KILL_ROAD_MOBS);
|
||||||
settings.put("Use Metrics", "" + Settings.METRICS);
|
settings.put("Use Metrics", "" + Settings.METRICS);
|
||||||
|
settings.put("Delete Plots On Ban", "" + Settings.DELETE_PLOTS_ON_BAN);
|
||||||
settings.put("Mob Pathfinding", "" + Settings.MOB_PATHFINDING);
|
settings.put("Mob Pathfinding", "" + Settings.MOB_PATHFINDING);
|
||||||
settings.put("Web Enabled", "" + Web.ENABLED);
|
settings.put("Web Enabled", "" + Web.ENABLED);
|
||||||
settings.put("Web Port", "" + Web.PORT);
|
settings.put("Web Port", "" + Web.PORT);
|
||||||
@ -1075,6 +1077,7 @@ public class PlotMain extends JavaPlugin {
|
|||||||
options.put("debug", true);
|
options.put("debug", true);
|
||||||
options.put("clear.auto.enabled", false);
|
options.put("clear.auto.enabled", false);
|
||||||
options.put("clear.auto.days", 365);
|
options.put("clear.auto.days", 365);
|
||||||
|
options.put("clear.on.ban", false);
|
||||||
options.put("max_plots", Settings.MAX_PLOTS);
|
options.put("max_plots", Settings.MAX_PLOTS);
|
||||||
|
|
||||||
for (Entry<String, Object> node : options.entrySet()) {
|
for (Entry<String, Object> node : options.entrySet()) {
|
||||||
@ -1278,6 +1281,31 @@ public class PlotMain extends JavaPlugin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static void defaultFlags() {
|
private static void defaultFlags() {
|
||||||
|
FlagManager.addFlag(new AbstractFlag("fly") {
|
||||||
|
@Override
|
||||||
|
public String parseValue(String value) {
|
||||||
|
switch (value) {
|
||||||
|
case "on":
|
||||||
|
case "enabled":
|
||||||
|
case "true":
|
||||||
|
case "1":
|
||||||
|
return "true";
|
||||||
|
case "off":
|
||||||
|
case "disabled":
|
||||||
|
case "false":
|
||||||
|
case "0":
|
||||||
|
return "false";
|
||||||
|
default:
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getValueDesc() {
|
||||||
|
return "Flag value must be a boolean: true, false, enabled, disabled";
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
for(String str : booleanFlags.values()) {
|
for(String str : booleanFlags.values()) {
|
||||||
FlagManager.addFlag(new AbstractFlag(str) {
|
FlagManager.addFlag(new AbstractFlag(str) {
|
||||||
|
|
||||||
|
@ -44,6 +44,10 @@ public class Settings {
|
|||||||
* Default mob pathfinding: true
|
* Default mob pathfinding: true
|
||||||
*/
|
*/
|
||||||
public static boolean MOB_PATHFINDING_DEFAULT = true;
|
public static boolean MOB_PATHFINDING_DEFAULT = true;
|
||||||
|
/**
|
||||||
|
* Delete plots on ban?
|
||||||
|
*/
|
||||||
|
public static boolean DELETE_PLOTS_ON_BAN = false;
|
||||||
/**
|
/**
|
||||||
* Update settings
|
* Update settings
|
||||||
*
|
*
|
||||||
|
@ -10,15 +10,12 @@ package com.intellectualcrafters.plot.listeners;
|
|||||||
|
|
||||||
import com.intellectualcrafters.plot.*;
|
import com.intellectualcrafters.plot.*;
|
||||||
import com.intellectualcrafters.plot.commands.Setup;
|
import com.intellectualcrafters.plot.commands.Setup;
|
||||||
import com.intellectualcrafters.plot.events.PlayerEnterPlotEvent;
|
import com.intellectualcrafters.plot.database.DBFunc;
|
||||||
import com.intellectualcrafters.plot.events.PlayerLeavePlotEvent;
|
|
||||||
import org.bukkit.*;
|
import org.bukkit.*;
|
||||||
import org.bukkit.block.Biome;
|
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.block.BlockFace;
|
import org.bukkit.block.BlockFace;
|
||||||
import org.bukkit.block.BlockState;
|
import org.bukkit.block.BlockState;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.EntityType;
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
@ -35,7 +32,8 @@ import org.bukkit.event.player.*;
|
|||||||
import org.bukkit.event.world.StructureGrowEvent;
|
import org.bukkit.event.world.StructureGrowEvent;
|
||||||
import org.bukkit.event.world.WorldLoadEvent;
|
import org.bukkit.event.world.WorldLoadEvent;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Player Events involving plots
|
* Player Events involving plots
|
||||||
@ -43,69 +41,7 @@ import java.util.*;
|
|||||||
* @author Citymonstret
|
* @author Citymonstret
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
public class PlayerEvents implements Listener {
|
public class PlayerEvents extends com.intellectualcrafters.plot.listeners.PlotListener implements Listener {
|
||||||
|
|
||||||
private String getName(UUID uuid) {
|
|
||||||
return UUIDHandler.getName(uuid);
|
|
||||||
}
|
|
||||||
|
|
||||||
private PlotWorld getPlotWorld(World world) {
|
|
||||||
return PlotMain.getWorldSettings(world);
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean enteredPlot(Location l1, Location l2) {
|
|
||||||
PlotId p1 = PlayerFunctions.getPlot(new Location(l1.getWorld(), l1.getBlockX(), 64, l1.getBlockZ()));
|
|
||||||
PlotId p2 = PlayerFunctions.getPlot(new Location(l2.getWorld(), l2.getBlockX(), 64, l2.getBlockZ()));
|
|
||||||
if (p2 == null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (p1 == null) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (p1.equals(p2)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean leftPlot(Location l1, Location l2) {
|
|
||||||
PlotId p1 = PlayerFunctions.getPlot(new Location(l1.getWorld(), l1.getBlockX(), 64, l1.getBlockZ()));
|
|
||||||
PlotId p2 = PlayerFunctions.getPlot(new Location(l2.getWorld(), l2.getBlockX(), 64, l2.getBlockZ()));
|
|
||||||
if (p1 == null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (p2 == null) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (p1.equals(p2)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean isPlotWorld(Location l) {
|
|
||||||
return PlotMain.isPlotWorld(l.getWorld());
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean isPlotWorld(World w) {
|
|
||||||
return PlotMain.isPlotWorld(w);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean isInPlot(Location loc) {
|
|
||||||
return getCurrentPlot(loc) != null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Plot getCurrentPlot(Location loc) {
|
|
||||||
PlotId id = PlayerFunctions.getPlot(loc);
|
|
||||||
if (id == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
World world = loc.getWorld();
|
|
||||||
if (PlotMain.getPlots(world).containsKey(id)) {
|
|
||||||
return PlotMain.getPlots(world).get(id);
|
|
||||||
}
|
|
||||||
return new Plot(id, null, Biome.FOREST, new ArrayList<UUID>(), new ArrayList<UUID>(), loc.getWorld().getName());
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onWorldLoad(WorldLoadEvent event) {
|
public void onWorldLoad(WorldLoadEvent event) {
|
||||||
@ -117,125 +53,52 @@ public class PlayerEvents implements Listener {
|
|||||||
if (!event.getPlayer().hasPlayedBefore()) {
|
if (!event.getPlayer().hasPlayedBefore()) {
|
||||||
event.getPlayer().saveData();
|
event.getPlayer().saveData();
|
||||||
}
|
}
|
||||||
textures(event.getPlayer());
|
//textures(event.getPlayer());
|
||||||
if(isInPlot(event.getPlayer().getLocation())) {
|
if(isInPlot(event.getPlayer().getLocation())) {
|
||||||
plotEntry(event.getPlayer(), getCurrentPlot(event.getPlayer().getLocation()));
|
plotEntry(event.getPlayer(), getCurrentPlot(event.getPlayer().getLocation()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void textures(Player p) {
|
|
||||||
if ((Settings.PLOT_SPECIFIC_RESOURCE_PACK.length() > 1) && isPlotWorld(p.getWorld())) {
|
|
||||||
p.setResourcePack(Settings.PLOT_SPECIFIC_RESOURCE_PACK);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onChangeWorld(PlayerChangedWorldEvent event) {
|
public void onChangeWorld(PlayerChangedWorldEvent event) {
|
||||||
if (isPlotWorld(event.getFrom()) && (Settings.PLOT_SPECIFIC_RESOURCE_PACK.length() > 1)) {
|
/*if (isPlotWorld(event.getFrom()) && (Settings.PLOT_SPECIFIC_RESOURCE_PACK.length() > 1)) {
|
||||||
event.getPlayer().setResourcePack("");
|
event.getPlayer().setResourcePack("");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
textures(event.getPlayer());
|
textures(event.getPlayer());
|
||||||
}
|
}*/
|
||||||
}
|
|
||||||
|
|
||||||
private WeatherType getWeatherType(String str) {
|
|
||||||
str = str.toLowerCase();
|
|
||||||
if(str.equals("rain")) {
|
|
||||||
return WeatherType.DOWNFALL;
|
|
||||||
} else {
|
|
||||||
return WeatherType.CLEAR;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private GameMode getGameMode(String str) {
|
|
||||||
if (str.equals("creative")) {
|
|
||||||
return GameMode.CREATIVE;
|
|
||||||
} else if (str.equals("survival")) {
|
|
||||||
return GameMode.SURVIVAL;
|
|
||||||
} else if (str.equals("adventure")) {
|
|
||||||
return GameMode.ADVENTURE;
|
|
||||||
} else {
|
|
||||||
return Bukkit.getDefaultGameMode();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void plotEntry(Player player, Plot plot) {
|
|
||||||
if (plot.hasOwner()) {
|
|
||||||
if(plot.settings.getFlag("gamemode") != null) {
|
|
||||||
player.setGameMode(getGameMode(plot.settings.getFlag("gamemode").getValue()));
|
|
||||||
}
|
|
||||||
if(plot.settings.getFlag("time") != null) {
|
|
||||||
try {
|
|
||||||
Long time = Long.parseLong(plot.settings.getFlag("time").getValue());
|
|
||||||
player.setPlayerTime(time, true);
|
|
||||||
} catch(Exception e) {
|
|
||||||
plot.settings.setFlags(FlagManager.removeFlag(plot.settings.getFlags(), "time"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(plot.settings.getFlag("weather") != null) {
|
|
||||||
player.setPlayerWeather(getWeatherType(plot.settings.getFlag("weather").getValue()));
|
|
||||||
}
|
|
||||||
if (C.TITLE_ENTERED_PLOT.s().length() > 2) {
|
|
||||||
String sTitleMain = C.TITLE_ENTERED_PLOT.s().replaceFirst("%s", plot.getDisplayName());
|
|
||||||
String sTitleSub = C.TITLE_ENTERED_PLOT_SUB.s().replaceFirst("%s", getName(plot.owner));
|
|
||||||
ChatColor sTitleMainColor = ChatColor.valueOf(C.TITLE_ENTERED_PLOT_COLOR.s());
|
|
||||||
ChatColor sTitleSubColor = ChatColor.valueOf(C.TITLE_ENTERED_PLOT_SUB_COLOR.s());
|
|
||||||
Title title = new Title(sTitleMain, sTitleSub, 10, 20, 10);
|
|
||||||
title.setTitleColor(sTitleMainColor);
|
|
||||||
title.setSubtitleColor(sTitleSubColor);
|
|
||||||
title.setTimingsToTicks();
|
|
||||||
title.send(player);
|
|
||||||
}
|
|
||||||
{
|
|
||||||
PlayerEnterPlotEvent callEvent = new PlayerEnterPlotEvent(player, plot);
|
|
||||||
Bukkit.getPluginManager().callEvent(callEvent);
|
|
||||||
}
|
|
||||||
PlayerFunctions.sendMessage(player, plot.settings.getJoinMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void plotExit(Player player, Plot plot) {
|
|
||||||
{
|
|
||||||
PlayerLeavePlotEvent callEvent = new PlayerLeavePlotEvent(player, plot);
|
|
||||||
Bukkit.getPluginManager().callEvent(callEvent);
|
|
||||||
}
|
|
||||||
player.setGameMode(Bukkit.getDefaultGameMode());
|
|
||||||
player.resetPlayerTime();
|
|
||||||
player.resetPlayerWeather();
|
|
||||||
PlayerFunctions.sendMessage(player, plot.settings.getLeaveMessage());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(
|
@EventHandler(
|
||||||
priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||||
public void PlayerMove(PlayerMoveEvent event) {
|
public void PlayerMove(PlayerMoveEvent event) {
|
||||||
try {
|
try {
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
Location from = event.getFrom();
|
Location from = event.getFrom();
|
||||||
Location to = event.getTo();
|
Location to = event.getTo();
|
||||||
if ((from.getBlockX() != to.getBlockX()) || (from.getBlockZ() != to.getBlockZ())) {
|
if ((from.getBlockX() != to.getBlockX()) || (from.getBlockZ() != to.getBlockZ())) {
|
||||||
if (!isPlotWorld(player.getWorld())) {
|
if (!isPlotWorld(player.getWorld())) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (enteredPlot(from, to)) {
|
if (enteredPlot(from, to)) {
|
||||||
Plot plot = getCurrentPlot(event.getTo());
|
Plot plot = getCurrentPlot(event.getTo());
|
||||||
boolean admin = player.hasPermission("plots.admin");
|
boolean admin = player.hasPermission("plots.admin");
|
||||||
if (plot.deny_entry(player) && !admin) {
|
if (plot.deny_entry(player) && !admin) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
plotEntry(player, plot);
|
plotEntry(player, plot);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if (leftPlot(event.getFrom(), event.getTo())) {
|
if (leftPlot(event.getFrom(), event.getTo())) {
|
||||||
Plot plot = getCurrentPlot(event.getFrom());
|
Plot plot = getCurrentPlot(event.getFrom());
|
||||||
plotExit(player, plot);
|
plotExit(player, plot);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e) {
|
catch (Exception e) {
|
||||||
// Gotta catch 'em all.
|
// Gotta catch 'em all.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(
|
@EventHandler(
|
||||||
@ -527,10 +390,6 @@ public class PlayerEvents implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean getFlagValue(String value) {
|
|
||||||
return Arrays.asList("true", "on", "enabled", "yes").contains(value.toLowerCase());
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onInteract(PlayerInteractEvent event) {
|
public void onInteract(PlayerInteractEvent event) {
|
||||||
if (event.getClickedBlock() == null) {
|
if (event.getClickedBlock() == null) {
|
||||||
@ -711,6 +570,15 @@ public class PlayerEvents implements Listener {
|
|||||||
if(Setup.setupMap.containsKey(event.getPlayer().getName())) {
|
if(Setup.setupMap.containsKey(event.getPlayer().getName())) {
|
||||||
Setup.setupMap.remove(event.getPlayer().getName());
|
Setup.setupMap.remove(event.getPlayer().getName());
|
||||||
}
|
}
|
||||||
|
if(Settings.DELETE_PLOTS_ON_BAN && event.getPlayer().isBanned()) {
|
||||||
|
Set<Plot> plots = PlotMain.getPlots(event.getPlayer());
|
||||||
|
for(Plot plot : plots) {
|
||||||
|
PlotManager manager = PlotMain.getPlotManager(plot.getWorld());
|
||||||
|
manager.clearPlot(null, plot);
|
||||||
|
DBFunc.delete(plot.getWorld().getName(), plot);
|
||||||
|
PlotMain.sendConsoleSenderMessage(String.format("&cPlot &6%s &cwas deleted + cleared due to &6%s&c getting banned", plot.getId(), event.getPlayer().getName()));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(
|
@EventHandler(
|
||||||
|
@ -0,0 +1,172 @@
|
|||||||
|
package com.intellectualcrafters.plot.listeners;
|
||||||
|
|
||||||
|
import com.intellectualcrafters.plot.*;
|
||||||
|
import com.intellectualcrafters.plot.events.PlayerEnterPlotEvent;
|
||||||
|
import com.intellectualcrafters.plot.events.PlayerLeavePlotEvent;
|
||||||
|
import org.bukkit.*;
|
||||||
|
import org.bukkit.block.Biome;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by Citymonstret on 2014-10-21.
|
||||||
|
*/
|
||||||
|
public class PlotListener {
|
||||||
|
|
||||||
|
public void textures(Player p) {
|
||||||
|
if ((Settings.PLOT_SPECIFIC_RESOURCE_PACK.length() > 1) && isPlotWorld(p.getWorld())) {
|
||||||
|
p.setResourcePack(Settings.PLOT_SPECIFIC_RESOURCE_PACK);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isInPlot(Player player) {
|
||||||
|
return PlayerFunctions.isInPlot(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Plot getPlot(Player player) {
|
||||||
|
return PlayerFunctions.getCurrentPlot(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isPlotWorld(World world) {
|
||||||
|
return PlotMain.isPlotWorld(world);
|
||||||
|
}
|
||||||
|
|
||||||
|
public PlotWorld getPlotWorld(World world) {
|
||||||
|
return PlotMain.getWorldSettings(world);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName(UUID uuid) {
|
||||||
|
return UUIDHandler.getName(uuid);
|
||||||
|
}
|
||||||
|
|
||||||
|
public UUID getUUID(String name) {
|
||||||
|
return UUIDHandler.getUUID(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean enteredPlot(Location l1, Location l2) {
|
||||||
|
PlotId p1 = PlayerFunctions.getPlot(new Location(l1.getWorld(), l1.getBlockX(), 64, l1.getBlockZ()));
|
||||||
|
PlotId p2 = PlayerFunctions.getPlot(new Location(l2.getWorld(), l2.getBlockX(), 64, l2.getBlockZ()));
|
||||||
|
if (p2 == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (p1 == null) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (p1.equals(p2)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean leftPlot(Location l1, Location l2) {
|
||||||
|
PlotId p1 = PlayerFunctions.getPlot(new Location(l1.getWorld(), l1.getBlockX(), 64, l1.getBlockZ()));
|
||||||
|
PlotId p2 = PlayerFunctions.getPlot(new Location(l2.getWorld(), l2.getBlockX(), 64, l2.getBlockZ()));
|
||||||
|
if (p1 == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (p2 == null) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (p1.equals(p2)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isPlotWorld(Location l) {
|
||||||
|
return PlotMain.isPlotWorld(l.getWorld());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isInPlot(Location loc) {
|
||||||
|
return getCurrentPlot(loc) != null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Plot getCurrentPlot(Location loc) {
|
||||||
|
PlotId id = PlayerFunctions.getPlot(loc);
|
||||||
|
if (id == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
World world = loc.getWorld();
|
||||||
|
if (PlotMain.getPlots(world).containsKey(id)) {
|
||||||
|
return PlotMain.getPlots(world).get(id);
|
||||||
|
}
|
||||||
|
return new Plot(id, null, Biome.FOREST, new ArrayList<UUID>(), new ArrayList<UUID>(), loc.getWorld().getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
private WeatherType getWeatherType(String str) {
|
||||||
|
str = str.toLowerCase();
|
||||||
|
if(str.equals("rain")) {
|
||||||
|
return WeatherType.DOWNFALL;
|
||||||
|
} else {
|
||||||
|
return WeatherType.CLEAR;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private GameMode getGameMode(String str) {
|
||||||
|
if (str.equals("creative")) {
|
||||||
|
return GameMode.CREATIVE;
|
||||||
|
} else if (str.equals("survival")) {
|
||||||
|
return GameMode.SURVIVAL;
|
||||||
|
} else if (str.equals("adventure")) {
|
||||||
|
return GameMode.ADVENTURE;
|
||||||
|
} else {
|
||||||
|
return Bukkit.getDefaultGameMode();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void plotEntry(Player player, Plot plot) {
|
||||||
|
if (plot.hasOwner()) {
|
||||||
|
if(plot.settings.getFlag("gamemode") != null) {
|
||||||
|
player.setGameMode(getGameMode(plot.settings.getFlag("gamemode").getValue()));
|
||||||
|
}
|
||||||
|
if(plot.settings.getFlag("fly") != null) {
|
||||||
|
player.setAllowFlight(getFlagValue(plot.settings.getFlag("fly").getValue()));
|
||||||
|
}
|
||||||
|
if(plot.settings.getFlag("time") != null) {
|
||||||
|
try {
|
||||||
|
Long time = Long.parseLong(plot.settings.getFlag("time").getValue());
|
||||||
|
player.setPlayerTime(time, true);
|
||||||
|
} catch(Exception e) {
|
||||||
|
plot.settings.setFlags(FlagManager.removeFlag(plot.settings.getFlags(), "time"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(plot.settings.getFlag("weather") != null) {
|
||||||
|
player.setPlayerWeather(getWeatherType(plot.settings.getFlag("weather").getValue()));
|
||||||
|
}
|
||||||
|
if (C.TITLE_ENTERED_PLOT.s().length() > 2) {
|
||||||
|
String sTitleMain = C.TITLE_ENTERED_PLOT.s().replaceFirst("%s", plot.getDisplayName());
|
||||||
|
String sTitleSub = C.TITLE_ENTERED_PLOT_SUB.s().replaceFirst("%s", getName(plot.owner));
|
||||||
|
ChatColor sTitleMainColor = ChatColor.valueOf(C.TITLE_ENTERED_PLOT_COLOR.s());
|
||||||
|
ChatColor sTitleSubColor = ChatColor.valueOf(C.TITLE_ENTERED_PLOT_SUB_COLOR.s());
|
||||||
|
Title title = new Title(sTitleMain, sTitleSub, 10, 20, 10);
|
||||||
|
title.setTitleColor(sTitleMainColor);
|
||||||
|
title.setSubtitleColor(sTitleSubColor);
|
||||||
|
title.setTimingsToTicks();
|
||||||
|
title.send(player);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
PlayerEnterPlotEvent callEvent = new PlayerEnterPlotEvent(player, plot);
|
||||||
|
Bukkit.getPluginManager().callEvent(callEvent);
|
||||||
|
}
|
||||||
|
PlayerFunctions.sendMessage(player, plot.settings.getJoinMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void plotExit(Player player, Plot plot) {
|
||||||
|
{
|
||||||
|
PlayerLeavePlotEvent callEvent = new PlayerLeavePlotEvent(player, plot);
|
||||||
|
Bukkit.getPluginManager().callEvent(callEvent);
|
||||||
|
}
|
||||||
|
player.setGameMode(Bukkit.getDefaultGameMode());
|
||||||
|
player.resetPlayerTime();
|
||||||
|
player.resetPlayerWeather();
|
||||||
|
PlayerFunctions.sendMessage(player, plot.settings.getLeaveMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean getFlagValue(String value) {
|
||||||
|
return Arrays.asList("true", "on", "enabled", "yes").contains(value.toLowerCase());
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user