Package com.palmergames.bukkit.towny.object

Source Code of com.palmergames.bukkit.towny.object.TownyWorld

package com.palmergames.bukkit.towny.object;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Hashtable;
import java.util.List;

import com.palmergames.bukkit.towny.AlreadyRegisteredException;
import com.palmergames.bukkit.towny.NotRegisteredException;
import com.palmergames.bukkit.towny.TownyException;
import com.palmergames.bukkit.towny.TownySettings;

public class TownyWorld extends TownyObject {
  private List<Town> towns = new ArrayList<Town>();
  private boolean isClaimable = true, isPVP, isForcePVP,
    isExplosion, isForceExpl,
    isFire, isForceFire,
    isForceTownMobs, hasWorldMobs,
    isDisableCreatureTrample, isDisablePlayerTrample,
    isEndermanProtect,
      isUsingTowny = true,
      isUsingPlotManagementDelete = true,
      isUsingPlotManagementMayorDelete = true,
      isUsingPlotManagementRevert = true,
      isUsingPlotManagementWildRevert = true;
  private Long plotManagementRevertSpeed, plotManagementWildRevertDelay;
  private List<Integer> unclaimedZoneIgnoreIds = null;
  private List<Integer> plotManagementDeleteIds = null;
  private List<String> plotManagementMayorDelete = null;
  private List<Integer> plotManagementIgnoreIds = null;
  private String format_global, format_town, format_nation, format_default;
  private Boolean unclaimedZoneBuild = null, unclaimedZoneDestroy = null, unclaimedZoneSwitch = null, unclaimedZoneItemUse = null;
  private String unclaimedZoneName = null;
  private Hashtable<Coord, TownBlock> townBlocks = new Hashtable<Coord, TownBlock>();
  private List<Coord> warZones = new ArrayList<Coord>();
 
  // TODO: private List<TownBlock> adminTownBlocks = new
  // ArrayList<TownBlock>();

  public TownyWorld(String name) {
    setName(name);
   
    isPVP =  TownySettings.isPvP();
    isForcePVP = TownySettings.isForcingPvP();
    isFire = TownySettings.isFire();
    isForceFire = TownySettings.isForcingFire();
    hasWorldMobs = TownySettings.isWorldMonstersOn();
    isForceTownMobs = TownySettings.isForcingMonsters();
    isExplosion = TownySettings.isExplosions();
    isForceExpl = TownySettings.isForcingExplosions();
    isEndermanProtect = TownySettings.getEndermanProtect();
   
    isDisablePlayerTrample = TownySettings.isPlayerTramplingCropsDisabled();
    isDisableCreatureTrample = TownySettings.isCreatureTramplingCropsDisabled();
   
    setUsingPlotManagementDelete(TownySettings.isUsingPlotManagementDelete());
    setUsingPlotManagementRevert(TownySettings.isUsingPlotManagementRevert());
    setPlotManagementRevertSpeed(TownySettings.getPlotManagementSpeed());
    setUsingPlotManagementWildRevert(TownySettings.isUsingPlotManagementWildRegen());
    setPlotManagementWildRevertDelay(TownySettings.getPlotManagementWildRegenDelay());
   
    format_global = TownySettings.getModifyChatFormat();
    format_town = TownySettings.getChatTownChannelFormat();
    format_nation = TownySettings.getChatNationChannelFormat();
    format_default = TownySettings.getChatDefaultChannelFormat();
  }

  public List<Town> getTowns() {
    return towns;
  }
 
  public boolean hasTowns() {
    return !towns.isEmpty();
  }

  public boolean hasTown(String name) {
    for (Town town : towns)
      if (town.getName().equalsIgnoreCase(name))
        return true;
    return false;
  }

  public boolean hasTown(Town town) {
    return towns.contains(town);
  }

  public void addTown(Town town) throws AlreadyRegisteredException {
    if (hasTown(town))
      throw new AlreadyRegisteredException();
    else {
      towns.add(town);
      town.setWorld(this);
    }
  }

  public TownBlock getTownBlock(Coord coord) throws NotRegisteredException {
    TownBlock townBlock = townBlocks.get(coord);
    if (townBlock == null)
      throw new NotRegisteredException();
    else
      return townBlock;
  }

  public void newTownBlock(int x, int z) throws AlreadyRegisteredException {
    newTownBlock(new Coord(x, z));
  }

  public TownBlock newTownBlock(Coord key) throws AlreadyRegisteredException {
    if (hasTownBlock(key))
      throw new AlreadyRegisteredException();
    townBlocks.put(new Coord(key.getX(), key.getZ()), new TownBlock(key.getX(), key.getZ(), this));
    return townBlocks.get(new Coord(key.getX(), key.getZ()));
  }

  public boolean hasTownBlock(Coord key) {
    return townBlocks.containsKey(key);
  }

  public TownBlock getTownBlock(int x, int z) throws NotRegisteredException {
    return getTownBlock(new Coord(x, z));
  }
 
  public List<TownBlock> getTownBlocks(Town town) {
    List<TownBlock> out = new ArrayList<TownBlock>();
    for (TownBlock townBlock : town.getTownBlocks())
      if (townBlock.getWorld() == this)
        out.add(townBlock);
    return out;
  }

  public Collection<TownBlock> getTownBlocks() {
    return townBlocks.values();
  }

  public void removeTown(Town town) throws NotRegisteredException {
    if (!hasTown(town))
      throw new NotRegisteredException();
    else {
      towns.remove(town);
      /*
      try {
        town.setWorld(null);
      } catch (AlreadyRegisteredException e) {
      }
      */
    }
  }

  public void removeTownBlock(TownBlock townBlock) {
    try {
      if (townBlock.hasResident())
        townBlock.getResident().removeTownBlock(townBlock);
    } catch (NotRegisteredException e) {
    }
    try {
      if (townBlock.hasTown())
        townBlock.getTown().removeTownBlock(townBlock);
    } catch (NotRegisteredException e) {
    }

    removeTownBlock(townBlock.getCoord());
  }
 
  public void removeTownBlocks(List<TownBlock> townBlocks) {
    for (TownBlock townBlock : new ArrayList<TownBlock>(townBlocks))
      removeTownBlock(townBlock);
  }

  public void removeTownBlock(Coord coord) {
    townBlocks.remove(coord);
  }
 
  @Override
  public List<String> getTreeString(int depth) {
    List<String> out = new ArrayList<String>();
    out.add(getTreeDepth(depth) + "World ("+getName()+")");
    out.add(getTreeDepth(depth+1) + "TownBlocks (" + getTownBlocks().size() + "): " /*+ getTownBlocks()*/);
    return out;
  }

  public void setPVP(boolean isPVP) {
    this.isPVP = isPVP;
  }
  public boolean isPVP() {
    return this.isPVP;
  }
 
  public void setForcePVP(boolean isPVP) {
    this.isForcePVP = isPVP;
  }
  public boolean isForcePVP() {
    return this.isForcePVP;
  }
 
  public void setExpl(boolean isExpl) {
    this.isExplosion = isExpl;
  }
  public boolean isExpl() {
    return isExplosion;
  }
  public void setForceExpl(boolean isExpl) {
    this.isForceExpl = isExpl;
  }
  public boolean isForceExpl() {
    return isForceExpl;
  }
 
  public void setFire(boolean isFire) {
    this.isFire = isFire;
  }
  public boolean isFire() {
    return isFire;
  }
  public void setForceFire(boolean isFire) {
    this.isForceFire = isFire;
  }
  public boolean isForceFire() {
    return isForceFire;
  }
 
  public void setDisablePlayerTrample(boolean isDisablePlayerTrample) {
    this.isDisablePlayerTrample = isDisablePlayerTrample;
  }
  public boolean isDisablePlayerTrample() {
    return isDisablePlayerTrample;
  }
 
  public void setDisableCreatureTrample(boolean isDisableCreatureTrample) {
    this.isDisableCreatureTrample = isDisableCreatureTrample;
  }
  public boolean isDisableCreatureTrample() {
    return isDisableCreatureTrample;
  }
 
  public void setWorldMobs(boolean hasMobs) {
    this.hasWorldMobs = hasMobs;
  }
  public boolean hasWorldMobs() {
    return this.hasWorldMobs;
  }
 
  public void setForceTownMobs(boolean setMobs) {
    this.isForceTownMobs = setMobs;
  }
  public boolean isForceTownMobs() {
    return isForceTownMobs;
  }
 
  public void setEndermanProtect(boolean setEnder) {
    this.isEndermanProtect = setEnder;
  }
  public boolean isEndermanProtect() {
    return isEndermanProtect;
  }

  public void setClaimable(boolean isClaimable) {
    this.isClaimable = isClaimable;
  }
  public boolean isClaimable() {
    if (!isUsingTowny())
      return false;
    else
      return isClaimable;
  }

  public void setUsingDefault() {
    setUnclaimedZoneBuild(null);
    setUnclaimedZoneDestroy(null);
    setUnclaimedZoneSwitch(null);
    setUnclaimedZoneItemUse(null);
    setUnclaimedZoneIgnore(null);
    setUnclaimedZoneName(null);
  }
 
  public void setUsingPlotManagementDelete(boolean using) {
    isUsingPlotManagementDelete = using;
  }
 
  public boolean isUsingPlotManagementDelete( ) {
    return isUsingPlotManagementDelete;
  }
 
  public void setUsingPlotManagementMayorDelete(boolean using) {
    isUsingPlotManagementMayorDelete = using;
  }
 
  public boolean isUsingPlotManagementMayorDelete( ) {
    return isUsingPlotManagementMayorDelete;
  }
 
  public void setUsingPlotManagementRevert(boolean using) {
    isUsingPlotManagementRevert = using;
  }
 
  public boolean isUsingPlotManagementRevert( ) {
    return isUsingPlotManagementRevert;
  }
 
  public List<Integer> getPlotManagementDeleteIds() {
    if (plotManagementDeleteIds == null)
      return TownySettings.getPlotManagementDeleteIds();
    else
      return plotManagementDeleteIds;
  }
 
  public boolean isPlotManagementDeleteIds(int id) {
    return getPlotManagementDeleteIds().contains(id);
  }

  public void setPlotManagementDeleteIds(List<Integer> plotManagementDeleteIds) {
      this.plotManagementDeleteIds = plotManagementDeleteIds;
  }
 
  public List<String> getPlotManagementMayorDelete() {
    if (plotManagementMayorDelete == null)
      return TownySettings.getPlotManagementMayorDelete();
    else
      return plotManagementMayorDelete;
  }
 
  public boolean isPlotManagementMayorDelete(String material) {
    return getPlotManagementMayorDelete().contains(material.toUpperCase());
  }

  public void setPlotManagementMayorDelete(List<String> plotManagementMayorDelete) {
      this.plotManagementMayorDelete = plotManagementMayorDelete;
  }
 
  public List<Integer> getPlotManagementIgnoreIds() {
    if (plotManagementIgnoreIds == null)
      return TownySettings.getPlotManagementIgnoreIds();
    else
      return plotManagementIgnoreIds;
  }
 
  public boolean isPlotManagementIgnoreIds(int id) {
    return getPlotManagementIgnoreIds().contains(id);
  }

  public void setPlotManagementIgnoreIds(List<Integer> plotManagementIgnoreIds) {
      this.plotManagementIgnoreIds = plotManagementIgnoreIds;
  }
 
  /**
   * @return the isUsingPlotManagementWildRevert
   */
  public boolean isUsingPlotManagementWildRevert() {
    return isUsingPlotManagementWildRevert;
  }

  /**
   * @param isUsingPlotManagementWildRevert the isUsingPlotManagementWildRevert to set
   */
  public void setUsingPlotManagementWildRevert(boolean isUsingPlotManagementWildRevert) {
    this.isUsingPlotManagementWildRevert = isUsingPlotManagementWildRevert;
  }

  /**
   * @return the plotManagementRevertSpeed
   */
  public long getPlotManagementRevertSpeed() {
      return plotManagementRevertSpeed;
  }

  /**
   * @param plotManagementRevertSpeed the plotManagementRevertSpeed to set
   */
  public void setPlotManagementRevertSpeed(long plotManagementRevertSpeed) {
    this.plotManagementRevertSpeed = plotManagementRevertSpeed;
  }

  /**
   * @return the plotManagementWildRevertDelay
   */
  public long getPlotManagementWildRevertDelay() {
    return plotManagementWildRevertDelay;
  }

  /**
   * @param plotManagementWildRevertDelay the plotManagementWildRevertDelay to set
   */
  public void setPlotManagementWildRevertDelay(long plotManagementWildRevertDelay) {
    this.plotManagementWildRevertDelay = plotManagementWildRevertDelay;
  }

  public List<Integer> getUnclaimedZoneIgnoreIds() {
    if (unclaimedZoneIgnoreIds == null)
      return TownySettings.getUnclaimedZoneIgnoreIds();
    else
      return unclaimedZoneIgnoreIds;
  }
 
  public boolean isUnclaimedZoneIgnoreId(int id) {
    return getUnclaimedZoneIgnoreIds().contains(id);
  }

  public void setUnclaimedZoneIgnore(List<Integer> unclaimedZoneIgnoreIds) {
      this.unclaimedZoneIgnoreIds = unclaimedZoneIgnoreIds;
  }

  public Boolean getUnclaimedZoneBuild() {
    if (unclaimedZoneBuild == null)
      return TownySettings.getUnclaimedZoneBuildRights();
    else
      return unclaimedZoneBuild;
  }

  public void setUnclaimedZoneBuild(Boolean unclaimedZoneBuild) {
    this.unclaimedZoneBuild = unclaimedZoneBuild;
  }

  public Boolean getUnclaimedZoneDestroy() {
    if (unclaimedZoneDestroy == null)
      return TownySettings.getUnclaimedZoneDestroyRights();
    else
      return unclaimedZoneDestroy;
  }

  public void setUnclaimedZoneDestroy(Boolean unclaimedZoneDestroy) {
    this.unclaimedZoneDestroy = unclaimedZoneDestroy;
  }

  public Boolean getUnclaimedZoneSwitch() {
    if (unclaimedZoneSwitch == null)
      return TownySettings.getUnclaimedZoneSwitchRights();
    else
      return unclaimedZoneSwitch;
  }

  public void setUnclaimedZoneSwitch(Boolean unclaimedZoneSwitch) {
    this.unclaimedZoneSwitch = unclaimedZoneSwitch;
  }

  public String getUnclaimedZoneName() {
    if (unclaimedZoneName == null)
      return TownySettings.getUnclaimedZoneName();
    else
      return unclaimedZoneName;
  }

  public void setUnclaimedZoneName(String unclaimedZoneName) {
    this.unclaimedZoneName = unclaimedZoneName;
  }

  public void setUsingTowny(boolean isUsingTowny) {
    this.isUsingTowny = isUsingTowny;
  }

  public boolean isUsingTowny() {
    return isUsingTowny;
  }

  public void setUnclaimedZoneItemUse(Boolean unclaimedZoneItemUse) {
    this.unclaimedZoneItemUse = unclaimedZoneItemUse;
  }

  public Boolean getUnclaimedZoneItemUse() {
    if (unclaimedZoneItemUse == null)
      return TownySettings.getUnclaimedZoneItemUseRights();
    else
      return unclaimedZoneItemUse;
  }
 
  /**
   * Checks the distance from the closest homeblock.
   *
   * @param key
   * @return the distance to nearest towns homeblock.
   */
  public int getMinDistanceFromOtherTowns(Coord key) {
   
    return getMinDistanceFromOtherTowns(key, null);
   
  }
 
  /**
   * Checks the distance from a another town's homeblock.
   *
   * @param key
   * @param homeTown Players town
   * @return the closest distance to another towns homeblock.
   */
  public int getMinDistanceFromOtherTowns(Coord key, Town homeTown) {
    double min = Integer.MAX_VALUE;
    for (Town town : getTowns())
      try {
        Coord townCoord = town.getHomeBlock().getCoord();
        if (homeTown != null)
          if (homeTown.getHomeBlock().equals(town.getHomeBlock()))
            continue;
        double dist = Math.sqrt(Math.pow(townCoord.getX() - key.getX(), 2) + Math.pow(townCoord.getZ() - key.getZ(), 2));
        if (dist < min)
          min = dist;
      } catch (TownyException e) {
      }
       
    return (int)Math.ceil(min);
  }

  public void addWarZone(Coord coord) {
      if (!isWarZone(coord))
        warZones.add(coord);
    }
   
    public void removeWarZone(Coord coord) {
      warZones.remove(coord);
    }
   
    public boolean isWarZone(Coord coord) {
      return warZones.contains(coord);
    }
   
    // Chat channel format settings
   
    public String getChatGlobalChannelFormat() {
      if (TownySettings.isModifyChatPerWorld())
        return format_global;
      else
        return TownySettings.getModifyChatFormat();
    }
   
    public void setChatGlobalChannelFormat(String format) {
      format_global = format;
    }
   
    public String getChatTownChannelFormat() {
      if (TownySettings.isModifyChatPerWorld())
        return format_town;
      else
        return TownySettings.getChatTownChannelFormat();
  }
   
    public void setChatTownChannelFormat(String format) {
      format_town = format;
    }
 
  public String getChatNationChannelFormat() {
    if (TownySettings.isModifyChatPerWorld())
        return format_nation;
      else
    return TownySettings.getChatNationChannelFormat();
  }
 
  public void setChatNationChannelFormat(String format) {
      format_nation = format;
    }
 
  public String getChatDefaultChannelFormat() {
    if (TownySettings.isModifyChatPerWorld())
        return format_default;
      else
    return TownySettings.getChatDefaultChannelFormat();
  }
 
  public void setChatDefaultChannelFormat(String format) {
      format_default = format;
    }

}
TOP

Related Classes of com.palmergames.bukkit.towny.object.TownyWorld

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.