예제 #1
0
  /**
   * Is PvP disabled in this TownBlock? Checks the world if the TownBlock is null.
   *
   * @param townBlock
   * @return true if PvP is disallowed
   */
  public static boolean preventPvP(TownyWorld world, TownBlock townBlock) {

    if (townBlock != null) {
      try {

        /*
         * Check the attackers TownBlock and it's Town for their PvP
         * status
         */
        if (townBlock.getTown().isAdminDisabledPVP()) return true;

        if (!townBlock.getTown().isPVP() && !townBlock.getPermissions().pvp && !world.isForcePVP())
          return true;

      } catch (NotRegisteredException ex) {
        /*
         * Failed to fetch the town data
         * so check world PvP
         */
        if (!isWorldPvP(world)) return true;
      }

    } else {

      /*
       * Attacker isn't in a TownBlock so check the world PvP
       */
      if (!isWorldPvP(world)) return true;
    }
    return false;
  }
예제 #2
0
파일: War.java 프로젝트: adegie/Towny
 public void damage(Town attacker, TownBlock townBlock) throws NotRegisteredException {
   WorldCoord worldCoord = townBlock.getWorldCoord();
   int hp = warZone.get(worldCoord) - 1;
   if (hp > 0) {
     warZone.put(worldCoord, hp);
     // if (hp % 10 == 0) {
     universe.sendMessageTo(
         townBlock.getTown(),
         Colors.Gray
             + "["
             + townBlock.getTown().getName()
             + "]("
             + townBlock.getCoord().toString()
             + ") HP: "
             + hp,
         "");
     universe.sendMessageTo(
         attacker,
         Colors.Gray
             + "["
             + townBlock.getTown().getName()
             + "]("
             + townBlock.getCoord().toString()
             + ") HP: "
             + hp,
         "");
     // }
   } else remove(attacker, townBlock);
 }
예제 #3
0
파일: War.java 프로젝트: adegie/Towny
 public void remove(Town attacker, TownBlock townBlock) throws NotRegisteredException {
   townScored(attacker, TownySettings.getWarPointsForTownBlock());
   townBlock.getTown().addBonusBlocks(-1);
   attacker.addBonusBlocks(1);
   try {
     if (!townBlock
         .getTown()
         .payTo(TownySettings.getWartimeTownBlockLossPrice(), attacker, "War - TownBlock Loss")) {
       remove(townBlock.getTown());
       TownyMessaging.sendTownMessage(
           townBlock.getTown(), "Your town ran out of funds to support yourself in war.");
     } else
       TownyMessaging.sendTownMessage(
           townBlock.getTown(),
           "Your town lost "
               + TownySettings.getWartimeTownBlockLossPrice()
               + " "
               + TownyEconomyObject.getEconomyCurrency()
               + ".");
   } catch (EconomyException e) {
   }
   if (townBlock.getTown().isHomeBlock(townBlock)) remove(townBlock.getTown());
   else remove(townBlock.getWorldCoord());
   TownyUniverse.getDataSource().saveTown(townBlock.getTown());
   TownyUniverse.getDataSource().saveTown(attacker);
 }
예제 #4
0
파일: War.java 프로젝트: adegie/Towny
 public void remove(TownBlock townBlock) throws NotRegisteredException {
   if (townBlock.getTown().isHomeBlock(townBlock)) remove(townBlock.getTown());
   else remove(townBlock.getWorldCoord());
 }